I want to be an indie game developer, where do I start?

Started by
17 comments, last by JackBid 11 years, 3 months ago
I am only a teenager but I want to make indie games. I do not mean big 3D games but simple creative games like fez, super-meat boy, minecraft, world of goo stuff like that. Now obviously when I simple I understand that these games are incredibly hard to create, I mean that they have a simple concept.
Over the past few months I have experimented with a bit of java, c++ and unity, however I still don't know much about them and have confused myself slightly. Really what I want to know is:

where do I start?

what language / game engine should I use?

Any good tutorials?
Advertisement
Step 0: Have vision.
Step 1: Design a game or have a game idea you want to make.
Step 2: Build the game according to your game design
Step 3: Test and revise your game over and over again until it's exactly what you want
Step 4: Market and release the game to the world

Naturally, step 2 is going to be the most difficult step to do because it's going to require a bunch of skills which you may not necessarily have at the moment. That's okay. This is where you teach yourself everything you need to know, or find people who have the skills you need and you can convince them to work on the project. You'll be learning the exact skills you need and you'll be building your project at the same time, so you get two birds with one stone. You'll go through some learning pains, you'll experience frustration, moments of glee and excitement, your project may succeed or fail, but if you stick with it, you'll learn a ton along the way, gain valuable experience, and possibly a marketable product to sell.

Bottom line: just do it.
An "Indie developer" is just a title which you can take upon yourself. It means nothing, really. What matters is what you create.

As for languages & platforms, I recommend Unity3D with C#, or C# with XNA.

As for producing your game, you're going to need programming, art, music and sound, and possibly writing.

The best advice I can give you is to keep your game simple enough for a single person and beginner to complete. A polished and completed yet simple game is infinitely more valuable than a complex but incomplete, unpolished game. Keep your features/requirements few! Think along the lines of old atari games, like "Pacman", "Breakout", "Tetris", "centipede", etc. and add your own small twist to the design. Then once you start, punch yourself in the face every time you think about wanting to add a new feature (its a project management thing, not a crutch on creativity).

Step 0: Have vision.
Step 1: Design a game or have a game idea you want to make.
Step 2: Build the game according to your game design
Step 3: Test and revise your game over and over again until it's exactly what you want
Step 4: Market and release the game to the world

Naturally, step 2 is going to be the most difficult step to do because it's going to require a bunch of skills which you may not necessarily have at the moment. That's okay. This is where you teach yourself everything you need to know, or find people who have the skills you need and you can convince them to work on the project. You'll be learning the exact skills you need and you'll be building your project at the same time, so you get two birds with one stone. You'll go through some learning pains, you'll experience frustration, moments of glee and excitement, your project may succeed or fail, but if you stick with it, you'll learn a ton along the way, gain valuable experience, and possibly a marketable product to sell.

Bottom line: just do it.
An "Indie developer" is just a title which you can take upon yourself. It means nothing, really. What matters is what you create.

As for languages & platforms, I recommend Unity3D with C#, or C# with XNA.

As for producing your game, you're going to need programming, art, music and sound, and possibly writing.

The best advice I can give you is to keep your game simple enough for a single person and beginner to complete. A polished and completed yet simple game is infinitely more valuable than a complex but incomplete, unpolished game. Keep your features/requirements few! Think along the lines of old atari games, like "Pacman", "Breakout", "Tetris", "centipede", etc. and add your own small twist to the design. Then once you start, punch yourself in the face every time you think about wanting to add a new feature (its a project management thing, not a crutch on creativity).


Thanks this is really helpful, I have been watching some c++ tutorials lately, is this a bad idea? So far I understand everything.
Remember no idea is a bad idea, but the complexity of even the simplest ideas can confuse you; so be sure to make good use of planning.

When planning make sure if you have an idea don't just say okay that's one idea. Break it down and figure out all the parts to it; this will keep you from overwhelming yourself and making sure you are thinking one step at a time.

ie:
-Sample idea for lets say character creation
-main character
-hair design
-clothing
-voice
etc..

This will keep you on task. You can even set deadlines for yourself, but don't make them to close together; give yourself time! remember fez took 5 years with 2 people. Even the greatest simplicity can be very overwhelming.

just a quick tip for you.
Thanks this is really helpful, I have been watching some c++ tutorials lately, is this a bad idea? So far I understand everything.[/quote]
Lot's of people will tell you C++ is not for beginners but it's in fact just fine. Since you already know JAVA you should breeze right through it anyway.

I recommend if the game is 3d that you use C++ & OpenGL & Bullet Physics
If the game is 2d then C++ & SDL

SDL is a library that does pretty much everything, control input, image loading, audio output, 2d graphics and more. It makes your code really portable because you need to make absolutely no OS specific calls.

I recommend you start with a platformer, that will teach you how a game works then you can move on to 3d if you so choose.
My suggestion, start saving for school.
If you're serious, nothing beats a good education. I would suggest FullSail, expensive but worth it.

These are student projects a group of 4 to 9 students make in 3 months:
http://gameproject.f...il.com/gpgames/

To get a better idea of what goes into the design, download and look trough the docs. There are also some code samples in there.

Since you already know JAVA you should breeze right through it anyway.


... I don't see how you can just "breeze right through" manual memory management. I mean, I'm not trying to paint it as something overly difficult, but it's definitely not as trivial as you're making it sound.


My suggestion, start saving for school.
If you're serious, nothing beats a good education.


That's one option, but I wouldn't recommend it: If you have an internet connection, you have access to everything that you need, and there's really no need to give exorbitant sums of money to some academic institution.

But that's just my opinion.

As for where you should start: It doesn't really matter, as long as you start somewhere. You could take a look at my Python 3 video tutorial series, or you could try something else. Whatever you do, understand that it will probably take years before you're able to produce something of significance.

And on that note, I think it's worth mentioning: Programmers who worked on the projects you referenced (fez, super-meat boy, minecraft) have all been programming for ~10 years before they actually managed to make those games; That's about how long it takes to reach a level of competence/productivity where you could make something like that on your own, or with someone else.

In short: Game development is bloody difficult, so think long-term.

+---------------------------------------------------------------------+

| Game Dev video tutorials -> http://www.youtube.com/goranmilovano | +---------------------------------------------------------------------+

[quote name='ic0de' timestamp='1348788807' post='4984534']
Since you already know JAVA you should breeze right through it anyway.


... I don't see how you can just "breeze right through" manual memory management. I mean, I'm not trying to paint it as something overly difficult, but it's definitely not as trivial as you're making it sound.

[/quote]

Allthough modern C++ does allow you to use it like a very high level language aswell (Which is reasonably easy), Just because the language allows you to mess around at a lower level doesn't mean you have to do it.

in my opinion the biggest problem with C++ for beginners is the quality of tutorials online (most of them are crap and will push beginners towards low level features of the language far too early or worse, teach them the unsafe C way of doing things before or instead of the safer C++ equivalents) and the unnecessarily obnoxious build model. (a very large number of beginner problems with C++ are related to the Linker, not the language)

If someone wants to start by learning a low level language they should imo start with assembly on a less complex platform than the modern PC and not worry too much about making games, If the goal is to learn how to make games then a high level language is the better option. (C++ can be that high level language but you really want a good book or a qualified teacher/tutor to guide you around the pitfalls)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
You should start with one or more "random" projects. All of us have several of them. By random - I mean just a project where you experiment. Don't try to build anything too specific, just put things on the screen and just see where your mind takes it. In a year or so I guarantee you'll be doing all kinds of awesome things.

I assure you that many guys on this site have done this, and I think it is very underrated.

I remember my first "random" project. I started out trying to render a grid... which became terrain... which became detailed terrain... which became terrain with physics (I randomly tried PhysX)... then I tried out putting vehicles on the terrain... then I started playing with sound... then I started browsing for free 3D vehicle models on turbosquid... then I started browsing for free 3d building models... then my terrain became a city with vehicles... then I got into more advanced things like pathfinding and artificial intelligence so vehicles could drive around randomly... so on and so on.
you can move at your own pace, and eventually build up knowledge that you can use in real projects.

[quote name='slayemin' timestamp='1348770298' post='4984439']
...


Thanks this is really helpful, I have been watching some c++ tutorials lately, is this a bad idea? So far I understand everything.
[/quote]
No, that's excellent. Treat the C++ tutorials as a teacher giving a lecture, then assign yourself homework to test your understanding of the tutorial content. However, don't forget that the point of following all of these tutorials is to learn how to build a game so that you'll build a game. There's a danger that you'll spend all of your time learning how to do things but won't ever actually build anything (a case of analysis paralysis). So, my advice is to start building stuff and when you run into a gap in your knowledge, then seek tutorials/references to fill that void :)
Start simple with a "Hello World" type program (get stuff on the screen!).
Then, look into what it takes to get multiple "Hello World" on the screen (like, 1000).
Then, try to put a graphical image onto the screen (may take some R&D)
Then, try to move that graphical image around on the screen (may take some R&D)
Then, try to move that graphical image around based on user input.
If you can do all this, you already have the necessary skills to build Pong.

Pong is an excellent game to start with. It's design is simple, the game is complete, and its attainable for newbies. You can focus on the structure of your game code and building a complete game framework. It's also a great introduction into concepts like AI, input, managing game states, graphics, game play, etc.

This topic is closed to new replies.

Advertisement