Создание многопользовательской(online) игры на Game Maker. (часть 4) - 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]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какие языки программирования вы знаете?
Всего ответов: 773

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

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

Создание многопользовательской(online) игры на Game Maker. (часть 4)

22:23
4. Практика. Использование TCP/IP набора протоколов на практике, создаем простую игру для 2-х игроков.
И так, мы изучили теорию, познакомились со списком команд и алгоритмами для работы с сетью. Теперь мы можем написать простую игру для двух игроков. Приступим!

1. Создадим 2-а спрайта различных цветов, которые будут будущими игроками. 

2. Создадим 2-а объекта и присвоим каждому из них заготовленные спрайты. 

3. В событии создания первого объекта пишем следующий код:

Код

var str_ip;

global.connected = false;

str_ip = get_string('Введите IP сервера (127.0.0.1) для подключения или оставьте пустым для создания сервера','127.0.0.1');

if (str_ip <> '') {

  global.is_server = false;
  global.connected = true;

  if (mplay_init_tcpip(str_ip)) {
   
  if (mplay_session_find() > 0) {
   
  if (mplay_session_join(0, 'Constructor2') > 0) {
   
  mplay_data_mode(false);
   
  mplay_message_send(0, 2, 1); // информируем что подключились
   
  } else {
  show_message('Не могу подключиться к 0-ой сессии.');
  }
   
  } else {
  show_message('Сессии не найдены.');
  }
   
  } else {
  show_message('Невозможно создать подключение по указанному IP.');
  }
   
} else {

  global.is_server = true;
  global.connected = true;

  if (mplay_init_tcpip('127.0.0.1')) {
   
  if (mplay_session_create('MyServer', 2, 'Constructor1') > 0) {

  mplay_data_mode(false);
   
  } else {
  show_message('Не могу создать сессию.');
  }
   
  } else {
  show_message('Невозможно создать подключение по указанному IP.');
  }
   
}


4. В событии "Щаг (Step)" первого объекта добавляем код:

Код

var messages_count, str_val, char_pos;  

if (global.connected == true) {
if (global.is_server == true) {

  messages_count = mplay_message_count(0);

  if (mplay_message_count(0) > 0) {
   
  //show_message('count > 0');

  for (i=1; i<=messages_count; i+=1) {  
   
  //show_message('current = ' + string(i));  
   
  if (mplay_message_receive(0)) {  
   
  //show_message('message receive!');

  // при подключении игрока создаем его объект
  if (mplay_message_id() == 2) and (mplay_message_value() == 1) {
  instance_create(-32, -32, obj_player_2);
  mplay_message_send(0, 1, 1); // информируем что подключились
  }
   
  // получаем координаты
  if (mplay_message_id() == 200001) {
  obj_player_2.x = mplay_message_value();
  }
  if (mplay_message_id() == 200002) {
  obj_player_2.y = mplay_message_value();
  }
   
  if (mplay_message_id() == 2) and (mplay_message_value() == 0) {
  mplay_session_end();
  mplay_end();
  global.connected = false;
  show_message('Игрок отключился!');
  with (obj_player_2) {
  instance_destroy();
  }
  }  
   
  }  
   
  }  

  }  
   
  // для простоты примера отправляю данные не пачками
  if (global.connected == true) {
  mplay_message_send(0, 100001, x);
  mplay_message_send(0, 100002, y);
  }

} else {

  messages_count = mplay_message_count(0);

  if (mplay_message_count(0) > 0) {
   
  //show_message('count > 0');

  for (i=1; i<=messages_count; i+=1) {  
   
  //show_message('current = ' + string(i));  
   
  if (mplay_message_receive(0)) {  
   
  //show_message('message receive!');

  // при подключении игрока создаем его объект
  if (mplay_message_id() == 1) and (mplay_message_value() == 1) {
  instance_create(-32, -32, obj_player_2);
  mplay_message_send(0, 1, 1); // информируем что подключились
  }
   
  // получаем координаты
  if (mplay_message_id() == 100001) {
  obj_player_2.x = mplay_message_value();
  }
  if (mplay_message_id() == 100002) {
  obj_player_2.y = mplay_message_value();
  }
   
  if (mplay_message_id() == 1) and (mplay_message_value() == 0) {
  mplay_session_end();
  mplay_end();
  global.connected = false;
  show_message('Сервер отключился!');
  with (obj_player_2) {
  instance_destroy();
  }
  }  
   
  }  
   
  }  

  }  
   
  // для простоты примера отправляю данные не пачками
  if (global.connected == true) {
  mplay_message_send(0, 200001, x);
  mplay_message_send(0, 200002, y);
  }

}
}


5. Добвляем возможность управления первым игроком.

6. Создаем комнату(уровень) и добавляем первого игрока. 

7. Создаем спрайт в виде крестика. Он будет нужен для отключения сервера и выхода пользователя. 

8. Создаем новый объект. Присваиваем спрайт в виде крестика и добавляем в событие нажатия ЛКМ следующий код:

Код

if (global.connected == true) {
  if (global.is_server == true) {
  mplay_message_send(0, 1, 0);
  } else {
  mplay_message_send(0, 2, 0);
  }
   
  sleep(1000);
   
  mplay_session_end();
  mplay_end();
}


9. Добавляем созданный объект на уровень.

Готово! Мы написали простую игру для двух игроков. Ниже представлена ссылка для скачивания исходника примера.


Категория: Game Maker | Просмотров: 3062 | Добавил: Конструктор (13.03.2014) | Рейтинг: 5.0/3
Теги: примеры, многопользовательская игра, game maker, TCP/IP, кооператив, интернет, локальная сеть Автор: Вячеслав |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Про HTML (1)
24 совета по программированию в Delphi (Дельфи) часть 2 (0)
Учимся писать игру на Delphi (3)
Пишем модуль для работы с системным таймером (0)
Как сделать ходячий объект в Game maker. Для обсолютных нубов. (0)
Моя первая страница на PHP (0)
Статья по движку Maratis (0)
Создание наземного врага в платформере (2)
Устанавливаем на машину скин 3dRad (0)
Экономика в ммо (2)
Инветарь на Game Maker (0)
Создание света (освещение уровня) (0)
Установка Yogurt3D и Adobe Stage3D API на ваш компьютер. (0)
Наложение Текстуры На Модель в 3DGS (MED) (0)
startDrag или как заставить объект двигаться за мышью? (0)
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мы в социальных сетях

Поиск
Поиск по всему сайту:
Поиск по разделу:

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


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

Ваш IP: 54.204.247.205

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

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

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

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

На сайте были:
kreghek , FireOfSteel , devbond007 , proto1ype , Vlados

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