Главная » Статьи » Конструкторы игр, системы разработки игр » Game Maker » Создание многопользовательской(online) игры на Game Maker. (часть 2)
|
Создание многопользовательской(online) игры на Game Maker. (часть 2)
[ Поделиться ]
[ Спасибо! ]
|
14:50
Навигация по статье:
2. Команды. Список команд Game Maker для работы с протоколами.
Ниже приводится список команд, которые нам пригодятся, конечно это не полный список, но использование остальных команд просто устарело. Список разделен на 4-е категории: подключение, сессии, игроки и сообщения. Именно в таком порядке и происходит создание подключения для сервера и клиента игры.
Для начала нам нужно установить подключение между игроком и сервером или другим игроком. Т.к. на одном компьютере может быть запущено несколько серверов или клиентов, то для разделения информационного потока используются сессии. Которые "сортируют" приходящие данные и отправляют их нужному серверу или клиенту. Поэтому следующим шагом нужно создать сессию (серверу) и подключиться к ней (клиенту). После чего нам нужно узнать список игроков и их идентификаторы, параметры (если требуется). Теперь можно смело отправлять сообщения с данными другим игрокам и, соответственно, получать их от других игроков.
Давайте рассмотрим список команд:
1. Подключение
mplay_init_tcpip(addr) - создает подключение, указывается IP адрес и порт. Данная команда служит для создания сервера и для подключения клиента к серверу (другому игроку), в обоих случаях нужно указывать IP адрес и порт сервера (игрока).Пример: '127.0.0.1:5600', где 127.0.0.1 это IP адрес и 5600 соответственно порт подключения. IP адрес и порт разделяются двоеточием.! 127.0.0.1 или localhost - проще говоря это адрес вашего компьютера. Данный IP будет использован для тестирования примеров, приведенных в данной статье, т.к. сервер и клиент будут на одном ПК.mplay_connect_status() - возвращает тип подключения. 0 = нет подключения, 1 = IPX, 2 = TCP/IP, 3 = modem и 4 = serial.mplay_ipaddress() - возвращает IP адрес компьютера.mplay_data_mode(guar) - устанавливает, использовать гарантированную доставку пакетов данных или нет. Может принимать следующие значения: true - использовать (медленно), false - соответственно не использовать.mplay_end() - отключает активное подключение.
2. Сессии
mplay_session_create(sesname, playnumb, playername) - создает сессию. sesname - имя сессии, playnumb - максимальное количество игроков (для неопределенного количества используйте 0), playername - имя игрока.mplay_session_find() - команда ищет все созданные сессии и возвращает из количество. Отсчет сессий начинается с 0.mplay_session_name(numb) - возвращает имя сессии по ее номеру.mplay_session_join(numb, playername) - подключение к сессии. numb - номер сессии, playername - имя игрока.mplay_session_status() - возвращает информацию об активной сессии: 0 = не подключена, 1 = сессия была создана (сервер), 2 = сессия подключена (клиент).mplay_session_end() - завершает текущую сессию.
3. Игроки.
mplay_player_find() - возвращает количество игроков в текущей сессии.mplay_player_name(numb) - возвращает имя игрока по его номеру (отсчет начинается с 1, 0-вым игроком являетесь всегда вы). numb - номер игрока.mplay_player_id(numb) - возвращает уникальный удентификатор игрока. numb - номер игрока (отсчет начинается с 1, 0-вым игроком являетесь всегда вы). Возвращаемый уникальный идентификатор используется при отправке и приеме сообщений от данного игрока.
4. Сообщения, обмен данными
mplay_message_send(player, id, val) - отправляет сообщение (данные). player - идентификатор игрока или его имя (указанное в сессии), которому нужно отправить данные (для отправки всем игрокам в текущей сессии используется 0), id - идентификатор сообщения (integer), val - любое число или строка. Максимальная длина строки составляет 30000 символов. При использовании данной команды сообщения отправляются без гарантий на их доставку.mplay_message_send_guaranteed(player,id,val) - команда аналогичная mplay_message_send (см. выше), но доставка пакетов данных гарантируется.mplay_message_receive(player) - устанавливает текущим первое сообщение из массива. Все приходящие сообщения формируются в массив друг за другом. Команда устанавливает самое первое сообщение текущим, что позволяет обработать его ниже приведенными командами. При повторном вызове первое сообщение удаляется, массив сдвигается вниз и снова устанавливается текущим первое сообщение.mplay_message_id() - возвращает уникальный идентификатор текущего сообщения (id).mplay_message_value() - возвращает данные текущего сообщения (val).mplay_message_player() - возвращает номер игрока, который отправил текущее сообщение.mplay_message_name() - возвращает имя игрока (указанное в сессии), который отправил текущее сообщение.mplay_message_count(player) - возвращает количество сообщений, полученных от игрока или общее количество в зависимости от параметра player. player - идентификатор игрока или его имя (указанное в сессии), количество сообщений которого требуется вернуть. Для определения количества сообщений от всех игроков используется 0.mplay_message_clear(player) - удаляет все сообщения от игрока или от всех игоков в зависимости от параметра player. player - идентификатор игрока или его имя (указанное в сессии), сообщения от которого требуется удалить. Для удаления всех сообщений используется 0.
Надеюсь смысл каждой команды вам понятен. Но мне хотелось бы подробно рассказать об использовании и внутреннем устройстве команды mplay_message_receive. Надеюсь приведенные ниже картинки и комментарии к ним помогут вам лучше узнать ее работу:
1. В начале приходят данные, которые выстраиваются в массив друг за другом. Предположим, что массив строится снизу вверх:
2. Команда mplay_message_receive устанавливает сообщение текущим в ячейке 1, если указан входной параметр как 0. Если указано имя игрока или его идентификатор, то устанавливается ячейка с первым сообщением от указанного игрока. После чего можно использовать команды для получения данных с текущего сообщения: mplay_message_id и т.д.
3. При повторном вызове команды mplay_message_receive первое сообщение удаляется. Весь массив смещается вниз и текущим сообщением снова устанавливаются то, которое находится в ячейке 1.
4. Сообщения, которые приходят игроку, помещаются на самый верх массива.
! Стоит отметить, что по данной схеме работает и список игроков. Происходит добавление массива или его смещение когда игроки подключаются или отключаются.
Категория: Game Maker |
Просмотров: 11802 |
Добавил: Конструктор (13.03.2014)
| Рейтинг: 5.0/3
Теги: |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 0 | |