In the last few weeks I have been tinkering with a new project for the new game Grim Dawn. Grim Dawn is currently in early access (open beta) and has been given a little bit of a hype given that it is being created by parts of the TitanQuest team. That said, I was a fan of TitanQuest so I picked up a copy of Grim Dawn a while back and checked it out. So far not much is really done in the game, just the first 3 acts which do not take much time to clear through. Some other side things like crafting and such are implemented and working, and the beginnings to online play are there. (Granted the online protocol is a bit lack luster in terms of security as it is very easy to hack.)
I started a project last week called gdlh (Grim Dawn Lua Hook) with the sole purpose of hooking onto Grim Dawns Lua engine. This project was a simple d3d9 proxy DLL that did nothing other then attach onto Grim Dawn’s Lua state and allow me to send my own commands/strings and scripts to the engine. This all worked fine but I had no clean and simple way to interact with the dll. I’m not much of one to like IPC methods such as named pipes, MMF, mailslots, or similar so I opt’d to redo the project as a full-on injected hook.
In the last week I have renamed the project to GDHook (Grim Dawn Hook) as it extends a lot more now other then just the single Lua state hooking.
Current Project Features
- Full Direct3D9 wrapper allowing more then just basic adjustments.
- Full in-game console with command processing and input.
- Full in-game input control. (Keyboard and mouse are fully wrapped and intercepted when interacting with a hook object.
- Full plugin interface and system, with a (to-be) public API allowing others to write plugins for the project.
- In-house font objects that offer A LOT of customization and can be altered into GUI objects.
- Simple, light-weight injector that will inject the game into Grim Dawn automatically.
- Feature to fully remove Grim Dawn’s crash reporter for the time being so Crate doesn’t complain about faulty crash reports from people using my project.
- GrimLua plugin to replicate the old project gdlh (Grim Dawn Lua Hook). This plugin allows users to interact directly with Grim Dawn’s Lua state.
A screenshot of the simple launcher. (Before the project was renamed.)
A screenshot of the title bar being overridden with my project info.
A screenshot of the game crashing normally with my hooks in-place to override the crash reporter:
Here are some videos showcasing the project development:
- http://youtu.be/GfQ14JAk2DI (A demonstration of the GrimLua plugin in action.)