Оф. сайт: https://www.cafu.de
Создаётся с 2007-го года. Мультиплатформенный 3D движок.
Использовался исследовательскими лабораториями США для оценки эффективности визуальной памяти пилотов (?)
Цитата из Вики:
Цитата:
The Cafu Engine has been used by the United States Air Force's Research Labs for Human Effectiveness in a study about the visual working memory of pilots.[4] It has also been used in multiple studies and research projects that simulate artificial lighting in urban environments and examine how that lighting is perceived by humans and influences the nocturnal orientation of pedestrians and motorists
Знакомство
Движок с открытым исходным кодом, основан на наработках Кармака. С оф. сайта можно скачать уже скомпилированные бинарники, на выбор - 32 бита, 64 бита, Windows, Linux. С запуском у меня возникли некоторые сложности. Во первых стоит отметить, что даже самая свежая сборка от 2019-го года прекрасно работает на WindowsXP, однако требует установки Redist2015 и модификации всех .exe файлов при помощи моей утилиты pe_tool.exe, очередной случай, когда она меня выручает.
Однако при запуске монитор показывает табличку "Неоптимальное разрешение экрана". Правка конфига не даёт никаких результатов, движок упорно запускается в полном экране с неоптимальным разрешением. Если вы с этим столкнулись, то следует дописать в параметр командной строки ключ -n А размеры экрана можно задавать через ключи -x <width> -y <height>. В принципе уже из этих ключей должно быть понятно, что кое-где немецкая логика будет вам интуитивно непонятной. Так, например консоль вызывается по F1, а команда помощи выглядит как help(), причём между круглыми скобками можно вводить аргументы - ключевые слова, если вам требуется помощь по какой-то конкретной вещи.
Менеджера проектов тут нет, а редактор без открытого проекта выглядит скучно.
С открытым проектом, редактор весьма похож на старый недобрый Хаммер. Оконный менеджер сделан на wxWidgets. Для создания браша тоже необходимо переключиться в режим New Brush. Так же есть режимы New Bezier, New Terrain, New Decal по аналогии. Для закрепления браша больше не нужно нажимать Enter. Выделение браша при помощи клика мышкой в рамках его границ не работает. Только через создание рамки, часть которой пересечётся с нужным нам брашем. Для удаления выделенного браша используется кнопка на тулбаре, Delete не работает. Ctrl + D тоже не работает. В настройках редактора горячих клавиш нет. Зато можно закрывать практически все окошки, таскать их по экрану, выдёргивать из посадочных мест и без проблем вставлять обратно, как собственно и должно быть.
Вьюпортов тоже может быть сколько угодно. Правда авто-прилипалка на мой вкус излишне активная, к ней следует приноровиться. Главный минус заключается в том, что 3D-вьюпорт закрыть невозможно. И таскать его тоже нельзя. Зато можно включать разнообразные режимы рендеринга.
Сетка
Геометрия
Рендеринг материалов (без освещения нет бампа и спекуляра, так что это просто вид на затекстуренный уровень)
Сетка лайтмапы (вероятно визуализация лайтблоков)
При запуске компиляции вылезает встроенная консолька. Пресеты для компиляции странные и нелогичные, отредактировать можно только кастомный. Сама компиляция очень и очень неспешная (всё происходит в один поток). К примеру, карта на скриншотах потребовала 23 секунды на BSP, Две минуты 39 секунд на VIS и час тридцать шесть минут на RAD (XashNT за такое время успел бы уже посчитать свет на Кордоне из сталкера).
Автоматический запуск карты не происходит, приходится её выбирать вручную из меню. Результат освещения вы можете видеть на скриншоте ниже.
Светлая окантовка вокруг тени, это глосс.
Так же имеется редактор моделей, общий вид:
Пол является частью редактора, модель - это труба, лежащая на полу. Модели в формате Half-Life, во всяком случае мой p2mv их прекрасно открывает. Так же у статичных моделей есть их исходники в формате .map.
Анализ исходного кода
Этого раздела нет в других обзорах, поскольку те движки не используют код из Id Tech и, соответственно, их изучение займет более получаса.
А в данном случае мы можем наблюдать как был взят код из Quake2, Quake3, Doom3 и что из этого получилось. Движок использует мультирендерер с максимально поддерживаемой версией OpenGL 1.2. Шейдеров нет. Система материалов взята из Doom3, однако не могу сказать навскидку, насколько полно она поддерживает все особенности материалов из Doom3 и есть ли там нечто новое. Рендерер использует только лайтмапы, динамического освещения я не заметил. Нет даже вспышек от выстрелов и взрывов. За физическую подсистему отвечает Bullet. Компилятор BSP взят от Quake3 с собственным кодом "уничтожения взаимопроникновений брашей", т.е. код, который пытается выполнять работу вместо CSG. Рассчёт видимости основан частично на коде от Q3, частично на каких-то собственных наработках, в частности используется трассировка лучей (?). Радиосити использует реализацию Instant Radiosity из Quake2 и модель Варда, вероятно для симуляции солнечного света. Все компиляторы работают в однопоточном режиме. Есть скриптовой язык Lua, используется для консоли, для конфигурации запуска и вероятно для объектов уровня (замена Doom.Script).
Собственно, главная мысль, которую я хочу донести: нельзя просто взять компиляторы от Quake3, рендерер от Doom3, переделать текстовые форматы на бинарные и надеяться, что из этого получится современный движок. Получится либо CaFu, либо OverDose. В самом идеальном случае - нечто вроде Volatile. Смысл в том, что подобная архитектура очень недружелюбна к современным видеокартам и не учитывает их особенности. Это предостережение для тех, кто может задумывался над тем, что таким образом можно сконструировать движок. К тому же не забывайте, что драйвера адаптируются под старые игры, опознавая их по имени экзешника (камрад Ксерокс не даст соврать). Так что производительность устаревших архитектур может вытягиваться хаками в драйвере.
Выводы
В своём текущем виде движок непригоден ни для чего. Даже странно, что его могли как-то использовать. Но вот эта мысль, что внутри основного окна редактора все окошки можно таскать и настраивать как угодно, она правильная. К сожалению редактор не запоминает то, как мы настроили окна, поэтому после смены редактируемой карты раскладка возвращается в исходное состояние.
Дело не в том, что они там переименовали. Они это делали не с целью что-то спрятать, а чтобы вся кодобаза была в едином стиле. Там и своего кода хватает, например. Какой-то удалятор взаимопроникновений брашей.
Да и в радиосити тоже всякое. Но я вижу что послужило им базой.
xrcore_cpu писал: Т.е. переименовали методы и засунули в классы как в одном движке нашего форумчанина?
У нас на форуме были ещё какие-то движки, помимо ксаша и волатилы?
Добавлено 04-09-2021 в 16:47:
Цитата:
Дядя Миша писал: Но я вижу что послужило им базой.
Ну так это и называется "вдохновлялись". Ты, похоже, неправильно выразился. Не код был взят, а идеи. Это как раз тот случай, когда скармливаешь движку те же ресурсы, что и, скажем, ку3 - а ошибки другие (либо их нет вообще).
Волатила, как все знают, сделана по тому же принципу - берём идеологию id tech и творчески переосмысливаем (где-то сильнее, где-то слабее, где-то вообще меняем подход). В итоге получается очень привычный для нашего комьюнити продукт, но с более широким набором фич, и адаптированный под нужды конкретных или планирующихся проектов. Ну и кодовая база, с комментариями, читабельная и в едином стиле - это прекрасно.
Кстати, судя по набору фич этого Кафу - очень интересно наблюдать конвергенцию мышления разработчиков в конце нулевых. Тут и редактор "в стиле хаммера", и луа-скрипты, и внешний физдвиг, и текстовая система материалов в файлах. Жаль, что движок в итоге не был доведён до приличного состояния, чтобы делать на нём игры.
ну если алгоритмы остались прежними, как это называется?
С одной стороны, если выбранный алгоритм работает хорошо, зачем же его менять. Однако в CaFu мы видим обратную ситуацию. Те же самые алгоритмы, которые справлялись в ку3 и д3, здесь совершенно не помогают.