LINUX.ORG.RU

Архитектура сервера и ЯП для ее реализации


0

0

Возникла необходимость написать игровой сервер для РПГ с неграфическим интерфейсом.

На него будут возложены такие задачи: интерактивное общение с пользователями, задачи по глубокой обработке текстовых данных — парсинг с помощью регулярных выражений, генерация ответов пользователю, создание «текстовых» уровней-лабиринтов, модификация сценария развития событий налету, достаточно сложная генерация сюжетных линий исходя из действий пользователя.

Требования:

  • Высокая надежность со стороны ЯП и используемых технологий. В случае сбоя отдельных частей программной логики, необходимо, чтобы существовали какие-нибудь Супервизоры, работа которых происходит достаточно быстро для того, чтобы игрок не заметил «горячей замены» (возможно, выражение не совсем точное) кода, действующего узла, генератора карты, «отвалившегося» NPC-босса и так далее.
  • Относительная проста написания игрового мира в терминах происходящих процессов.
  • Красивая работа с многопоточностью, сетью и регулярными выражениями.

P.S.: Есть идея использовать для этой задачи связку из CL + Erlang или Java/Clojure + Erlang. Или просто CL.

На интуитивном уровне, вроде бы, понятно, что CL будет отвечать за логику, разбор регулярных выражений, работу с графами, генерацию мира, имитацию ИИ, а Erlang за работу с сетью и всевозможную многопоточность. Но интуиции свойственно ошибаться, поэтому интересует мнение людей, у которых есть опыт написания чего-то подобного.

И да, всячески приветствуется литература (желательно русскоязычная) по теории построения таких серверов. Можно с примерами на С.

Ответ на: комментарий от anonymous

потом, на regexp свет клином не сошёлся. Можно посмотреть на PEG

anonymous
()
Ответ на: комментарий от alienclaster

Персонаж сможет задавать собственные карты, предполагается так же генератор персонажей, конфиги к игре и, возможно, будет веб-бот для отдельных так сказать нужд

всё равно, разбор регулярными приложениями тут вряд ли нужен. Карты могут задаваться ascii-артом, в случае простых зон, могут описываться вида (выход в такую-то сторону-смежная комната); конфиги парсятся и без регекспов замечательно; генератор персонажей работает как и конфиги, со структурным текстом. Итого: веб-бот и/или поиск по карте. Тут вопрос, как организована БД. Это может быть ООБД, может быть РСУБД. Во втором случае можно regexp не делать, этим займётся select. grep -Rn $foo $MUD/var/tmp хватит в большинстве других случаев :))

Изменение отношения NPC, их заинтересованность персонажем завист от его действий. Так же, предполагается, что NPC и «общий сценарий игры» будут _самостоятельно_ разрабатывать неповторяющиеся (или редко повторяющиеся) квесты (это и будет тот самый ИИ, его имитация)
Квесту будут генерировать сами NPC и Игровой Мир вокруг, исходя из действий перса.
В идеале - разные персонажи _одинаковых_ классов отыгрывают по-разному, этакий игровой экзистенциализм :)

да, интересная фишка. Ну и как с этим всем разбираться? :))) в теории, можно залезть в RDF и там завязнуть. На практике, тут применение для какого-то пролога с базой знаний и марковскими цепями, что-то для cтохастической игры

anonymous
()
Ответ на: комментарий от alienclaster

http://www.mudconnector.su/ArticleIntro

Да и трудно ожидать конца таких популярных проектов, как, скажем, World of Warcraft... который по сути своей в данный момент представляет собой ни что иное, как ROM с прикрученной к нему графикой и саппортом :).


ADOM с улучшенной графиков и более интерактивный, не пошаговый в том числе


ну с улучшенной графикой это просто, хотя в текстовой форме есть свои преимущества — можно написать любой текст локации, и привесить действия, look at предмет, examine предмет, do smth. with предмет, описанный в локации :)) текст более composable, с ним можно делать всё что угодно неограниченным количеством действий (особенно если ещё прикрутить триггеры на say/talk to). А с ограниченным набором действий и инвентарём получается тупая угадайка, перебор всех вариантов.

не пошаговый


довольно странно это будет выглядеть. В AD&D есть устоявшиеся циклы, атак/защиты, кастинга, регенерации, модификации saves и т.п.. Если ты делаешь не пошаговый, то что происходит с этими циклами?


Более интерактивный — это какой, такой http://absurdopedia.net/wiki/MUD ? (покликай по ссылкам)

anonymous
()
Ответ на: комментарий от anonymous

> всё равно, разбор регулярными приложениями тут вряд ли нужен

Регекспы я предполагал как средство проверки корректности входных данных от пользователя и вообще из вне. А за одним и разбор в граф или внутренний формат для хранения данных, рсубд там какая-нибудь

конфиги парсятся и без регекспов замечательно

Как?

генератор персонажей работает как и конфиги, со структурным текстом

А, то есть ты предлагаешь xml/ini?

Ну и как с этим всем разбираться? :)))

Честно - без понятия, но уверен будет интересно

alienclaster ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.