Четверг, 14 Ноября 2024, 05:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Архитектура игр MOBA
zisXДата: Вторник, 10 Апреля 2018, 02:08 | Сообщение # 1
Neto Zis
Сейчас нет на сайте
Может кто-то уже задавался этим вопросом, как же все таки построена архитектуры таких масштабных проектов как Дота 2, LOL, etc..., в частности мне интересно послушать про организацию способностей, что они из себя представляют, как реализованы на уровне исходного кода. Если играли, то наверняка замечали, что их там великое множество, довольно четко прописаны правила их взаимодействия, все прямо скажем непросто.

ООП там точно нету (по крайней мере в качестве фундамента так сказать), может какой-то КОП улучшенный.




Сообщение отредактировал zisX - Вторник, 10 Апреля 2018, 02:09
zmearДата: Вторник, 10 Апреля 2018, 06:38 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Зайдите в редактор карт Warcraft 3
там же конкретно все объекты показаны, со всеми присущими им свойствами.
Явными по крайней мере, а все неявные можно додумать



drcrackДата: Вторник, 10 Апреля 2018, 07:23 | Сообщение # 3
старожил
Сейчас нет на сайте
Разбираться в архитектуре подобных игр рекомендую все-таки на примере вова, а не доты
По нему на порядки больше инфы: есть вовхед, есть официальное апи для аддонов которое открывает часть архитектуры, есть даже исходники эмуляторов серверов и т.д.
zisXДата: Вторник, 10 Апреля 2018, 19:18 | Сообщение # 4
Neto Zis
Сейчас нет на сайте
Ну как я понял, там все таки КОП покрайней мере так кажется, есть какой-то контейнер допустим Герой и у него есть компоненты в виде отдельных объектов (Спелл, Графика и так далее)

Спасибо, за наводку на редакторы WOW я об этом не подумал, на выхах на комп перейду более подробно изучу эту тему




Сообщение отредактировал zisX - Вторник, 10 Апреля 2018, 19:24
AutotunageДата: Понедельник, 04 Июня 2018, 22:51 | Сообщение # 5
был не раз
Сейчас нет на сайте
Не знаю даже, актуален этот вопрос сейчас для тебя или нет, но все-таки поделюсь.
Если рассматривать на примере WoW, то там все устроено довольно муторно (а может и нет): есть клиент, ядро, dbc файлы (некие таблицы данных) и непосредственно сама база данных.
В ядре в основном нет конкретного кода для конкретного заклинания или таланта (их там сотни, а то и тысячи - боже упаси все в ядре держать). Вместо этого созданы некие шаблоны действий. Т.к. в игре есть куча способностей, похожих друг на друга - изменяют кд, % регенерации маны и хп, ну и так далее, то нет смысла писать практически идентичный код для каждой способности. Поэтому созданы шаблоны под разные случаи. Коих тоже не мало.
Ключевую роль играют dbc файлы - это таблицы, содержащие в себе кучу разной инфы для каждого заклинания. Например: spell.dbc - содержит в себе всю инфу о заклинаниях: название, школа урона (физ., тьма, свет и т.д.), сам урон (или лечение) и куча других разных атрибутов. К нему еще в добавку идет spelleffect.dbc, содержащий в себе информацию о разных эффектах: например понижение чего-то там на такое-то значение для такого-то заклинания такого-то ранга или держит в себе какие-то визуальные параметры. И ядро по общим шаблонам берет инфу оттуда.
Еще есть БД, где в таблицах хранится разного рода информация: шанс срабатывания, условия срабатывания (нанесение урона в ближнем бою, к примеру) и многое другое.
Так же это все может (и будет) переплетаться. Скажем у заклинания 1 в dbc описано, что он вызывает эффект 2 с таким-то параметром, в свою очередь эффект 2 повышает определенное значение с определенным шансом, который берется из таблицы в БД. Так же, у эффекта 2 в dbc сказано, что он может вызвать эффект 3 и т.д. по цепочке. Но как правило длинных и долгих заморочек нет. В основном обходятся 1-2, может 3мя эффектами (масштабными). Есть случаи, где их больше в разы, но они не отображаются, а нужны для чего-нибудь другого. Это так, если в кратце. На самом деле все еще сложнее. У одних только заклинаний 48 dbc файлов, которые содержат в себе ВООБЩЕ ВСЮ информацию. От А до Я.
Таким способом реализованы почти все таланты, большинство простеньких способностей.
В самом ядре не так много способностей напихано, есть небольшая кучка (штук 30) для друида, например и т.д. Это связано с тем, что они имеют особую механику, которую нельзя описать шаблонами. Опять же и в их реализации задействованы другие шаблоны.

Вот небольшой кусок кода заклинания друида:


Код
SPELL_EFFECT_DUMMY

Указывает на шаблонный эффект. Таких эффектов сотни.

Ах да, еще в клиенте куча инфы. Там, конечно, в основном визуальные эффекты, но и сами dbc тоже присутствуют и в некоторых случаях приходится модифицировать клиент (подменять эти dbc), чтобы что-то изменить. Потому что клиент (а может ядро) сравнивает dbc клиента и сервера и в случае каких-то расхождений клиент крашится, либо работает, но не отображает изменения.
Вообще так у них построено все взаимодействие. И вещи, и npc, и эффекты и многое, многое другое.
:( я, конечно, не полностью во всем разобрался, но все выглядит примерно так.


Сообщение отредактировал Autotunage - Понедельник, 04 Июня 2018, 23:03
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг