Mycal
Staff member
Ok, I have a full saved draft of this topic but don't feel like finishing typing it up so I'll make this short and sweet. I will post the full topic later on whenever I feel like finishing it..
I have started working on things again. I have continued the conversion to vb/c# .NET (2008 for now 2010 after xna 4.0 is released). Currently all graphics has been totally removed but I am ready to start working on it whenever I/we decide to move to Managed DirectX (now unsupported), DX8 (almost instant conversion from the old vb6 source), SlimDX (only supports up to DX10 and not DX11 for win7), OpenGL (though haven't researched usage under .NET yet), or XNA (supports xbox, zune, windows phone 7 [with xna 4.0], and windows xp+). Currently I am leaning towards SlimDX for the full power of DirectX, but am also seriously considering XNA simply because of the portability to xbox 360, though a developers license would be needed for that (and I am willing to lay down the money for it as soon as the windows version is finished).
During this conversion I have made some major changes to the structure of the game. For one, I have ported the mapformat library into a full 2D game library (though easily extendable to 3D) dubbed BSGame for now. It is still under works but I have had so many ideas to improve it and they are pretty game changing so I will list the major ones right now.
I think that covers the major changes. Some of these changes are obvious and should have been done long ago (especially dynamic crap). Some are things I never thought of but are obvious solutions to persistent problems like XYZ plane and the classic Over/Under Bridge example. By the way, if anyone has any better insight into that concept, I would love to hear it, my idea to solve it isn't that brilliant, but should work though. It basically involves either classifying certain tiles as transition tiles or making particular graphics into transitions (staircases should always change a player's depth), but right now, I'm leaning more torwards a tile property. This way the graphic transitions are not hardcoded.
Any comments/etc just post them here, not sure that anyone checks the forum anymore though..
I have started working on things again. I have continued the conversion to vb/c# .NET (2008 for now 2010 after xna 4.0 is released). Currently all graphics has been totally removed but I am ready to start working on it whenever I/we decide to move to Managed DirectX (now unsupported), DX8 (almost instant conversion from the old vb6 source), SlimDX (only supports up to DX10 and not DX11 for win7), OpenGL (though haven't researched usage under .NET yet), or XNA (supports xbox, zune, windows phone 7 [with xna 4.0], and windows xp+). Currently I am leaning towards SlimDX for the full power of DirectX, but am also seriously considering XNA simply because of the portability to xbox 360, though a developers license would be needed for that (and I am willing to lay down the money for it as soon as the windows version is finished).
During this conversion I have made some major changes to the structure of the game. For one, I have ported the mapformat library into a full 2D game library (though easily extendable to 3D) dubbed BSGame for now. It is still under works but I have had so many ideas to improve it and they are pretty game changing so I will list the major ones right now.
- Layers have been eliminated from tiles. Only 1 graphic per tile is allowed now. The reasoning is explained below.
- Maps are now on the XYZ plane instead of the XY plane. The Z plane now acts as the layers and ARE dynamic. There can be as many "layers" as the developer wants, but you should always consider that not many are needed to make a great map.
- Tile attributes have been totally removed. They have simply been made layer properties for the most part.
- Any warping/doors/sounds/etc that used to be attributes have been removed. Use scripts to accomplish this task.
- Scripting will take a huge roll in this library and works on a map by map/tile by tile/plane by plane basis. Though scripting languages are currently still being considered, currently I'm considering just using LUA since its very easy to implement.
- Maps are saved in two different ways. Binary and XML. To extend this further, there are also two types of formats for maps, compressed and full maps. Compressed maps are optimized versions of maps for rendering on the client. Basically this means each z plane is made into a linked list for more efficient drawing. Tiles that have no graphics/etc will not be included in the list and no loops will be wasted on them.
- Map width/height is now dynamic.
- Though the z-plane functions as layering, there is an option on each tile to specify that the image appears above or below the player. Though I can't think of any reason at the moment why this would be useful, I'm sure there might arise a need.
- Animations function on a tile by tile basis and have a dynamic number of frames used. Nuff said.
- Though not currently implemented, multiple surfaces will still be used for rendering. See old vb6 source code (for devs) or tutorial posted by myself on MirageSource for more details.
I think that covers the major changes. Some of these changes are obvious and should have been done long ago (especially dynamic crap). Some are things I never thought of but are obvious solutions to persistent problems like XYZ plane and the classic Over/Under Bridge example. By the way, if anyone has any better insight into that concept, I would love to hear it, my idea to solve it isn't that brilliant, but should work though. It basically involves either classifying certain tiles as transition tiles or making particular graphics into transitions (staircases should always change a player's depth), but right now, I'm leaning more torwards a tile property. This way the graphic transitions are not hardcoded.
Any comments/etc just post them here, not sure that anyone checks the forum anymore though..