Skip to content

IvanKr08/TerraDOOM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TerraDOOM

Перед сборкой зависимости требуется доработать напильником 2037-155 Немного удачная первоапрельская шутка из разряда "почему бы и нет?".

Особенности

  1. Игра на экране (в реальном времени!)
  2. 16-цветов в разрешении 101x60, HUD
  3. Ввод (стрейф не поддерживается)
  4. Музыка
  5. Проходим (наверное)
  6. Работает без tModLoader/ресурс паков
  7. Заменяемый 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 кадров в секунду.

TODO

  • Привести код в приличное состояние
  • Найти причину постоянного OOM при сохранении, а также при загрузке средних и больших миров. Terraria 1.4 теперь компилируется в AnyCPU, и попытка загрузить ее из x86 сборки принудительно ограничивает ее как x86, причем еще и без LAA, тем самым приводя к дебильным ограничениям на размер объектов. Исправлено переводом патчера на AnyCPU
  • Версия для серверов (теоретически возможно) + релиз для tModLoader
  • Улучшить систему ввода
  • Больше музыки. Возможно ресурспак с оригинальной музыкой и залитой текстурой ламп для экрана
  • Исправить палитру экрана (можно попробовать взять ее из FastDoom для EGA)

About

Doom, но в Terraria

Resources

License

Stars

Watchers

Forks

Languages