[ AmberSkyNet VR ]Возможности движкаНету шейдеров! Нету shadow volume! И projective shadow тоже нет! Ничего нету, зато исходники открыты и структура простая :)
Принципы:
Инструменты разработкиДля сборки движка из исходников вам необходимо:
В движке используются следующие сторонние библиотеки:
Для разработки так же использовались:
Лирическое отступлениеМетаясь в своих разработках от изометрической РПГ к трехмерному шутеру, а от шутера к сетевой ММОРПГ я заметил, что некоторые части кода можно переносить из одного проекта в другой без особых изменений. Так в голову пришла идея - сделать проект, в котором были бы реализованы некоторые общие части, входящие во все мои изыскания, на основе которых создавать проекты мне было бы легче, чем "с нуля". Раньше склонялся больше к законченному движку, теперь - к фреймворку. Поэтому за один из основных принципов разработки архитектуры данного проекта взял наибольшую автономность составляющих модулей (по мере возможности, конечно), чтобы можно было использовать в других проектах. Естественно, более высокоуровневые модули (например, модуль реализации узла сцены в виде 3ds-модели, который вызывает для отрисовки функции модуля графики) так использовать не получится. Да, можно сделать чтобы каждый узел сцены рисовал сам себя, используя исключительно вызовы графического API, но мы потеряем время на лишние переключения между материалами и мешами, а также на установку состояний отрисовки. Лучше все отправлять граф. менеджеру, который перед непосредственно отрисовкой должен собирать все вызовы и упорядочить их для минимизации числа изменений параметров между отрисовками разных мешей. При этом стоит учитывать, что чем больше мы получаем выигрыш в универсальности, тем более неудобной становится оптимизация работы, да и вообще, работа с таким движком потребует написания некоей надстройки, которая будет адаптировать этот движок к тому, что нам от него действительно требуется. И чем универсальнее движок, тем эта надстройка должна быть большего обьема. Поэтому, по-моему, собственно "универсальный" движок с целью дальнейшего коммерческого применения делать бесмысленно - проще взять готовые графический, физический и прочие фреймворки и соединить их в своей программе. Я пытался сделать с одной стороны - максимально масштабируемый и универсальный, а с другой - наиболее простой и понятный, без особых архитектурных изысков (ибо все эти модные паттерны, синглтоны и смарт-поинтеры, конечно, круть и игра чистого разума, но архитектура ради архитектуры навевает на меня жуткую скуку, и этого я старался избегать). |