Многопользовательская игра 2 игрока - PullRequest
0 голосов
/ 01 февраля 2012

Я хотел бы создать шахматную многопользовательскую игру 1player против 1.

Я буду использовать flash для анимации, а клиентский и серверный язык для проверки правильности ходов, записи каждого действия игрока в базу данных, определения победителя и выдачи некоторых кредитов победителю.

Мой основной язык программирования - PHP, и у меня будет кто-то, кто будет выполнять работу со вспышкой в ​​зависимости от моих указаний.

Я хотел бы знать, пытался ли кто-нибудь сделать это раньше или у вас есть учебник, руководство, шаги, которые нужно соблюдать при разработке p2p-игр? Я хочу сделать это эффективно и иметь возможность поддерживать не менее 100 игроков на VDS с 512 ОЗУ.

Я планирую, чтобы игра работала так:

1) Инициализировать переменные, такие как титры, имена игроков внутри флеш-клиента, после их извлечения из php

2) Запустить игру

3) Если я игрок2 и игрок1 думает о решении, флэш-клиент отправит запросы в файл PHP для проверки базы данных, если игрок1 принял какое-либо решение. Если так, то моя очередь принять решение и сдвинуть фигуру

4) Когда наступает мой ход, запросы на PHP больше не отправляются, пока я не захочу переместить кусок. Когда я пытаюсь это сделать, он отправляет запрос, и PHP проверяет правильность моего перемещения и возвращает некоторые переменные, которые flash будет использовать для отображения ошибки или перемещения указателя назад на player1

В игре также будет таймер, который будет синхронизироваться с PHP. Каждый игрок может подумать 20 секунд, чтобы сделать ход.

1) Любые предложения по моей реализации? Что мне нужно, так это предложения по повышению эффективности и снижению нагрузки на сервер, и если кто-то когда-либо имел опыт работы с подобным проектом, как он это делал или как он это делал

2) Моя реализация периодических HTTP-запросов не очень хорошая идея, потому что я знаю, что сервер может быть перегружен, я хотел бы знать, может ли кто-нибудь предложить какой-либо альтернативный, но безопасный вариант. 100 пользователей одновременно означают около 100 HTTP-запросов в секунду. Это число, которое VDS может обрабатывать в течение нескольких дней?


Позже Редактировать:

После ответов, которые я получил на этот пост, я пришел к выводу, что использование сокетов вместо HTTP-запросов каждую секунду было бы наилучшей идеей при ожидании хода на противоположном игроке.

В моей игре было бы 100 столов для игроков, с 1 разъемом для связи и 1 портом для каждого стола. Итак, 1 розетка на 100 портов. PHP будет связываться с флэш-сокетом и портом для таблицы, когда игра запускается и отправляются переменные инициализации.

Я планирую использовать флэш-память для прослушивания сокет-сервера и просмотра того, что происходит, когда противник должен двигаться.

Когда я двигаюсь, flash проверит, является ли ход действительным со своей стороны, а затем отправит данные в PHP. PHP вернет OK или NOT, а также обновит данные на порту сокета.

Что касается сокета, я не уверен, что javascript будет хорошим вариантом для этого, поэтому я думаю о PHP-сокетах или JAVA-сокетах.

PHP-сокеты кажутся мне первым вариантом из-за знакомства с языком. Мой второй будет арендовать smartfoxserver, а третий будет использовать сервисы Player.IO. Я планирую создать очень хорошую игру и продать ее. Графика в значительной степени сделана, и они выглядят великолепно. Сложнее всего сделать это эффективно и легко установить после.


Спасибо за ваше время! Привет

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Иногда бывает ошибкой создавать проект на основе того, что у вас есть, например знаний PHP и доступа к серверу с 512 МБ ОЗУ.Есть много проектов, в которых вы должны сначала рассмотреть свои ресурсы, но независимый, первый раз игровой проект не входит в их число.

Даже если ваш основной язык - PHP, вы не должны ограничивать себя отВы работаете над Flash-частью самостоятельно.Кроме того, использование веб-сервера и базы данных в качестве метода связи для многопользовательской игры приведет к очень неуклюжему поведению.

Вы также не ограничены VDS.Вы можете использовать микроэкземпляр на Amazon EC2 для бесплатно в течение года.Если настройка сервера EC2 с нуля кажется утомительной, в Интернете есть учебные пособия , которые помогут вам от начала и до конца.

Внешний интерфейс вашей игры может быть написан на Javascript илиФлэш AS3.Для обоих доступно множество библиотек для разработки игр. Flixel , Flashpunk и PushButton - бесплатные игровые библиотеки AS3. MelonJS - это библиотека игр Javascript / HTML5.Все они имеют обширную документацию и хорошее сообщество.

Вы можете написать серверную часть, используя node.js и использовать socket.io для управления игровыми коммуникациями,даже если вы ничего не знаете о пакетах - или вы могли бы использовать что-то вроде Player.IO , если вы хотите заплатить немного денег и попросить об этом стороннюю службу.

Если вы напишите бэкэнд правильно, то сто пользователей не будут проблемой для вашего сервера.Вам нужно будет задуматься о новом оборудовании, когда вы наберете тысячи.

И, так как вы ищете общие советы по созданию игр, начните читать статьи в блогах, таких как # AltDevBlogADay .Вы получите много знаний о дизайне от других людей, увлеченных играми.

2 голосов
/ 01 февраля 2012

Загрузка сервера для такой игры должна быть действительно минимальной. Если вы используете flash, я воспользуюсь объектом сокета и просто открою сокет для вашего сервера, чтобы вам не приходилось задавать вопросы о том, что изменилось ... он уведомит клиентов, когда / если что-то примечательное имеет. В противном случае ваш план довольно хороший, поэтому вам, вероятно, придется задать несколько конкретных вопросов о вещах, которые вы озадачены.

Если вы ДЕЙСТВИТЕЛЬНО хотите уменьшить нагрузку на сервер, запишите шахматную логику во флеш-клиент и позвольте ИТ-специалистам решить, является ли попытка хода (выполненная игроком) незаконной, или игрок проиграл или еще что-то ... используйте сервер строго для ретрансляции сообщений и хранения данных.

...