omlin писал(а):
Я склонен считать, что такие вещи, как умения, нужно делать просто отдельными классами, которые подписываются на события движка.
Если очень хочется, сделайте это в виде отдельной dll-ки, подгружаемой в движок в качестве плагина.
В этом случае, архитектурно всё будет весьма грамотно, и производительность никак не пострадает.
Очень хочется, чтобы можно было делегировать возможность делать скилы куда-то вовне.
И подключать их БЕЗ проверок "лично". Собственно это же касается и многих других аспектов
игровой механики.
Т.е. нужен какой-то бокс, в котором ничего существенного сломать нельзя.
Кроме балланса-игроков итп
. (это решаемо )
Производительность... железом не решается ?
Я к тому, что купить гибкость за производительность вполне можно, железо довольно быстро дешевеет.
Насколько серьезное железо используется там, где крутится сейчас ? Оно используется монопольно ?
Как альтернативу, можно себе представить некую кастомизацию скилов по шаблонам.
Т.е. редактирование ресурсов фактически. Как это везде и сделано.
Но тут уже всё будет много грустнее.
Никаких существенных улучшений изнутри такого jail-а не сделать.
Третий подход: смешанный. Большинство скиллов-аффектов итп реализуются на уровне мада,
и можно только "выбрать тип и заполнить поля", другие можно написать целиком снаружи.
Но тут всё зависит в процентном соотношении. Надо как-то собирать статистику и периодически
"переписывать" написанное снаружи и много жрущее.
Изначально мне хотелось бы иметь архитектуру в которой ГМ с соответствующими полномочиями
может подправить или сделать [любой] скилл "на лету". Понятно, что не любой
, но 95%
потребностей хотелось бы покрыть. При этом однопоточное все будет или многопоточное
мне честно говоря пофиг. Эти мысли не для интеграции в циркуль.
Кстати о поточности... многопоточность тоже "вещь о двух концах". Честно говоря толком
применение к маду не вижу... если только в отдельном потоке всю коммуникационную часть
сделать, а разбор команд и сами действия в другом... но толку с этого никакого внятного
не будет. DNS-ы можно резолвить отдельным потоком... а что еще... не знаю.
"Каждому юзеру - свой поток" - это был бы странный лозунг.
"Я тебя первый зарезал, потому как мой поток на менее загруженном ядре крутится".