The road to my first game
In a recent post I discussed how I got into game development. All things considered, it took me 35 years to finally get myself to learn to code and embark on a road to my first game.
The project I have been working on before I started my adventure with programming and Unity 3D was a tabletop miniature wargame. I was in my sixth year of development for the game and it was taking a bit too long. It was a very ambitious project and I had many other obligations (family, running a business). And yes, mistakes were made that hampered my progress and I was burning out of creativity quite fast. In the future I may write more about that project and the mistakes that led me to putting it on hold.
The breakthrough happened as my friend approached me with a proposition of writing a computer game together early in 2016. Long story short, after a month of initial work he had to switch jobs and we canceled the project. However, I noticed how much fun I had and I started looking around for a good engine and some courses to learn programming. Most courses however were quite expensive and required timely contribution. Being self-employed and having 2 young kids and a third one on the way I could not accept such a commitment.
And then, I stumbled upon Udemy, a site with life long access to courses, which was ideal for me, as I could learn at my own pace. I browsed through the offering and found many courses that seemed to fit my goals. After a while a settled on a course by Ben Tristem, as he seemed a competent and natural tutor. And that was a very good decision.
To be honest, when I reflect back on my learning experience, having chosen any other course might have led to failure due to poor quality of instruction. This is unfortunately a big problem on Udemy and the site is often criticized for this reason. However, my first experiences with Ben’s courses were great. I successfully completed my two initial tutorial projects and started doing more advanced stuff. This is where things got a bit difficult. I felt a motivational rush fortunately, and I used my educational background to try and overcome any adversities I encountered.
My ways of dealing with difficulties
- Proceed with the course material if everything is understandable. Always at least attempt challenges and try to perform as much work myself as possible. Always read additional materials provided by the tutor.
- If there is a significant knowledge gap, try to fix it. I remember that at first I couldn’t grasp the idea of “void” functions and for functions to not return values. It took me a few days to wrap my head around it. In such cases I would go on a tutorial hunt for a given topic. Watching dozens of videos, waiting until finally the proper neural connections in my brain started to form.*
- If my knowledge gap couldn’t be solved relatively quickly mid-course, I would stop forcing it. I just continued with the course to the best of my knowledge. After finishing the course I would then return to the issue by finding other courses or tutorials on the subject. This way I picked up a course about vectors after I finished a course that featured heavy use of vectors. In a similar way, I did a YouTube course that spanned more than 20 lessons to broaden my knowledge on data encapsulation and interfaces. All in the middle of another course that introduced these concepts.
- I would also buy many small, targeted courses that dealt with a very narrow range of subjects. When I finished my first 2D course for a game similar to Plants vs Zombies I would buy a course that demonstrated ways in which I could improve the playability and graphics of 2D games. Similarly, after finishing about 4 whole courses I felt I needed to revise and organize my programming knowledge. To do this I bought a course “C# programming basics with Unity”. I did not even perform any exercises contained in it. I simply listened to all the lectures on programming in my spare time to see if everything is clear to me.
During the fall of 2016 I also enrolled in a series of game development workshops/educational conferences by members of the industry. While usually very generic, these meetings did in fact push me forward. Seeing other people with similar struggles always boosted my motivation.
By combining self-learning and occasional workshop participation I managed to learn for almost a whole year without stopping. In February 2017 I got positive feedback on my pixel art from a graphic designer from Techland during one of the workshops. This made me consider a new approach to learning. I decided to make my own game. Of course I needed a clear focus and realistic goals so I decided on the following:
- One month deadline
- Art: pixel art graphics made by me, excluding animated characters which I will purchase, sounds from royalty free sites
- Gameplay: simple 2D sidescrolling platformer, elements of combat and physics – basically a tech demo that showcases different game mechanics
In the end it took me about 40 days to create my 6 room demo. It featured physics based combat, physics based traps and destructible environments, collectibles, respawn mechanics and a simple tutorial integrated into the game. I didn’t have any time left for the start menu and any options screen. Thus, the game only features Start and Exit buttons and an ugly start screen. But I consider that exercise a great success. In just about 40 days I managed to make my own game from scratch. And I did not spend that much time on it. I still had to take care of my business during the days, so I basically only worked on it in the evenings. Even though the playable portion is quite short, the systems are in place and the game could be extended rapidly.
Once I received feedback from friends and family, I put this project on hold and went on to advanced courses for another year. The game in its original state is available here. In time, I will make all its assets freely available to the readers of my blog. I will also discuss some design choices and processes I went through when creating the game.
*If you’re doing absolutely everything you can to understand something and still fail, try to flood yourself with information regarding that subject. Sometimes you just need a specific way of presenting knowledge. And the more presentations you watch, the better the chance you will find that one that finally triggers your understanding. Also, if you are tired and see little progress, take a break. A good night’s sleep can help your brain in processing all the new information.