In the first part about game engines I explained what an engine is and described some free engines. In this article I’ll give some advice and hints for people that want to learn how to work with an engine.
Advice for the first steps
After you’ve chosen an engine and you downloaded and installed it, you’ might want to start straight ahead. Who hasn’t dreamed about creating the next blockbuster game in his favorite genre. Learning by doing is definitely a thing, but not at this point. Put all your game ideas aside and get familiar with the engine. Do all the tutorials offered by the engine itself. Learn how the editor works and how to write your first scripts. Try different things out of the scope of a game. The original tutorials are often short and limited to the basics, try to find more tutorials made by the community, there are many on the internet and Youtube. (In the first part about game engines, I listed some useful links for each engine.)
In some tutorial series the instructors create small demo games that cover all the necessary parts. Follow these tutorials before you create your own games. It often happens that you get stuck in details, that you only focus on a special part without knowing all the basics. And don’t just copy the tutorials, try to understand them. Try to find out what each line of code is doing. Change values and look what happens in the demo. Only if you understand at least the basics you could get back working on your idea.
Now it’s time for learning by doing, but start small. Try to implement simpler ideas. It’s more valuable to complete several smaller projects then getting stuck in a big project without any outcome. Have you ever watched the credits after you finished a game? If yes, you’ve realized how many people are involved in making a game, even in smaller games; AAA title (especially that one from EA) are examples from the upper top of the scale. Even if you spare out marketing, sales and asset creation, there are still a lot of developers and game designers left. Also not every genre is suitable to begin with. Jump ‘n’ runs are the easier ones. As soon as you have scripts for the basic mechanics (running, jumping, obstacles and collectibles) you have everything you need and you could start focusing on level design. At this point you work most of the time with the level editor, you just go back to scripting for some optimizations and extending the mechanics. Shooter (FPS, 3rd person, side scroller, …) are also OK. Shooting at targets is quickly done, but don’t forget that you need some enemy AI. AI is a quite complex topic and even an enemy that just walks around and shoots at your character, needs quite some time to script. As an alternative, you could try multi player, here you don’t need AI but you have to face different problems, if the engine of your choice doesn’t offer a multiplayer framework, you’re stuck without knowledge about client server programming experience. RPGs are a big chunk to start with, even with more experience they are not that handy. I made that experience myself, my first Unity3D game was a dungeon crawler after one semester including learning Unity3D and doing the game design, 4 developers (3 beginner and one intermediate) + one artist only finished a demo level (15-20 minutes play time). Why? An RPG needs lots of scripts. Other than an jump ‘n’ run, an RPG needs a role playing system, experience points, level, attributes, skills and even if you keep everything simple or skip parts and only aim for an action game, the game world needs a lot of interactions, you need items, equipment and an inventory. Also don’t underestimate the level design. Maybe you want to have riddles and traps that need to be designed, created and placed inside the dungeon, and of course enemies. But there are also some positive effects, you could be creative and learn a lot. During my first project I learnd more about game and level design and of course using Unity, than in all the following projects. I’m still proud of my riddles and traps (the implementations, the ideas are sure influenced from existing examples).
And finally a very important advice, the most important one, forget about what I told you and what you’ve heard or read somewhere else. So, maybe not everything, but don’t take it to serious. Do what you like and what you’re interested in. There is no “correct way” to learn something. If you want to do an RPG, don’t let me or someone else stop you. If you want to try the next WarCraft or Tomb Raider, why not? You could only gain experience by facing challenges. But keep in mind, that impossibly big steps can hold you back. If you don’t know at least the basics, you’ll quickly loose your motivation. Even if you could do simple scripts without coding knowledge, it’s never wrong to learn how to write code. Sure you could ask the community, but without a precise question (e.g I have no clue about client server communication but how do I create a multiplayer lobby?), then the first thing you’ll hear is: Learn how to write software. This could be a big obstacle in the beginning, but you don’t get into game development over the weekend. This doesn’t mean that you have to be a top developer. Start with the basics of a programming language. What’s a variable, what’s a function and which data types are there? How to manipulate data? Which data structures and containers are there? This is mostly enough to do all the tutorials and also understand what happens. That’s how you could implement the stuff you want. It doesn’t matter how you solution looks like, as long as it works. Your code doesn’t have to be super efficient or look super neat. You’re far away from worrying about performance, or that your game runs not smooth enough. If you code isn’t reliable or fast enough you have to deal with it anyway. Then you have to improve it or try some alternatives. As long as you work alone, it is enough that you know what your code does. But do it in a tidy way, write comments, a lot of comments. Even if it is obvious now, what the code is doing, the next day you might have no clue anymore.
If you are familiar with the basics and want to do more complex stuff, it’s time to deal with object oriented programming. Complex scripts are impossible without classes. Also look into the documentation of your game engine. That’s the only way to find out what the API offers. But don’t learn it inside out, it’s enough to have an overview and to know where to find information.
It’s pretty hard to do larger projects on your own, either it takes you forever or you’ll give up. Some of you may have problems with developing ideas, game development doesn’t necessarily mean coming up with ideas by yourselves. Look for other people and make games with them. There are many forums where you could find such people or projects. It’s more fun to create a game together, there’ll be synergies and you’ll come up with ideas that you don’t have on your own. You could split the the scopes and focus on your strengths.
There is another great opportunity to develop games and learn something, game jams. They mostly take place over a weekend and you’ll make a small game there. The topic is usually given and get announced at the beginning of the jam. Game jams are also great to get in contact with people.
And now a final hint, this time for sure. Do not fear making mistakes, it doesn’t matter of technical mistakes, mistakes in your design or organizational mistakes. Even if you always try to not making mistakes, they will happen and this is OK. You will learn from them, especially in game development. If a project doesn’t turn out as expected or if it even fails, accept it and take out of it as much as you can. Afterwards it’s easy to say where the mistake was and how to do it better. I could do that for all of my projects, but its way more important what I learnt by doing them. I only regret one project. The decision for which project to choose had to be done under time pressure and without knowing some details about each project. Not choosing a project was no option. I then realized that, with the experience of the team and the given time, the project is not doable. But I got overruled and finally the project couldn’t be finished.