well i havent even started yet lol i just wanted to know how i would make it. ill probably end up coding everything. and this is my first time so i have absolutly no idea how to begin making a game lol
You would be best served by using an engine that has a built in one. To create a good level editor where you control via GUI (think drag and drop the crate on a platform and place player one at one end of the screen) would most likely take a team of programmers (10 - 40) who are mid to high level, spending a solid 6 months of coding and debugging time. And thats assuming you already had an engine ready to go for graphics and physics. By the time most amature programmers had that much together, the technology for which they are making the editor would be very obsolete. -- [edit] I fully agree with the point down below I am only leaving this up to let others who would read the rest of the post know what we are talking about.
I would suggest unity, torque or some similar premade one.
As far as books etc. You can start with 2d game development by j. harbour. You will want to know a bit about c++ before tackling that though.
I would also suggest becoming a member of IGDA, so you can make friends with local game programmers who would like to take on this venture of yours.
easy there danaigo, 10-40 programmers? 6 months? How long it would take depends on how complex the game is, but you've massively overestimated the difficulty. For a simple platformer it won't be too hard, given that the OP has some experience programming games.
EDIT - I forgot to answer the original question haha, I made an editor for grid based platformer using just a texture, dragging and dropping an object in a cell changed a single pixel in the texture, then when the game loaded it read the texture and created entities based on what it finds in the texture.
To create a good level editor where you control via GUI (think drag and drop the crate on a platform and place player one at one end of the screen) would most likely take a team of programmers (10 - 40) who are mid to high level, spending a solid 6 months of coding and debugging time.
What? With a good GUI toolkit, one person can write something like that in a much shorter time, even if they have to learn how to use the toolkit as they write it.
Ok so maybe that was a bit over board, but the truth of the matter is it is no small undertaking. If the OP wanted something like a fancy gui based editor built from the ground up, it would take quite a while.
The OP did state that this would be his/her first undertaking of this size. A lot of begining programmers(myself definitely included) have hopes of creating a high class game that they can edit and manipulate, and most (again myself included) don't realize what it takes to manipulate images, draw them, and apply them to a finished project.
So I will conceed the 10 - 40 programmers, that may have been a bit excessive. It will however, take a lot of time learning the ins and outs of directX, opengl or other drawing technology and bending it to your will.
@ flilpe
I hadn't thought of the GUI toolkit, but that was what I was going for with the suggestion of a pre made editor. Could you recommend a particular one for the OP? I may check it out for my own edification.
@ paki Programmer
I do apologize for making the task seem monumental, however it is a major task make no mistake. Start small and work your way up to it. Some of the code you make will teach you alot and give you a good code base to program from in the future.
Again the time has to do with the complexity of the game. I can think of a few very simple level editors that could probably be written in maybe 6 hours of coding, less if you are very experienced.
Edit: And physics really shouldn't be that hard either.
@danaigo: My only real experience so far with GUI toolkits was Tkinter (Python) and I have mixed feelings about it (actually, I have used FLTK too, but too quickly and I found it too ugly). I used it for a tile map editor (not finished yet, but most of the basic functionality is ready) and the one problem I had with it was that it didn't handle more than 200 x 200 tiles well. For a simple platformer, which probably has a lot less sprites per level, it might be a good fit. Tkinter isn't exactly rich in widgets, but it's very easy to learn and use, and reasonably documented. The next time I need to write a GUI, I'll probably use wxPython, though, as it seems much better equipped. Incidentally, if you want a C++ toolkit, wxWidgets (for which wxPython is a binding) seems to be a good choice.
As for the language, I think a higher level language like Python would be appropriate. Simple level editors don't need the kind of performance C or C++ deliver. And writing something like that in a higher level language is much more fun because you get results much more quickly.
It will however, take a lot of time learning the ins and outs of directX, opengl or other drawing technology and bending it to your will.
Although those aren't needed for the editor, they will be needed for the engine, but the OP could use something like SFML and abstract most of the complexity away.
@danaigo
whoah buddy, it's really not that big of a deal!
For example, I made a working sidescroller in something like three months with very little prior graphics programming experience. I made the engine (including physics, sprite animations, static objects, a camera, and more) and created a simple game.
@paki
The level editor should be pretty easy, All you need is a HUD with your objects and a simple little window (I would probably go grid based [it's fairly easy to implement]) if you want simplicity make sure you have all of your objects based on a common grid size 32x32 was my choice. For loading and saving it's fairly simple, just pick a protocol and stick with it.
something like this
[red,1,0] [green,0,0]
[red,1,1] [yellow,0,3]
where the [ indicates the start of a tile, the name indicates either a file name or a name in memory, the next number indicates immovability, the next indicates the layer of collision and the ] indicates the end of a tile
My thought about this is that level editors are for the people who don't know how the game reads\stores the data that it uses to build levels. In order to create this tool, you need to first create a game with an engine to store levels as data, then build a GUI on top of this to facilitate construction of those levels; but who does all of that benifit? Not you the creator; you've already figured all of that out in order to make the tool. Sure building the levels would be easier when you are done but you have to ask yourself if the lifetime of the project (your game) will be long enough to justify production of this tool. Nothing personal but I don't think it will.
Maybe you want to do this so that your friends will be able to contribute to your grandiose design, in which case I understand your intentions and they are noble. But I think you need to be a little more practical with your short term plans.
SIDE NOTE (slight tangent):Level design tools like Hammer are built around blockbuster titles like Half-Life. They are not realeased for free just because the writers love their fans. This is done because the publishers know that the already established cult following of fans will produce a potentially infinite amount of free content based around thier title with comparitivley minimal further investment required. This was not something that they just guessed at either, it is a known occurance that was first seen in a wide spread audience with Quake in the 90's. In short it's a form of advertising.
Things like what you are proposing are not unheard of. Blender is a good example of a free game engine\level editor that is not built around an established title and has the potential for spectacular results. But this level of development is YEARS a head of you, and if you are serious about it I suggest starting a website and recruiting some fellow programmers. There is no shortage of people with the same ambitions as yourself.
The things being said here about 2D development are true. I'd say if you're using a library that you have experiance with it's about 8 hours of coding work; that's not counting drawing the graphics, which I personally suck at :p.