Большой Воронежский Форум
» Программирование>Проект: "Онлайн - игра для форума !"
LSL 16:42 11.01.2004
В этой теме будет обсуждаться создание онлайн-игры для форума.

Это будет простая логическая, пошаговая, многопользовательская, онлайн - игра.

Игра будет построена по модели "клиент-сервер". Клиентом будет .net-приложение пользователя, сервером будет php-скрипт выполняющийся на сервере u-antona.

Рады выслушать любые советы и предложения, присоединяйтесь к нам в компанию..


В разделе "games"- обсуждается сама игра:
http://www.u-antona.vrn.ru/forum/sho...threadid=21422

(этот раздел посвящен только разработке игры) [Ответ]
Druid VAV 16:50 11.01.2004
Собственно, ХЗ как... лучше сделать просто на php через браузер, иначе просто давать php скрипту GETили POST запросы, причём неважно из каких приложений, эти запросы никто не отменял [Ответ]
LSL 17:59 11.01.2004
Druid VAV
Собственно, ХЗ как... лучше сделать просто на php через браузер, иначе просто давать php скрипту GETили POST запросы, причём неважно из каких приложений, эти запросы никто не отменял

В том то и дело что надо без использования браузера.
GET и POST для передачи данных скрипту, а как получить данные ? В Виде html-страницы не пойдёт...

Нужно что-то типа ASP.NET Web-сервиса.
. [Ответ]
DMakeev 00:55 16.01.2004
LSL, Работа с сокетами не нужна - к какому боку вы их вообще пихать собрались?

Пишешь прогу на людимом тобою .NET, которая коннектится к скрипту по 80 порту (или что там у тебя на хостинге), по HTTP передаешь ему запрос нужного скрипта и передаешь ему в качестве параметра необходимые данные. Все, скрипт данные получил.
Получаешь локальной прогой ответ скрипта в виде строки, в которую ты можешь записать все что душа пожелает, в том числе и формализованную запись переменных (а-ля serialize в PHP), которую потом ты и парсишь.
Если я путанно изложил, могу набросать алгоритм взаимодействия. Только опиши, какие информационные потоки будут ходить. [Ответ]
LSL 01:28 16.01.2004
DMakeev Ты нормально изложил, но я даже представить не могу как это всё делается на практике, нужен человек разбирающийся в php с которым можно будет написать игру для форума! Не хочешь ? Я же возьму на себя создание клиента.

Про функции скрипта-сервера я писал многократно:

Он должен создавать(по запросу клиента "начало игры") и хранить до конца игры, состояние игры. Он должен позволять клиентам модифицировать это состояние(read/write). ВСЁ!

Состояние будет хранится в любой наиболее удобной форме. Я незнаю какая форма лучше подойдёт для php, хороший вариант - это набор переменных, массивов. Это состояние должно передаваться клиенту и обратно (например в сериализованном виде) [Ответ]
DMakeev 03:25 16.01.2004
http://www.expocity.ru/files/netcore_beta_1.rar
Как работает:
Данные от клиента принимаются в виде GET-запроса.
Выдает данные в stdout
Хранение - MySQL (Дамп прилагается)

В таблишце БД следующие поля:
gametype - тип игры. Поле предусмотрено для того, чтобы в одной таблице можно было хранить игры разных типов. Поле типа INT, нумеруй типы игр как пожелаешь.
game - состояние игры - поле типа TEXT, пиши туда любую инфу по игре в любом удобном виде.
players - максимальное число игроков. Поле типа INT.
finished - Флаг того, что игра завершена. Для текущих игр -1, для завершенных 1. Поле типа TINYINT.
started - дата и время создания игры - поле типа TEXT.
lastchanged - дата и время последнего изменения игры - поле типа TIMESTAMP.

Формат выдаваемых данных:
"!MESSAGE:***" - сообщение. Вместо звездочек текст
"!ERROR:***" - сообщение об ошибке. Вместо звездочек текст
"!GAME:***" - инфа игры.

Формат принимаемых данных см. по коду - там прокомментировано.

Что есть:
Создание игры
Чтение информации игры
Изменение информации игры

Чего пока нет:
Не выдает список всех игр
Нет статистики
Нет завершения игры
Нормальной документации

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

Если найдешь в этом разумное зерно - на выходных доведу до ума.
[Ответ]
LSL 11:08 16.01.2004
DMakeev Не торопись !!! Ещё ничего не придумали а ты уже написал. Сейчас скачаю.

В дальнейшем нужен будет полигон для тестирования... есть много вопросов.
[Ответ]
DMakeev 22:46 16.01.2004
LSL, проге, собсно, пофиг что ты будешь в нее пихать - просто интерфейс для хранения данных на сервере. Пользуй по усмотрению Если будут замечания/пожелания - пиши. Эта версия сырая - ночью туго думаю. Так что за баги пардон.

Будет тебе полигон
Как только увижу движение вперед, сделаю. [Ответ]
LSL 00:35 17.01.2004
DMakeev Всё отлично ! Я кажется разобрался как с ней взаимодействовать .net клиенту.

Нужно решить что за игра будет, у меня есть варианты.

1) Hexxagon или Ataxx - интересные пошаговые логические игры, известные давно.. (1-4 игрока)

2) Можно сделать онлайн карточную игру, например дурака. (1-4 игрока)

Предлагайте свои варианты.

Сперва должна быть концепция, потом будем думать над реализацией. [Ответ]
mikе 11:20 18.01.2004

Сообщение от :
5) лучше всего выделить домен на форуме типа game.u-antona.vrn.ru или отделбную ветку u-antona.vrn.ru/game

u-antona.vrn.ru/game - по-любому. Под лозунгом "нет платному интернету". [Ответ]
LSL 11:34 18.01.2004
NeoExpert
1) действительно, сделайте в браузере. Не у всех есть framework, это будет не удобно ...

Объясняю один раз. Писать игру я буду преследуя две цели, первая цель - набраться опыта в .net, вторая цель - принести пользу форуму, за которую, надеюсь, быть вознаграждён благодарностями игроков ! Писать буду не один.

К тому же - как ты себе представляешь OpenGL 3D графику со звуковым оформлением в браузере ?? Это всего лишь пример, конечно же такой графики не будет в первой версии игры, но ведь не исключено что она появится в дальнейшем.

Я уверяю, что отдельное приложение куда удобнее чем браузер ! .net скачать не проблема.

Этот вопрос не обсуждается...

2) можите бойцовский клуб забабахать, аля "дай мо морде модеру" ?

Честно сказать я не знаю что такое "БК"...

шашки и карты -в жопень.

Ты ошибаешься это очень интересные игры ! Проверенные временем

3) делайте что-нибудь интересное,

Предлагай.

4) нужна возможность общаться в процессе игры

Будет. "Комментарий хода".

5) лучше всего выделить домен на форуме типа game.u-antona.vrn.ru или отделбную ветку u-antona.vrn.ru/game

Всё будет внутри приложения. Игроку достаточно подключится к интернету и запустить программу. Ни о каких доменах знать он не будет.

6) могу быть тестером.
Конечно..

7) если успею подучить РНР, то попытаюсь помочь

Всегда рады.

LSL добавил [date]1074420742[/date]:
DMakeev Некоторые моменты, которые я смутно представляю:

Одновременно может идти несколько игр (сессий). Сможет это сделать скрипт ? Данные для каждой сессии должны храниться отдельно (кол. игроков, текущий счёт, расп. фигур) мне это представляется как таблица, где строки - сессии, а столбцы данные...

Вся хитрость в том что нужно будет как то отслеживать текущие сессии, и если игрок закончил игру или у всех оборвалась связь и игра осталась незаконченой, то скрипт должен это отследить и удалить сессию. (Например, чат выкидывает если оборвалась связь, пингует чтоли...)

Я так понял после запроса скрипту (Request) сразу последует возвращённое значение(Response).

Может ли скрипт сам запросить клиента. Например послать ему сигнал "твой соперник сделал ход, очередь твоя." ?
Если не может, придётся постоянно опрашивать скрипт, пришла ли очередь хода.

.../polygon/lsl.php

Просто интересно, приведи пример запроса. Хочу поглядеть что скрипт мне ответит
[Ответ]
mikе 12:56 18.01.2004

Сообщение от :
Всё будет внутри приложения. Игроку достаточно подключится к интернету и запустить программу. Ни о каких доменах знать он не будет.

неа, всё равно

Сообщение от :
u-antona.vrn.ru/game

потому что так можно будет на халяву играть (через тест),
а халяву любят все. вот. [Ответ]
LSL 13:54 18.01.2004
mike_s Я же сказал что будет возможность игры по халяве, что тебе этот адрес дался Кстати подумай как будет выглядеть партия в карты из четырёх человек, когда каждые 15 минут кто-то будет отключаться.. [Ответ]
Druid VAV 14:14 18.01.2004
Затея какая-то бредовая. Честно. LSL Сделай просто взаимодействие прог друг с другом и всё. Не заморачивайся с php [Ответ]
LSL 14:46 18.01.2004
Druid VAV
Затея какая-то бредовая. Честно. LSL Сделай просто взаимодействие прог друг с другом и всё. Не заморачивайся с php.

Действительно и что я с этим php заморачиваюсь Как же я раньше не додумался сделать просто взаимодействие прог !

Ты хоть понял что сказал ? Ты знаешь способ "взаимодействия прог", лучше того что придумал я (через php) ?
[Ответ]
DMakeev 15:20 18.01.2004
NeoExpert, ты, конечно, не обижайся, но есть вещи, которые лучше не писать в целях обучения (к примеру - форум. Намучаешься, голову забьешь, а толком ничего не напишешь). Да и мпотом, нет тут работы для двух человек

А вот в качестве тестера и генератора идей буду рад тебя видеть
[Ответ]
JOHN_PROFF 13:24 19.01.2004
LSL Самое простое - крестики нолики, НО вся фишка будет в том, что в игре будет приватный чат, а сама игра для отвлечения. (Только в первой версии, а потом видно будет). [Ответ]
LSL 16:08 19.01.2004
JOHN_PROFF
вся фишка будет в том, что в игре будет приватный чат, а сама игра для отвлечения.

Врядли, чат у форума и так есть и не один. В игре будет не чат а "комментарий хода", он не дотягивает до полноценного чата.., впрочем, я пока смутно это всё вижу.. со временем всё прояснится. [Ответ]
Druid VAV 19:28 19.01.2004
LSL Свой сервер и куча клиентов - но с php у тебя будет больше гемороя [Ответ]
LSL 20:13 19.01.2004
Druid VAV
Свой сервер и куча клиентов

И что будет на этом сервере, если не php ?

но с php у тебя будет больше гемороя

Всё проще чем ты думаешь. Задача элементарная
[Ответ]
Druid VAV 08:36 20.01.2004
Я понимаю задачу, всё элементарно, но нерационально использовать пхп. у С больше возможностей для создания извращений, но если решите писать на пхп у меня есть соображения как сделать это чудо [Ответ]
LSL 12:05 21.01.2004
Druid VAV
у С больше возможностей для создания извращений

Ты о чём ?? Как ты себе представляешь сервер на C ?

у меня есть соображения как сделать это чудо

Делись своими соображениями, и по возможности ответь на вопросы которые я задал DMakeev'у выше. [Ответ]
LSL 12:57 21.01.2004
NeoExpert Бойцовский клуб - это слишком сложно. [Ответ]
fishca 13:01 21.01.2004
LSL

Сообщение от :
Ты о чём ?? Как ты себе представляешь сервер на C ?

Это программа которая крутится на сервере и общается по определенному протоколу с тобой. Только чтобы эту прогу засунуть на сервак надо доступ иметь для запуска этой проги. [Ответ]
LSL 14:11 21.01.2004
fishca Это всё усложняет. php-скрипт будет выполнять простейшие функции. Я бы вообще с этой дребеденью не заморачивался если бы был asp.net, тогда можно было бы и покруче БК сделать...


Этот вопрос решён, лучше предлагайте что писать... [Ответ]
DMakeev 23:45 21.01.2004
LSL,
1) обрабатывается великолепно. Собсно, данные по разным играм хранятся отдельно, никаких наслоений не будет. У тебя есть номера (ID-шники) игр, оперируй с ними как хочешь.

2) Данные хранятся не в сессиях, а в БД (разница, для тех. кто в танке, принципиальна). Нет никакой зависимости от того, в онлайне или в оффлайне пользователь. Юзверь послал данные, они записались в БД, и может делать что хочет. БД выступает постоянным хранилищем информации, не зависящим от пользователей. Отсюда вытекает вопрос необходимости авторизации. По этому поводу надо нам с тобой продумать хорошенько.

3) Ессно. Но не обязательно он будет нести какую-либо информацию - к примеру, если пользователь создает игру, ему возвращается сообщение, что все ок. Ты это сообщение можешь просто игнорировать.

4) Скрипт запросить клиента может... мороки с этим довольно много, но делать, имхо, придется бо так мы сможем достаточно легко отслеживать статус пользователя (онлайн/оффлайн), слать ему сообщения и т.д. Но в первой версии мы делать этого НЕ БУДЕМ. Бо заморочка на пару ночей, да и рабочий клиент мне нужен для тестирования. Оставим на будущее. Пока что просто опрашивай скрипт каждые дцать секунд. Команду статистики по данной игре и по играм в общем я свараню завтра-послезавтра.

PS Моя аська в профайле, давай не будем засорять ветку проектной перепиской .

Druid VAV,
соединение клиент-клиент (то бишь без использования хостинга, все данные лежат у клиентов)? А если "главный" отваливается все остальные откисают? ИМХО, проще сделать постоянно доступное хранилище в нете - надежнее.
А если писать cgi и вешать на своем хостинге - те же ... вид сбоку.

mike_s, размещать, скорее всего (если Антон не против), будем на хостинге форума, так что трабл с тестом быть не должно

NeoExpert,
1) У меня самого FrameWork нет, качать не особо хоца. Но, в принципе, почему бы и нет?
2) Можно и это сделать - сейчас главное сваять движок, что на него навесим - вопрос техники.
3) Предлагай свои варианты.
[Ответ]
fishca 10:00 22.01.2004
LSL
Еще надо про проксю не забыть... [Ответ]
LSL 23:09 23.01.2004
NeoExpert
Народ! Сюдя по отстутствию новый постов должен заметить, что это означает полный тормоз

Ошибаешься, просто сей час все немного заняты. [Ответ]
Kerish 22:25 09.04.2005
Вообще-то сервер стоит на unix-е. [Ответ]
Kerish 22:26 09.04.2005
Поэтому VBNet не катит... [Ответ]
Вверх