robotfindskitten
is a my reimplementation of the game originally written by
Leonard Richardson, now
inside the Notepad.exe and uses the Entity Component System by the great EnTT🚀.
The game uses DLL injection to modify the notepad and replace the default Win32 EditControl with Scintilla.
Also, You can find a little gun, so be careful with it!
A video Let's Play:
a_short_letsplay.mp4
The game can works only with the old version of Notepad.exe before Windows 11. To get it:
- Open Settings > Apps
- In the center pane select Advanced app settings > App execution aliases
- Toggle off Notepad
And download the game:
- Download Pre-built binaries from Releases page.
- Unpack and run
loader.exe
In this project I wanted to practice with glm and boost libraries and I use
vcpkg
for:
- boost
- glm
- EnTT
I created CMakePresets for 64-bit builds based on Ninja and MSVC. To build the game, run:
cmake . --preset x64-release
cmake --build --preset x64-release --target install
Binary files will be located in the ./out/bin/x64-release directory.
-
I have implemented a cool header only Quad Tree collision detection algorithm based on @DragonEnergy article, You can check it in src/robotfindskitten/game/systems/collision.h. Tests are located in tests/test_collision.cpp
-
I update the notepad message pipe from GetMessageW() to the PeekMessageW() inside hook_GetMessageW() so now the notepad does not sleep for a message, just poll and run as a real game.
-
Remove Notepad's main menu and status bar, and changes the window title to fit the game's context
-
The game uses fixed time step with 60 fps (src/robotfindskitten/engine/time.h).
-
render-with-notepad for showing the abilities to implementation.
-
SuperNotepadBros for the clean iat table's hook example and an good game's time
-
The long and intresting story with examples about quad tree by user @DragonEnergy on stackoverflow