10 years ago, I created my first game and became a game developer. Remembering the journey:
When finishing high school in 2011, I wished that my future job would be as a cool game developer, but I only had experience playing video games. The little programming I did there in classes was boring text-based console applications, and while there, I never went the extra mile beyond completing the homework assignments, always returned to playing video games.
After high school, I stayed an extra technical year to obtain a certificate in programming, and I was determined to make that year count. I started to work on my first game, a 2D platformer. I was starting out by following Oyyou’s XNA Youtube tutorials. From 2011 to 2012, I completed it in C# XNA, and enjoyed every minute I spent on it. I felt like I created my own little world from nothing. The result looks like this:
Major features included:
- hand drawn 2D graphics that I created in Paint.NET
- sprite sheet animations
- multiple “biomes” with their own set of sprites and parallax scrolling backgrounds
- interactive grass animation
- sound effects that I made with my mouth
- 42 levels (they were loaded from a tile map txt file where every character represented either empty space, a platform, and enemy or something)
- level editor, custom player level
- 1 Boss on the last level
- local 2 player mode
- level up system, weapon switching, etc.
- music ripped from games I really liked at the time
- physical release on a CD with printed label, given to 6 of my classmates and friends, and a public copy with source code to the school
- Full documentation as hard cover book format
- many bugs, day 1 patch for a level that couldn’t be completed
Moving to 3D
With that game in my backlog, I was super happy, and then tried my hand in 3D graphics. At first it was all very confusing, but going through some XNA 3D tutorials by Riemer’s (lost to time, but there seems to be a revival) I got a nice terrain renderer that I could customize endlessly, which was a lot of fun, and once again I felt like creating a whole world that I can lose myself in completely. The result looked like this:
Main features that I remember:
- load 3D terrain from height map
- directional and point lights
- shadow maps
- planar reflections, water
- particle systems
- procedural grass
- post processing
- custom GUI
Moving to C++ and DirectX 11
Around that time, there was already whispering about deprecating XNA, so I thought I would try my hand in C++ and DirectX 11 (following RasterTek tutorials) and create a fighting game. A super early version:
A later version:
This would later turn into Wicked Engine, but at this time I thought I would create my own fighting game, by implementing aspects I seen in other arcade japanese fighters. At this point, it was not an engine, just straight up game in c++. I think some parts of its code still remain in my current work, but most of it was refactored and completely changed.
Meanwhile, I put this project on hold for a while, and decided to release simpler games in something I have more experience with – XNA. This resulted in me releasing 3 mobile games in a short period (half year maybe):
1) Breaker Master, a breakout clone with animated hand drawn style graphics, released for Windows Phone and Android. Had a simple story, bosses with pong style gameplay mixed in, chain reactions, particle systems, pickups, I think it was quite fun. It also featured a store where you could buy some backgrounds in exchange for your in-game points:
Breaker Master, a breakout clone
2) Space Accelerator, an endless runner type 3D game, where you control a space ship, avoiding asteroids, while picking up coins and fuel, for Windows Phone and Android. It also had a global leaderboard and achievements backed by the OpenXLive API (chinese version of XBox Live). The in-game shop was copied over from Breaker Master, but here you could buy ships and avatars too. This was the most successful game, that was downloaded over 30 000 times (the free version):
Space Accelerator, and endless runner clone
I’m glad that I also made a video:
3) Splash Bugs, a rip off of a PSP homebrew game that I think was called “Bugz”. Basically, a number of bugs moved on the screen randomly, and you could tap the screen to spawn an explosion, which could result in a chain reaction. I was really addicted to that for a few days back in the day. Windows Phone only:
Splash Bugs, a clone of PSP homebrew called Bugz
Sadly, these games can no longer be found, because they were removed from the stores. It was even hard to find images of them on the web. I will probably never develop mobile games again, because they can just get removed from app stores on a whim, and I don’t play on mobile phone anyway. I haven’t made any money from them worth to mention, because so few people bought them, and the free versions didn’t generate any profit worth to mention from the ads. But at least my friends bought them. That’s not to say that I regret making them, because I got some real experience and memories from the process.
Getting a job
Then I returned a bit refreshed into C++ and DirectX 11, and continued developing a fighting game. I soon added many shader effects, 3D characters, deferred rendering, which looked like this after a while:
You may notice that the larger part of the video is 3D graphics showcase, rather than fighting game, and this is actually a turning point in my gamedev story.
You see, at this time I was attending a university, but also started to try applying to jobs and sending in demos and videos that I made. First one was Gameloft’s Budapest office, which I got an invite for an interview, but didn’t pass it. Second one that I got a chance for was Neocore Games in Budapest, and I managed to get a job as an engine programmer, which I am eternally grateful for.
Neocore Games is a big name studio in Hungary, responsible of creating many successful games, like Adventures of Van Helsing series, The King’s Crusade, Deathtrap, King Arthur, Warhammer 40K: Inquisitor (which I mainly worked on). Their current project is very interesting tactical RPG: King Arthur: A Knight’s Tale
Shortly after getting the job, I left university (university was free in Hungary, if you brought sufficiently good grades from high school). I felt like it was not supporting my aspirations as a graphics programmer, and holding me back instead. While working on a game to be released, I was learning so much, that I don’t regret this decision at all.
A bit more than 3 years at Neocore games was enough for me to drastically improve in 3D engine development. I also continued working on my fighting game in my free time sometimes, and at some point the fighting game got removed, and what remained was an engine that I started calling “Wicked Engine”, and a 3D scene editor for it.
At this time, I also experienced console development, porting the in house graphics engine (called CoreTech, a battle tested engine, used to release all of their games) to PlayStation 4 system, which opened my eyes and really wanted to do more with consoles, that I just couldn’t focus on there as much. I started applying to many companies abroad, and one of those was PlayStation’s Developer Technology Group in London, a job which I managed to get.
The DevTech job was interesting and challenging in many ways. We dealt with lots of different companies, and tried to help in their development efforts for PlayStation console. I was there for nearly 4 years, and no longer work there, but this now reached present days.
Currently I am still working on the Wicked Engine, which turned out to be a huge project, but something I thoroughly enjoy making. Looking back on my progress brings great deal of nostalgia and satisfaction. It was a great idea to document my progress as videos along the years, they are very fun to watch back. I wish some of the older games and projects I’d had retained better, because some of those are lost to time unfortunately.
If I can give advice to anyone wishing to start a career in game development, I would suggest to start creating a game as soon as possible. That doesn’t mean “next month”, but today or tomorrow if you can. Start with a simple program that can read your WASD input, and move a rectangle or image on the screen. Then try to implement a simple existing 2D game concept, like a breakout clone or platformer. Look up a tutorial and finish it. Once you are past this, and enjoyed it, then you became a game developer, and the rest will happen automatically, if you don’t stop.
Thank you for reading!