For BlitzMax users, the gist of this is that my engine is now going to be more BlitzMax-friendly, and offer a low-level API similar to Blitz3D. I borrowed some of the matrix math from MiniB3D (thanks to Simon and Mark), but this is mostly just me thinking more in Blitz3D terms.
============================================
First, a demo for you
http://www.leadwerks.com/post/culltest.zip
Both frustum and antiportal culling are visible. Press "w" to view in wireframe. You'll see that when you go behind some buildings, the objects behind them get hidden. No pre-compiling was necessary. This will work in real-time, even as you edit the world. Portals are more complicated, but I think I can add them in while maintaining a totally dynamic system. The culling routine is somewhat inefficient at the moment, but I am adding an octree now to optimize it. If you press space, the culling gets frozen, and the framerate will be more reflective of what my final goal is.
Last Sunday I was having a lot of problems compiling a dll, and getting really frustrated, because there is pretty much no way to debug dlls. I started looking at the Blitz forum and reading a discussion about Max3D, or rather, the lack of it. I started thinking about Blitz3D's API, and how easy to use it was. I created a new folder, and started writing a Blitz3D-like API, with my own advanced rendering routines added. It turned out really well, and I have been quietly working on it all week. Obviously, I have re-written and simplified much of my original engine code.
The results are self-evident in the above demo. I originally envisioned Leadwerks Engine to be a complete game engine, where the user only modifies the end result. I now have a really nice core API that can be used for all kinds of applications, from editors to lightmappers to new game engines.
For users that only want to modify an existing engine, there is the script interpreter, which will remain the same as my original plan. For advanced users, I am going to offer a BlitzMax module that could be considered "Max3D" (or at least my own interpretation), since Mark himself has indicated he might want to let third-party mods fill the Max3D void. The module will be more low-level than the scripted engine. If you want a finished game engine, I recommend programming in script. If however you want to write an application, or want to design your own engine, the module will serve your needs well. The dll is no longer going to be supported, due to debugging difficulties. If you were dead-set on using the DLL version, please contact me privately.
What does this change? First, mesh loaders and savers are a hell of a lot easier to write. I can just take existing Blitz3D code and plug it right in, using commands like CreateSurface() and AddVertex(). So right away, I can support .obj, .3ds, .x, .b3d, .md3, .smd, .etc, and new importers are really easy to write. I'm not going to screw around with these dll importers any more.
Secondly, because I am using BlitzMax's cross-platform command set, it is possible that Leadwerks Engine and 3D World Studio 6 may run on Macintosh and Linux. I can't promise this for certain because it depends on a few third parties, but it appears it will work.
So to summarize:
-DLL version discontinued
-Low-level BlitzMax module; like Blitz3D on steroids
-Final engine controlled by script, just as before
-Likely support on Mac and Linux
-Plus, all the world geometry can be rendered on a per-face basis, with no pre-complilation necessary.
============================================
First, a demo for you
http://www.leadwerks.com/post/culltest.zip
Both frustum and antiportal culling are visible. Press "w" to view in wireframe. You'll see that when you go behind some buildings, the objects behind them get hidden. No pre-compiling was necessary. This will work in real-time, even as you edit the world. Portals are more complicated, but I think I can add them in while maintaining a totally dynamic system. The culling routine is somewhat inefficient at the moment, but I am adding an octree now to optimize it. If you press space, the culling gets frozen, and the framerate will be more reflective of what my final goal is.
Last Sunday I was having a lot of problems compiling a dll, and getting really frustrated, because there is pretty much no way to debug dlls. I started looking at the Blitz forum and reading a discussion about Max3D, or rather, the lack of it. I started thinking about Blitz3D's API, and how easy to use it was. I created a new folder, and started writing a Blitz3D-like API, with my own advanced rendering routines added. It turned out really well, and I have been quietly working on it all week. Obviously, I have re-written and simplified much of my original engine code.
The results are self-evident in the above demo. I originally envisioned Leadwerks Engine to be a complete game engine, where the user only modifies the end result. I now have a really nice core API that can be used for all kinds of applications, from editors to lightmappers to new game engines.
For users that only want to modify an existing engine, there is the script interpreter, which will remain the same as my original plan. For advanced users, I am going to offer a BlitzMax module that could be considered "Max3D" (or at least my own interpretation), since Mark himself has indicated he might want to let third-party mods fill the Max3D void. The module will be more low-level than the scripted engine. If you want a finished game engine, I recommend programming in script. If however you want to write an application, or want to design your own engine, the module will serve your needs well. The dll is no longer going to be supported, due to debugging difficulties. If you were dead-set on using the DLL version, please contact me privately.
What does this change? First, mesh loaders and savers are a hell of a lot easier to write. I can just take existing Blitz3D code and plug it right in, using commands like CreateSurface() and AddVertex(). So right away, I can support .obj, .3ds, .x, .b3d, .md3, .smd, .etc, and new importers are really easy to write. I'm not going to screw around with these dll importers any more.
Secondly, because I am using BlitzMax's cross-platform command set, it is possible that Leadwerks Engine and 3D World Studio 6 may run on Macintosh and Linux. I can't promise this for certain because it depends on a few third parties, but it appears it will work.
So to summarize:
-DLL version discontinued
-Low-level BlitzMax module; like Blitz3D on steroids
-Final engine controlled by script, just as before
-Likely support on Mac and Linux
-Plus, all the world geometry can be rendered on a per-face basis, with no pre-complilation necessary.