The author of the most popular tutorial for Unity beginners, Stefan "Imphenzia" Persson, told us about his first game ever made, spoke about the advantages of Unity when it comes to his work, and shared resources for aspiring game creators.
Introduction
My name is Stefan Persson however, I am more known as Imphenzia on my YouTube channel within the independent game development community. In 2022, together with my wife and 3 kids, I migrated from Sweden to Brisbane, Australia where I now run Imphenzia Pty Ltd, a one-person indie game development and game asset publishing company.
For most of my professional life, I've worked as an IT Security Consultant, however, in my spare time, I have always allocated room for my game development hobby. In 2013, I was able to become a part-time game asset publisher and game developer, and in 2019 I quit my job as a consultant to become a full-time indie developer. For 4 years, I teamed up with another developer and we worked on a new type of real-time strategy game called Line War. We released it on Steam in May 2022 with a successful launch. Meanwhile, I have continued to publish game development assets and worked on my YouTube channel.
Getting Started in GameDev
Gamedev has always been a passion of mine since I was a kid in the 1980s. My dad got an MSX Spectravideo SVI 728 which, compared to the C64, had no games available so I started to make my little games in Basic. Having built up a vast amount of lessons learned over time, I wish now that I had pursued a career in game development from the start. Still, I automatically began to work with IT support and later IT security because of my self-taught computer knowledge. Gamedev was always a hobby, and I released my first ever game called Beat Ball, a break-out clone, only in 2002. It was the early days of the Internet, so selling the game was difficult. I decided to release it for free to promote electronic music that I composed, hence the name Beat Ball. The following year, Beat Ball was featured on a CD-ROM in the German magazine, which made the game quite popular, and to this day, I still get emails from people who grew up playing Beat Ball, which is pretty fun. It's the combination of being a creative outlet and the potential of making a commercially profitable game that drives me to continue making games. I get to work from home which gives me great flexibility when the kids are growing up, and I get to do something I love every day that motivates me the most.
Everything I know about game development is self-taught. I don't have the patience to take courses or study, so I set myself goals to create something and I learn as I go. It was funny during the development of Line War because the co-creator was exactly the opposite. I jumped in the deep side and tried to solve the problem whereas he preferred to read the manual and understand everything first. The game we developed is a multiplayer game with dynamically scaling headless Linux servers, and we built everything from scratch so it was a very fun and educational journey. My biggest inspiration growing up was my friend Jim. We always talked about games and what would be fun to create, but most of the time they were just ideas that we never realized. That was in the 80s and 90s too, consequently, many of those games would not pass today's moral barriers.
Unity Experience
I have been using Unity since 2011, and I was reluctant to use it at first. To me, Unity felt like a game editor rather than a game engine, and I was used to programming everything from the ground up. I started using Unity not to make games, however, over time, I discovered that I could create and sell game assets in the Unity Asset Store, and had no idea how profitable that could be at first. When I discovered how popular and lucrative assets could become, I dedicated more time to learning Unity so I could develop and support the assets I created. During this process, I learned how powerful Unity was and how much of a time-saver it was compared to programming everything by myself.
I have used Unity more or less daily since then and I think I have touched most areas of the engine but with more focus on 3D rather than 2D. When you create, publish, and support game assets, you get a lot of hands-on experience in Unity and you need to develop and document the assets well. Support requests pour in too, which allows me to extend my knowledge even further, given that it requires the need to troubleshoot and solve issues that other people run into. I think that the development of Line War brought the biggest wealth of knowledge as we worked daily on a complex multiplayer game for over 4 years, whereby we had to build the game using testing methodologies to make sure we didn't break game logic in the process.
Unity Pros
I think Unity has quite a few strong points compared to other engines. First of all, it is very mature and feature-rich compared to Godot. It has a huge community and finding solutions to problems is easier in Unity compared to any other game engine including Unreal Engine. I also feel that Unity is the most versatile of game engines as it was not designed based on a particular game genre in mind. I am personally learning Unreal Engine now too as a compliment, and so far, I find Unreal Engine to have more power, better graphical capabilities, and more build-in features that are required for specific games compared to Unity, but to me, Unreal Engine feels more like a game editor compared to a game engine like Unity. I think that for the vast majority of beginner developers, Unity is a very strong choice.
I like the lightweight of Godot and the power and visuals of Unreal Engine, but the flexibility and community support make Unity a better choice in many cases for beginners. I know there has been a lot of fuss about the pricing model, and I have many frustrations when it comes to choices that Unity makes, but it's not to the point where I would not recommend the engine.
Ever since Unity became publically traded, I think more focus has gone into acquiring companies and widening their services to look good in the public eye and for the share price, but hopefully, they can find their way back towards just being a great and reliable game engine.
Unity Experience
We created a multiplayer RTS game called Line War in Unity, and we began to develop that in 2019 right at the same time that Unity decided to deprecate UNET, which was the built-in network library for Unity. That left us on Unity version 2018 LTS for many years since it was not until Unity 2022 that the replacement network transport library came out of beta to replace UNET. The new network library was, and to my knowledge still is, poorly documented compared to the previous implementation, and we had quite a struggle to implement it as we had to dig through alpha release notes and look through the source code to find information about what certain parameters do. We could not use the automatic synchronization for Game Objects because we needed full control of all serialization for replays and optimization. When we finally got it implemented, it performed very well and we host hundreds of thousands of Line War matches that last 15-90 minutes, and the netcode functions very well. Since I am now looking at Unreal Engine as a compliment, I believe it is more mature compared to Unity when it comes to developing multiplayer games. However, my advice to beginners is generally to stay away from making multiplayer games until you gain more experience. The development time is much slower, debugging is more difficult, and most of all – maintaining an active player pool for a game is very difficult when there are so many games available.
For mobile games, Unity is always my go-to engine. The cross-platform support and ease of development, the packages, and tools available to develop and optimize mobile games make it so easy compared to other engines. Add to that the support for monetization and ads (which I hate by the way) and I think it's difficult to justify making a mobile game with a different engine. The profiler and debug tools in Unity make it easy to find where and what to optimize in games and remote performance monitoring where you connect the game engine to a build is great.
Making Tutorials
Throughout my professional life in the IT security field, I realized how often people misunderstand what is being presented. This led me to focus on creating presentations that carefully explained certain things and encouraged people not to be afraid to ask questions if they did not understand. I received a lot of positive feedback for taking the time to present topics in that way, and it sort of naturally carried over to my creative work in 3D and games. I realized that I could help people to learn to make 3D models and games and my focus has always been aimed towards the beginners who need a foundation to build on if they want to carry on making games. Sometimes I have tried to move into more advanced topics, but the majority of my followers are learning the basics so beginner content always performs better on my channel. In recent months, I got the opportunity to teach 3D modeling at a college in the Sunshine Coast which was great fun and also educational for me as I got to witness firsthand what sort of problems people run into.
I started my YouTube channel in 2009, and for the first few years, I only used it to promote the electronic music I was composing and releasing as an independent artist. When I began to create game assets, I needed a place to publish demo videos and tutorials which led to making a few tutorials. The tutorials drew much more attention to the channel, and it wasn't until 2019 that I realized I could grow my YouTube channel significantly by focusing on tutorials and helping people make games and 3D models. Videos that I plan carefully, especially Unity and Blender tutorials, get many more views, and I hope I can continue to produce more tutorials and grow my audience. It's a win-win situation if the channel grows, as I not only get to help more people out, but it also provides a chance whereby I can support my game development through some of the ad revenue and at the same time reach an audience when the time comes to release my next game.
Creating a good tutorial is tricky and it requires a lot of planning. First, I do a practice run of what I intend to teach to make sure it works and then I write a script. For some tutorials, I capture the video footage first and then cut it down and record the narration. In other tutorials, I record the narration and perform the actions at the same time. I am not so good at memorizing scripts, so I usually record sections at a time given the end result has to be heavily cut in the editing process.
Resources for Beginners
For absolute beginners, I recommend having a look at my 2-hour tutorial, attached above, which is due to be updated to the most recent version of Unity. I heard that even an established game studio used that tutorial as an intro when they switched to Unity.
Other than my channel, GameDev.TV has great tutorials and a large community where Unity is one of the three main engines featured in many of the tutorials. I also think that the official learning website is often overlooked. I have personally not used that, but I know that there are hundreds of hours of content there and I think it may contain more up-to-date ways of doing things compared to many free Unity tutorials so it would be worth taking those courses.
Personally, I lack the patience to do so many hours of training, and for like-minded people, I recommend starting with a really basic idea to build that in Unity when you know the basics. Then, as you come up with new ideas you learn that specific thing and try to implement it.
I plan to continue to make updated tutorials for Blender 4.0 and Unity 6 once it approaches release on my YouTube channel. Meanwhile, I am also working on my own action-adventure platformer game called Ultranova.
Stefan Persson, Game Developer
Interview conducted by Theodore McKenzie
Keep reading
You may find these articles interesting
Keep reading
You may find these articles interesting