Перед сборкой зависимости требуется доработать напильником
Немного удачная первоапрельская шутка из разряда "почему бы и нет?".
- Игра на экране (в реальном времени!)
- 16-цветов в разрешении 101x60, HUD
- Ввод (стрейф не поддерживается)
- Музыка
- Проходим (наверное)
- Работает без tModLoader/ресурс паков
- Заменяемый WAD
Технически TerraDOOM представляет из себя химеру Managed Doom и Terraria. Terraria каждый кадр вызывает обработку логики Doom, а тот записывает в кусок мира свой экранный буфер. Изначальная версия работала поверх декомпилированной Terraria. Эта же имеет немного отличий и просто включает в себя Terraria как зависимость, запуская ее из себя, предварительно подцепившись к Main.OnPreDraw. Это позволило повысить стабильность, убрать необходимость явно влезать в код Terraria и опубликовать порт в открытый доступ. Лицензия унаследована от Managed Doom.
Для работы требуется поместить все файлы TerraDOOM в папку с установкой Terraria, плюс необходим WAD-файл от желаемой игры. Взять их можно на Archive.org или Old-DOS.ru. В комплекте идет WAD от shareware-версии Doom 1.
В настройках желательно включить пропуск кадров и поменять освещение на "trippy/специальное". С выключенным пропуском кадров Doom будет работать слишком быстро, а при цветном освещении слишком медленно (если у вас не R9 9950X, но возможно причина в другом)
Игра запускается через TerraDOOM Injector.exe...
Нет, не запускается. Проблема в том, что в Steam версию Terarria вшита проверка, что она запущена через Steam, и при провале она себя закрывает и заставляет Steam открыть Terraria самостоятельно. А так как патч применяется в процессе выполнения, перезапуск игры Steam-ом его отменяет. Обход - добавить в параметры запуска в настройках Steam(с сохранением кавычек и %command%, но без угловых скобок)
"<ЗАМЕНИТЬ НА ПОЛНЫЙ ПУТЬ К ПАПКЕ С TERRARIA>\TerraDOOM Injector.exe" %command%
Это заставляет Steam запускать патчер, а Terraria понимать, что она работает через Steam. Если у вас версия из GOG или "клиентоориентированного магазина на букву "T", то можно просто запустить TerraDOOM Injector.exe. В этих версиях проверки отключены.
(Теоретически это может быть необязательным, если у вас открыт Steam. Иначе инструкция выше по тексту)
Ко всему прочему, патч также перемещает сохранения в папку с игрой, в "TerraDOOM Saves". Это сделано во избежание случайно порчи сохранений в результате ошибки, плюс я могу сразу распространять мир без необходимости вручную его перемещать
Еще была мысль перенести всю логику на выделенный сервер, что позволило бы создать сервер с Doom, работающий с ванильными клиентами и не требующий никаких дополнительных действий (плюс это бы решило проблему с лицензией), но это требует разбирательства с неткодом и серьезных оптимизаций. Наивный вариант сломал синхронизацию сервера с клиентом и выдал около 10 кадров в секунду.
- Привести код в приличное состояние
Найти причину постоянного OOM при сохранении, а также при загрузке средних и больших миров.Terraria 1.4 теперь компилируется в AnyCPU, и попытка загрузить ее из x86 сборки принудительно ограничивает ее как x86, причем еще и без LAA, тем самым приводя к дебильным ограничениям на размер объектов. Исправлено переводом патчера на AnyCPU- Версия для серверов (теоретически возможно) + релиз для tModLoader
- Улучшить систему ввода
- Больше музыки. Возможно ресурспак с оригинальной музыкой и залитой текстурой ламп для экрана
- Исправить палитру экрана (можно попробовать взять ее из FastDoom для EGA)