Skip to content

πŸ€–πŸˆ A clone of the robotfindskitten inside the Notepad.exe and powered by EnTT

License

Notifications You must be signed in to change notification settings

39555/robotfindskitten

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0fcb45b Β· Oct 23, 2023
Oct 22, 2023
Oct 5, 2023
Oct 22, 2023
Oct 21, 2023
Oct 7, 2023
Oct 18, 2023
Oct 3, 2023
Oct 7, 2023
Oct 22, 2023
Sep 30, 2023
Oct 1, 2023
Oct 21, 2023
Oct 21, 2023
Oct 21, 2023
Oct 13, 2023
Oct 23, 2023
Oct 22, 2023
Sep 24, 2023
Oct 5, 2023

Repository files navigation

robotfindskitten

Screenshot

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

Getting Started

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

Build

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.

Details

  • 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).

Special thanks

  • 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