   Novice Programmer: Starting a 2D C++ Game?
  Hey everyone, this is somewhat of a n00b question really. Not sure where I should start, but best I can. :DI've created games with Game Maker in the past and messed around with the scripting on an intermediate level. I've also programmed micro-controllers in C for several robotics competitions, but I've never actually done anything that had to initialize the code and then create the GUI to work with or anything like that. If that doesn't make sense, I haven't ever done anything where I have to tell "render X.sprite at X,Y" or anything like that. I'm sort of running before I can walk since I've dealt with collisions, audio libraries, AI, and things like that. But never any rendering.So, could someone tell me what they think?Should I start with a graphics library or should I start with an engine? Reading through: http://en.wikipedia.org/wiki/List_of_game_engines#Free_engines and http://www.twilightsembrace.com/personal/gamelibs.phpit seems that there is a fair amount of stuff to work with. I don't really understand the difference between an engine and a library, but I'm guessing that a library is just for rendering graphics and I'd have to find my own collision detection, scripting, other such things. A game engine would include that already, and would be easier to start with but easier to code to make it become what I want it to become. As in, if it's an FPS engine it'd be hard to make an RTS like Starcraft out of it.What I'm really wanting to do (Though I don't have to start doing it right away, but it will be the end result after gathering enough expertise) would be something similar to Starport: Galactic Empires, The Escape Velocity series, and the Flatspace series. A 2D (SDL) or 2.5D (FlatRedBall) space-shooter style game.Screenshots for those who do not know what those games are like:Starport: Galactic EmpiresEscape VelocityFlatspaceOk, sorry for that intense amount of images. (To you dial-up users :P) But that's about the general gist of what I'd like to do. I have Xcode, Visual Studio 8/9, CodeBlocks, and Dev-C++ to work with. I'd like to ensure cross platform, but it's not needed right now. Whatever is the easiest use for a novice user. But, if you guys think this is too much of a challenge to work with for starting, feel free to suggest what would be a good start to ascend to the needed level of a 2D Space game. I have a few other friends that can help me, and they have similar expertise with me so I'll be forwarding this to them so that we can all start working on this project. Eventually, if this really takes off we'll implement online so I'll either do that myself or recruit someone from the boards who's interested in this.As for graphics, no worries there. I know 3 other 2D/3D modelers that can create some sprites and/or models for the game to use. 1 of them will most likely be on the team, and I'm learning to model as well. Should turn out interesting. Will be open-source and on sourceforge for all to browse when we get this all underway. :DThanks for reading this, it's kinda a lot of text to take in. Tell me what you can answer, you don't have to answer it all in 1 post. (or maybe you do? *suspence)Good night,  -FreeP.S. I'd like to work with the PC side as much as possible since all of my macs aren't at my house. ;)EDIT: No images!?! What the hell? Just click the links if you want... Here, I'll fix em... Nevermind, not even works. Damn this forum! xP
  Links work, you just have to use the HTML tags instead.Starport: Galactic Empireshttp://www.starportgame.com/image/sge-screen-27.jpghttp://www.starportgame.com/image/sge-screen-1.jpgEscape Velocityhttp://hg101.classicgaming.gamespy.com/escapevelocity/ev3-2.jpghttp://hg101.classicgaming.gamespy.com/escapevelocity/ev2-2.jpgFlatspacehttp://www.softpicks.net/screenshots/Flatspace.jpghttp://www.download-game-demo.com/images/arcadeimages/flatspace-ii-rise-of-the-scarrid-screen4-ref.jpg;  Graphics library, definately. You may be running, but I would slow down to a sprint first ;)Engines give you a lot of built in features, but you need to know what is happening under the hood if you are ever going to effectively use one. Learning to do a simple 2D game with OpenGL, Direct3D or even a 2D API like SDL can help you greatly in understanding how computer graphics work.   ;  This is how the terms are defined on my site, although the line between is often fuzzy:Graphics Engine/Library: Focuses primarily on graphics renderingGame Library: Includes graphics rendering and other game related functions (input, sound, GUI, etc.)-- most work done via codingGame Engine: Encapsulates game related functions into editors and scripting for ease of use and a shorter development cycleGiven your proficiency level with C++, there are many possibilities:AllegroClanLib SDKCRM32ProHaaf's Game EnginePopcapPlaygroundSDLSFMLand many others.Choose one with clear tutorials and well documented source and you'll be well on your way.   