Вторник, 19 Марта 2024, 09:14

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Сколько часов подряд вы обычно играете?
Всего ответов: 1429
Главная » Статьи » Создание игр

Construct Classic: Мультиплеерные приключения #1
И так, для начала нам понадобится естественно сам конструктор игр (оф.сайт),
кто не смог найти, вот прямая ссылка на скачивание.
Надеюсь, с установкой у вас не возникло проблем, ой о чем это я, к этому времени вы явно должны знать основы пользования этим конструктором игр.
Теперь нам понадобиться сам плагин для сетевой игры, кому лень искать, даю ссылку Network v0.3a,
для особо ленивых, даю прямую ссылку.
Для установки плагина, достаточно скопировать содержимое в архиве, а именно содержимое папки Plugins, в такую же папку Plugins на своем компьютере, куда был установлен construct.
Пример: C:\Program Files\Scirra\Construct Classic\Plugins
С этим сами разобраться должны.
Надеюсь не стоит объяснять, что construct должен быть выключен в это время.
У нас все готово, в списках объектов появился Network.
Теперь все готово, вы молодцы! Можно передохнуть, сходить выпить чаю.



- - -

Приступим к основам. Добавляем Network в проект, при нескольких Layout, можно сразу в параметрах Common ставить галочку Global, да бы не добавлять его вручную всюду.
Далее нужно определиться, как у нас будет устроено все, отдельно запуск сервера и подключение клиентов, или сразу внедрить в игру сервер, чтобы игрок Хост не возился с отдельным запуском файла. ...
Чтобы вы не выбрали, будем делать внедренный сервер в игру или программу, смотря что задумали.
Поняв работу плагина, по желанию сможете и отдельным файлом подобное сделать.
Да бы реализовать внедренный сервер, нужно разграничить события и действия для сервера и клиента.
В этом нам поможет создание Групп (Insert group или Add group) в Event sheet Editor.
Создаем изначально помечая галочкой, что группа отключена по умолчанию (Disable).
Как принято, выбор кто Вы, сервер или клиент делается из меню в игре, для этого создадим спрайты кнопки, или обычные кнопки по желанию. Не важно, главное сделать активацию действия по событию.
Создаем событие, при нажатии к примеру на кнопку СЕРВЕР, добавляем действие
SYSTEM -> SET GROUP ENABLED, и указываем что группа "SERVER" к примеру (Enable) включена.
Подобное и с кнопкой для клиента провернуть надо.
Теперь при нажатии на кнопку Сервер, события в группе SERVER будут активны, пора добавить Хост.
Добавляем в группу SERVER событие
Теперь нужно активировать один раз событие, и действие к нему, что находится в самом плагине.
Так как в примере, кнопки и группы находятся на одном Layout то используем переключатель переменную к примеру Start. Далее действие:
Network -> Host server (параметры оставим по умолчанию пока).
В случае, если после нажатия на кнопку Сервер или Клиент активируется Группа, и делается переброс на другой Layout то вполне сгодится и событие Start of layout.



Теперь, переберемся на сторону клиента, это часто придется бегать от событий сервера к событиям клиента для синхронизации данных.
Добавляем такое же событие, и действие к нему Network -> Connect в группе CLIENT.

- - -

Начинаем работу с синхронизацией данных.

Важно подметить, что для того, чтобы активировать действия на стороне клиента или сервера, нужно отправлять тип данных Сообщения, для отправки данных (переменные, координаты, тексты...) используются Пакеты!

Сделаем простой пример, активации действия по Сообщению.
Тут все просто, делаем действие отправку сообщения Network -> Send message, и даем само сообщение, что будет активаторов действия на стороне Сервера.
На Сервере делаем событие Network -> On message, и указываем сообщение, что должно придти от клиента.
Таким образом, по скриншоту видно, что кликая мышкой на клиенте, на сервере спрайт будет смещаться вправо.

Теперь попробуем синхронизировать перемещение.
Здесь уже нужны Пакеты. Добавим спрайту поведение 8-Direction.
Теперь самое интересное.
К примеру, на спрайте с поведением движения, сделаем событие
Sprite (вкладка 8 Direction) -> is moving, и действием к нему:
Network -> Send packet reliable и вписываем строку...
Код
"DO" & ":" &Player.X & ":" & Player.Y

Где "DO" - имя пакета, а дальше значения разделенные ":" и соединенные &.
Player.X Будет являться 1 по счету ячейкой памяти, и так далее.

Возвращаемся на сторону Сервера. Делаем событие Network -> On packet type, и указываем имя отсылаемого пакета с клиента, тот же DO к примеру.
И действие к нему, раз уж мы отсылаем координаты X и Y перемещения спрайта, то и на стороне сервера мы должны повторить их.
Выбираем в действиях Player (он же Sprite) -> Set position.
В ячейку Х вставляем координаты из ячейки 1, аналогично Y присуще 2 ячейка памяти из пакета DO.
А как это именно сделать?
Код
GetToken(Network.PacketData,1,":")

Как можно понять, из этой записи, она берет ячейку памяти из пакета, что клиент отослал,
под номером 1, где у нас хранится координата Player.X, и приписка разделителя ":".
Этот разделитель может быть хоть "-", лишь бы совпадали на клиенте и сервере.
Для пересылки координат, есть отдельный тип пакета, там же в выборе действия Network, действия с которым аналогичны.



- - -
Можно тут же затронуть тему Каналов.
Нет, это не Youtube каналы с вашими любимыми матюками, это тоннели, по которым можно разделять типы данных, дабы не долбить ВСЕ в одну трубу, что в теории может образовать пробку.
Номер канала указывается при пересылке сообщения или пакета, и стоит не забыть, что в при создании Хоста или коннекта указывается максимальное число их.

Чуть не забыл, это хоть и мультиплеер, но данный пример рассчитан на связь 1 клиент и 1 сервер.
Как сделать связь с много клиентами, разберем в статье #2 уже скоро!

- - -
Категория: Создание игр | Добавил: camuvi_dev (15 Января 2019) | Автор: CAMUVI
Просмотров: 5877 | Комментарии: 1 | Рейтинг: 5.0/10 |
Теги: Classic, конструктор игр, обучение, Мультиплеерные приключения, Construct, Network, основы, туториал, Construct Classic, мультиплеер
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Construct Classic: Мультиплеерные приключения #1», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 1
+0-
1 Danteo122   (03 Марта 2019 20:50) [Материал]
Danteo122Актуальненько respect

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Apocalyx
  • Harfang 3D
  • Ludiloom
  • Verge
  • Raydium Engine
  • Sonic Maker
  • Bos Wars
  • DAAD Adventure Writer
  • Torque 3D
  • PrBoom-plus
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг