|
|
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа! Хотелось бы услышать мнения по поводу возможных технологий, которые можно было бы использовать для реализации простейшей онлайновой игры. По сути игра представляет собой пошаговую партию между 2мя игроками (а-ля шахматы). Игроки последовательно выполняют ходы, с целью достигнуть определенных условий победы над противником. В распоряжении игрока находится набор игровых объектов, ход заключается в разыгрывании самих объектов и использования различных способностей этих объектов. Визуально игровые объекты выглядят как 2d фигурки или картинки. При этом должна вестись централизованная статистика игроков, рейтинги и т.д. Собственно, интересно сравнить различные варианты решений, которые удовлетворят следующим техническим требованиям: 1.В системе должна использоваться масштабируемая СУБД, позволяющая централизованно хранить и обрабатывать данные, относящиеся к процессу игры: бизнес и графические объекты, аккаунты игроков, вспомогательную информацию (логи, статистику и прочую мишуру). 2. Должна быть возможность хранения графических объектов и на клиентском месте для избегания передачи десятков мегабайт графической информации при каждом подключении (разнообразие графических объектов очень большое - тысячи объектов, представление каждого может весить ~100 килобайт). 3. Игровая часть системы должна быть 3х-звенной, игровые клиенты должны через интернет и обращаться к серверу приложений, который в свою очередь имеет коннект к центральной БД. 4. Клиент игры должен поддерживать 2d графику, звуки и простейшие визуальные эффекты (анимацию), активное использование мыши - в том числе драг-н-дроп. 5. Необходима поддержка сеансов или сессий игры. Т.е. залогинился, поиграл партию, залогаутился (при закрытии клиента). 6. Должен быть предусмотрен некий аналог пинга, т.е. индикатор активности подключения для клиентских мест. Если противник "вывалился в оффлайн" мы должны об этом узнать. 7. Должна присутсвовать возможность отображения активных (подключенных к серверу) игроков. С ними ты можешь и разыграть партию. 8.Основная бизнес-логика должна быть вынесена на сервер приложений. Бизнес-логика должна описывать возможные изменения состояний тех или иных объектов в зависимости от их типов, значений атрибутов, выполняемых игроками действий, а так же отвечать за передачу управления одному или другому игроку. Логика может быть довольно сложная, поэтому предполагается что она будет реализовываться с помощью скриптов. 9. На клиентских местах не должно устанавливаться дополнительное ПО, кроме клиента игры (или в крайнем случае - минимум) 10. Платформа - Windows Заранее спасибо всем, кто выскажет свое мнение по этому поводу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 17:50 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, Понимание термина "простейшая" у нас явно отличается. Вариант от дилетанта: клиент (Qt, C#, да что угодно при таких требованиях), POST-запросы на сервер, какой-нибудь Apache на сервере, Firebird под базу. Серверная часть вполне органично тогда получается на C++. Пункты 1,5,7,8 - требования к серверной части. Пункты 2,4,(5),6,9,10 - требования к клиенту. Пункт 3 - требование к архитектуре. Чего нет: а) Требования механизма авторизации. Без него концепция "аккаунта" теряет смысл. б) Оценки интенсивности обмена информацией между клиентом и сервером. Если это пара сотен байт раз в десять секунд - разговор один, если задержки критичны и интенсивность существенно выше - другой. в) Требований по защите от читеров, если не считать таковым пункт 3). Предположительно, требуется, помимо прочего, при получении сервером информации об очередном ходе, внимательно проверять её на легальность. Если сабж - игра с неполной информацией, то надо думать над каналами утечки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 18:32 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionЧего нет: а) Требования механизма авторизации. Без него концепция "аккаунта" теряет смысл. б) Оценки интенсивности обмена информацией между клиентом и сервером. Если это пара сотен байт раз в десять секунд - разговор один, если задержки критичны и интенсивность существенно выше - другой. в) Требований по защите от читеров, если не считать таковым пункт 3). Предположительно, требуется, помимо прочего, при получении сервером информации об очередном ходе, внимательно проверять её на легальность. Если сабж - игра с неполной информацией, то надо думать над каналами утечки. а. Требования на авторизацию - класические. Заводится учетная запись, сожержащая логин и пароль. Сервер приложений должен предоставлять удаленную функцию авторизации, т.е. клиент вызывает такую функцию передавая введенные логин и пароль. На сервере приложений при проверки корректности должна создаваться сессия и её идентификатор возвращается клиенту. Все последующие обращения клиента должны содержать этот полученный идентификатор в качестве параметра. б. На данном этапе интенсивность определяется исключительно количеством подключенных игроков. Если не считать системных (скрытых от пользователя, например - пингование) обращений к серверу, то интенсивность порядка 10-20 обращений в минуту в одной партии (при максимальной интенсивности игры). Это несколько килобайт в минуту. Задержки не критичны в пределах 2-3 секунд. в. Про читеров пока разговро не идет, как вариант -шифрование трафика. На данном этапе считаем что играют "честные" люди ). Но в принципе да, проверка корректности хода может быть полезна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 19:06 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, Не должна она быть 3-х звенной. С чего Вы взяли? Как Вы будете отслеживать следующий ход противника? Зачем отслеживать "вывалился в оффлайн". Может, я пошёл в сортир и прикрыл ноутбук? Хочу его открыть и продолжить. И очень много других вопросов... . Вобщем, Вы пишите ТЗ и здесь его постите, или таки совета спрашиваете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 22:10 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorа. Требования на авторизацию - класические. Заводится учетная запись, сожержащая логин и пароль. Сервер приложений должен предоставлять удаленную функцию авторизации, т.е. клиент вызывает такую функцию передавая введенные логин и пароль. На сервере приложений при проверки корректности должна создаваться сессия и её идентификатор возвращается клиенту. Все последующие обращения клиента должны содержать этот полученный идентификатор в качестве параметра. То есть, должна быть ещё инфраструктура создания аккаунтов, восстановления паролей... BlackMirrorб. На данном этапе интенсивность определяется исключительно количеством подключенных игроков. Если не считать системных (скрытых от пользователя, например - пингование) обращений к серверу, то интенсивность порядка 10-20 обращений в минуту в одной партии (при максимальной интенсивности игры). Это несколько килобайт в минуту. Задержки не критичны в пределах 2-3 секунд. Ага. Тогда действительно не проблема переименовать пакет "Я жив" в пакет "Есть новости?". BlackMirrorв. Про читеров пока разговро не идет, как вариант -шифрование трафика. На данном этапе считаем что играют "честные" люди ). Но в принципе да, проверка корректности хода может быть полезна. Да речь не о шифровании. Прочитайте эту статью, раздел "Доверчивость в MMORPG". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 22:16 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeBlackMirror, Не должна она быть 3-х звенной. С чего Вы взяли? Зачем отслеживать "вывалился в оффлайн". Может, я пошёл в сортир и прикрыл ноутбук? Хочу его открыть и продолжить. На эти вопросы могу попробовать ответить. Под "трёхзвенной" имеется в виду, видимо, что клиент не обращается напрямую к БД. Собственно, а зачем ему? "Выход в оффлайн" - это именно попытка отличить ситуацию "противник думает над ходом" от ситуации "у противника собака перегрызла кабель". Согласитесь, сидеть и ждать хода оппонента ночь напролёт - не самое конструктивное занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 22:24 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionНа эти вопросы могу попробовать ответить. Под "трёхзвенной" имеется в виду, видимо, что клиент не обращается напрямую к БД. Собственно, а зачем ему? "Выход в оффлайн" - это именно попытка отличить ситуацию "противник думает над ходом" от ситуации "у противника собака перегрызла кабель". Согласитесь, сидеть и ждать хода оппонента ночь напролёт - не самое конструктивное занятие. Ну, со звеньями, может, и так. Хотя, меня несколько смутило выражение "сервер приложений", оно уже предполагает некоторую архитектуру, которая, в общем-то, здесь и нафиг не нужна. А насчёт второго - вопрос спорный... . Здесь, имхо, всё должно быть или оговорено или таймер какой-то, ограничивающий время обдумывания, должен быть. Но уж точно, не наличие игрока в онлайне, особенно, если дело касается интернета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 22:59 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeА насчёт второго - вопрос спорный... . Здесь, имхо, всё должно быть или оговорено или таймер какой-то, ограничивающий время обдумывания, должен быть. Но уж точно, не наличие игрока в онлайне, особенно, если дело касается интернета. Мне таймер не нравится тем, что при этом серверу придётся совершать какие-то движения по своей инициативе. Есть у меня ощущение (возможно, ложное), что отсутствие такой необходимости упростит задачу. Хотя опять же, вопрос целей. Хотелось бы хотя бы черновик дизайн-документа... вообще, с рейтингом и прочими фишками есть мно-ого интересных грабель, и при таком подходе господа разработчики рискуют их пособирать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 23:19 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionМне таймер не нравится тем, что при этом серверу придётся совершать какие-то движения по своей инициативе... Ни в коем случае! Сервер - есть сервер, только по запросу с клиента должен работать. То есть, таймер - на клиенте, но его инициализация (например, при рефреше хтмл-страницы или чего там) происходит на основании того, что было записано для этого игрока в базе на сервере, например. Не так всё просто, но вполне решабельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 23:30 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeТо есть, таймер - на клиенте, но его инициализация (например, при рефреше хтмл-страницы или чего там) происходит на основании того, что было записано для этого игрока в базе на сервере, например. Не так всё просто, но вполне решабельно. После чего клиент берёт и таймер останавливает. Нет, это тоже решаемо - но просят же "простейший" вариант. Впрочем, зависит от. В шахматах (которые нам даны в качестве образца) ограничений по времени по умолчанию нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 00:00 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeА насчёт второго - вопрос спорный... . Здесь, имхо, всё должно быть или оговорено или таймер какой-то, ограничивающий время обдумывания, должен быть. Но уж точно, не наличие игрока в онлайне, особенно, если дело касается интернета. Подразумевается что на партию у каждого игрока выделено определеное время. Как только управление (ход) переходит к другому игроку, его таймер начинает тикать. одно из условийпобеды - просроченое противником время. Статус онлайна нужен для 2х задач: 1. Чтобы игрок напрасно не ждал хода своего вылетевшего коллеги до окончания таймера. К тому же должно быть автоматическое присуждение победы в случае вылета в оффлайн и невозвращения в течении какого-то времени. Иначе будет практиковаться практика "ливания" проигрышных по ситуации матчей, с надеждой что у противника не хватит терпения дождаться окончания таймера и он сдастся. 2. Для реализации активной очереди игроков. Т.е. ты логинишься к серверу и становишься в очередь на поиграть либо видя список активных игроков выбираешь с кем играть. Простейший, но грубый вариант решения - клиент должен вызывать некий пустой метод сервера каждые несколько секунд. Если сервер не получил такого вызова от игрока в течении некоторого времени, то считаем что игрок вывалился... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 10:54 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorПростейший, но грубый вариант решения - клиент должен вызывать некий пустой метод сервера каждые несколько секунд. Если сервер не получил такого вызова от игрока в течении некоторого времени, то считаем что игрок вывалился... Возможно, стоит действительно чуть уточнить тему топика? Мы обсуждаем используемые технологии, протоколы действий, концепцию игры, детали реализации, возможные проблемы? Вот например: можно сохранить требуемые картинки у клиента (дать ему архив, и пусть распаковывает куда хочет), записать адрес папки в куки и дёргать через javascript, будет тонкий клиент. Можно написать толстый клиент на Qt, влепить туда картинки, анимации, часть логики. Сравнение этих двух вариантов - по теме топика? Можно обсудить проблемы, связанные с концепцией "дисконнект=автопроигрыш". Не у всех беспроблемное подключение; кроме того, возникает интересная ситуация, когда отключаются оба игрока. Можно поинтересоваться концепцией самой игры - представляет она из себя игру с полной/неполной информацией, сколько информации содержит сообщение о сделанном ходе (действии) и так далее. Можно обсудить разумность требования описания логики скриптами, а не кодом. Совершенно точно нельзя обсуждать всё это одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:11 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionДа речь не о шифровании. Прочитайте эту статью, раздел "Доверчивость в MMORPG". В рассматриваемой игре возможностей для обмана очень мало, т.к. все ходы игрока по сути контролируются противником. Плюс "у меня все ходы записаны" ). Это как в шахматах - противника следящего за партией особо не обманешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:13 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorВ рассматриваемой игре возможностей для обмана очень мало, т.к. все ходы игрока по сути контролируются противником. Плюс "у меня все ходы записаны" ). Это как в шахматах - противника следящего за партией особо не обманешь. При составлении нового протокола одно из необходимых качеств - вера в человеческую изобретательность. Для примера: на сервер от клиента пришло сообщение с описанием хода (в результате которого ход должен перейти к оппоненту). В процессе обработки на сервер пришло ещё одно сообщение, от того же клиента, с другим описанием хода. Что будет? Противник, конечно, поймёт если игра пойдёт не по правилам... но что он сможет сделать? Сдаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:17 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionВозможно, стоит действительно чуть уточнить тему топика? Мы обсуждаем используемые технологии, протоколы действий, концепцию игры, детали реализации, возможные проблемы? Совершенно точно нельзя обсуждать всё это одновременно. Собственно тема топика - рассмотреть различные возможные варианты реализации предложенных технических требований. Т.е. наборы продуктов и технологий, с помощью которых можно решить поставленную задачу и особености этих наборов применительно к нашей теме (т.е. как конкретный набор может удовлетворить каждому из поставленных требований). Возможно набор технологий будет зависеть от выбранной архитектуры, соответсвенно хотелось бы услышать мнение по поводу возможных архитектурных решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:30 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionBlackMirrorВ рассматриваемой игре возможностей для обмана очень мало, т.к. все ходы игрока по сути контролируются противником. Плюс "у меня все ходы записаны" ). Это как в шахматах - противника следящего за партией особо не обманешь. При составлении нового протокола одно из необходимых качеств - вера в человеческую изобретательность. Для примера: на сервер от клиента пришло сообщение с описанием хода (в результате которого ход должен перейти к оппоненту). В процессе обработки на сервер пришло ещё одно сообщение, от того же клиента, с другим описанием хода. Что будет? Противник, конечно, поймёт если игра пойдёт не по правилам... но что он сможет сделать? Сдаться? На самом деле это легко решается логикой сервера. Ходы нумеруются. Если мы получили описание хода N, то все остальные полученные описания этого же хода игнорируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:55 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorСобственно тема топика - рассмотреть различные возможные варианты реализации предложенных технических требований. Т.е. наборы продуктов и технологий, с помощью которых можно решить поставленную задачу и особенности этих наборов применительно к нашей теме (т.е. как конкретный набор может удовлетворить каждому из поставленных требований). Возможно набор технологий будет зависеть от выбранной архитектуры, соответсвенно хотелось бы услышать мнение по поводу возможных архитектурных решений. Тогда можно сначала именно требования? Пока что я вижу следующее: 1) Требуется нечто по схеме клиент-сервер. 2) Серверная часть должна: 2а) Хранить информацию о клиентах, обеспечивать взаимодействие между ними. 2б) Скрывать от клиентов детали реализации логики игры. 2в) Обеспечивать идентификацию клиентов, создавать сессию работы с клиентом. 2г) Обрабатывать порядка 10*(количество игроков) обращений в минуту с задержкой не более 2 секунд. 3) Клиентская часть предполагает работу в ОС Windows и должна: 3а) Обеспечивать хранение значимого объёма графических данных. 3б) Отрисовывать 2D-графику, простейшие анимации, воспроизводить звук, предоставлять "мышиный" интерфейс. 3в) Связываться с сервером, получая от него информацию с частотой не ниже раза в 2-3 секунды. 3г) Не требовать установки дополнительных компонент или драйверов (кроме дополнительных компонент системы, вроде .NET Framework). 4) Кроме этого, пользователям должен быть предоставлен интерфейс создания аккаунта. Он должен: 4а) Позволять произвольному пользователю создать новый аккаунт, защищённый паролем. 4б) Позволять восстановление забытого пароля. 5) Требуется не использовать дорогостоящие платные решения. Прочее - это уже требования к деталям реализации, и их необходимость не вполне очевидна. Почему логика должна реализовываться скриптами? На кой чёрт хранить графические объекты в СУБД? Почему конкретный механизм организации сессии вынесен в требования к решению? Почему drag-and-drop вынесен в отдельный пункт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 12:00 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionТогда можно сначала именно требования? Собственно существенные с моей т.з. требования такие: 1. Общие требования 1а) Игра должна позволять играть через интернет. 1б) Архитектура игры – Клиент – Сервер – СУБД. (Во избежание путаницы с определением скольки это звенка) 1в) Ориентировочная платформа игры – ОС Windows. 1г) Длительность партии должна быть ограничена по суммарному времени ходов для каждого из игроков. 1д) Не должно использоваться дорогостоящих технических решений 2. Требования к данным 2а) Должно использоваться централизованное хранение данных при помощи реляционной СУБД. 2б) В центральной БД должны храниться описания игровых объектов, учетные записи пользователей, статистика и логи матчей. 2в) Описание игровых объектов должно включать в себя - тип или набор типов каждого объекта, его начальные характеристики, изображение. Хранение изображение в центральной БД обусловлено 2мя причинами – удобство при наполнении базы игровыми объектами и возможность клиенту получить недостающие объекты через запрос к серверу в случае необходимости. 2г) База должна поддерживать количество различных игровых объектов порядка 1000-5000 при размер графического представления каждого объекта порядка 50 кб. 2д) Графическое представление всех игровых объектов должно так же храниться на клиенте (во избежание разрастания трафика). При этом поиск и подгрузка нужного в конкретный момент набора объектов на клиенте должна быть сравнима со скоростью подобных операций с использованием СУБД. 3. Требования к серверу 3а) Должен обеспечивать идентификацию и взаимодействие клиентов игры между собой. 3б) Должен поддерживать аутентификацию пользователей (авторизованный доступ). 3в) Должен поддерживать сессии или сеансы работы клиентов. 3г) Обрабатывать порядка 10*(кол-во игроков) запросов от клиентских приложений в минуту. 3д) Должен отклонять запросы от версий клиентов, не соответствующие актуальной для него версии. 3е) Должен предоставлять возможность определения активных (онлайн) подключений. (требование может быть перенесено в раздел клиента в зависимости от реализации). 4. Требования к клиенту 4а) Должен предоставлять графический интерфейс с возможностью отображения 2d графики и простейших визуальных эффектов и анимации. 4б) Должна быть возможность воспроизведения звука. 4в) Должен предоставляться “мышиный” интерфейс, в том числе с поддержкой драг-н-дроп. 4г) Иметь возможность самообновления при обнаружении более новой версии. 4д) Не требовать установки дополнительного ПО. 4е) Обеспечивать скорость отклика (реакции на действия оппонента) не ниже 2-3 секунд. Требований к заведению учетных записей здесь не привожу, потому как это скорее отдельная тема, и на выбор основных технологий они повлиять не должны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 16:53 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ИМХО, Вы смешиваете требования к приложению (время отклика сервера), требования к реализации (использование на сервере СУБД) и некие полуформальные пожелания. авторПри этом поиск и подгрузка нужного в конкретный момент набора объектов на клиенте должна быть сравнима со скоростью подобных операций с использованием СУБД.То есть, если в одном случае время 1мс, а в другом 100мс, то всё, не подходит? авторОбеспечивать скорость отклика (реакции на действия оппонента) не ниже 2-3 секунд. Если мы считаем, что между собой клиенты не общаются, то это требование не к клиенту, а к системе в целом. Ну да ладно. Нужно придумать структуру данных в БД, саму БД, сервер обработки запросов, протокол взаимодействия сервера с клиентом и клиентскую часть. С данными вроде проблем нет - таблица пользователей, таблица матчей, таблица объектов; хранимые процедуры записи результатов матча, создания нового пользователя. Хотя почему бы сами изображения при этом не хранить в файловой системе, я не понимаю. Для БД изобретение велосипеда противопоказано, бесплатных вариантов вроде есть, выбирайте по вкусу. На роль сервера обработки запросов сойдёт Apache. Клиентскую часть можно писать или "толстым" клиентом, причём для оговоренных возможностей достаточно чего угодно - Delphi, C++, .NET. Можно подумать над вариантом flash-приложения (ActionScript), не помню, что у него там с правами на распространение и работой с сетью. Или "тонким", предварительно создав на локальной машине папку с требуемыми картинками, HTML5 (+WebGL) на требуемые возможности тоже должно хватить. В общем, оптимален тот вариант, который готов реализовывать имеющийся программист. Протокол - самый разнообразный по вариантам пункт. Моя идея - клиент умеет посылать пакеты типа "привет, это я", "есть тут кто?", "(не)хочу играть с этим", "сделан ход (изменена ситуация на поле)", "всем пока"; кроме этого, с момента соединения регулярно посылается пакет "есть новости?". От сервера, соответственно, летают пакеты "привет, возьми номерок", "ты кто, я тебя не знаю", "тут есть вот такие ребята", "начинаем игру (с таким-то)", "ничего нового" и "ситуация на поле изменилась". Для деталей нужно знать правила игры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 17:35 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionТо есть, если в одном случае время 1мс, а в другом 100мс, то всё, не подходит? Имелось в виду что скорость выборки и поиска объектов на клиенте не должна зависеть от кол-ва объектов, среди которых мы ищем. Хранение объектов в виде обычного набора файлов скорее всего не подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 18:05 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorИмелось в виду что скорость выборки и поиска объектов на клиенте не должна зависеть от кол-ва объектов, среди которых мы ищем. Хранение объектов в виде обычного набора файлов скорее всего не подойдет. Чтобы совсем не зависела - это утопия. А поиск среди жалкой тысячи можно делать хоть последовательным перебором - с диска в память дольше грузиться будет. То есть, извините, существенно более тяжеловесные игры держат свои ресурсы в виде файлов на диске и не жужжат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 18:29 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionНу да ладно. В принципе предложенный вариант в целом понятен, спасибо. Единственное не совсем понял что предлагается на апаче использовать как собствено наш игровой сервер (или сервис). Немного не понятно, как учесть в такой реализации следующие моменты: 1. Как сервер сможет обрабатывать онлайн статус игрока. Для того, что бы засветить игроку оффлайн-статус, должна произойти обработка некоторого события (отстусвие пакета "есть тут кто?" в течении например минуты с последнего получения). Т.е. нужна некая эмуляция события OnTimeOut. Собственно как раз и рассмативался SOAP-сервер под Apache, но не понятно как он сможет справится с этой ситуацией. 2. С помошью чего наиболее гибко реализовать игровую логику. Поясню. Помимо жесткой базовой логики которая "зашивается в код", игровой объект может обладать некоторыми активируемыми способностями типа "Если на поле есть 3 таких же объекта, вы можете уничтожить целевой объект соперника". Описание таких способностей на мой взгляд проще всего делать с помошью некоторого скрипта (хотя бы для того, чтобы при добавлении нового объекта с новыми способностями в игру не надо было бы менять код). 3. Каким образом будет осуществляться управление игрой. Если бы это была не онлайновая игра (а игра в рамках одного приложения), то реализация управления осуществлялась бы созданным в начале партии объектом, который обрабатывал бы события создаваемые игроками, изменял бы своё состояние и по завершению партии удалялся. В предлагаемом варианте (если я правильно понял) получается при каждом обращении клиента надо: -создавать объект, отвечающий за игру при каждом запросе клиента, -загружать из БД его состояние, -обрабатывать им полученный вызов (меняя при этом состояние), -отправлять обновленное состояние клиентам, -сохранять обновленное состояние в БД, -уничтожать объект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 18:44 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, 1) А зачем нам статус online сам по себе? Он обновится в следующий раз, когда состояние этого игрока кого-то заинтересует (или его текущего оппонента, или же интересующегося готовыми к игре игроками). 2) Поскольку я понятия не имею, что за способности, то могу разве что посоветовать посмотреть, как устроены эмуляторы MtG - среди них было что-то с открытым кодом. Полагаю, что, в общем случае, добавление новых возможностей в любом случае повлечёт за собой некоторую модификацию кода, причём что серверного, что клиентского. Вопрос о лёгкости такой модификации должен решаться на уровне архитектуры конкретных приложений. 3) А в чём проблема при организации партии создавать на сервере объект "партия", хранить в основном обработчике указания на то, какие игроки участвуют в каких партиях и партии передавать информацию о принятых игроками решениях. 4) И мне не кажется нужным отражать ход партии в БД - зачем? Объекты "партия" что, в память не влезут? В БД пишется только итог партии; опционально ещё события логина/логаута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 20:36 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
Поиск по sourceforge и аналогичным сайтам выдает сотни открытого кода mmorpg. Поиск по amazon дает соответствующие книжки как делать. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2011, 23:47 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
kosh the bestПоиск по sourceforge и аналогичным сайтам выдает сотни открытого кода mmorpg. Поиск по amazon дает соответствующие книжки как делать. В чем проблема? Хотелось получить сжатые варианты технологический решений с покрытием предложенных требований. Разбираться в открытых кодах сотен мморпг весьма трудоемкая задача. К тому же большинство из них имеет совсем другие требования, и значит другие применяемые технологии. Скорее всего наиболее близким к текущей задаче можно считать MtG:Online, но она закрытая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37352565&tid=1342823]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
136ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 455ms |

| 0 / 0 |
