Fix a Bug and More Will Appear

Hello my readers! It’s been another exciting week in FTD development. Those collision problems I had last week? No more. Those weird issues I had with the character’s movement? Vanquished! I’m happy to say that most of the problems I struggled with last week are gone, but as is always true in game development more have emerged. However, before I delve into what problems I’m running into currently, I’m going to cover how I ended up fixing previous issues.

Last week, I struggled with two issues: one, collision with the Light character and the walls, and two, the Light character continuing to move, despite the player releasing the movement key. I realized that the Light wasn’t colliding with the walls because only the wall object had instructions for colliding with the Light. For collision between a character and a hard surface to work in Game Maker Studio both objects, the surface and the player, must feature collision events referencing each other. By defining collision with the wall in the Light object, I was able to fix the first problem.

lightObject001

The second issue, the character’s continual movement, was fixed by assigning a key release event to the movement buttons. After a key is released, the character stops moving, until a key is pressed again.

lightObject002

Now that I have those issues out of the way, I have several other problems I must tackle. Bugs aside, there were two things I wanted to get done last week. I wanted to implement all four characters into the game and set up the mechanic for the Darkness appearing randomly in rooms. I was successful in getting the four characters into the game, but I do not have their abilities functional (except for the Runner). I also don’t have the ability to control one character at a time and switch between them on the fly. Currently, the player is in control of all four players at once. When one moves, they all move in the same direction, and I don’t want that.

While I have a few ideas about how to go about fixing the character control issue, I’m not entirely sure how I’ll get the Darkness to appear randomly in the rooms. In my own pseudocode, this is what I think needs to happen.

  • Create a global timer object (timer1)
  • Create another global timer object (timer2)
  • Create Darkness object and sprite
  • Set time1 object to count down from 60
  • Create a room object and sprite
  • Create multiple instance of the room object, but assign them different names, ie Room1, Room2, Room3 etc.
  • Link room object to timer1
  • Assign randomize function to room object
  • Assign replace sprite function to room object
  • When timer1 reaches zero, replace room sprite with Darkness object and sprite
  • Have timer2 go off so that timer1 is repeated

I think this approach is the best way to get the random Darkness appearance function to work. At this point I’m not going to code the Darkness to kill anything or destroy rooms, I just need to make sure that I got the random mechanic working. I need to get the random mechanic working perfectly, because later I’ll be implementing the glyphs, which determine the chance that the Darkness will appear in a certain room.

Problems aside, I ended up getting a little sidetracked and started messing with some of the basic HUD elements of the game. Below is a mock-up of what the HUD might look like.

gameplayHUDmockUp

As useful as HUDs are, even the best designed ones get in the way sometimes. One of the functions I want the player to have is the ability to toggle the HUD on and off. I went ahead and created one of the HUD elements to test out the toggle feature, in this case the game’s timer.

lightObject003

Now I know once I work on the HUD in the future, I can give the players the ability to toggle the HUD on and off at their own whim. So what’s on the FTD development menu for this week? I have three items I want to have implemented by next Sunday.

  1. Get the randomized Darkness appearance mechanic working.
  2. Limit player’s control to one character at a time
  3. Get some of the other character’s abilities implemented.

Well, that about wraps things up for this week. There are a few official Game Maker tutorials that I think will help with the development of FTD, but I am open to suggestions and tutorials on Youtube/Vimeo/etc. If you see a tutorial that you think will help, by all means, send it my way! It will be appreciated. USCF over and out.

Post commandeered by the US Claire Force

Game Maker & Collision Fun

Hello my readers!  From now on, I’ll be updating the USCF blog each Sunday with development progress on Fight the Darkness. Cheers!

Last week I purchased Game Maker Studio Professional, and since then I’ve been stumbling through the free tutorials. Now that I’ve got a little hands-on knowledge with the engine, I’ve been working on a prototype of FTD. For the prototype, I’m just making one level, using the layout from last week’s diagrams.

roomComparisonProgress

Right now, I have the prototype built so that the player can control the “Light” character and open doors. Unfortunately, the player character likes to ignore the collision on walls (despite the walls having collision), so I’m going have to find a way to fix that. What’s interesting is that the player character ignores wall collision, but responds to the collision of doors (both open and closed). While I want the door’s collision to impede the player character’s movement while closed, I’m going to have to find a way to switch off collision once they’ve been opened.

progress003

Also, the player character will take keyboard input from the player in any WASD direction, but they never stand still. I think this might happen because I have one of the actions in the Light object set to fixed movement, as opposed to free movement.

I haven’t implemented the other four characters, the Darkness, or the glyphs yet, as I’m still learning Game Maker as I go. I really wish I could accomplished more mechanically this week, but the collision bug is tripping me up in particular.

I guess it’s not all that bad, because working on one feature at a time allows me to check for as many bugs as I can, fix those bugs, and save that version before I go adding any new features. It also allows me to pinpoint at what point exactly a bug appears and what feature is instigating the issue.

Back when Comrade Quest was in development, there were times when multiple features were added to the game and many bugs appeared. It caused a lot of headache for my programmers and designers because it was difficult for them to get a reading on what feature was causing an error. Granted, when you’re working on a team and you have deadlines to meet, sometimes adding multiple features at once is a must, but I try to keep additions incremental when possible.

It’s way ahead of my pipeline development-wise, but I’ve been contemplating FTD’s aesthetics. I’ve thought about rendering the game in pixel art similar to the old Pokemon games, but I also would really like to emulate the style of Kikiyama’s Yume Nikki. I want FTD to have a surreal, nightmarish aesthetic to it, and both styles could work quite well.

yumenikki

creepomon

Honestly, I know I can’t spend too much time thinking about the art direction at this point, because I get so wrapped up in the visuals of the game sometimes that forget about the game. For now I’ll just keep all that on the back burner.

As far as what I’d like to get done this week for FTD, I’d like to get all the collision kinks worked out and the other characters implemented (not necessarily their abilities, just the ability to control them and switch between them). If I get all that done I’ll move on to getting the Darkness and game timer implemented.

Well, That about wraps it up this week for the dev blog. Until next Sunday, USCF signing out.

Post commandeered by the US Claire Force

Announcing New Game Dev Project!

logo

I did it! I finally did it. I decided to pay the $100. Now I’m a proud owner of Game Maker Studio and I feel awesome. And also ready to make a game. For now, I’m going to call this game Fight the Darkness, because until something novel comes along, it’s the title that I have stuck in my head and I can’t get anything else to stick. The idea for this game has been stewing in my head for about three weeks. It all started after I had a strange dream about a labyrinth rendered in Pokemon Gold/Silver style graphics, and about some students trying to outrun a multi-eyed demonic spaghetti noodle.

So what is Fight the Darkness? It is a 2D, top-down roguelike in which the player uses the abilities of their four characters to track down and eliminate the Darkness, without getting eliminated themselves. These four characters include:

  • The Rock- Is able to break down obstacles and bust open locked doors, but moves slower than the other characters. If he is caught in the same room as the Darkness along with another character, the player can choose to sacrifice the Rock to save the other characters in the room.
  • The Runner– The fastest moving of all the characters. The Runner can also pick up and carry another character, but for a limited amount of time. Afterwards he will be tired for a few seconds and will need to regain his strength.
  • The Peace– Has the ability to stop time temporarily. Moves at a normal rate.
  • The Light– The only character with the ability to defeat the Darkness. The Light has a slightly larger radius of light around them as well. Moves at a normal rate.

In order to win a level, the player must have the Light occupy the same room as the Darkness. The lose condition is if the Rock, the Runner, and the Peace are absorbed by the Darkness before the Light occupies the same room as the Darkness. The Rock, the Runner, and the Peace can be absorbed by the Darkness if they are in the same room as the Darkness (without the Light present), or if any of them are in a hallway when the Darkness appears. Below is an example of the win condition, because the Light is in the same room as the Darkness.

FTDdiagram5

Levels are comprised of hallways and rooms, shrouded in black. At the start of each level, the four characters spawn in random areas, and a timer begins to count down. Each character has a radius of light around them, revealing area as the player moves them.

FTDdiagram2

The player can toggle between characters to move them appropriately. It is advantageous for the player to discover as much as the map as they can, because revealing more rooms gives the player more places to store their characters when the Darkness appears, and more opportunities to find the Darkness.

FTDdiagram6

After the Darkness appears in a room, that room is destroyed, along with any non-Light characters within it. Then the Darkness disappears, and the timer resets. This mechanic repeats until the Darkness is destroyed, or all characters are eliminated.

FTDdiagram8

When discovered, rooms display two very important types of information: a fraction and a glyph. The fraction represents how many people can fit into a room at a time. For example, a room bearing 0/1 can fit one person at a time, 0/2 two people, etc. The glyph represents the likelihood the Darkness will appear in a room. Ten glyphs represent the likelihood the Darkness will appear in a room, but it will be up to the player to pay attention to environmental hints as to what chance each glyph represents. How those environmental hints will manifest I’m not sure of yet, but it is something that I am currently mulling over.

Creating this game will be a challenge for me, especially since I have only produced games in groups, but I believe it is necessary to my advancement as a game designer. If the game becomes refined enough and I believe it has a decent amount of “fun” to it, I might consider submitting it to Steam, or the Google Play store.

Game development is a journey, and like all sojourns, it is best shared. I welcome comments and input about my projects, or if you have a Game Maker resource you’d like to share with me, by all means send me a link to it! I appreciate everyone who has been reading this blog, and I hope you all look forward to future posts about Fight the Darkness and other projects of mine. Till next time, USCF signing out.

Post commandeered by the US Claire Force