Ghouly Scares

(Away people from their home)

_ghouly_scares_title

Download Ghouly Scares from itch.io

Watch recording of Live Stream on Twitch.tv (Hungarian only)

Watch Gameplay video

May’s theme was HORROR and this is the game I made. Horror is a bit nondescript but it also creates the opportunity to interpret it somewhat freely. I wanted to make a cosmic horror type of game with Lovecraftian monsters, but I felt that would require much more time than one month. So I’ve decided to make something simple. I’ve decided… to make a point’n’click game. Because that’s simple… So, to achieve that first I had to make a pathfindig, so the controlled character could find its way around obstacles. I could easily make a linear movement, even stop before any obstacles, but how to make it go around it? I started to mess around but soon I googled pathfinding in Game Maker Studio 2, and guess what. There is a simple pathfinding built in, and following Heartbeast’s tutorial I soon had a basic pathfinding. Basic, as in: yes, it can find its way in a maze IF you click on a free space, otherwise the character wouldn’t budge. So, in a weekend I upgraded that, and I had a nicely working pathfinding. I put down a 1 pixel wide, and character-to-mouse cursor length object. I kept the free movement if it crosses no collision objects. If the end is in collision, I start to shorten the line, and if the end finds a walking zone object, stops, and gives the coordinates to the player character. Otherwise the pathfinding takes control. It is scaleable, so I can easily make a 32×32 grid or a 16×8 one. It’s a bit clunky (only moves between grids, vertically, horizontally, or diagonally, so no linear movement between corners…). I also made my items and POIs (point of interest, sort of interesting objects to interact with) have special coordinates, which is given to the character, so those coordinates became the new walk-to points. I made an inventory system (and the inventory actually scales to the user’s monitor size), so if you pick up an item, that item appears on the GUI. You can combine some items, you can put down some of them, of course on predestined POIs. And I decided to use persistent rooms as the player can move between the scenes.

The other technical problem I was facing (well, besides everything else programming related) is the character scaling. I wanted to have depth to the scenery, so if the character is closer to the bottom, it’s bigger, if farther, it’s smaller. I put down a special object on every scene, its bottom gives the border line where to start to use scaling, and going up, the object can have any amount of scaling. It means, if the y-scale of this special object is smaller, the character scales down faster as it goes up on y-axis, and gets bigger (until its scale is 1) when moves down on y-axis. If the object’s scale is bigger, the character scales less, accordingly as it moves around. So they have a directly proportional connection. But the pixelart starts to lose its details as it scales down. So no outline on the sprite itself. I used a simple outline shader, but the shader outline also started to scale and disappeared. So instead I used the simplest technique: I draw the character sprite four times inked to a dark greenish color offset by 1 on both axes in positive and negative before I draw the charater sprite. This was more tolerant to the scaling and basically looked like the outline shader.

hp_entrance_gms2
This is what a level looks like in the editor

At this point I already knew I was going for a Day of the Tentacle look, so the story looks like this: Ghouly is a level 1 ghost, a poltergeist and he was tasked by his demon master Ezaznemazaz to drive away the residents in an old manor. I wanted to have five family members, and the player had to walk around the house and find out what freaks them out individually, and try to create circumstances to make them fear to be there. But as time progressed I saw I will not be able to do that many characters nor sceneries. It happened to coincide with my work when I needed to use a 3D modeling program, so I modeled the scenes in 3D, made a simple render with some lights, and I used one of Aseprite’s palettes to re-pixelate those. I wanted 10-12 scenes, and I could only make 3.

scene_entrance_render
Entrance scene raw render with one directional light and a little bit twisted elements
scene_entrance_hp
Entrance scene pixelated and this is what it looks like in the game with pixelart

scene_hall_render

scene_hal_hplscene_amelies_room_render

scamelies_room_hp

And finally I made the individual game logic for every scene, POI and item. Of course I used parent objects wherever I could to make my life easier. This was the time when the persistent room thing bit me in my behind. It made things go crazy, the grid system failed upon returning to a room, the gui fell apart. So I had to circumvent this problem as to fixing it (putting everything into global variables and/or write them to the disk) would have taken too much time and I had 3-4 days left. This is why there is no way to restart the game, you have to exit and run the game again. 😀 But it’s ok, there is no time limit, and no death nor fail possibilities (which is interesting if you look at the game jam’s theme).

On the last night I was up very late to finish up Amelie’s AI, and make the end scene, and a small introlike thing under the menu on the main screen, but I could finish it up. When morning came I woke up at 7:00 am and started to record sounds. After 9:00 I was ready with those too. Thanks to Kati, I had some feedbacks and corrections for my texts. And also thanks to Zoltán Kosina who found one additional bug at the very end (connected to persistent rooms and path finding of course). Also thanks to Gábor Urbán for streaming and playing with the games we made. And now we had at least 50% more games than usual! So the game reached its final demo form, it became an immensely fun adventure, I am very proud of it. It works, though I see where I could improve it should it turn out to be a full game.

hp_scrshot_01hp_scrshot_03hp_scrshot_04