   Beginner joins the Ranks, and it has questions.
  Hey,Last couple months I had a project for informatics, I had to make a game with Modula-2 (outdated/limited language). 3-4 weeks ago I finally started and altho I had never programmed before I was getting the hang of it pretty quickly, in my opinion atleast. I decided to make Street Fighter, downloaded some sprite packs and started working. In short: Ken, Ryu, 2-player mode, 3 punches & 3 kicks for standing/crouching/jumping (18 total), 3 special moves, menu (navigate with mouse). Biggest problem was Modula-2 can't run 2 loops simultaneous. I finished it and had to send it in last week but this made me realize I really like this. So I want to make another game, with a more advanced language, so I started browsing and finally came here, Gamedev. And I have questions, yes mucho questions and it would be very much appreciated if someone could answer them. So here it goes;Game Engine - I know the Engine lies at the core of a game, but I always thought this was some sort of library from which you could export certain ''rules'' to apply them in your code. This doesn't seem the case 'cause I've actually seen engines in Windowed Mode (3DOgre) So .. (1) What is an engine exactly? Is it a Windowed program in which you import your code/models and then can apply the defined effects/etc. to it?(2) What's the difference between a SDK and Engine then? Is an SDK exactly the same except alot more user friendly?(3) Will the past weeks I've worked with Modula-2 be of waste now that I'm switching to C/C++ or not?(4) Is there any additional advice you'd like to give me?Thanks alot for reaching the end of my post and I'm looking forward to your responses/answers.   
  Welcome to GameDev!1: "Engine" is a rather over-used word when it comes to game development. Basically, if you took a game and stripped out all of the parts that actually made it a particular game, all you would be left with would be a general framework of sorts, a library of code you could use to help you create a game.However, if your intent is to write a game, don't think in terms of writing an engine first. Over time, as you write many games, you will slowly accumulate a set of code you've written that you can reuse in each project. This becomes your engine, in a way. If you directly try to write an engine rather than a game, you'll have a much harder time defining your goal and actually accomplishing it.A good article to read: http://scientificninja.com/advice/write-games-not-engines2: See (1) for one definition of an Engine. A SDK, on the other hand, is a set of APIs and libraries for using someone else's code. For example, if you were to use an existing engine in your game, you would learn to do so using that engine's SDK (software development kit). However, when you write your own engine, you don't need to make it friendly or easy to interact with. There is no SDK needed.3: Learning to program and learning to think like a programmer is far more important than any specific language you decide to use. While C++ and Modula-2 may look entirely different and have different rules, the same basic programming concepts still apply, and you will still be solving the same problems in mostly the same ways. You are far better off now for having programmed in Modula-2, and for having already gone through the process of writing a game, than if you were starting from scratch.4: My advice is likely the same you'll hear from a lot of people here. Dive in and start writing games. Start small, learn as you go, and finish what you start. Even if the first game you write is extremely simple and not very interesting, both the experience you gained from going through the entire process, and of actually finishing it, will help you far more than any lofty game ideas that are more exciting but never finished. Once you have a few completed games under your belt, you'll be more ready than most people to tackle the bigger more exciting game ideas.   ;  Your explanaition and the article answered every question I had. Thanks alot, it's very much appreciated.   ;  Just thought that I would add my 2 cents.As you build bigger and more complex games, the design process becomes very important.  Make sure you document the game/concept very thoroughly so that if you step away from the project for a set period of time, you can get back into it fairly quickly just be reviewing the document.   You'll save yourself a lot of time with not having to revist the code to understand what is going on.Also make a TODO list with everything you want to see in the game before you write your first line of code.  You can then use it to guage your progress and keep you motivated so that you can complete the whole thing.  You'll find a lot of people start to make a game, get into it and then give up and never finish what they start.   ;  Well put Nairou!   