Efficient method to create a 2D game?
So, I was wondering if anyone could have time to answer, or rather help me choose an acceptable path towards what I'm looking for: a physics based, 2D game. Now, I know I've just stepped on to what could mean a plethora of possibilities. By 2D, physics based game, I mostly mean a platformer, a beat 'em up, or even an Angry Birds' styled game.
Since I know literally next to nothing about coding (I just don't have the slightest idea where to start, how to start, and with what to start), I'll probably base myself on what the thread's comments are.
Being as I want to make a physics game, I must know enough physics for a wide variety of ideas to later implement. *checkmark*
I must, draw sprites if I want to make an original game. *to do, within grasp*
I must have a concept for the game, a basic idea of what will it be about. *checkmark*
I must know how to write code enough, as to be able to write a simple two-dimensional game from scratch, with custom concepts and physics involved.
*facepalm*
Ok, like I said earlier, I lack the most important part. I know nothing about programming. So, my questions to the reader are showcased below.
1.) Which programming language(s) will provide a good enough experience to write code, basic/complex enough for a simple game, and allow physics to be involved without much hassle? Note, I have never asked for a best language, as I don't know if there is really a best (nor I want to awaken the trolls).
2.) If it's acceptable to learn within months, where can I learn from it? Where can I learn how to code it? I want to learn as soonly as possible… forgive me if I'm wrong, but I don't think making a two-dimensional game with basic sprites (of which I also know nothing about) can take over a year to learn to create.
3.) Is there any personal recommendation you can give about this thread's purpose? Or tips, or anything? I believe I was going to write more questions, but I forgot…
Finally, I thank the reader for… reading either the whole thread, or this last line only, and it'd be awesome if you could answer.
Find an integrated development environment for your language (IDE). You write your code with it, and it provides tools to find bugs, write faster and keep track of things.
Then learn the basics of that language. Make text based programs. Learn the important features and how and when to use them. This will take a good while.
Then step to a higher level and get more methods for output (graphics primarily). Find a library/engine that works wuth your language of choice, and provides what you need. Possibly use multiple of them if you dont want to use a general do it all engine or library (youll need input, graphics, timing, parsing image formats and so on). Setting these up can be a hassle especially with C++ so learn what librariea are and how they work to know what went wrong when something throws errors at you.
Then you need to write your game, which will require knowledge of algorithms, data structures and good coding practises to not explode at your face. So keep reading about those things, articles, tutorials... to gather knowledge before you need it.
An alternative is to use a platform that has built in input and output features, graphics, physics, visual editors and stuff, and has a scripting language to do the high level coding. (things like Unity, game maker...)
These will keep you better motivated as youll get more done, although youll eventually reach a point where they are too limiting.
With those platforms youll be making a game, not fixing tons of bugs abd writing low level boilerplate code, while still learning some game related maths and basic programming.
Look into them, possibly as something to play with on the side of your 'real' programming learning process.
Thanks for replying to the thread, by the way :)
I noticed that waterlimon mentioned Java, but then you mentioned JavaScript. These are two very different languages, both good for making games, but should not be confused with each other. Java makes applications for windows, mac, linux etc. JavaScript is part of HTML5, and is used for making in-browser web applications. Personally I like the coding style of Java better, but if you are going for a wider audience, Javascript can run in most browsers, even mobile browsers(not sure about safari, but I can play many HTML games on my android chrome browser)
Game Maker has its own scripting language, which you can use to get your feet wet in code before you move on to Java script.
For editing HTML and Javascript, you may want to try out:
and
The downside to working in JavaScript is you are then working with the DOM ( the scripting interface of the web browser ), and to put it nicely, the DOM is a piece of sh.... Anyways... JavaScript game program is great fun, especially if you use a library like EaselJS, which is very straight forward. But dealing with browsers suck, badly.
I would suggest you try one of the Lua based game engines, which since that was written Dreemchest was added to the list, as well Corona became free. Lua is a wonderful language to work with, both for a beginner and seasoned programmer. It is also very commonly used as a scripting language ( it's the scripting language of choice for CryEngine and GamePlay3D as well as Marmalade and other game engines ), so your skills will be useful in the future. Additionally, Lua is easy embedded, should you ever wish to add scripting to your own game. With LOVE for example, and a few hours playing around, you should be able to make a simple 2D game with animation, audio, etc... All the other SDKs ( Corona, Moai, Dreemchest, Gideros ) make moving cross platform and to mobile a breeze.