Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

Thank you a ton! To answer your questions:

  1. For this project, it appears we just had a parent enemy that is shared among all the enemies. Carson and I built this game a long time ago, so trust me when I say that I overuse parenting now haha.
  2. For character knockback and movement, we used GameMaker's built in speed and direction system, simply modifying the direction and applying force. I would not recommend doing this, as it created many of the bugs present in current Grim Fantasy, such as enemies disappearing when they clip into walls.
  3. For our weapons, all our weapons spawn a projectile on click. That projectile differs based on it's type. For melee weapons, it spawns that slash, which is a separate object entirely that deals damage to enemies.

Sadly, Grim Fantasy's codebase has fallen insanely out of date after the game jam. I don't support any of our coding methods above, as now I tend to write my own movement systems, and I overuse parenting haha.

When it comes to making the game in such a short time, I can effectively say we just rushed the programming side and pumped as much content in with minimal systems. That being said, once again this is older methodology that I don't agree with anymore. Our systems were't modular or expandable in the slightest, and changing how a system worked for one object would require us to change it for all of them.

I'm sorry I didn't have super great answers to your questions, but I hope this somewhat helped! :)


No those are great answers. I did similar things on Still Not Dead and now cannot even bear to go into that project. I dont suppose you could say what kind of parenting techniques you use? Im new to gamemaker and organization is really something i want to improve at, it lets me down a lot. Also, can you hazard a guess why the speed/direction GM variables, caused that dissapear bug? Are they getting pushed way out of screen? Is their depth getting messed with? Im assuming you used "solid". Many people say the built in vars are crap, but i want to know why :P Thanks again, sorry for so many questions..

Haha don't be sorry for asking questions! I'm here to help haha. :)

When it comes to parenting, in my newer games, I tend to have a few core objects that everything inherits from. For example, I tend to create a parent I dub an entity. This base entity controls very little at the start, but it tends to get filled with variables every object should contain. My best example is how I handle my own movement and collision systems. I set up a parent "rigidbody" object that has all my movement and collision code inside of that. Everything that move inherits from that, which leads to every object having the same variables and functionality.

Basically, don't write code twice. If a chunk of objects are going to share behaviors, just make a parent for them.

Because this was a game jam game, it's super hacky. The issue of enemies getting deleted when pushed into a wall was a crappy fix we made last minute to solve enemies clipping into walls. We basically just delete the enemy if inside a solid. I've personally never had any luck with the built in GameMaker movement systems, as stuff tends to clip through solids and things just break really easily. I also tend to build games that need really specific movement systems, so it's just easier to build my own.

I hope this helps! :D


yes it did, thanks