[ WIP ] Goblin Age

@farjadfarabi_czs

Thanks. I use Photoshop.

@patso

Thanks. The new font I’m going to implement should look a lot sharper and retro than the current one.

[Dev Summary] November

Features added:

  • Added HUD HP bar and timer
  • Level time limits are defined in the map file now
  • Created finite state machine module for managing player character and enemy actions
  • Implemented new font “Press Start 2P”

Content added:

  • Created 7 new bgm tracks

Bug Repairs:

  • none

Screenshots:

Notes:

I added a new font, but I can tell that it still has an alias effect. I’ll look into making the text super sharp.

My main goals for December are:

  • apply delta time to player and enemy physics to improve performance on android devices
  • add enemy objects to gameplay and use fsm module to move them around
  • create “gun” module to give enemies the ability to shoot projectiles at player

[Dev Summary] March

Features added:

  • Created gun module
  • Created bullet object
  • Applied gun module to enemies
  • Created and completed fsm cycle of enemy actions and behaviors
  • Enemies can get hurt and enter death behavior when HP is 0
  • Player can get hurt and enters death behavior when HP is 0
  • Player will die when the timer runs out
  • HUD Timer now has 30 sec. orange caution and 10 sec. red warning stages
  • Created system of invincibility for player and enemies when they get hurt
  • Player gets sent back to ready screen when a life is lost
  • Player gets sent to game over screen and back to level select when they die
  • Enemies can fire directional projectiles at player’s position
  • Object collision is based on object’s collision box and not its full object size
  • Removed anti-alias from text objects
  • Began to capitalize all text

Content added:

  • Created 12 new bgm tracks
    • 24 gameplay bgms total so far

Bug Repairs:

  • none

Screenshots:

title, level select, character select, leaderboard

the level starts, the player dies and lives reduced, player falls off screen, return to ready screen and lives reduced, if the player lives is reduced to zero, game over

gameplay after applying fix that removes text anti-aliasing

enemies fire projectiles at the player’s position when fire is initiated

Notes:

The player can now hurt and kill enemies by jumping or falling on them from above. If you touch them in any other way, they will hurt you. Enemies can hurt you with their projectile fire.

When the player enters the enemy’s field of range, the enemy will begin its attack cycle. It will first charge up to telegraph its action to the player, and then fire the projectile. The projectile will be aimed at the player’s x and y position when the fire action is first initiated. Projectiles have a decay period and will then be removed. if a projectile collides with solid tiles, it will also get removed.

I had previously tried to make the text look sharp, but didn’t find what I was looking for. I found a corona blog tutorial while doing screenshots that I had missed previously, so I quickly applied it.  It definitely makes a huge difference and completes the overall look of the game.

I tried out a third tile set style that combines a variety of different. tile types with a couple variations. I think this is a good balance. I am thinking changing the color palette so that the white spikes stand out more from the regular block tiles. The tiles were originally this same blue before I changed it to grey.

My goals for this month are:

  • environmental damage
  • limited breath while underwater with HUD timer and drowning death action
  • more bgms (goal is 32 level tracks total for the 32 levels in an episode)

On difficulty:

The difficulty of the game will be based on

  • size of level and layout in terms of ease of traversing
    • ex. linear vs. non-linear and amount of pathways
  • time limit
  • platforming obstacles
  • amount of environmental damage tiles and relation to obstacles
  • amount of enemies and placement in relation to obstacles
  • amount and placement of gold collectables.
  • scaling properties on sequential gameplay cycles.

By balancing these elements in a certain way for each level, I can create different kinds of challenges. Each episode will have 32 levels. I am thinking of having an organized pattern of different challenges that spans the episode. There will be a difficulty curve for each challenge type, in addition to the overall difficulty curve of the episode.

The properties that will scale on each cycle playthrough will be:

  • Damage the player takes
    • Touching enemies, touching projectiles, and environmental damage will all deal the same amount of damage
  • Enemy walking speed
  • Enemy charge time
  • Enemy fire time
  • Projectile speed

Each property will increase a little every new playthrough. Each of the scaling property will have a certain max cap value so that they will not become exceedingly inhumanly possible. However, the damage the player takes will increase until everything can kill them in one hit.

In terms of how scaling difficulty, my approach to this game is to have a gentle curve of difficulty that starts very easy, but get very hard over time. I want to make it so that the player can master the game as long as they practice and have the proper skill level. I would like for the game at its max to be challenging, but not so hard that it is unfair, impossible, or intense to the point of not being enjoyable. In short, I want to make the game challenging but fair, and intense but still enjoyable.

[Dev Summary] April

Features added:

  • Added lava and spikes to gameplay
  • Lava and spikes damage the player
  • Created damage system to define what sides of tile damage the player
  • Created air meter for when the player is underwater
  • Created air HUD element
  • Created pause scene and implemented working pause menu during gameplay
  • Player will collide with the boundaries of the map as if they were solid tiles
  • Applied the proper animation settings for player actions (run, jump, fall etc.)
  • Episode scores get saved and recorded
  • Created and implemented story prologue that plays before level 1 on the first play cycle
  • Created module to handle variable values and scaling
  • Created function for calculating random multiplier bonuses
  • When you beat the last level of the episode, you can choose to continue, starting over from level 1, and the play cycle gets incremented.
  • Created zip module for unzipping resources when the app is opened for the first time.
  • Modified tile engine for further performance optimization

Content added:

  • Created 8 bgm tracks plus game over theme.
    • 32 total level tracks

Bug Repairs:

  • None

Screenshots:

none

Notes:

Lava hurts the player from all sides. Spikes only hurt the player on their sharp side. The player has limited air when underwater, and will immediately die when it runs out. Now the player cannot go out of bounds of the map area. They will collide with it as if it were solid tiles. Thus it is now possible to easily create open, outdoor areas.

The basic premise for the story of episode 1 was created all the way back in the original project proposal treatment before production began. Each episode will have a different storyline and two characters associated with it.

“One day a dragon attacked the Goblin Kingdom and ate the king. The prince and princess must retrieve his scepter or the royal family will go to war over succession to the throne. Rom and Rem followed the dragon to an old abandoned castle. Its bored children restlessly roamed the empty, decaying halls. The beast was roosting at the top of the highest tower. Good Luck!”

Score for each episode are now saved, so they will be retained after the game closes. The player’s score will be saved whether they completed the level or got game over.

My main goals for this month are:

  • Complete implementation of cycles and value scaling
  • Epilogue scene that plays after final level and before score screen on first cycle
  • Finish soundtrack
  • Complete DLC system

[Dev Summary] May

Features added:

  • Re-implemented delta time
  • Applied delta time to all timers
  • Created scaling module and implemented cycle scaling for enemies and damage
  • Created and implemented function for calculating random bonuses on level ready start
  • Created function and system for calculating the distribution of extra lives based on player’s score on ready scene.
  • Flashing visual indicators for when the player earns a bonus multiplier or extra lives
  • Created and implemented epilogue scene when you beat the last level in an episode
  • All music and sfx have been implemented

Content added:

  • Game ending theme
  • New PlayZot logo
  • New controls ui style
  • Created x2 and x4 images for PlayZot logo and controls ui

Bug Repairs:

  • Fixed some bugs that were causing the object management during gameplay to work improperly.
  • Fixed invincibility timer bug
  • Fixed scene change bug on last level
  • Fixed bug for giving bullets a minimum speed

Screenshots:

Notes:

I modified the style of the controls to something that does not block gameplay visibility and will hopefully still be easy for the player to see and keep track of. They now have x2 and x4 variations, so they will not look pixelated at higher resolutions.

I have implemented a system for the player to get extra lives. When the player’s score reaches certain milestones, they will get an extra life. If the player’s score is high enough to earn multiple lives, then they will receive multiple lives at once. This calculation occurs on the player ready scene. The actual calculation is:

current milestone = current milestone + (default milestone * total lives earned so far)

So each time a life is earned, the amount of points that must be earned each time is increased. thus the pattern will look something like:

1up = 20,000 pts

2up = 60,000 pts

3up = 120,000 pts

4up = 200,000 pts

My main goals for this month are:

  • Play test to determine what the proper max scale limit amounts for each value are.
  • Get the in-app purchase system done (buying episodes from the episode menu)
  • Start writing out an outline plan for the level design of episode 1.

PlayZot, what about the platformer technology, what are you using to manage your tiles and physics in the game? Dusk, MTE, something else? Also, are you using Tiled for level design or something else?

Btw, this is looking great! I love the ideas you are implementing!

@ jerejigga

Thanks. My tile engine is based on a tutorial I found. I made numerous modifications like tile culling, sprite animation, and refresh limit. The collision is corner based.

The physics is just simple calculations for x and y speed with gravity and friction. I’m not using anything from the api.

I am using Tiled to design and build levels for the game. It saves a lot of time.

@PlayZot, would you mind sharing the link to the tutorial you used as a reference? Also, is your “tile engine” something you’d be willing to share, either with the entire community or just with me? You can PM me. If you’d rather keep it under wraps in order to keep a competitive edge, I totally understand.

@ jerejigga

Here is the link to the tutorial.

https://www.youtube.com/playlist?list=PL-2t7SM0vDfcIedoMIghzzgQqZq45jYGv

It is important to note that the original tutorial is in the language Java, so there are some notable differences from Corona and Lua.

I would recommend looking into Dusk and Million Tiles first to see if they can do what you require, if you haven’t already.

With all due respect, I am developing this game under the employment of a company so I do not have permission to share that code.

@playzot

Ah, yes. With so many one-man shops developing games I hadn’t even considered that you might work for a company! That makes total sense and I totally understand.

In regards to MTE and Dusk, that is where I have been experimenting so far. I still have lots of questions though so I started this other forum thread: https://forums.coronalabs.com/topic/61724-how-to-create-a-platformer/ If you feel so inclined, please feel free to join that conversation. You might find it interesting whether you post something in it or not.

Thank you so much for the link to the tutorial! As it happens, Java is actually my primary language! It’s going to take a while to get through these videos, but just looking at the titles, they look like they will be very helpful! Thank you!!

Great. I hope the tutorial helps.

[Dev Summary] February

Features added:

  • Created and added enemy object to gameplay
  • Created finite state machine for enemy a.i. management
  • Gave enemy basic movement behavior.
  • Modified tile engine to limit refresh cycles.

Content added:

  • dragon sprite sheet

Bug Repairs:

  • Implemented, but disabled delta time for object movement. It was causing world and object collision problems.

Screenshots:

Notes:

I finally added enemies to the game. The enemies in the first episode will be dragons. All enemies will have the same module and behavior, but the graphic used is defined in the Tiled map data.

Enemies will be prominent in the game. At the same time, defeating enemies will not earn points and is not required to beat the level. You will have the choice to defeat or run past them.

The current plan is to have one pattern of behavior. The dragon will walk forward and turn around whenever they hit a wall or ledge. When the player enters the dragon’s field of attack, the dragon will stop moving and start charging and firing fireballs at the player’s direction. When the player leaves the field, the dragon will continue to walk.

Next month I will write out the details of how difficulty will work and what will scale during play cycles.

My main goals for March are:

  • Complete gun module and give enemy ability to fire bullets
  • Cause player to take damage from enemy bullets
  • Cause enemy to get hurt when the player jumps on them
  • make more bgm tracks

[Dev Summary] June

Features added:

  • Modified object on-screen management so objects type have a custom range for when to update and draw. Meaning objects can still update so far off-screen.
  • Increased enemy off-screen range
  • Enemies will return to walking state if they are stunned when they are off-screen
  • Bullets now have a minimum speed.
  • Increased button image blank space size for wider response range
  • Modified player physics

Content added:

  • Levels 1 - 11

Bug Repairs:

  • Fixed bonus distribution function calculations
  • Fixed game over score reset bug
  • Fixed gun projectile bug

Screenshots:

  • none

Notes:

I modified the max speed and jump speed of the player a little. You will be able to run faster and jump a tile higher. I made this change to fit the theme off speed and time limit. It fits the mood of urgency better. I’ve been wanting to do this for a while and I finally implemented it. The player will have a slower speed build up, and a quick slow down.

I also did some other little player modifications. When you suddenly turn while running, you will make a sharp turn instead of sliding around. When you walk into a wall now, you will lose your velocity, so if you jump after constantly running into a wall, you will not start out at full speed.

The engine is pretty much done at this point. The only thing I need to focus on now is making the levels. After that, its just in-app purchase system, leaderboard integration, and in-game ads.

Early on in the project I stated that I wanted to make non-linear levels, and that exploration would be a major element of the game. This still holds true. The game will contain both linear and non-linear levels. Linear designs will be sprinkled throughout to add some variety, but the majority will be non-linear.

The further into the game, the larger the levels will be. The number of branching paths will increase. The exit will be placed somewhere in approximate to the center of the main branches so that If the player is short on time or low on health, they can clear the level without going through the whole thing, Though they will lose out on the gold they could have collected. Risk vs. reward will be prominent.

My main goals for this month are:

  • Conceptualize, design, and create levels.
  • Need 32 levels total

[Dev Summary] March

Features added:

  • Created gun module
  • Created bullet object
  • Applied gun module to enemies
  • Created and completed fsm cycle of enemy actions and behaviors
  • Enemies can get hurt and enter death behavior when HP is 0
  • Player can get hurt and enters death behavior when HP is 0
  • Player will die when the timer runs out
  • HUD Timer now has 30 sec. orange caution and 10 sec. red warning stages
  • Created system of invincibility for player and enemies when they get hurt
  • Player gets sent back to ready screen when a life is lost
  • Player gets sent to game over screen and back to level select when they die
  • Enemies can fire directional projectiles at player’s position
  • Object collision is based on object’s collision box and not its full object size
  • Removed anti-alias from text objects
  • Began to capitalize all text

Content added:

  • Created 12 new bgm tracks
    • 24 gameplay bgms total so far

Bug Repairs:

  • none

Screenshots:

title, level select, character select, leaderboard

the level starts, the player dies and lives reduced, player falls off screen, return to ready screen and lives reduced, if the player lives is reduced to zero, game over

gameplay after applying fix that removes text anti-aliasing

enemies fire projectiles at the player’s position when fire is initiated

Notes:

The player can now hurt and kill enemies by jumping or falling on them from above. If you touch them in any other way, they will hurt you. Enemies can hurt you with their projectile fire.

When the player enters the enemy’s field of range, the enemy will begin its attack cycle. It will first charge up to telegraph its action to the player, and then fire the projectile. The projectile will be aimed at the player’s x and y position when the fire action is first initiated. Projectiles have a decay period and will then be removed. if a projectile collides with solid tiles, it will also get removed.

I had previously tried to make the text look sharp, but didn’t find what I was looking for. I found a corona blog tutorial while doing screenshots that I had missed previously, so I quickly applied it.  It definitely makes a huge difference and completes the overall look of the game.

I tried out a third tile set style that combines a variety of different. tile types with a couple variations. I think this is a good balance. I am thinking changing the color palette so that the white spikes stand out more from the regular block tiles. The tiles were originally this same blue before I changed it to grey.

My goals for this month are:

  • environmental damage
  • limited breath while underwater with HUD timer and drowning death action
  • more bgms (goal is 32 level tracks total for the 32 levels in an episode)

On difficulty:

The difficulty of the game will be based on

  • size of level and layout in terms of ease of traversing
    • ex. linear vs. non-linear and amount of pathways
  • time limit
  • platforming obstacles
  • amount of environmental damage tiles and relation to obstacles
  • amount of enemies and placement in relation to obstacles
  • amount and placement of gold collectables.
  • scaling properties on sequential gameplay cycles.

By balancing these elements in a certain way for each level, I can create different kinds of challenges. Each episode will have 32 levels. I am thinking of having an organized pattern of different challenges that spans the episode. There will be a difficulty curve for each challenge type, in addition to the overall difficulty curve of the episode.

The properties that will scale on each cycle playthrough will be:

  • Damage the player takes
    • Touching enemies, touching projectiles, and environmental damage will all deal the same amount of damage
  • Enemy walking speed
  • Enemy charge time
  • Enemy fire time
  • Projectile speed

Each property will increase a little every new playthrough. Each of the scaling property will have a certain max cap value so that they will not become exceedingly inhumanly possible. However, the damage the player takes will increase until everything can kill them in one hit.

In terms of how scaling difficulty, my approach to this game is to have a gentle curve of difficulty that starts very easy, but get very hard over time. I want to make it so that the player can master the game as long as they practice and have the proper skill level. I would like for the game at its max to be challenging, but not so hard that it is unfair, impossible, or intense to the point of not being enjoyable. In short, I want to make the game challenging but fair, and intense but still enjoyable.

[Dev Summary] July

Features added:

  • none

Content added:

  • Levels 12-16

Bug Repairs:

  • none

Screenshots:

  • none

Notes:

none

My main goals for this month are:

  • Make levels

[Dev Summary] April

Features added:

  • Added lava and spikes to gameplay
  • Lava and spikes damage the player
  • Created damage system to define what sides of tile damage the player
  • Created air meter for when the player is underwater
  • Created air HUD element
  • Created pause scene and implemented working pause menu during gameplay
  • Player will collide with the boundaries of the map as if they were solid tiles
  • Applied the proper animation settings for player actions (run, jump, fall etc.)
  • Episode scores get saved and recorded
  • Created and implemented story prologue that plays before level 1 on the first play cycle
  • Created module to handle variable values and scaling
  • Created function for calculating random multiplier bonuses
  • When you beat the last level of the episode, you can choose to continue, starting over from level 1, and the play cycle gets incremented.
  • Created zip module for unzipping resources when the app is opened for the first time.
  • Modified tile engine for further performance optimization

Content added:

  • Created 8 bgm tracks plus game over theme.
    • 32 total level tracks

Bug Repairs:

  • None

Screenshots:

none

Notes:

Lava hurts the player from all sides. Spikes only hurt the player on their sharp side. The player has limited air when underwater, and will immediately die when it runs out. Now the player cannot go out of bounds of the map area. They will collide with it as if it were solid tiles. Thus it is now possible to easily create open, outdoor areas.

The basic premise for the story of episode 1 was created all the way back in the original project proposal treatment before production began. Each episode will have a different storyline and two characters associated with it.

“One day a dragon attacked the Goblin Kingdom and ate the king. The prince and princess must retrieve his scepter or the royal family will go to war over succession to the throne. Rom and Rem followed the dragon to an old abandoned castle. Its bored children restlessly roamed the empty, decaying halls. The beast was roosting at the top of the highest tower. Good Luck!”

Score for each episode are now saved, so they will be retained after the game closes. The player’s score will be saved whether they completed the level or got game over.

My main goals for this month are:

  • Complete implementation of cycles and value scaling
  • Epilogue scene that plays after final level and before score screen on first cycle
  • Finish soundtrack
  • Complete DLC system

[Dev Summary] August

Features added:

  • none

Content added:

  • Levels 17-20

Bug Repairs:

  • none

Screenshots:

  • none

Notes:

none

My main goals for this month are:

  • Make levels

[Dev Summary] May

Features added:

  • Re-implemented delta time
  • Applied delta time to all timers
  • Created scaling module and implemented cycle scaling for enemies and damage
  • Created and implemented function for calculating random bonuses on level ready start
  • Created function and system for calculating the distribution of extra lives based on player’s score on ready scene.
  • Flashing visual indicators for when the player earns a bonus multiplier or extra lives
  • Created and implemented epilogue scene when you beat the last level in an episode
  • All music and sfx have been implemented

Content added:

  • Game ending theme
  • New PlayZot logo
  • New controls ui style
  • Created x2 and x4 images for PlayZot logo and controls ui

Bug Repairs:

  • Fixed some bugs that were causing the object management during gameplay to work improperly.
  • Fixed invincibility timer bug
  • Fixed scene change bug on last level
  • Fixed bug for giving bullets a minimum speed

Screenshots:

Notes:

I modified the style of the controls to something that does not block gameplay visibility and will hopefully still be easy for the player to see and keep track of. They now have x2 and x4 variations, so they will not look pixelated at higher resolutions.

I have implemented a system for the player to get extra lives. When the player’s score reaches certain milestones, they will get an extra life. If the player’s score is high enough to earn multiple lives, then they will receive multiple lives at once. This calculation occurs on the player ready scene. The actual calculation is:

current milestone = current milestone + (default milestone * total lives earned so far)

So each time a life is earned, the amount of points that must be earned each time is increased. thus the pattern will look something like:

1up = 20,000 pts

2up = 60,000 pts

3up = 120,000 pts

4up = 200,000 pts

My main goals for this month are:

  • Play test to determine what the proper max scale limit amounts for each value are.
  • Get the in-app purchase system done (buying episodes from the episode menu)
  • Start writing out an outline plan for the level design of episode 1.

[Dev Summary] September

Features added:

  • none

Content added:

  • Levels 21, 22, 25

Bug Repairs:

  • none

Screenshots:

  • none

Notes:

none

My main goals for this month are:

  • Make levels

[Dev Summary] June

Features added:

  • Modified object on-screen management so objects type have a custom range for when to update and draw. Meaning objects can still update so far off-screen.
  • Increased enemy off-screen range
  • Enemies will return to walking state if they are stunned when they are off-screen
  • Bullets now have a minimum speed.
  • Increased button image blank space size for wider response range
  • Modified player physics

Content added:

  • Levels 1 - 11

Bug Repairs:

  • Fixed bonus distribution function calculations
  • Fixed game over score reset bug
  • Fixed gun projectile bug

Screenshots:

  • none

Notes:

I modified the max speed and jump speed of the player a little. You will be able to run faster and jump a tile higher. I made this change to fit the theme off speed and time limit. It fits the mood of urgency better. I’ve been wanting to do this for a while and I finally implemented it. The player will have a slower speed build up, and a quick slow down.

I also did some other little player modifications. When you suddenly turn while running, you will make a sharp turn instead of sliding around. When you walk into a wall now, you will lose your velocity, so if you jump after constantly running into a wall, you will not start out at full speed.

The engine is pretty much done at this point. The only thing I need to focus on now is making the levels. After that, its just in-app purchase system, leaderboard integration, and in-game ads.

Early on in the project I stated that I wanted to make non-linear levels, and that exploration would be a major element of the game. This still holds true. The game will contain both linear and non-linear levels. Linear designs will be sprinkled throughout to add some variety, but the majority will be non-linear.

The further into the game, the larger the levels will be. The number of branching paths will increase. The exit will be placed somewhere in approximate to the center of the main branches so that If the player is short on time or low on health, they can clear the level without going through the whole thing, Though they will lose out on the gold they could have collected. Risk vs. reward will be prominent.

My main goals for this month are:

  • Conceptualize, design, and create levels.
  • Need 32 levels total