|
|
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionBlackMirror, 1) А зачем нам статус online сам по себе? Он обновится в следующий раз, когда состояние этого игрока кого-то заинтересует (или его текущего оппонента, или же интересующегося готовыми к игре игроками). Т.е. предлагается чтобы каждый клиент регулярно запрашивал - "кто есть живой?" , а сервер по этому запросу обновлял соотвтесвующие статусы у всех игроков? Abstraction2) Поскольку я понятия не имею, что за способности, то могу разве что посоветовать посмотреть, как устроены эмуляторы MtG - среди них было что-то с открытым кодом. Полагаю, что, в общем случае, добавление новых возможностей в любом случае повлечёт за собой некоторую модификацию кода, причём что серверного, что клиентского. Вопрос о лёгкости такой модификации должен решаться на уровне архитектуры конкретных приложений. Можно для простоты считать что способности в целом сходны с MtG. Т.е. могут задаваться формулой <Условие применения> : <Результирующий эффект>. В обеих частях формулы могут использоваться составные выражения (составленные из элементарных крипичиков). Кол-во таких кирпичиков ограничено - порядка 30-40, но их комбинаций большре кол-во. Т.е. в коде реализуется логика каждого кирпичика, а не состаная логика выражения для каждого из объектов. Собствено и опрос - какие варианты по релизации такой логики могут быть? Скриптовый язык а-ля Питон? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 12:34 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirrorAbstractionBlackMirror, 1) А зачем нам статус online сам по себе? Он обновится в следующий раз, когда состояние этого игрока кого-то заинтересует (или его текущего оппонента, или же интересующегося готовыми к игре игроками). Т.е. предлагается чтобы каждый клиент регулярно запрашивал - "кто есть живой?" , а сервер по этому запросу обновлял соотвтесвующие статусы у всех игроков? Зачем - каждый? Если игрок играет с кем-то, то партнёр будет регулярно интересоваться состоянием матча, соответственно обнаруживая отсутствие оппонента. Если он не играет ни с кем, то до тех пор, пока кто-нибудь не захочет узнать, что там с игроками на сервере, нас ни в малейшей степени не волнует, жив он там или умер. BlackMirrorAbstraction2) Поскольку я понятия не имею, что за способности, то могу разве что посоветовать посмотреть, как устроены эмуляторы MtG - среди них было что-то с открытым кодом. Полагаю, что, в общем случае, добавление новых возможностей в любом случае повлечёт за собой некоторую модификацию кода, причём что серверного, что клиентского. Вопрос о лёгкости такой модификации должен решаться на уровне архитектуры конкретных приложений. Можно для простоты считать что способности в целом сходны с MtG. Т.е. могут задаваться формулой <Условие применения> : <Результирующий эффект>. В обеих частях формулы могут использоваться составные выражения (составленные из элементарных крипичиков). Кол-во таких кирпичиков ограничено - порядка 30-40, но их комбинаций большре кол-во. Т.е. в коде реализуется логика каждого кирпичика, а не состаная логика выражения для каждого из объектов. Собствено и опрос - какие варианты по релизации такой логики могут быть? Скриптовый язык а-ля Питон? Если количество элементов ограничено, то можно использовать самодельный интерпретируемый язык, описывающий их комбинации и создать структуру "способность", в которую такую способность можно прочитать. Дальнейшее - уже вопрос логики игры, не архитектуры решения в целом. Проблема с M:tG именно в том, что прихотливость способностей ограничена только возможностями естественного языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 13:15 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionBlackMirror, 3) А в чём проблема при организации партии создавать на сервере объект "партия", хранить в основном обработчике указания на то, какие игроки участвуют в каких партиях и партии передавать информацию о принятых игроками решениях. Не совсем понял. Предлагается создавать один объект на все партии? Как тогда хранить контекст каждой партии? Или на каждую партию свой объект? Тогда в рамках каких нитей или процесссов они будут существовать? Собственно это наверное ключевой вопрос для выбора архитектуры сервера. Abstraction4) И мне не кажется нужным отражать ход партии в БД - зачем? Объекты "партия" что, в память не влезут? В БД пишется только итог партии; опционально ещё события логина/логаута. Не пренципиально, но лог скорее всего понадобится хотя бы для анализа корректности ходов игроков... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 13:19 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, Чё-то Вы, точно, намудрили. Шахматы реализуются совершенно элементарно. С шашками немного посложнее, но тоже довольно просто. Сейчас делаю онлайн-игру, где фигуры разборные (состоят из 3-х частей) и могут ходить по частям. Реализация, понятно, что на клиенте - HTML+CSS+Javascript, а на сервере - CGI (Паскаль)+PHP+MySQL. Можете посмотреть эскизную клиентскую часть (код яваскрипт там прямо на странице, никаких фреймворков нет, только оригинальный код). Тынц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 13:52 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
Проехали... . Теперь ссылочка не будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 20:47 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeПроехали... . Теперь ссылочка не будет работать. провайдер не выдержал миллион хитов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 04:45 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 09:12 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSerge, А то, что центральные части можно складывать по двадцать штук в одну клетку - это бага или фича? Или смещение частей в верхний левый угол клетки по двойному клику? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 10:24 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeBlackMirror, Чё-то Вы, точно, намудрили. Шахматы реализуются совершенно элементарно. С шашками немного посложнее, но тоже довольно просто. Сейчас делаю онлайн-игру, где фигуры разборные (состоят из 3-х частей) и могут ходить по частям. Реализация, понятно, что на клиенте - HTML+CSS+Javascript, а на сервере - CGI (Паскаль)+PHP+MySQL. Можете посмотреть эскизную клиентскую часть (код яваскрипт там прямо на странице, никаких фреймворков нет, только оригинальный код). Тынц . Клиент любопытный. Роль сервера будет сводится к передаче ходов между игроками? Плюс не очень понятно как применить эти технологии к исходной задаче... Зашивать в javascript логику всех объектов? и как вы определяете висит ли кто нибудь на другом конце провода? Есть ли таймер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 10:50 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionShSerge, А то, что центральные части можно складывать по двадцать штук в одну клетку - это бага или фича? Или смещение частей в верхний левый угол клетки по двойному клику? Второе - бага, ясен помидор, а насчёт "двадцать штук" не понял, это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 11:33 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSerge, Возьмите среднюю часть фигуры и вынесите её на пустую клетку. Теперь можно взять центральную часть другой фигуры и переместить её (за два шага) в ту же среднюю часть (в ней получится две центральных). Firefox 3.6.9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 11:37 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, Роль сервера следующая: Перед самым завершением каждого хода, отправляем состояние доски в виде JSON на сервер, где проверяем валидность. Если всё ОК, записываем данные в JSONе в базу MySQL и возвращаем на клиента признак, что всё ОК, что сюда можно фигуру поместить. На клиенте - только минимально проверяется валидность, то есть, совершенно элементарные вещи, чтобы при каждом мышедвижении не лазать на сервер. Конечно, основная проверка - на сервере. Висит или не висит не определяю никак. Да, таймер конечно будет. Так что завершение игры по таймеру тоже будет иметь место. В базе данных лежит таблица игр с мемберами со ссылкой на таблицу мемберов и таблица ходов со ссылкой на таблицу игр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 11:48 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
AbstractionShSerge, Возьмите среднюю часть фигуры и вынесите её на пустую клетку. Теперь можно взять центральную часть другой фигуры и переместить её (за два шага) в ту же среднюю часть (в ней получится две центральных). Firefox 3.6.9. Хе, точно, недосмотрел. В принципе это всё равно серверный валидатор обрубит, спасибки. А с двойным кликом надо точно разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 11:51 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
Хорошо, тогда более конкретный вопрос - может ли кто-то оценить эффективность использования Python для решения описанной задачи? Насколько он сможет покрыть сформулированные требования и насколько разработка на нем в данном случае будет проще/сложнее чем с использование других вариантов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 17:55 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
BlackMirror, Вопрос не в питоне, а в клиенте и сервере. Серверная часть - SQL (в бòльшей степени, а питон, или сишарп, или пхп - совершенно мелкая штука, которая только и делает, что проверяет айди юзера в базе и айди хода в игре, ну и некоторые другие мелкие штучки делает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2011, 19:42 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
ShSergeBlackMirror, Вопрос не в питоне, а в клиенте и сервере. Серверная часть - SQL (в бòльшей степени, а питон, или сишарп, или пхп - совершенно мелкая штука, которая только и делает, что проверяет айди юзера в базе и айди хода в игре, ну и некоторые другие мелкие штучки делает).Уверены? По описанию, могут быть нетривиальные условия выполнимости заявленного хода. Если там может быть что-нибудь вроде 2* Opalescence + Humility , это мало не покажется, на чём ни кодируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2011, 13:14 |
|
||
|
Выбор технологии (ий) для создания простейшей онлайновой игры
|
|||
|---|---|---|---|
|
#18+
Abstraction, Я ж писàл уже, не всё так просто. На клиенте (яваскрипт) - ну да, типа, минимальная проверка, вся логика на паскале в виде CGI (там ещё и ИИ имеется, который сам ходы делает) + пхп для сохранения уже точно валидных ходов в базе MySQL. К базе "ждущий" юзер обращается раз в 3 секунды (polling) через яваскрипт+пхп, чтобы посмотреть не добавилась-ли последняя запись. Я о том говорю, что хоть питон, хоть ещё что - один хрен. Не сложнее и не проще, а сколько надо, столько и получится. Хотя, конечно, можно всё через одно место сделать. Тогда простой телефонный справочник, или даже хелловорлд, превратится в "серьёзную задачу". Там ещё чат, кстати запланирован. ПС. А за ошибки - спасибо. У меня всё воспроизвелось. Поправил, но не выложил (одну строчку закомментировал и один пропущенный иф добавил). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2011, 15:40 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37355838&tid=1342823]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 435ms |

| 0 / 0 |
