Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

[ WIP ] Goblin Age
Started by PlayZot_Christopher Oct 01 2015 09:01 AM

21 replies to this topic
corona arcade side-scrolling
[TOPIC CONTROLS]
This topic has been archived. This means that you cannot reply to this topic.
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

Working Title: Goblin Age
Release: IOS and Android
Dev Start: April 2015


[ ABOUT ]

 

Goblin Age is a new side-scrolling arcade platformer in development by PlayZot. My role in this project is design, programming, graphics, music and sound, level design, and writing. The release date is still pending.

 

Attached File  ga_4.png   18.05KB   7 downloads

(Original Photoshop Mockup Concept)

 

 

[ GAMEPLAY ]

 

Run and jump across 32 levels collecting as much gold as you can, and get to the exit before time runs out. Overcome enemies and platform obstacles.

 

Play levels continuously to get a better score. When you beat the episode, you can start over with bigger bonuses and higher difficulty while retaining your score.

 

Whether you get game over or quit, your score will get saved.

 

Attached File  ga_1.png   12.14KB   4 downloads Attached File  ga_2.png   10.28KB   2 downloads

(Simulator Screenshots)

 

 

[ FEATURES ]

  • Made exclusively in Corona SDK
  • New engine
  • Analogue stick for easy, responsive movement
  • Endless cycle of play
  • Episode score leaderboard
  • Purchasable DLC Episodes with new stories, tile sets, and music
  • Purchasable DLC Player Skins that can be used in any purchased episode


[TOPIC: post.html]
#2

Rick.Kelly

[GLOBAL: userInfoPane.html]
Rick.Kelly
  • Contributor

  • 100 posts
  • Enterprise

Way too much "tiling effect" going on - I'd recommend mixing it up a bit!



[TOPIC: post.html]
#3

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

Good point.

I will keep this in mind when designing the real levels for the game in the future. Right now the working tileset has eight slots for solid block tiles, and eight for ledge tiles.

 

Variation would be especially useful for the large non-linear levels that I would like to have. The original Metroid used tile variation to great effect.

 

Thank you for your feedback.



[TOPIC: post.html]
#4

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ Dev Summary ] October

 

 

Features added:

 

  • Created functioning score scene
  • Player goes to score scene after exiting a level
  • Added more HUD elements

 

Content added:

 

  • New variant tile set
  • Created 5 new bgm tracks
  • Created sprite sheet for player hearts HP display

 

Bug Repairs:

 

  • none

 

Screenshots:

 

Attached File  oct_1.png   19.97KB   3 downloads Attached File  oct_2.png   30.25KB   4 downloads

 

Attached File  oct_3.png   17.09KB   2 downloads Attached File  oct_4.png   18.42KB   2 downloads

 

Attached File  oct_5.png   18.69KB   5 downloads Attached File  oct_6.png   16.54KB   3 downloads

 

---------------------------------------------------------------------------------------------------

 

 

How Level Scoring Will Work

 

In Goblin Age, the main goal of each level is to collect as many gold as you can and get to the exit before time runs out. If the time runs out, you will die, lose your gold, and start the level over.

 

When the player touches the exit door, the level will end and the player's score for the level will be calculated.

 

Attached File  oct_2.png   30.25KB   4 downloads

 

The first line of the score card is for the amount of gold you have at the end of the level. You will receive points for every gold you collected. You do not receive any points during gameplay.

 

Each piece has a base value. Currently it is set at 100. The base amount is multiplied by a value that increases the more episode cycles you play. So the actual value each gold is ( base x multiplier).

 

Furthermore, After play cycle 1, When starting a level, there is a chance that a bonus multipler will be applied to the value of the gold. The final value of each gold becomes ( base x multiplier) x bonus.

 

This bonus will be a whole number such as 2, 3 ,4 etc. The chance and value of the bonus will increase the more cycles you complete.

 

The second line is static amount of bonus points awarded for holding all the gold in a level when you clear the level. It is a 100% collection bonus. If you collect all gold, die, and clear the level without 100% gold, you will not get the bonus.

 

The third line is static amount of bonus points awarded for not losing any lives during the level that was cleared.

 

The fourth line is your current score + the points you just earned from clearing the level. It is your final total.

 

That's how points are awarded for clearing a level.



[TOPIC: post.html]
#5

farjadfarabi_czs

[GLOBAL: userInfoPane.html]
farjadfarabi_czs
  • Enthusiast

  • 97 posts
  • Corona SDK

Hey PlayZot, this graphics/art style  looks great, with kind of that 8 bit look and feel. 

 

How do you create this? Any specific tool / software ?



[TOPIC: post.html]
#6

patso

[GLOBAL: userInfoPane.html]
patso
  • Contributor

  • 135 posts
  • Corona SDK

Great old school look!!

What I recommend is making upper scores panels more old school and pixelish, because they look to smooth. yeah, and change the font.



[TOPIC: post.html]
#7

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

@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.



[TOPIC: post.html]
#8

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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:

 

Attached File  dec_1.png   9.92KB   2 downloads Attached File  dec_2.png   14.94KB   2 downloads

 

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


[TOPIC: post.html]
#9

redninjacat

[GLOBAL: userInfoPane.html]
redninjacat
  • Contributor

  • 196 posts
  • Corona SDK

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!



[TOPIC: post.html]
#10

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

@ 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.



[TOPIC: post.html]
#11

redninjacat

[GLOBAL: userInfoPane.html]
redninjacat
  • Contributor

  • 196 posts
  • Corona SDK

@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.



[TOPIC: post.html]
#12

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

@ 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.



[TOPIC: post.html]
#13

redninjacat

[GLOBAL: userInfoPane.html]
redninjacat
  • Contributor

  • 196 posts
  • Corona SDK

@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!!



[TOPIC: post.html]
#14

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

Great. I hope the tutorial helps.



[TOPIC: post.html]
#15

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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:

 

Attached File  feb_1.png   15.09KB   2 downloads Attached File  feb_2.png   16.89KB   2 downloads

 

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


[TOPIC: post.html]
#16

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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:

 

Attached File  mar_24.png   5.69KB   2 downloads Attached File  mar_17.png   3.87KB   2 downloads Attached File  mar_18.png   4.78KB   2 downloads Attached File  mar_25.png   7.52KB   0 downloads

title, level select, character select, leaderboard

 

Attached File  mar_14.png   9.96KB   2 downloads Attached File  mar_12.png   14.84KB   2 downloads Attached File  mar_13.png   14.52KB   0 downloads Attached File  mar_15.png   10.01KB   0 downloads Attached File  mar_16.png   3.76KB   0 downloads

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

 

Attached File  mar_19.png   5.26KB   0 downloads Attached File  mar_20.png   14.48KB   0 downloads Attached File  mar_23.png   6.08KB   2 downloads

gameplay after applying fix that removes text anti-aliasing

 

Attached File  mar_22.png   14.41KB   0 downloads

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.

 

Attached File  mar_11.png   6.46KB   0 downloads Attached File  mar_21.png   16.98KB   0 downloads

 

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.



[TOPIC: post.html]
#17

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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


[TOPIC: post.html]
#18

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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:

 

Attached File  may_1.png   19.66KB   2 downloads

 

 

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.


[TOPIC: post.html]
#19

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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


[TOPIC: post.html]
#20

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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


[TOPIC: post.html]
#21

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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


[TOPIC: post.html]
#22

PlayZot_Christopher

[GLOBAL: userInfoPane.html]
PlayZot_Christopher
  • Enthusiast

  • 52 posts
  • Corona SDK

[ 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



[topic_controls]
[/topic_controls]