|What features do you need for a 2D game engine?|
|dxgame||We're in the finishing stages of our new (2D+) game engine and we've thrown just about everything we can think of into this thing, while keeping it extremely high level and easy to use. If anyone has some ideas that they would like to see in our engine please detail your suggestions here, thank you.|
|sdw||Why not compile a complete list of features it has already?|
|dxgame||It would be a very long post. ;)|
|VBBR||Yeah but what if everyone keep saying features the engine already has? A lot of time loss...|
|sdw||In fact, I've searched through the docs and such to this thing and I still havn't seen a complete list of features yet. Instead of taking time to tell us there are just too many, take the time to build a list of features. So far I see maybe 10 features the wrapper has in the documentation.|
|Spodi||Well, as far as a 2d engine goes, I'd just have to say Fast and Flexable. Speed is a major thing for an engine, so having very optimized code is nice. Also, flexability is good so you can add whatever you want to the engine, since if you pre-code all the different effects and functions needed for any type of game, it will not only take extreamly long but bog down the engine.|
|masterbooda||I think the biggest feature of any engine is compatibility(...and good spelling)... What good would an engine do you if only privelaged folks were able to run it....... yes i'm talking to you(my video card cost more than my car) people.... Thats why we should leave 2d to directx7 and 3d to directx8... again I am clinically insane....... weeeeeeeeeee...|
|cbx||I am currently tinkering with a Map Editor for a game engine I am in the process of making.
To the gamer, the Game engine will appear to be a 2D tile based game engine, but in fact it will be a full 3D engine, that uses a OrthoOffCenterLH projection matrix to render geometry on the screen in a 2D manner. The geometry itself consists of untransformed and lit 3D geometry, So that the video card handles all of the transofrmations etc.
I have written a sample demo of a map editor that demonstrates creating a simulated tile environment using untransformed and lit 3D geometry. NOTE: That this LEDemo app is a compleatly separate app I made just a few minutes ago, so that I could visually play around with the basic principles of map making using 3D geometry to simulate 2D. And to give me insite as to how the actual map editor will operate when it is finished being written.
This demo also gets back the the reason(s) That I no longer suggest people use the Direct3D.Sprite class to draw 2D images on screen, but rather to use 3D untransformed geometry and render it using a OrthoOffCenterLH projection matrix.
The benifits of using OrthoOffCenterLH projection matrix and 3D untransformed geometry ...
If you watch the demo and run the app you will get a better idea of what I am trying to describe.
The LEDemo.zip file includes the fallowing ...
- A much more powerfull alternative where as the Direct3D.Sprite class calls upon the cpu to do the rotation and translation math and using 3D untransformed geometry you can push the rotation, translation, and scaling work load off onto the video card.
- Greater oportunity to use one type of unified Vertex format throught your entire game engine.
- Ability to use/apply vertex and pixel shaders to the geometry. (Vertex shaders do not work with the Direct3D.Sprite class)
- Because the simulated 2D objects are actually 3D you have the ability to do deformations, and stretching effects to your geometry in ways that would be difficult or impossible to do using regular 2D.
- Saves you from having to create, manage and draw series of textures for your animations and Allow you to replace them with 3D alternatives that are more flexible and dynamic.
- For tile based engines, using 3D allows you to have 2 triangles representing a rectangle. Which means you dont have to store and render data for 100 tiles for example, but rather you would only need to render 2 triangles that have the tile texture texture mapped across them.
As for what I'd like to see in your engine ..... uhhhh I kinda just described it.... :p
Tell me what you think of this approach everyone! I realize it's kinda late in the game to be rewriting the DXGame engine but I figured I'd put in my 2 cents.
- VB.NET 2002 source code
- Demonstration video
- compiled executable
- 3 images
- the camstudio codec needed to view video
|masterbooda||I have an engine that was written in vb5, if that will help you, the source is here http://www.dabooda2d.koolhost.com . It might help you find out what features are good, I tried to incorporate a good bit of them...|
|cbx||Some more benifits of using 3D to simulate 2D ...
Again I realize that it is too late in the game to go back and redesign your engine, I am just posting more ideas for people to think about.
- Ablility to do zooming, panning, and scaling, quick and easy just by manipulating a matrix.
- You can still use the same code logic for determining what tiles are visible, and where they are located on screen.
- Allows you to have multi textured tiles.
- You can use 3D geometry and render over top of an area to simulate lighting effects or even shadow effects.
- Because the game uses 3D to render 2D tiles you will already be prepared to add and incorperate more 3D oriented features to the game engine in the future.
- You could use a 3D mesh of a rotating diamond rather then having a texture or series of textures of a diamond rotating.
- Allows you to use professional apps like gMAX or 3DS Max for creating your game levels and characters etc. Saving you from having to create your own and all the problems/hardwork that goes with it.
- Alows you to have multi textured tiles.
- Allows you to do multi layered platform games like this...
Pay attention to the scene at the beggining when mario comes out of the castle and starts doing excersies, then jumps into the pipe to the left of the scene. (The next sequence is what I am talking about when I say people should consider using 3D geometry to simulate 2D tiles games.) The camera then zooms back and starts to show another layer with 2 pipes on it then zooms back even more and you see a whole new layer that mario begins to run around on.
You would be somwhat hard pressed to implement these type of game features using a traditional 2D base tile engine.
Good post! Everything you mention is either in our new engine or is on the "todo" list. :) Thanks!
And congrats on taking VB.net head on. Most of the shareware development community is not jumping on the .net experience just yet. ;)|
|sdw||This is exactly my reason why you should have posted a list of features the engine already has|
Early adoption is my curse. I can't help it. I like riding on the leading edge of tech. Heck I tracked down and downloaded a leaked beta of managed DX9 like 2 months before it was even released officially by microsoft. And a soon as VB.NET and the .NET framework was released I purchased my MSDN Professional subscription and compleatly stopped working on all my vb6 projects I had going at the time, and put all my focus on vb.net only.
Yah, it's that bad.
Originally posted by dxgame
And congrats on taking VB.net head on. Most of the shareware development community is not jumping on the .net experience just yet. ;)
This thread was not meant to be a plug for our engine (or anyone else's for that matter). We just wanted to see what ideas the typical 2D game coder might have in mind. Listing all of the features of the engine and then asking "what is missing" would just promote "out of the air" suggestions. Some of you might even reply with overly technical suggestions just for the cerebral exercise. ;)
When we get closer to releasing the engine ofcourse we will list every feature then. But until then, think of your own programmer experiences, what would you like to see automated, or handled automatically by a 2D engine? Think of something that really was difficult to code, something you saw in another game somewhere, etc,etc.|
|cbx||Dude, you just posted 6 seconds after I did! Cool.
I was trying to figure out what the heck there was a post doing after mine and I glanced at the time ...|
|sdw||In that case, I would like to see a multi blitted character/sprite that will show off what types of items they are wearing, just like in diablo 2. Also, a questing system, speech system, item system, stat system, speech system, inventory system, and it goes on forever.|
Those are features that would fall under "construction set engine" category. For instance if someone was developing an "RPG engine/construction set" I would expect those features. And quite frankly, the last MORPG engine I researched cost several thousand dollars to license. Hey, there's an engine available right now that has all those features you asked for and more, and it's only $150,000 dollars! ;)
Check it out here: http://www.evilgamers.net|
|sdw||lol, that engine has a lot more to it than just an item system or inventory system. And personally I would never spend money on any gaming engine, that sucks the fun out of making the game. From what I understand you already have a sprite managing system, why not add more of these types of features instead of drawing routines that DX already has built in?|
|dxgame||"why not add more of these types of features instead of drawing routines that DX already has built in?"
?? Could you please explain (in detail) what you mean by that? Thanks...|
|sdw||Add more things that actually handle common game events, like ur lil sprite system. Also maybe add some kind of scripting or something to allow the user to customize things.|
|sdw||Some gui stuff woul be cool|
|dxgame||You're 100% right about the GUI stuff, that IS on the harder scale of things to do. We have bounced this one around in discussions. Thanks for the heads up on it.|
|sdw||Yup, easy-to-use fullscreen completely customizable gui system for force people to download the engine and at least check it out. You could even make tool for positioning 'controls' on the screen via drag and drop, just like the VB IDE.|
|masterbooda||The gui, in essence is a good idea, but it would have to be done right, or the programmer would be limited on what type of game they can make..... Basically, more control should be given to the programmer... sometimes the simplest designs are the better ones... all the engine really needs to control is the basic elements, for example the mapping system, sprites...etc...|