ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Главная » Статьи » Game Maker » Game Maker

Многопользовательские игры

Многопользовательские игры

Это функциональное назначение доступно только в Pro издании Game Maker.

Играть против компьютерного противника забавно. Но гораздо интереснее играть против реального человека. Создавать игры для нескольких игроков также относительно просто, так как Вам не нужно беспокоиться о создании Сложного Искусственного Интеллекта для своего компьютерного противника. Вы, конечно, можете усадить двух играющих перед одним монитором и использовать для управления различные клавиши или другие устройства ввода, но намного интереснее, когда каждый из играющих находится за своим собственным компьютером. А ещё веселее, если один из игроков находится вообще по другую сторону океана. Game Maker имеет поддержку многопользовательского режима (мультиплеера). Только учтите, что создание многопользовательской игры действительно заслуживающей внимания с хорошей синхронизацией и без тормозов - довольно трудная задача. Данная глава содержит краткое описание имеющихся возможностей. На официальном Web-сайте доступна обучающая программа с более подробной информацией.

Информация о многопользовательских играх может быть обнаружена на следующих страницах:

Установка Cоединения
Сеансы Cоздания и Cоединения
Игроки
Общие Данные
Сообщения

Установка соединения

 

Для связи между двумя компьютерами необходим какой-нибудь протокол связи. Как и большинство игр, Game Maker предлагает четыре разных типа соединения: IPX, TCP/IP, Модемное и Последовательное (Serial) соединения. IPX соединение (или если быть более точным - протокол) работает почти полностью прозрачно. Он может использоваться для игры с другими людьми по одной локальной сети. Для работы требуется, чтобы протокол был установлен на Вашем компьютере. (Если он не работает, то загляните в документацию по Windows. Выберите элемент Сетевые Подключения в Панели Управления Windows и добавьте IPX протокол.) TCP/IP - межсетевой (Интернет) протокол. Он может использоваться для игры с другими игроками по Интернет; предполагается, что Вы знаете их IP адрес. По локальной (местной) сети Вы можете использовать его без указания адреса. Модемное подключение производится посредством модема. Вы должны произвести некоторые настройки модема (строка инициализации и номер телефона), чтобы использовать его. Наконец, при использовании последовательной линии (прямое соединение между компьютерами), Вы должны настроить большое количество параметров порта. Доступны четыре функции GML, которые могут быть использованы для инициализации данных соединений:

mplay_init_ipx() инициализирует IPX подключение.
mplay_init_tcpip(addr) инициализирует TCP/IP подключение. addr - строка, содержащая веб-адрес или IP адрес, например 'www.gameplay.com' или '123.123.123.12', возможно сопровождаемый номером порта (например ':12'). Указание адреса необходимо только в процессе сеанса соединения (смотрите ниже). В локальной сети никакие адреса не нужны.
mplay_init_modem(initstr,phonenr) инициализирует модемное подключение. Где initstr - строка инициализации для модема (может быть пустой) и phonenr - строка, которая содержит номер телефона для дозвона (например '0201234567'). Номер телефона необходим только в момент сеанса подключения.
mplay_init_serial(portno,baudrate,stopbits,parity,flow) инициализирует последовательное подключение. Где portno - номер порта (1-4), baudrate - скорость передачи данных в бодах, которая будет использовать (100-256К), stopbits - указывает число стопбитов (0 = 1 bit, 1 = 1.5 bit, 2 = 2 bits), parity - указывает чётность (0=none, 1=odd, 2=even, 3=mark) и flow - указывает на тип управления потоком данных (0=none, 1=xon/xoff, 2=rts, 3=dtr, 4=rts и dtr). Возвращает, если вызов успешный. Типичный вызов - mplay_init_serial(1,57600,0,0,4). Укажите 0 как первый параметр, чтобы открыть диалог пользователя, для изменения настроек.

Ваша игра должна вызвать одну из этих функций только однажды. Все функции сообщают о своём успешном выполнении. Отсутствие успешного выполнения функции может свидетельствовать о том, что не установлен специфический протокол или он не поддерживается Вашей машиной. Для проверки наличия успешного подключения, Вы можете использовать следующую функцию

mplay_connect_status() возвращает состояние текущего подключения. 0 = нет подключения, 1 = IPX подключение, 2 = TCP/IP подключение, 3 = модемное подключение и 4 = последовательное подключение.

Окончание вызова подключения

mplay_end() завершает текущее соединение.

При использовании TCP/IP подключения Вы можете захотеть сообщить человеку, что Вы хотите начать игру с указанием адреса IP своего компьютера. Вам поможет следующая функция:

mplay_ipaddress() возвращает IP адрес Вашей машины (например '123.123.123.12') как строку. Вы можете, например, отобразить это где-нибудь на экране. Обратите внимание что эта функция медленная, так что не вызывайте её часто.

 

Сеансы создания и соединения

В тот момент, когда Вы подключаетесь к сети, в ней могут выполняться множество различных игр. Мы назовем их сеансами. Эти сеансы могут соответствовать различным играм или одной и той же игре. Игра в сети должна иметь свой уникальный идентификатор. К счастью, Game Maker предоставляет Вам такую возможность. Единственная вещь, которую Вы должны знать, заключается в том, что, когда Вы изменяете игровой идентификатор в окне опций, то эти идентификационные данные также изменяются. Таким образом Вы можете избежать ситуации постороннего подключения людей имеющих старую версию программы.

Если Вы хотите запустить новую многопользовательскую игру, Вы должны создать новый сеанс. Для этого Вы можете использовать следующую подпрограмму:

mplay_session_create(sesname,playnumb,playername) создаёт новый сеанс для текущего подключения. Где sesname - строка, указывающая название сеанса, playnumb - номер, который указывает максимальное число играющих (используйте 0 для произвольного числа) и playname - Ваше имя как игрока. Возвращает, если успешна.

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

mplay_session_find() ищет все доступные сеансы для подключения игроков и возвращает число найденных сеансов.
mplay_session_name(numb) возвращает имя номера сеанса numb (0 - первый сеанс). Эта подпрограмма может быть вызвана, только после вызова предыдущей подпрограммы.
mplay_session_join(numb,playername) создаёт Ваш сеанс присоединения, номер numb (0 - первый сеанс). playername - Ваше имя как игрока. Возвращает, если успешно.

Имеется ещё одна подпрограмма, которая может изменить режим сеанса. Должна быть вызвана перед созданием сеанса:

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

Чтобы проверить состояние текущего сеанса, Вы можете использовать следующую функцию:

mplay_session_status() возвращает состояние текущего сеанса. 0 = нет сеанса, 1 = созданный сеанс, 2 = соединённый сеанс.

Игрок может остановить сеанс, используя следующую подпрограмму:

mplay_session_end() заканчивает сеанс для данного игрока.

 

Игроки

Каждый образец игры, который присоединяется к сеансу является игроком. Как было сказано выше, игроки имеют свои имена. Существуют три подпрограммы, предназначенные для работы с игроками.

mplay_player_find() ищет всех игроков в текущем сеансе, и возвращает число найденных игроков.
mplay_player_name(numb) возвращает имя игрока номера numb (0 - первый игрок, т.е. Вы сами). Эта подпрограмма может быть вызвана после вызова предыдущей подпрограммы.
mplay_player_id(numb) возвращает уникальный идентификатор игрока номера numb (0 - первый игрок, т.е. Вы сами). Эта подпрограмма может вызываться только после вызова первой подпрограммы. Данный идентификатор используется при отправке и приёме сообщений к и от индивидуальных игроков.

 

Общие данные

Коммуникация общих данных - вероятно самый простой способ синхронизировать игру. Все коммуникации от Вас скрыты. Существует набор из 1000000 значений, которые являются общими для всего что содержится в игре (предпочтительно используйте только несколько первых, чтобы сохранить память). Каждый объект может устанавливать и читать значения. Game Maker проверяет чтобы каждый объект видел те же самые значения. Значения могут быть реальными или строковыми. Доступны только две подпрограммы:

mplay_data_write(ind,val) записывает значение val (строку или реальное) в локацию ind (между 0 и 1000000).
mplay_data_read(ind) возвращает значение в локацию ind (между 0 и 1000000). Первоначально все значения равны 0.

Чтобы синхронизировать данные на разных машинах, Вы можете использовать гарантируемый режим, который проверяет изменения прибытия на другую машину (но который является медленным) или не-гарантируемый. Изменить это можно используя следующую подпрограмму:

mplay_data_mode(guar) устанавливает, использовать или нет гарантируемую передачу для общих данных. Где guar должен или быть истина (по умолчанию) или ложь.

 

Сообщения

Второй коммуникационный механизм который поддерживает Game Maker - это посылка и приём сообщений. Игрок может посылать сообщения одному или всем игрокам. Игроки могут видеть - прибыли ли сообщения и принимать соответствующие меры. Сообщения могут быть отправлены в гарантируемый режим, в котором Вы будете уверены, что они прибыли (но он может оказаться медленным) или в "негарантируемом" режиме, который является более быстрым.

Существуют следующие подпрограммы передачи сообщений:

mplay_message_send(player,id,val) посылает сообщение указанному игроку player (либо на идентификатор, либо на имя; используйте 0, чтобы отправить сообщение всем игрокам). id - целочисленный идентификатор сообщения и val - значение (реальное или строка). Сообщение посылается в "негарантируемом" режиме.
mplay_message_send_guaranteed(player,id,val) посылает сообщение указанному игроку player (либо идентификатор либо имя; используйте 0, чтобы послать сообщение всем игрокам). id - целочисленный идентификатор сообщения и val - значение (реальное или строка). Сообщение посылается в гарантируемом режиме.
mplay_message_receive(player) принимает следующее сообщение из очереди сообщений, исходящих от указанного игрока player (идентификатор или имя). Используйте 0 для сообщений от любого игрока. Подпрограмма возвращает, если действительно имеется новое сообщение. При этом Вы можете использовать следующие подпрограммы, чтобы узнать его содержание:
mplay_message_id() Возвращает идентификатор последнего полученного сообщения.
mplay_message_value() Возвращает значение последнего полученного сообщения.
mplay_message_player() Возвращает игрока, который послал последнее полученное сообщение.
mplay_message_name() Возвращает имя игрока, который послал последнее полученное сообщение.
mplay_message_count(player) возвращает количество сообщений, оставшихся в очереди от игрока player (используйте 0, чтобы сосчитать все сообщения).
mplay_message_clear(player) удаляет все сообщение, оставшиеся в очереди от игрока player (используйте 0, чтобы удалить все сообщения).

Некоторые уточнения вышесказанного. Прежде всего, если Вы хотите послать сообщение только определённому игроку, Вам нужно знать его уникальный идентификатор. Как уже сообщалось ранее, Вы можете получить его, используя функцию mplay_player_id(). Данный идентификатор игрока, используется также при приёме сообщений от определённого игрока. В качестве альтернативы, Вы можете задать имя игроку, как строку. Если многие игроки имеют такое же имя, то сообщение получит только первый.

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

 

 

Категория: Game Maker | Добавил: Strateg (27.12.2010)
Просмотров: 3290 | Комментарии: 7 | Рейтинг: 3.7/3
Всего комментариев: 7
7 данил  
0
нет тут всё из справки гэйм макер

6 данил  
0
жаль что много тут всякой рекламы в коментах...

5 данил  
0
Здесь много чего из справки Game Maker, но всё равно спасибо!

4 kessGrolley  
0
Мне недавно требовалась юридическая консультация и я пытался найти хороший юридический центр! Спустя время совсем случайно нашёл на http://www.consalt-centr.ru/dtp.html - Помощь при ДТП
. посмотрел их портал и оформил услугу. После чего юридическая консультация дала о себе знать и я решил все свои личностные проблемы. Теперь всем рекомендую московский юридический центр консалт.

3 AppealpBlueli  
0
Рекомендовал мне url: http://srub-dizain.ru/price - стоимость половой доски Киржач
и решил я строить дом! Мне как раз хотелось купить толстый брус естественной влажности. В общем пройдя туда и прыгнул на электричку! Там реально всё качественно сделано и профилированный брус естественной влажности не трудно прикупить. Всему данному действию сопутствовала тяжёлая навигация сайта, которую легко нашёл.Круто конечно то, что это изготовитель сухого бруса – но сайт можно было по красивее сделать.

2 Endeattethefs  
0
Делюсь интересной информацией с Вами! Вот в mail не умышленно обнаружил страничку http://rentrealtycrimea.com/dlitelno/page/6/ - сдам недвижимость
и впал в ярость. Вот теперь даже не поздоровался с Вами! В общем сдам апартаменты Крым
,я прочитал и до меня дошло, что настоящая житуха только начинает свой путь – раз имеют место такие цены. Поэтому всем ходатайствую url-адрес http://rentrealtycrimea.com с недвижимостью Симферополя.

1 ScoorsBroam  
0
Нарыл подозрительное предложение и забыл что делал в нете! Вот оно: сдаю 2-х квартирку в жк http://posutochno.donetsk.ua - Донецк
Одесса Украина. неподалёку: ресторан Ассоль, пляж Аркадия, паркинг для автомобилей и Бунгало. Недвижимость со стильным дизайном, Белой кожаной мебелью и Харьковской электротехникой.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта

-=ЯП=-

Конструктор\Движки

Игроделу

Наш опрос
Сколько вы уже создали игр?
Всего ответов: 67

Статистика

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

DiamonD
Бесплатный конструктор сайтов - uCoz