Incvisitor
по-моему самое простое будет - если конкурсанты будут писать консольные приложения.
Сейчас сделал тест - консольное приложение "клиент" читает из консоли строку, пишет в консоль ее длину (эмулируем ии. логично что команда клиента короткая а инфа с сервера длинная).
Сервер запускает двух клиентов, отправляет им строки по 10000 символов, считывает ответы, снова отправляет и т.д. 1000 обменов занимает 50мс. Итого - проблемы с производительностью нет.
kipar
> консольные приложения
пайпы это тема, и по вводу/выводу отлаживаться легко, если std::cout не улетит на хост-приложение конечно
std::cerr тогда оставить хотя бы
#!
да, STDERR оставить (точнее направить в STDOUT сервера) и в него клиенты смогут отладочные сообщения писать.
kipar
а сервер просто общее состояние мира каждый кадр шлёт? или оно индивидуально для каждого клиента?
или клиент должен запрашивать?
в общем так недалеко и до http GET/POST скатиться)
#!
Состояние у всех свое, но конкретный протокол надо обсуждать. Карту можно только в первый тик отправлять (если, конечно, нет разрушаемости), ну а положение всех игроков и снарядов - да, каждый кадр (тут еще непонятно будет ли туман войны).
> до http GET/POST скатиться
http тоже вариант, но консольный ввод\вывод, по-моему, делает порог входа минимальным - любой язык (от пролога до баша), любой уровень знания языка (достаточно знать gets и puts, ну и уметь работать со строками).
Могу для конкурса железку выделить у меня все равно 24/7 сервера крутятся,
а так видеться что должен быть сервер на websocket и сессионные подключения к нему, сервер выдаёт все изменения мира а на каждой стороне свой ИИ обрабатывает как хочет информацию о мире и возвращает обратно
а с get/post будет пошаговая стратегия))
nordron01
> websocket
я так понимаю, это чтоб и правда в реалтайме игры крутить, не по 10 матчей за секунду а со скоростью 60 тиков в секунду?
kipar
Верно, а в идеале чтобы можно было снять ограничение скорости в Debug режиме для отладки клиентов. То есть сервер должен быть локальный, написан заранее и роздан участникам.
Я думаю лучше сделать через использование DLL (COM-dll). Для клиентов которые по той или иной причине не могут работать с DLL или им неудобно, сделать прокси DLL которая будет реализовывать тот или иной протокол для обмена в удобном для клиента формате. Сервер, как написал Майкл - локальный.
Я тут думал у меня будет другой проект, но у него шансы как то не очень, так что возвращаюсь.
Mikle
У меня в общем то есть прототоип, который пишу. Примерно в рамках описанных правил.
Думаю за недельку что-то смогу предъявить показываемое. Ориентироваться буду на первых порах на C интерфейс dll,
на который можно будет прикрутить враппер нужного вида. Но что то я вижу, необходимости может и не быть.
Пишу прежде всего графическое приложение, в котором будет удобно отлаживать, я надеюсь.
Писать сейчас сервер, играющий 100 сессий одновременно считаю пока преждевременным. Но при работающей концепции конвертировать будет несложно.
Делаю проект про танки. Сейчас как раз дошли до управления ботами-танками. В текущем ЛУ как раз учим ботов патрулированию территории. Ежели сообщество согласится провести конкурс АИ-танков под наш проект, то со своей стороны мну внесёт в призовой фонд, скажем 15килорублей.
Ren, у вас там поди очень сложно? Тут же хотели минимум сделать, вода, препятствие и равнина... Потянет ли народ сходу ваши правила?
Ren
Не могу говорить от лица сообщества, а только от своего. Я слабо понял твоё предложение.
Нет, любой приз - это прекрасно, но по мне твоя тема больше подходит в вакансии что-ли.
И при условии что ты её сформулируешь чётко.
Вот конкретно эту тему я создал чтобы максимально уйти от проЭктов.
А для этого суть должна быть: a) простой для понимания, б) по макс. независимой от среды исполнения,
в) чтобы был фан завалить AI другого участника. г) судейство было строго формальным.
Der FlugSimulator
Свойство же супер простое - запускаем игру с ботами, и смотрим, кто победил в серии матчей. Допустим 15 матчей. Пилится пруф-видос с матчами и все, дело в шляпе.
stratego
Дело в том что все окружение уже сделано. Есть карта 1,2х1,2 (пока одна, в перспективе генерируется на основе открытых источников). На карте сложный городской ландшафт. Выделены здания, дороги, водные препятствия, зоны с растительностью. Написаны алгоритмы передвижения, видимости, стрельбы. Т.е. все это уже готово и в прошлом ЛУ можно было радостно пострелять по танкам противника и даже получить надпись «вин!». То есть танки игрока полностью функциональны. В текущем ЛУ мы учим танки боты патрулировать территорию по сложному (не очевидному) маршруту. Надо отметить что алгоритмы пишутся универсальные без привязки к конкретной карте. Следующим шагом будет научить бота отстреливаться, т.е. дать ему различные типы поведения (сближение, удаление, концентрация огня) и задать условия поведения.
Последняя фраза, как мне кажется, напрямую пересекается с данным конкурсом. Почему я и предложил.
Тема в архиве.