I'm currently stuck in the infinite loop of “I'll learn this, then I'll get started on my own game”. No matter what it is, I always end up thinking it isn't enough, and that I need to study a topic more before I'm ready to make my own game. How much programming knowledge do you need to know before you are capable of attempting to make a game? Or rather, what topics are the most pertinent to have a basic understanding of before taking on game development?
How much programming knowledge is necessary to get into Game Dev
This post caught my eye because I developed and released a game within a few months last summer with little to no programming experience. This is a pretty broad question, so I'll just go through the process I went through.
- Pick an engine to work with. If you want to make a 2D game, Game Maker Studio is great. If you want to make a 3D game, I recommend Unity3D because there are a lot of tutorials for it, and it's what I used for my game.
- Watch tutorials to get the ball rolling. Try to get the most basic mechanics out of the way. For me, it was learning how to make a First-Person perspective object that moves in the direction it is facing. Don't worry about making anything pretty, use blocks and spheres.
- Add more to the base mechanics. I wanted my character to be able to twist, and there was an issue where if the player was looking upside down the controls would be flipped. For this part and moving forward, it's all about problem-solving. What's the best way I can accomplish x?
- For the twisting, my character needed to always snap its rotation by 90 degrees. So I looked up how animation works in Unity and applied an animation to the camera that would twist the camera when it gets the right inputs
- For the upside-down bug, I needed to consult Unity Answers. It's a great resource, just make sure to be very specific in your questions.
- At this point, all the basic mechanics were done on the character and its interactions with the world. For your first game, make it simple. I consider my game extremely simple, but there were still several interactions I had to account for, such as:
- Walls that will kill the player
- Gates that check which way the player is twisted. If the player isn't facing the right way they lose.
- Colliders to check if the player is out of bounds.
- An object that will trigger the win sequence when the player hits it.
- Objects that give the player a boost when they hit it.
- Once you finish the base mechanics and test it for bugs a bunch of times, you can start adding visuals. The Unity Asset Store has a TON of free models and assets you can use. I'm not a modeler so I used some of them, and then hired someone on Fiverr to make some specific stuff I needed. You can also add sound fx/music.
- You can start implementing the main menu(s), options, and other UI-based stuff. You might have already added some that pertains to gameplay. There are lots of tutorials for this with Unity.
- In my game, I had a lot of stuff left to do. I had to learn how to use a service called PlayFab to implement a store, virtual currency, in-app purchases, steam integration, leaderboards, player inventory, etc. Luckily, there were also lots of tutorials on how to work PlayFab within Unity. It was still very difficult and took a lot of trial and error for someone like me with little experience, and there were some portions I had to decipher the documentation for the API. I would not recommend going this far with your first game unless you are extremely driven to finish it.
- Keep working and adding features and elements. For me, it was making a ton of levels within 6 different environment types. This was pretty grueling and tedious for me, but some people really like level design. You can also add post fx and stuff to make your game prettier.
- Test test test test. Get other people to test. Get your mom to test. Get your dog to test. Get anyone to test it and ask what they love and hate. I got some really good insight from this for things I never thought of adding that improved my game tenfold. Finalize it and get rid of as many bugs as you can. Then market and release it, or just post it somewhere for people to play.
Obviously, I'm leaving out a lot but this is a long enough post as it is. My advice is to really evaluate how motivated and excited you are to see your game idea become a reality. The first week of development was awesome, I was having fun and learning and solving problems. Then burnout hits, but I worked through it for months and months until it was finally done. The game will only get done if you were motivated enough from the beginning. It will get boring, it will be frustrating, you will wish you didn't have to keep doing certain things over and over and over and over, but that's what it takes. Even after my game was released I added even more content like tutorials and a replay system (it's a racing game). And then I hear of more bugs that I need to fix so that someone doesn't leave a bad review for it.
But to answer your initial question about how much you should learn before getting started, I recommend getting started and learning along the way, because that's what I did. It will motivate you because all the stuff you learn will have practical and immediate applications for your game. Hopefully, this inspires you with a realistic look into what it'll take. That or it stops you from wasting a bunch of time and energy. But I hope you decide to make your game, I'm rooting for you.
If you're curious, this is the project that kept me indoors for most of my summer: https://store.steampowered.com/app/1720960/HyperFleet/
www.summetmusic.com
A general advice is that the more you know in beforehand, the more practice you already have, the better will your code become and you'll enjoy the experience without wasting time into searching for bugs which occur from bad coding style caused from lack of experience about how the computer works. Those bugs you don't have a clue why they happen are frustrating, I had to look for them more than I wanted to, in my professional life. Can remember a situation where we got third-party code which we should make to work and those people simply coupled joystick and dpad into together for … whatever reason. That stupidness of a single person caused me a few days of debugging the entire game for finding why the player character was moving too slow.
You should also pick something which doesn't overwhelm you from the beginning, a highlevel language like C# or Java for example. The reason simply is because those languages already handle a lot of low-level stuff for you, memory management and pointers for example (object references in C# or Java are the equivalent of pointers in C++) so you don't have to care too much about that yet and can invest time for learning those later.
However, one aspect, a job as a programmer in game development is quiet unrealistic without at least a bit of experience. I know at least one indie studio in my broader location which also offers apprenticeship for game programming but that's rare I guess and most studios don't even take applicants into account which don't at least have had basic training in a programming language they use, often C# and Unity. The same is true for every other job, learn to make 3D Art or have a drawing talent for getting an artist and you should have experience in designing games before applying as a game designer!
If you're finding yourself stuck in such a loop, I'd suggest perhaps instead taking a different approach: Start making a game--something very, very simple (Pong, or Asteroids, or some such)--with the intent to simply learn whatever you find yourself lacking as you find yourself lacking it.
Even if that means that you're looking things up every single step of the way, that's fine: you may nevertheless make progress of one sort or another.
But in general, for a high-level language and a fairly supportive game-engine, I don't think that you need know all that much in order to begin. (At least with simple projects.)
Indeed, as suggested above, I do think that you can learn a fair bit along the way! (And for that matter, I imagine that you will likely learn an awful lot over the course of development anyway!)
MWAHAHAHAHAHAHA!!!
My Twitter Account: @EbornIan
Experience and expertise takes time. A lot of time. Passion will get you far, and certainly started, but experience, like in an rpg, you need to grind.
don’t be so concerned that you don’t know everything, the learning process goes in for the rest of your professional life.
@summetgames Reading your reply made me feel more at ease. Reading even a rough outline of your process makes it seem more doable. I consider developing a game to be such an insurmountable task at times, but you've made it seem more plausible if I take the right approach. The thought of my game becoming a reality is extremely encouraging and makes me want to get up and do nothing but work towards it. I just need to get past that proverbial wall. Your response is inspiring and I'm grateful for it!
Thank you!
The dream's waiting.
@Shaarigan C++ and C# are the languages I would like to work with the most. Mostly out of familiarity but also because C++ is so powerful and C# + Unity seem very friendly and relatively easy to work with. Thanks so much for your input!
The dream's waiting.
@Thaumaturge I had actually considered that a few times and believe it or not, a similar thing occurred to what I've described in my post. I felt as though I still needed more experience before I could get started. Even for something like Pong! But all the replies here have inspired me to go for it and get started on making games. Learning along the way is okay!
Thanks for replying to my post!
The dream's waiting.
@h8CplusplusGuru “Don't be so concerned that you don’t know everything”. I think that is something that I desperately needed to hear.
The dream's waiting.
@jc_arioh I'm so glad it inspired you and I'm excited for you! Feel free to reach out if you have any questions.
www.summetmusic.com