Let me preface this by saying I have had an interest in developing games for a few years now.
It seems every few months I find myself re downloading Unity, trying out a few tutorials, and feeling like I’m still not learning correctly. I feel like I can duplicate the tutorial environment, but not create something of my own.
I will be able to go back to college in about a year now, and have been considering a Computer Science degree, (unless there is a more applicable degree towards game development). But until then, I want to be able to learn how to get the starting bits of a game going.
At this point, I’d love to be able to make a 2D game with levels similar to the original zelda or binding of Issac.
Procedural generation would be great as well.
Obviously I know this is not a small fish to fry, so I was wondering, where do I start? I feel like learning towards what I’d like to make would help keep me motivated, but I know I also need to learn the foundation.
So bring it on, I’m honestly open to advice of any type, I just know that I’ll drive myself crazy if I don’t finally start learning and scratch this creative itch.
If you’re like me, tutorials aren’t of much use. I can’t stand them. I much prefer to dive straight in and figure out how to swim. I also can’t stand how-to videos where a page of text will do. If that appeals to you, then…
If I were going to make the kind of game you are talking about, I’d first boil it down to the most basic idea of what’s on screen. A character moving around inside a pseudo-top-down “box”. Start with that. Once you have that working, figure out what next. There should be doors to other “boxes”. Figure out how to do that.
You will end up with a spaghetti mess of code but you will have something working. Then… go deeper from there. Start to think about the finer aspects. Enemies, map layout, things like that. Figure out how to put them in.
Before long you will have a working prototype which you can then iterate on. That’s it. For me, game dev is a series of iterations, each step building on the last. I realize that this technique isn’t for everyone. Especially those who like to meticulously plan everything out ahead of time, but it works for me (and I’m quite successful at it). Maybe it will for you as well.
Well, there are many disciplines that are a part of making a game. Start with one.
What gets you more interested out of programming and art?
Programming involves working in very minute detail and a lot of application of logic, generally by writing code. Contrary to initial appearances it’s not about writing code, though - it’s about solving problems, code is just a tool we use to make a computer crunch the numbers for us. For games, in addition to general programming, you’ll probably also have to learn a bunch of stuff about the graphics pipeline and some other specialized stuff. (Game programming isn’t a subset of programming, it’s a specialization.)
Art is also often about detail, but not always. It’s about making stuff look good and present well, and controlling the mood and feel of a game. It’s not purely aesthetic, as the graphic design of something is generally very important in a functional sense, especially when information has to be conveyed intuitively as is often needed in a game.
LOL. But seriously, start with something small. The Legend of Zelda took a team of experienced Nintendo programmers designers and artists.
Start small and simple. Do something that plays to your strengths. If you are an artist, you can make some nice art but don’t spend weeks on it. Keep the programming relatively simple. Content is the enemy of the small developer, so procedural generation is the way to go. Avoid anything with a story or hand-crafted levels. An arcade game or a puzzle game would be a good start. Copying a classic game is a good idea, because then you don’t have to worry about whether it will be fun–you can just focus on making it.
Once you have an idea, make a list of the assets you will need. Use a spreadsheet program like excel. Include all art, sound, music, prefabs, scripts, and levels you can think of (try to list 80%). You don’t have to list each script in detail if you’re not sure, but just block things out (player movement, player attack, enemy movement, octopus enemy AI, etc.). Then come back and try to estimate how long each asset will take you to create. Then multiply your best estimate by 4. YES, 4. If you have experience with doing certain things, you only need to multiply those estimates by 2. If you plan to buy assets from the asset store, then list a price as well, but don’t forget the time it takes to learn and implement a new asset. Now calculate the total number of hours. After you pick yourself up off the floor, feel grateful that you didn’t start that project. Chances are it was too big and you would never finish. Try again with a smaller project and a new list. Keep coming up with simpler ideas until you get one you can finish in a very short time. No bigger than 3 months. 1 month would be ideal for your first project, because it will probably end up being 3 months.
Success or failure of your first game is not nearly as important as finishing. This will set a pattern for your future projects. Your second game is the time to think about target markets and revenues, not your first. The point is - keep it simple.
Here are some classic arcade games that could be done procedurally:
The problem solving nature of programming has always intrigued me. But at the end of the day, I think the ability to take lines of code and create a program/game/etc. out of ideas in my head has always been the most exciting.
As for the starting projects, what are some good resources for learning the functions and code required in order to make the project?
It sounds like you’ve already tried following tutorials and reading docs, but you’re not sure how to get from here to your goal. I suggest taking a step back and making a roadmap for your project. I’ll give you an example.
Example 1: Simple version of Legend of Zelda
Move the player
Make player stop at walls
Animate player sprite
Add an enemy with simple AI
Use sword to kill enemy
Let enemy kill player; player respawns
Show player health in a simple UI
Make enemy drop heart; player collects to restore health
Collect a special item to beat the level/dungeon
Let player save and load their game
Add a few more enemies
Build a handfull of levels
This is The Legend of Zelda boiled down to it’s bare minimum. Of course the real Legend of Zelda has many more features including shops, multiple weapons, items, a map, more advanced UI, secret passages, quests, etc.
You could of course jump right in to it. The problem you may encounter is if everything on that roadmap is brand new to you. You may get overwhelmed before you finish. So I’ll lay out another example that might be a better first project.
Example 2: Pac-Man
Move the player
Make player stop at walls
Animate player sprite
Add an enemy with simple AI
Eat all dots to beat the level
Let enemy kill player; player respawns
Collect powerup and eat enemies
Show score on a simple UI
Make enemies ‘edible’ for shorter times on higher levels
Pac-Man is just about the simplest action game I can think of. Yet look at the similarities between the two roadmaps. Pac-Man has player movement, collisions, animations, enemies that can kill and be killed, win/lose conditions, and a simple UI. Zelda has all these features and adds weapon-hitboxes, saving/loading, multiple enemies, and a bunch of hand-crafted levels, not to mention more detailed artwork. For that reason, Pac-Man would be a good choice for a first project. A simplified Zelda game would be a good choice for a second project, because you’ve already learned half of what you need to know by making it’s simpler older brother. Of course if you don’t like pac-man you could choose any game as a first project. Just keep it simple.
Once you have a roadmap, you can fill in the blanks by reading the documentation and searching google. When you get stuck, just be persistent and push through it.