this simple post for announcing that ND2Dx is now available on GitHub: https://github.com/NoRabbit/ND2Dx.
It is still in its very early stages but I’m already using it in professional productions.
A couple of concepts to grasp in order to understand how ND2Dx works:
- Uses linked list for node traversal: increases speed (from Rolf)
- A node (Node2D) doesn’t render anything anymore, you need to use instead a Mesh2DRendererComponent component.
- Component system: add functionalities via components by attaching them to any Node2D (more flexible, increase re-usability and structure of code).
- Mesh2DRendererComponent: component that is necessary for rendering a mesh on screen (it takes a material and a mesh and can be extended to create more complex renderer (post processing effects, particles, …).
- Mesh2D: object that holds the vertex data. Can now be reused for every object that requires the same data (less memory usage)
- Materials: holds the shaders data and is responsible for rendering (except for batching) (can be extended to hold other kind of data like a Texture2D -> Texture2DMaterial). I tried to make it reusable for every object that needs to render the same thing on screen but it kind of gets complicated as sometimes a node can be affected by the material (Texture2DMaterial sets the original width and height of the node it is attached to)
- Unified Textures: Texture2D is still a texture but can also be an atlas (and can contain other atlases -> kind of recursive)
- Use of a RenderSupport object for rendering (allows for more flexible and simplified batchings techniques).
- Finite State Machine: structure logic into states composed of actions (increase structured code, flexibility and re-usability).
- Simplified creation of Atlas and animated textures.
Other things I’m working on at the moment:
- improving a couple of things here and there. I’m still not sure if I should add a way of using batching anywhere we want or if it should be left to the developer to decide…
- Removing / adding unnecessary things that I forgot from the old ND2D.
- An animation system.
- An IDE for editing scenes and all its objects just like in Flash (codenamed WorldGameMaker)
Above is a screenshot of the current state of WorldGameMaker, an IDE that I coded a couple of years ago (I think) for a big project (SoundQuest for Sony Mobile – check the link for more information and screenshots of WorldGameMaker). It is build upon a modified version of ND2D. That screenshot was actually taken from another project I worked on but which got canceled 1 week after its release (we’ll never know why… it was for a bank… ;))
You can see the animation system at the bottom of the screenshot and a couple of other windows that allow you to edit object properties, assets, textures and animated textures.
I intent to modify it in order to make it run with ND2Dx.
That’s it for the news. Have a good day.