Just a little shove in the right direction
#1 Members - Reputation: 105
Posted 01 November 2012 - 05:04 PM
I'm looking to start up game development and I'm finding it very hard to find somewhere to begin. What makes my case a bit different from most of the threads I'm seeing is that I'm already proficient in many programming languages so I'm perfectly confident that I will be able to use the popular API's without much difficulty. What I do not know is where to start. I'm trying to find some mini-project to start with and I'm just basically getting confused and overwhelmed with all the possibilities.
I would prefer to begin using C++ but if anyone has any suggestions with any other language I'm greatful for input.
#2 Staff - Reputation: 8935
Posted 01 November 2012 - 05:52 PM
I would suggest starting off with a relatively simple 2d game so that you can concentrate on learning the basics that are common to almost all games -- game loops, rendering, etc. -- without having to simultaneously deal with complex game-play or think up interesting features. My usual recommendation is to create a game of Pong starting with the following steps:
- Learn to create a window with your chosen API.
- Learn to display a simple graphic -- just a square you drew in Paint is fine -- this will become your player's paddle.
- Learn to take input and move the square around.
- Restrict the squares movement as per the rules of pong -- it can only go up/down or left/right, not both, and it can't leave the play area.
- Learn to add a second graphic, and add a ball.
- Learn to make the ball move around -- it should bounce off either the top/bottom or left/right, but not both, and it should bounce off the player paddle.
- Add a scoring system for when the ball leaves the play area.
- Add a second paddle controlled with different keys.
- Add the option of an AI player for the second paddle -- start out with a "perfect" unbeatable AI, and then see if you can add that human factor to make it fun (but not too easy) instead.
- Add some simple sounds.
- ...anything else you want to do.
Pong is a simple game that everyone knows the rules for, and which can be created without any nice graphics. You don't need any particularly complicated math and physics, but you'll use a lot of concepts common to more complex games: window creation, a "main loop" and rendering, input, simple collision detection, etc. It's also an easy game to expand to a more complex one if you feel you want a smoother progression of difficulty rather than jumping into a harder project next -- by adding some smashable bricks you can easily convert Pong to Breakout and learn about slightly more complex collision detection, creating different levels, implementing "health" for the bricks, loading levels from file, etc.
Does that help?
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#3 Members - Reputation: 105
Posted 01 November 2012 - 06:48 PM
#4 Staff - Reputation: 8935
Posted 01 November 2012 - 07:06 PM
Other than that you'll just need to ensure you download and correctly set up any libraries you want to use.
The move from 2d to 3d does involve some large changes, but you'll find a lot of the basics such as your main loop, input, etc. will still apply, and other concepts such as collision detection are a simple logical extension to deal with an additional axis. You can also continue to use SFML/SDL/Allegro for everything else and just add the new rendering, or at that point may consider using an existing engine rather than writing your own low-level code, depending on what your main objectives are - learning the nifty-gritty or just getting games made.
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#6 Members - Reputation: 1415
Posted 01 November 2012 - 08:41 PM
Since you are proficient at languages, I agree with jbadams to go right into C++ game development, starting with simple 2D games. Visual Studio is great and you can use the .Net Framework. Get VS 2012, I'd say, and work with .Net Framework 4.0 or greater (4.5 is a stable release, last I knew). You might want to take a look at MonoDevelop used with Mono if you want to be crossplatform with C#. Just for giggles, take a look at SharpDX - another allowing C# development. Take a look at Unity 3D as a case learning example, too. If you look around like this, then you will be more confident once you make that final decision. Most gamedevs of the highly advanced level are using C++, but C#, Java, and others are out there, just so you know.
Other than that, we really emphasize around here the importance of making each game very well - experimenting, adding features, and polishing each one before moving to the next one.
Clinton
#7 Members - Reputation: 105
Posted 03 November 2012 - 11:11 AM
Since I am pretty much in the same boat as Daz here (knowing how to program well, just not knowing where to start in gamedev) I figured it would be better just to add on to this thread rather than make a new one.
I am wondering if actual 2D games(published, on steam/PSN/xbox) use SDL, SFML, or Allegro? Or do they basically build their own engine for the game in house? I have started learning SDL, but after looking at their website, start to wonder if it is actually used in professional game development.. Either way, I realize learning one of these will be good experience, but was just curious.
#8 Members - Reputation: 1415
Posted 03 November 2012 - 12:05 PM
People have published their games using one or more of the many languages and development systems out there. This includes sold games. In the very vast number of game developers, it matters far more the effectiveness of the gamedev rather than the programming environment used.
The SDL that you started has been used by a bunch of gamedevs and I've seen some nice games from it, too, I might add. Once you get all the basics polished in your game development understanding, then switching to something which you prefer more will be fairly smooth and not take long.
For new people, I really want to emphasize working with what you have and building on it until you outgrow it. The SDL is a fine choice for learning projects or more.
Clinton
#10 Staff - Reputation: 8935
Posted 03 November 2012 - 05:06 PM
I just wanted to quickly note that it's not particularly common for C++ developers to utilise .NET (or Mono) unless they're wrapping a library or performing inter-op with existing software. It's certainly something you could look at doing, but honestly I'd suggest leaving it till later (if at all) and sticking with one of the many popular and well supported/documented native libraries to begin with.Visual Studio is great and you can use the .Net Framework.
Professionally and independently published games make use of a huge variety of tools and libraries, and the most successful developers are usually those who use whatever allows them to most easily get the job done. In my post "4 reasons you aren't a successful indie developer" reason #2 covered this to an extent, and provides several examples of published games that were made with simple tools like Game Maker, which many would-be "real" programmers look down on, not realising that in the overwhelming majority of cases players simply do not care how a game was made as long as they're having fun.I am wondering if actual 2D games(published, on steam/PSN/xbox) use SDL, SFML, or Allegro?
If you're better able to create a game with SDL/Allegro/SFML than without then you should go ahead and do so regardless of the choices of other developers, and keep in mind that the reasoning of professional developers almost never apply to you.
That being said, and more directly answering your question, SDL was originally written by a professional developer and has been used in Linux ports of numerous commercial titles, and is a very popular choice amongst indie and hobbyist developers. Wikipedia has a list of games using SDL, which while far from a complete listing includes some popular and impressive-looking titles (along with some that are less impressive of course) and may help to give you more confidence. Allegro.cc has a list of some projects using Allegro which you can find divided amongst different categories on the left-hand navigation menu. SFML is a much newer API that is still gaining popularity, so there are probably less examples, though you may find some in their SFML projects forum.
You can be happy that beyond simply being a good learning experience, any of these libraries can also be used for more serious projects once you're ready to try selling something.
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer






