IndieMonth (User)

  • NetworkManager
  • 10 bubbles
  • 50 in CRank
  • Score: 14500
""

Programming Workflow When Developing a New Game

IndieMonth | 18d ago
User blog

By Alexander Presthus, Co-Founder at Lumi Games AS.

This post will hopefully be the first in many about the programming side of developing a game. This post is meant to be somewhat of a general overview of the process we go through when coding a game. In the future we hope to post about more specific techniques or concepts that people would find interesting.

Prototype stage:

First of all I get some specifications (usually from Erik) on what the game or concept is supposed to be about, what the most core mechanics are , and what we think is essential to see if works or not.

Then I start to think about how I would like to implement the core mechanics in a more technical fashion. I also try to follow a design pattern when setting up the prototype, keeping in mind what would make it the most flexible and easier to tweak for the game designer. I often use traditional pen and paper to sketch out the class layout and game structure, or even the structure that make up a game mechanic.

I'll use PAX HD! as an example since its a fairly simple game in terms of required functionality and structure. What we needed for the functioning version of this was approximately:

*Moving background (in these types of games, the player usually doesn’t move much at all, its just an illusion created by moving the background and or other objects).

* Enemies that are randomly generated by the game whilst playing. 
We quickly decided we did not want to do specific designed levels for this game, but rather spawn new enemies as the player progresses, always making the game experience slightly different for the player but also to save a lot of time in production.

* Increasing game speed (Difficulty). The game would quickly get boring if the player wasn’t challenged as the game progressed, so scaling up the game speed (or in this case the enemy speed) would be essential.

* Powerups that gives the player advantages. We wanted some other elements that the player would get some sort of boost from. This would also give the player something else to think about and not just avoiding obstacles.

Production / How we implemented this:

The moving background was simple enough to do, there are two backgrounds (1 on the screen, 1 just outside) The background on screen starts to move down and out of the screen, and the background outside of the screen moves with it, gradually coming into view. When the first background is completely outside the screen(and therefore the second background exactly where old background started), they reset back and do the same over again and again in a loop. A layer of moving particles where put on top of the background, moving at a faster speed to create the illusion of depth. This technique is reffered to as ”Parallaxing” or ”Paralax Scrolling” and is used in many 2D games.

Wiki: http://en.wikipedia.org/wik...

When tackling the enemies, we landed eventually on having only a single Enemy Class (they would all be identical except for looking visually different).

We accomplished this by creating internal functions to create shapes with multiple single blocks (1 block is the width of the players sprite) We made a number of shapes, and each time an enemy was created it chose one of these shapes after being assigned a number or integer at random from a given range each time.

In fact, there are at any given time only 3 enemies max present on the screen (one in each lane) and every time an enemy exited the screen it would give points to the player and reset its position and shape before moving forward again. We added a nice particle effect when a shape exited the screen to add in the sense of achievement and progression in the game.


Lanes

Each enemy has a property called ”speed” which denotes how many pixels per frame it should move towards the bottom of the screen, for every 30 enemies that exited the screen the global game speed (and therefore speed of all enemies) increased by a factor we had set.

As for the powerups, these were separate classes (sprite objects) and manipulated the global game variables when activated (The warp increased the game speed for a certain time and activated ”God mode” (turning off collision detection), the health icon simply added 1 health point to the players health). We originally experimented with things like “bullet time powerups “for example, but found that this didn’t make for very fun game play in the end since the game was about speed.

Polish:

After we had implemented all the functions and were happy with the gameplay and mechanics we spent some time adding some polish to the game. Like adding the aforementioned particle effects when enemies exit the screen. We also added animations when picking up powerups, color changing on the backgrounds based on how far the player was in the game. We also implemented an old school arcade style high score system and added music.

Of course this is a very general overview of the process and is void of technical specifics, but the concepts used here are used in a lot of games today, regardless of platform and framework they were developed with, so we hope this will interest for some of you. And we also look forward to writing more in depth and interesting posts in the future :)

Day 13 | Lumi Games

BiggCMan  +   18d ago
Ah a little too much technical stuff for me.
MrxDeath  +   18d ago
omg coding is hard !!
it must be hard for you guys to do this
oasdada  +   18d ago
Me nd my friend are kinda tryin to make a game too... so i kinda get it
Derekvinyard13  +   18d ago
My brain hurts :-l
SpeedDemon  +   18d ago
I've been watching tutorials on how to code on YouTube, the stuff goes right over my head.
LukeFair  +   17d ago
Too complex to read that one for me too
shadowvisa  +   17d ago
Awesome
RexDD  +   17d ago
I was interested in coding once, then I actually tried to learn it...

Never again..
#8 (Edited 17d ago ) | Agree(0) | Disagree(0) | Report | Reply
beepbopadoobop  +   17d ago
Wow that's an intense read for first thing after I wake up haha
Lumi_Games_AS  +   17d ago
I´m sorry if you all found this a bit too dense and technical, its challenging to write about programming without getting too bogged down or nerdy about the technical stuff. But I´ll keep in mind for future articles. I hope it was of some use though! :)

-Alex
theDivision  +   17d ago
As a computed science student I really enjoyed this. My university doesn't offer and game design courses so being able to read through the processes is quite fun for me. I got all of what you were saying and it did help so thanks for taking the time to post it!
Lumi_Games_AS  +   17d ago
I´m glad to hear that! We hope to make a lot more posts like these in the future :) There are some really interesting areas worth going more in depth, such as procdural content generation in indie games, and games in general for that matter.

-Alex
theDivision  +   17d ago
Great! I will definitely stay tuned and keep a notepad handy ;-)
randomass171  +   16d ago
I personally found it quite interesting! It gave some insight on game creation and development. Thank you for explaining it as simply as possible for those who are not well versed in game development. :)
Monster_Tard  +   17d ago
I've messed around a bit with GameMaker, so I some what get it. I remember trying to make a top down shooter, didn't turn out so great.
XtraTrstrL  +   17d ago
Like I said in another post on these guys, they definitely have the game making process down. Just the way they were talking in one of the other articles led me to realize this. If they were to ever go to Kickstarter, I doubt they'd have an issue with miscalculating the workflow, time frame and funds needed. They seem to really be on point with that aspect from the get-go.
dictionary  +   17d ago
Hope to become a good coder like him!
Disagree  +   17d ago
this is where you lose me lol
Darklurkr23  +   17d ago
Too much math XD
Fullmetalevolust  +   17d ago
I was painfully able to follow when it came to production but you explained it well in laymen terms.
I don't see myself programming a game any time soon but a tip of the hat to those who do.
I think you'd do well to present this information to future students in programming at the high school level to get them interested and informed.
Lumi_Games_AS  +   17d ago
We are actually planning on doing an educational series both when it comes to programming and game design in the future on youtub. So the educational and teaching aspects is absolutely something we are looking in to!

-Alex
Fullmetalevolust  +   17d ago
As an educator, that is gaming music to my ears!
I use youtube as a teaching tool in my classroom. Well thought!
And hey, I really enjoyed PAX HD! :) So thank you.
coolbeans  +   17d ago
A bit of technical info that's not going to stick with me, but appreciate you taking the time to discuss the process nonetheless.
gobluesamg  +   17d ago
Randomly generated enemies. I like that.
MisterAV  +   17d ago
Very interesting, even if I already know about this stuff
MYDEATH21  +   17d ago
I really want to learn how to code. I want to learn more about how everything works down to the smallest detail
Virtua_Awesome  +   17d ago
Thanks for taking the time to go through all of this for the article. I have some basic (very basic) idea of how programming works, so this is very interesting!
rambi80  +   17d ago
This is some nice insight. I knew a guy who used to pirate games and then tried to make one.....never pirated again when he saw what really went into it.

That's why stuff like this and Tim Schaffer's documentary are so great.

Lost me somewhere in the middle tbh, but don't worry, a few people here will surely appreciate it.
yoshiroaka  +   17d ago
Wow, love in insight in this article. I love hearing the nitty gritty details on how games are made.
ichizon  +   17d ago
Quite an in-depth look at what they did in PAX HD! Had a good time reading this. Pretty basic design, but still interesting to read about the thought process behind creating each part of the final product.
MasterofMagnetism  +   17d ago
Too much technical stuff for me to follow.
longcat  +   17d ago
Pretty cool stuff. How the sausage gets made lol.
grashopper  +   17d ago
PAX HD ... I think I rubbed off my finger prints thanks to you!
Nice concise explanation of the process.
LedZeppelin  +   17d ago
procedural
pyrocloud7  +   15d ago
It's really amazing to start thinking about the programming behind the scenes to create a game, makes me wish I had paid for attention in programming class.

Add comment

You need to be registered to add comments. Register here or login
Remember