Главная » Статьи » Конструкторы игр, системы разработки игр » Game Maker » Создание многопользовательской(online) игры на Game Maker. (часть 4)
|
Создание многопользовательской(online) игры на Game Maker. (часть 4)
[ Поделиться ]
[ Спасибо! ]
|
22:23
4. Практика. Использование TCP/IP набора протоколов на практике, создаем простую игру для 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. Создаем комнату(уровень) и добавляем первого игрока.
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 |
Просмотров: 8147 |
Добавил: Конструктор (13.03.2014)
| Рейтинг: 5.0/3
Теги: |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 1 | |
| |