A debugging environment builder for the Cry of Fear mod.
MadSimonX is a from-scratch rewrite of the original MadSimon project, with a complete rework of all its functionality and underlying techniques.
It replicates most of the original features, but now the source code is open.
The project is also adapted for the current Steam version of the game.
Note
MadSimon is my custom debugging tool for the game Cry of Fear, which I originally wrote many years ago just for fun - and which unexpectedly became relatively popular among speedrunners.
I developed it for personal use and later shared it with one person, and at some point, it gained popularity.
It is most likely outdated by now, but that doesn't really matter.
During an online game, I accidentally met a few players with whom I briefly discussed the MadSimon project - something I had mostly forgotten about. Although they mentioned that several alternatives have existed for quite some time, our conversation inspired me to release the original MadSimon source code for educational purposes.
However, since the original project was written purely for personal use, I didn't pay much attention to code quality back then. So, I decided to quickly rewrite it from scratch - and that's how MadSimonX was born.
After all, it's a nice addition to the portfolio, isn't it?
Warning
Please take this into account. Some code may still be questionable.
If something looks odd, it's most likely old code - back then I wasn't very mindful of quality, and right now I don't have time to fix absolutely everything.
The original MadSimon included various experimental functions I created to test the engine, as well as features such as:
- Disabling speed slowdown while bunnyhopping
- Console commands for manipulating entities and the player character
- Unlocking noclip, god, and notarget modes
- Real-time debugging information about entities
- Various small additions made just for fun
Of course. For convenient control, it's best to use the engine's built-in API rather than reinventing your own system.
A full list of available commands is provided below.
| Command / CVar | Description |
|---|---|
ent_create |
Spawns an entity at the position the player is currently looking at. |
ent_remove |
Removes the entity the player is currently looking at. |
ent_killed |
Kills the entity the player is currently looking at. |
ent_setname |
Changes the entity's name. Honestly, I don't remember why this was needed. |
ent_getname |
Retrieves the entity's name. |
ent_dump |
Collects a list of all spawnable entities and prints it to the console. |
ent_find |
Collects a list of all entities with filtering. |
ent_info |
If set to 1, displays information about all entities on screen. |
ent_info_type |
Displays only entities of the specified type. |
ent_info_filter |
Displays only entities with the specified name. |
give |
Gives the player an item. Example: weapon_rifle. |
hurtme |
Deals damage to the player. |
madsimon |
Displays product information. |
nofear |
If I'm not mistaken, this command disables Simon's breathing during the forest scene. |
infinite_stamina |
Infinite stamina. |
infinite_health |
Infinite health. |
infinite_ammo |
Infinite ammo. |
hud_nprintf_time |
Sets the duration (in seconds) for how long nprintf info is displayed on screen. |
mp_noviewpunch |
Disables view shaking. |
always_first_deploy |
Always plays the first-time weapon draw animation. I liked how it looked and enjoyed watching it. |
simon_showinfo |
Displays various debugging information about the game world. |
Use any convenient method to inject the library into the game process.
I typically use Process Hacker, but you likely already know which injection method you will use.
This project is distributed under the 2-Clause BSD License.
Basically, you can use, modify, and share it freely, as well as use it as a learning resource - just make sure to give proper credit when using or sharing it.