Members - Reputation: 101
Posted 23 March 2012 - 02:26 AM
I've played video games my entire life, and view it as my biggest hobby. For many years now I've thought about making games, and even though I'm not going for a career in video game industry, I'd really like to create the ideas I have in my head.
I have absolutely no programming experience, but a little artistic exp. I love to draw, and try to do this a little bit evey day to improve my skills to the point of making the necessary artwork needed for a game.
My vision is that I am able to create simple games on my own. Just me. I know this requires quite a bit of skills in various aspects of game design though.. I have my whole life ahead of me, and I'm willing to spend many years on the project.
I'd like to make simple games (probably only 2d, although 3d would be a fun step to take after a while). Platformers, adventure games, 2d rpgs, who knows. Obviously I'd start with making ultra-basic programs, move on to something like tetris when I'm ready to actually delve into game development itself. I do not fear baby steps. I like the idea of using an extensive, professional programming language, but obviously there are easier choices. I'm not sure if I like the thought of being limited in any way though..
What would be the best course of action? What programming language should I go for? What other things will I have to learn to make my idea come true?
Thanks for any answers.
Crossbones+ - Reputation: 7987
Posted 23 March 2012 - 05:15 AM
There's really no best practise. I would sugguest, that you start with a simple scripting language, too avoid IDE, developer environments, etc. and make a simple, text base game first. Just to get it running. Once you get the hang about coding, designing etc. you can start to get into more advanced topics like hi-level OO languages like C++,C# or java, visual rendering etc.
You don't need to fear to loose much knowledge to learn language A first and convert to language B later. Or to learn OpenGL instead of DirectX.
Just dive into a simple scripting language like lua and start you first "hello world" tutorial
My game: Gnoblins
Developer journal about Gnoblins
Small goodies: Simple alpha transparency in deferred shader
Members - Reputation: 1514
Posted 23 March 2012 - 05:28 AM
If I would give you some personal advice (this might or might not be the best way!) I would do the either of the following 3:
I think it is safe to say that this is the most used language among professionals, it provides a lot of freedom in what you want to do, but it also demands that you take care of everything so to say. It's easy (easier compared to other languages) to make memory leaks for example. Depending on how far you want to be in control yourself, you also need to learn a 3D API. But in your case I think it would be a lot easier to just use SDL or SFML if you don't want to be bothered with 3D apis.
C# + XNA
I like this because it gives me enough freedom to do the things I want to do with just a few tutorials up my sleeve. I think it's pretty easy to get in to and get something working on the screen. Although I do have to say that I only used the 2D bit of XNA, so I can't really say anything about that. I guess it's comparable to a simple 3D engine, but I really don't know.
I love this for quick 3D games. It's very easy to use, has 3 different scripting languages you can choose to use: Java(script?), Boo (own language I thought) and C#. It has plenty of resources and tutorials to follow so you can dive into it pretty quickly.
Like I said. These are the things I would go for if I had to start anew with building something up and I want to it to be a bit more professionally represented. There are other ways obviously and these are what I personally like. I'm sure others can guide you in other directions that fit your need.
Members - Reputation: 141
Posted 23 March 2012 - 05:32 AM
After you can make small programs without tutorials - in other words, you know how to solve problems by yourself - you can start designing the first steps into the game development world. Start small - make a text game first. Later, try adding an inventory for your player that keeps track of things he has picked up. Be creative and try to find problems you don't yet know how to solve. For example, if you like the idea of procedural content, try to make a random dungeon generator. You'll learn about the problem domain as you crawl through the solutions. This approach helps you out with the graphical games as well - you will come up with problems like "how do I draw stuff on the screen? How do I make the stuff on the screen move? How do I make the stuff on the screen move while making sure they won't go through each other?" That's when the general problem solving skills are needed.
Just for a heads-up, do not use Unity3D for your learning, it'll teach you bad habits about coherence and encapsulation that you don't want to learn.
Prime Members - Reputation: 769
Posted 23 March 2012 - 06:55 AM
If you do decide to pick C#, have a look at an engine or XNA once you are comfortable with programming in general (not just the syntax), at this point your maths should be fairly decent up to pre-calculus standards. If you want to dig deeper and learn the ins and outs of graphic programming, have a look at SlimDX / SharpDX / OpenTK which are wrappers for DirectX / OpenGL, these have a very steep learning curve and depending on what your aim is, it may not be a good idea to go lower, from a learning point of view these are excellent choices but if you want to make a game and forget about whats happening behind the scenes stick with an engine or XNA.
Members - Reputation: 101
Posted 23 March 2012 - 08:18 AM
Crossbones+ - Reputation: 14196
Posted 23 March 2012 - 08:42 AM
There are a few cases of those in history, and I congratulate you on realizing that in order to get your games made, you yourself need to learn how to program.
I know how you feel.
From an early age I started as an artist, having drawn this when I was 12. Everyone expected me to work for Disney, but game design was my passion.
But then I realized my games were being designed, but not made. I guess I need to be a programmer?
Programming turned out to be even more fun than game design, because I knew that no matter what the situation, I would always be able to make my own games without anyone else’s help.
Yes you should steer towards programming if you want your ideas to come to fruition. The only designers who ever get their own ideas made into real games professionally are those who have already spent the last decade proving their design skills.
It is fairly easy to get a job as a programmer as well, while not so easy to get a job as a designer.
On considerations towards language, well, I suppose you have to start somewhere. I never learned C# until I had already learned C++. But I started with TI-81 Calculator DOS, then mIRC script. Then C++.
Since my background has nothing to do with C++, yet learning C++ was fairly easy before learning C#, I would wonder what any value there is in learning C# before C++.
I have heard that learning C# or Java and then moving to C++ is quite a horrible experience. The first languages I learned had no memory allocation system. I learned memory allocation via C++, and I feel stronger for it today. I can imagine the headache I would have had going into C++ from C# or Java.
So many new’s and so few delete’s. What a nightmare.
So here is my viewpoint.
Many people will say that learning C++ is easier via going through C# etc.
However we all know that humans learn more easily the younger they are. It may be a pain in the ass but in the end you will have learned more easily than if you had started 4 years later.
I had no concept of memory allocation when I began C++ and frankly it goes with the territory. I see no reason not to at least fiddle with C++, even if you decide to make some other language your language of choice temporarily.
I decided to check out C++ for a while at the very beginning only to hide back into my shell of mIRC Script. It was quite helpful for giving me an idea of concepts I would need to know for hitting C++ head-on later, and tackling it a while later was much easier, because:
#1: I already had experience with the language so I wasn’t just starting from scratch.
#2: Now my experience starting to make things I saw in C++ make sense.
As for the rest of your questions, they will answer themselves as you learn.
What else do you need to know to make your own games?
Why don’t we all sit back and see what the future holds for gaming, yeah?
Start doing all kinds of things to explore the world of gaming and you won’t be left behind. Any answer we give you today won’t be valid once you are ready to actually use our advice, so learn how to answer these questions for yourself as the gaming world progresses and you will be able to keep up with the technology of today, once that day arrives.
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums
Members - Reputation: 901
Posted 23 March 2012 - 08:50 AM
(And whilst I like C++, there's probably a fair argument to say start with C# or Java, and don't bother going onto C++ at all;))
http://homepage.ntlworld.com/mark.harman/conquests.html - Conquests, Open Source Civ-like Game for Windows/Linux
Members - Reputation: 986
Posted 23 March 2012 - 11:47 AM
My progression was:
SNES shows up at Christmas '91. Instant obsession.
Draw board games on paper.
Got a computer in '98.
Found RPG Maker 95 in I think 1999 and got to work making a game in it. Never fully finished, but it was pretty long and good.
Took a couple community college classes on C++... never taught me what I really wanted to know, but at least learned the basics of variables, loops, arrays, pointers, functions, etc.
Discovered VERGE RPG maker and wrote a battle system in its C-like scripting language.
Discovered DirectX examples on MSDN or something, which FINALLY taught me the critical knowledge that I'd been seeking for years... how to get an array of pixels onto the screen. My programming skills grew leaps and bounds over the next weeks/months.
Discovered the GBA homebrew scene in 2002, which drew me in due to the similarity between GBA and SNES, with SNES being my first and still favorite game system.
A couple years into my GBA experience (2004 at this point), I got offered a job by a game studio up in Seattle. Worked on DS games there for 5 years, then moved back home in Kansas CIty.
...and now I build acoustic guitars. How's that for a non-sequitur? But it's true. I think my "programming brain" is just about recovered from that very stressful last year in Seattle, so I've been poking around at game dev again. It's good to be back
Anyway, I'll vote C++ for a first programming language. What I don't like about higher level languages like C# and lua, is that you always seem to be dependent on a library to do all the bits and bolts work of getting stuff on the screen. And for me, that always results in the discovery of something the library doesn't do, and then I have to change my game design... cue anger.
I love how with C++, you can get very close to direct interaction with the hardware (or in the case of GBA, actual direct interaction), and build everything from the bottom to the top in a single project. I suppose it could be argued that it's better to build your low level library in C++, high level game code in C#, and scripting in a custom, game-specific language... but I prefer it all in one place. In fact, I prefer to use C rather than C++. But C++ definitely results in more flexible/reusable code when used properly, and learning C++ will teach you a lot of useful concepts that can be implemented in C, but aren't necessarily obvious until you've used a language that supports them naturally.
Members - Reputation: 252
Posted 24 March 2012 - 01:27 AM
People say c++ is too hard in the beginning, but I disagree. Sure you'll walk into many memory leak bugs and what not, but it gives you a very good understanding of how it works. Sure, c++ is less productive than other languages, but you can always switch to another one later. Changing from C# to C++ is much harder in my opinion. As soon as you walk into C++-related problems you'll say to yourself "screw this shit" and never take a look at it again.
Members - Reputation: 101
Posted 25 March 2012 - 01:26 AM
In any case, I've been thinking over the past couple of days about the different languages, and now I'm even more convinced that I'll start out with C++. It seems like most people think it's a safe bet. And, as I stated in my OP, I rather like the idea of not missing out on anything. I like knowing that I'm in total control over what's going on, and that nothing really "does it for me".
Of course, there will be many challenges along the road, but I'm looking forward to it. At the moment I'm in Thailand and enjoying tons of fruit and chilling out, but when summer starts back home in Norway, I'll be getting a good book on c++(any suggestions?), and start tinkering with code. Something I never thought I'd do