Создание многопользовательской(online) игры на Game Maker. (часть 2) - Game Maker - Конструкторы игр, системы разработки игр
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Game Maker [27]
Flash [3]
FPS Creator X9, X10 [1]
Scirra Construct [14]
Multimedia Fusion [0]
001 Game Maker, Map 001 [0]
3D RAD [16]
3D Game Studio [1]
Silent Walk FPS Creator [0]
Blender (Блендер) [1]
Game Editor [0]
Остальное [1]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Чему вы отдаете большее предпочтение?
Всего ответов: 465

Партнеры сайта
....

 Главная » Статьи » Конструкторы игр, системы разработки игр » 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 | Просмотров: 11318 | Добавил: Конструктор (13.03.2014) | Рейтинг: 5.0/3
Теги: Game maker, многопользовательская игра, примеры, кооператив, TCP/IP, интернет, локальная сеть Автор: Вячеслав |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 54.224.52.210

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

На сайте были:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр