Menu
Developers Portfolio
  • Tools
  • Blog post
  • Demo
  • All
Developers Portfolio

EntityHero (Doom Eternal entities editor)

Posted on September 28, 2020September 28, 2020

This project started as an interest of adding more challenge and variation to the current Doom eternal game. Initially I wanted a way to just spawn enemies at will. After connecting with the (Doom Eternal) modding community and looking at a tool (cheat engine script) that allowed viewing all the current active encounters in the game, I found that the objects that describe the encounters were in-memory in clear text which would get re-parsed on every checkpoint reload.

My first attempts were to modify something small like the hit-points for an enemy. I created a video and send this in the modding community.

This video attracted good attention in the Doom Eternal and Doom 2016 modding community and others got involved in decompressing the .entities files which describe: encounters, spawns and triggers for a specific level.

Meanwhile I was successful in making in-memory modifications to change one enemy type into another. This was achieved by modifying the clear text of the entity definition in the heap allocation that is stored per entity definition object.

Soon thereafter a member of the Doom Eternal modding community got the format decompressed and it was possible to edit .entities files through a text editor.

I wanted to make the editing of .entities file more user friendly. The main objectives were allowing easy array re-numbering and spawn type resolution. Additionally, I wanted anyone to be able to use the tool and not have to fully understand the .entities file format or the process to get things extracted and re-injected. I chose to use wxWidgets because I wanted to learn more about the library and modified the Rapidjson library to understand the .entities files directly.

Another modder also released a very interesting tool (meathook) which allowed interfacing with the engine. After seeing the tool in action, I wanted to have my new tool interface with meathook. There were a few options to do the interface but I wanted to use RPC as that would enable both tools to be entirely separate from each other. Mainly, if one crashes, the other one would still continue working and reconnects as soon as both are running again.

I also wanted to encourage collaboration, code sharing and people adding useful features to the tool and decided to make it fully open source and I have shared my work on github:

http://github.com/nopjne/EntityHero

Here is a video describing a few features of the EntityHero tool:

Recent Posts

  • EntityHero (Doom Eternal entities editor)
  • Fluidity
  • MKV
  • MSX Sound Player
  • SSF Viewer (Mortal Kombat Armageddon art viewer)

Archives

  • September 2020
  • March 2020
  • March 2015
  • March 2014
  • September 2009
  • March 2009
  • June 2008
  • February 2008
  • December 2007
  • September 2007
  • April 2007
  • December 2006
  • June 2006
  • February 2006
  • November 2005
  • September 2005
  • July 2004
  • March 2004
  • May 2003
  • January 2001
©2020 Developers Portfolio | Powered by SuperbThemes & WordPress