ArtistSpb писал(а):
Готов пообсуждать / чем то помочь / подключиться к проекту в каком то виде.
Благодарю за готовность помочь, это ценно! В общем-то я вернулся к продолжению работы над движком как раз потому как
Pacifist нашел мой проект и предложил сотрудничество.
Для того чтобы определить состоятельность модели "запрос-ответ" применительно к муду, я предлагаю сформулировать критерии и их обсудить. Например, в самом простом понимании муд должен быть многопользовательским, динамичным.
Массовость от такой модели выигрывает, т.к. клиенты не постоянно висят в коннекте с сервером а соединяются по-требованию, значит и ресурс клиентов выше. Для проверки многопользовательской функции модели нужно сделать прототип, в котором смогут одновременно находиться несколько игроков, видеть друг-друга и общаться. Проверить большое количество игроков можно будет лишь программно.
Для проверки динамичности модели нужно создать прототип боя (для начала с монстром). Бой должен выглядеть как бой в муде, с возможностью игрока каждый батлраунд применить скилл. Возможно баттл-раунды нужно будет сделать дольше чем в обычном муде, например на пару секунд.
Думаю когда будет готов функционал этих двух игровых моментов - сможем определить дальнейший вектор работы по улучшению.
Качество кода всегда имеет значение. С помощью объектного подхода, разделение слабо связанного кода вполне можно предотвратить определенный комплекс проблем. К тому же в таком подходе какой-то кусок приложения можно отключить на "ремонт", при этом даже не останавливая сервер.
На счет потоков и вебсокетов. В симфони, на которой я пишу проект есть хороший функционал разделения процессов, таким образом тяжелые процессы вполне можно пускать отдельным тредом. Вебсокеты мне нравятся, и это бы полностью решило проблему, но здесь есть некоторые особенности. Во первых это требует работы демона на серверной стороне, что скорее всего уже не подойдет для обычного хостинга. Во вторых, с вебсокетами я имел дело в формате Node.js, однако я не хочу использовать ее в серверной части. Тем не менее, пока обдумывал этот вопрос вспомнил так же и про PhpDeamon, который кроме вебсокетов к слову даже телнет протокол может слушать. Так же интересный вариант нашел - Ratchet (
http://socketo.me). Буду смотреть в их направлении, особенно если "запрос-ответ" покажет несостоятельность.
На системном уровне сейчас это работает примерно так:
1. обработка запроса клиента
2. проверка условий по алгоритмам и по базе (например, закончилось ли произнесение длинного заклинания)
3. запись новых отметок в базу (например о времени начала длинного каста)
4. в зависимости от условий вывод результата сообщением клиенту
Node.js имеет свои плюсы, и я считаю она хорошо справится с функционалом муда. Я бы ее не назвал аналогом пхп, ведь клиент не посылает запрос и не ждет ответа - он подключается к сокету, устанавливая постоянное соединение в обе стороны. По сути аналог телнета, и для целей муда самое то. Запрос посылается лишь однажды - запрос на постоянное подключение к каналу, по которому уже передается вся информация без запросов и заголовков. Есть кстати реализация муда на ноде - на гитхабе видел.
Если Ваш клиент сможет подключаться не только к телнет, но и обрабатывать входящие json-пакеты, даже если в формате дополнительного плагина, то он сможет работать и с веб-мудами. Моя реализация веб-клиента ориентирована только на запросы и прием ответов через http. На счет редактора зон, думали ли Вы уже о формате зон? Если он был бы у нас одинаковым/похожим то редактор пригодился бы нам обоим.
Вот мои наброски по поводу формата:
https://github.com/Rottenwood/UtopiaMud ... /rooms.ymlС рогаликами идею одобраю, тоже считаю карту необходимым элементом игры. Я это когда-то частично попытался реализовать вот тут: quank.org