Project: Game Development

It's almost finished
The biggest lie of a game developer.

Motivation for this project was the eagerness to learn something new. Although I always played games throughout my life, I’ve never dove into game development and I decided to challenge myself. The goal of the challenge was to release a game on some gaming platform.

The platform for which I aimed to release my game on was steam because it’s the platform I use the most. Yeah, so my first game which I planned to release was aimed at PCs.

As I was trying to come up with not necessarily original idea but enjoyable, I remembered one game which I played when I was younger, the name of the game is ‘Box Head’ and it’s a single/cooperative browser game. This game’s goal is to kill as many zombies as you can while they are growing in numbers each wave you managed to kill. The most enjoyable aspect of this game was however the cooperation part. I remember playing this game with my friends at school/home etc. and we had a great fun.

In order to make a game you firstly need a game engine (well not necessarily but it saves you a lot of time and headache than to make your own game engine, not saying that already developed game engines won’t give you a headache but that’s another story). I searched web and I settled on game engine Unity.

I chose this engine because It’s marketized as an easier to learn game engine for beginners. It also looked a lot simpler than Unreal Engine. Unity also has a great online coverage and popularity, there are lots of youtubers sharing their ideas/tutorials online (I especially want to give shout-out to youtuber Brackeys, who has an incredible library of tutorial for this particular engine).

Besides that, unity has also a lot of free content you can download and use in your project. The content is on their ‘asset’ store and vast majority of the content is added by Unity’s users but the larger part of the asset store content is paid.

So, I decided to make this happen. The goal timeline for this project was about two weeks and boy was I naive. I started with searching everything I could find on Unity. At the time I was also on the internship in a startup but I just finished up my biggest project on that internship and they didn’t have anything that complicated and challenging for me on which I could work 12hrs/day so I decided to start my own project on which I was working about over 4 hours when I came home and about/over 12 hrs./day at the weekends.

The first bunch of tutorials which covered the basics of unity and game development like movement, scores, win/loss, multiple scenes etc.… I completed that day in couple of hours.
(link to the ‘Brackeys’ tutorial)

Box Head 3D

So, as I mentioned my favorite 2D browser game, I decided to make a 3D, more engaging, more fun version of it. I was pretty hyped and believed I could make it soon enough.

I spent following days bouncing of the walls of not knowing the scripting language good enough but the improvement was visible by the hour of coding spent.

Firstly, I searched the tutorial of so many aspects of the game that really started coming up to the surface and soon became overwhelming. I never realized how complex is f.e. reloading of the gun you really have to script ‘every’ single bullet which comes out of the gun but before that what really is a bullet? (more lines of code + Unity development), what does it really mean to shoot something? (more code + Unity development), what if the user has no bullets?, reloading while firing?, giving reload a delay, changing weapons while reloading, each weapon has its own way of reloading so make it general…. MORE CODE MORE CODE MORE DEVELOPMENT. And that just one part of the gameplay. But I didn’t let that bit to bring me down and make me stop.

When I searched what were the biggest problems of the indie (independent) game developers or the problem of the indie developer in general I figured that perfectionism can really be an enemy of productivity/reaching your goal in time and the few ways I found out on making your own game development are as follows:

  • Is the feature you want to add really essential for the core of the gameplay to be entertaining and is it worth it to spend hours of implementing it?
  • Is the feature original or somebody made it already and you can search it how they did it and save hours of time in the process while learning it as well?
  • Is the feature important but relatively hard and not necessary to learn and to implement? Do you have the time to learn and to implement it? Is the feature relatively original (graphics)? Is it on the asset store? Is the value of that item bigger than the money with which you can buy it? Buy it. – For me it was learning to create your own 3D in-game characters and learning the animation aspect as well. In the end I bought that model because it was perfect for my game and the value for which I bought it was a lot higher than the price. (estimated 20+ hours of modeling and animating for $4,5) I mean if I had time I would do it myself but that wasn’t essential part of the goal.

Another problem is the release part of the game. Most of the games being developed and planned to be released don’t get released. I stared this enemy in the eyes every day with confidence.

Almost two weeks in, I had completed big part of the gameplay. Zombies started spawning, attacking. My weapon system worked almost flawlessly, animations more less worked as well, guns had sound. I implemented gun modifications shop (reload speed, damage, fire rate, range, shock strength, magazine size), I implemented talent tree as well, after each wave you can upgrade speed, health, chance to hit critical strike, I also added health boxes which you can take, upgrade boxes ammo boxes …

Yeah… But, I still didn’t worked on level design for which I had big goals, the gameplay was playable but not that enjoyable, if I saw it online I wouldn’t be impressed, I still didn’t implemented co-op mode and after hours of searching I figured It could be my death if I continued developing this game. Co-op was the core of the game and I should have focused on that from the beginning. College was behind a corner and I didn’t want to give up my goal, I wouldn’t be able to live with that knowledge.

So I dropped it. But not with the hopelessness of not completing it but with the eagerness and excitement of developing next game which will be more exciting and fun, this time not on PC and Steam but on Android and that’s where the main story begins.

Unlightend: The Challenges Of The Underworld

I chose to develop a game for android because it’s easily accessible and I wanted to make a simpler game than the FPS I tried to make before. In its core, the game should be atmospheric platformer with very dark environment and challenging levels. I had about 3 weeks and I quickly started the development.

First/second week

Gameplay was my main focus at the beginning and it was relatively simple I had to just make movement, jumping and sprinting, combine it with the animations, repair some errors, add a torch, play with the lightning, added keys which could open the door etc. Also I saved a lot of time because I reused a lot of code from my previous game attempt, code for running enemies, player health and some other aspects. But even this at the first glance simple game has a lot of things running in the background, enemies have designated boxes over the holes in the level with which if they collide they fall into the pit and despawn after a delay, they also calculate that distance between the player and themselves, they calculate auto attack time, auto ‘grunt’ time etc.

Second week

In this week I finalized some core gameplay features, repaired some bugs and added some additional ones which could improve the gameplay experience like potions for health, sprint. Started playing with in-game user interface (in-game indicators, death screen, level completed screen). I tried to make it blend with the style of the game and not to disturb the player. Also implemented the core for the game menu, created level listing with clickable buttons which change the levels accordingly.

Third week/and couple of days later

The school was about to begin and the clock was ticking. I dedicated my last week on making the levels. Before, I had a vision of 40+ levels but later I settled on 15 with the intention that those levels will be original. First couple of levels were tutorial live so it went rather easily but after that the levels started to be unique in some way, I had to learn how to do platform animations and lot of times I had to create a level-unique scripts.

The hardest level of them all was the 14th level which had a boss fight at the end, moving swords flying arrows and level design were the hard part. I also added sound effects as well a background music to the game.

After finishing up the core of the levels I began to test it with my friend so I could add timings for the stars and I soon found out most of the bugs which really made my finalization harder.

I went on to repair them and I also added some environment features to the game, stone walls/floor, pillars etc. to make it feel more realistic.

Soon I figured that the game needed optimizing so I had to compress sound effects/music, downgrade game graphics/textures, play with the lightning, quality settings and delete unnecessary animations.

After that I finalized main menu design, changed fonts added tutorial popups to the first levels. I wanted to know what the ad revenues are so I added ads and IAPs (in app purchases) for anyone who wanted to support my work (I had to troubleshoot ads and IAP a lot) and that day I released the game and also went to the college.

I timed this project veeery tightly and I’m very glad I finally finished it. I learned a lot with this project. Not just how hard and complicated is to make a game but also some things about myself. I figured it’s hard to sometime drop something on which you spent many hours but those hours played a role, from that drop I gained experience, reused a bunch of code and models. Sometimes you just have to trust your gut and drop something even it seems like cowardness.

I figured that I can be very productive if I am alone and self-dependent meaning I lived in a different city without my parents and anybody who could take care of me and also slightly out of my comfort zone not to confuse with the meaning that I wouldn’t like to be a part of a team, I would very much enjoy working with someone else but that was the luxury I didn’t have. I even invited my friend on this journey into the unknown world of game development but he declined.

While working on project and also in the startup I come to realize the big value of time and knowledge with which it could be traded with.