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

Мини-Опрос
Какой платформой Вы пользуетесь?
Всего ответов: 923

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

 Главная » Статьи » Конструкторы игр, системы разработки игр » 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 | Просмотров: 3282 | Добавил: Конструктор (13.03.2014) | Рейтинг: 5.0/3
Теги: примеры, многопользовательская игра, game maker, TCP/IP, кооператив, интернет, локальная сеть Автор: Вячеслав |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
3d Rad - Как добавить свою модель (6)
Глобальные объекты в Дельфи. Их свойства и методы. (0)
Создаем 2-х битный теннис на двоих без программирования (0)
Функции D3D в Game Maker (2)
Физика (Blitz 3D) (0)
Создание текстовой игры (0)
Полезные функции и процедуры: часть 1 (0)
Статья к теме "Психоделика" (9)
Наглядный пример использования переменных (0)
Создание многопользовательской(online) игры на Game Maker. (часть 1) (0)
Моя первая страница на PHP (0)
Полный туториал по использованию Radimp (2)
Решение проблемы с перевернутыми гранями (1)
Задротство - основа MMO игр (8)
Гоночное авто (0)
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мы в социальных сетях

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

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


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

Ваш IP: 54.166.14.86

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

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

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

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

На сайте были:
Sarrandon , Naomikei

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