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

Мини-Опрос
Чем вы пользуетесь для создания игр?
Всего ответов: 530

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

 Главная » Статьи » Конструкторы игр, системы разработки игр » 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 | Просмотров: 8410 | Добавил: Конструктор (13.03.2014) | Рейтинг: 5.0/3
Теги: примеры, многопользовательская игра, Game maker, TCP/IP, кооператив, интернет, локальная сеть Автор: Вячеслав |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Задротство - основа MMO игр (10)
Borland Assembler (BASM) уроки для начинающих (урок 7 часть 2) (0)
Циклы (0)
Создание многопользовательской(online) игры на Game Maker. (часть 2) (0)
Уроки Scirra Construct (0)
AI часть 1 (0)
Статья к теме "Психоделика" (9)
Blitz 3D - полезная дипломная работа (часть 2) (0)
Золотые Правила Игродела (0)
Создание рикошета пуль от стены (4)
Инветарь на Game Maker (0)
Учимся писать игру на Delphi (3)
Библиотека STL (0)
Создание и редактирование объектов в Blitz3D (0)
Серия уроков по 3d Rad (0)
Всего комментариев: 1
1 WestW   (22.12.2017 11:25) [Материал]
https://tanchiki-igrat-besplatno.nethouse.ru/niki-na-anglijskom

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

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


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

Ваш IP: 127.0.0.1

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

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

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

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

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

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