Yuri94 | Дата: Воскресенье, 27 Декабря 2015, 23:21 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| Планирую создать сайт с простой мультиплеер на двоих логической карточной игрой. Простенький сайт на PHP напишу и в GM немного подучился. Но как правильнее все вместе связать еще не могу понять. Задача: 1. Пользователь вошел на сайт и к примеру Игрок1 создал предложение на начало игры (заявку) с определенными условиями этой пошаговой игры. Информация размещается в таблице на сайте. Игрок2 выбрал нужное предложение из таблицы и соглашается на игру. 2. Создается игровая комната и запускается игра GM Думаю возможны два варианта: либо ( думаю server.exe файл и два clients.exe для каждого игрока), либо (client-client)
К примеру сессия№ … Сервер-Клиент Вариант 1 алгоритма: • «PHP сервер» передача данных (первоначальных условий) в GM_client_player1 и GM_client_player1 для «Игрок1» и «Игрок2» соответственно • Ход Игрок1 • Обработка сервером данных и рассылка и двум игрокам • Ход Игрок2 • Обработка сервером «PHP сервер» данных и рассылка их двум игрокам • Так попеременно ходят игроки пока сервер не определит победу одного из них и присудит ему победу.
Вариант 2 алгоритма: • «PHP сервер» передача данных (первоначальных условий) для GM сервер(находящимся на том же сервере(хостинге) • Запуск «GM сервер», передача данных (первоначальных условий) и запуск client.exe для «Игрок1» и «Игрок2» • Ход Игрок1 • Обработка сервером данных (также и на условие победы одним из них) и их рассылка обоим игрокам • Ход Игрок2 • Обработка GM сервером данных и рассылка их обоим игрокам • Перенос данных в «PHP сервер» • Так попеременно ходы пока сервер не определит победу одного из игроков и присудит ему победу.
Клиент-Клиент • Запуск «GM(PHP) сервер», передача данных (первоначальных условий) и запуск client.exe для «Игрок1» и «Игрок2» • «Игрок1» и «Игрок2» ходят по очереди и клиент ведущий (Игрок1 к примеру) на каждом шагу проверяет условия выигрыша • При выигрыше выход из игры назад на сайт и передача данных на сайт о выигравшем (второй естественно - проигравший) • Перенос данных в «PHP сервер» или в БД
Пинг в 0.5 сек думаю в пошаговой игре игроки не заметит. Количество одновременно играющих пар(комнат) думаю до 5000.
Я в GM новичок, и поэтому нужно скурить много инфы, чтобы самому дойти что нужно «курить» поконкретнее. Прошу Guru Гейммейкеров подсказать какой вариант будет приемлемей и можно ли и как это сделать это на GM или GMStudio.
Сообщение отредактировал Yuri94 - Воскресенье, 27 Декабря 2015, 23:33 |
|
| |
Abel399 | Дата: Среда, 30 Декабря 2015, 14:57 | Сообщение # 2 |
Surpass your limits. Right now.
Сейчас нет на сайте
| Могу представить это себе так: В GM:S игра экспортируется под html5, реализовать нужно либо прямое, либо через php общение с MySQL(глянь). При начале игры сайт регистрирует их сессию в таблице mysql под уникальным идентификатором, который будет использоваться для "разговора" игроков. В таблице можно сделать 2 колонки и так хранить историю ходов для каждого игрока, либо одну колонку, где будет записан просто текущий ход(говлрить буду о нем). Когда игрок походил, он шлет запрос на mysql сам/через php, находит строку своей сессии и в столбце ходов записывается сам ход. Другой игрок, который ожидает, раз в секунду, допустим, шлет запрос и проверяет состояние этой ячейки. Если она не пуста - считывает данные, чистит ячейку, и ход передается в его руки. И так по кругу. Победу определять, конечно, лучше на сервере, но все зависит от условий ее наступления. На клиенте все же нежелательно это делать... Шифрование запросов уже дело принципов(здесь от "читерства" применить можно сравнение хеш-кодов запросов). Чтобы определить лив игрока, можно использовать сравнение времени обновления запросов от клиента, для каждого своя ячейка в базе. Для общения с php, как я понимаю, теперь юзается - Asynchronous
В итоге, все упрется в хороший хостинг и "неглючную" BD.
Успехов, с Наступающим Новым годом! Если что-то непонятно, или я категорически не прав, говорите с;
Сообщение отредактировал Abel399 - Среда, 30 Декабря 2015, 14:59 |
|
| |