Milestones

I thought it would be instructive to give a sort of roadmap of where I’m heading in the development. I’m probably not going to hit the “late summer” release of the code as I hoped, it’s looking to be more like September. Code-metric wise, I have about 1/5 of the old engine ported (and redesigned), so I still have a ton of ground to cover. And naturally, for the first code release I’m aiming for something that can actually be used. When I do hit the first milestone, the engine will basically be a “glorified Direct3D11 wrapper with a content pipeline”.

I’m not anticipating many of the high level renderer concepts (e.g. materials) or the scene graph will make it into the first release. Not to mention, the design as a whole is moving away from the scene graph. The old design’s renderer was decoupled from the scene graph, but the new version it will be completely optional as it’ll move to its own component. What I do intend on having in the core is a simple “Model” class that is a cross between the one you see in XNA or SharpDX.Toolkit and the old engine’s “MeshData” class. Basically a representation that is more compact than the Node-Mesh hierarchy and which can be added to any scene graph as a “complete” model asset.

At least, that’s the idea, I haven’t delved too deeply into the design of it. Anyways, maybe my estimates here are a bit off, because as I’m moving forward, I’m increasingly able to just re-purpose (read: copy ‘n paste) bits of existing code as the bulk of the “overall” redesign is really done and on paper (lots, and lots of notepad paper). The skeleton is in place, so to speak, now I’m layering the muscles :) .

On another note, there’s no mention of code documentation – that’s because I’ve been documenting everything as I go. Part of the reason why development can crawl at times. I foresee most of the early wiki documentation harvesting its content from my paper notes, what’s in my head, code documentation, and the Friday Features at some point.

Milestone 1 (September 2013):

  • Finalize Graphics API:
    • VertexBuffer, IndexBuffer, StreamOutputBuffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, TextureCube, RenderTarget2D, RenderTarget2DArray, RenderTargetCube, OcclusionQuery, Effect, SwapChain, RasterizerState, SamplerState, DepthStencilState, BlendState
    • IRenderContext
      • Render Extensions
      • Command Lists
  • Effects Interfaces and Shader resources
  • Render target interfaces
  • Content Pipeline Redesign
    • Binary (Tesla Engine Binary Object) serialization/deserialization
      • Feature Complete with External + Shared
    • Task parallelism
    • State-less importers/exporters
    • Resource repository virtualization
  • SharpDX Direct3D11 Implementation:
    • Implementations for core graphic objects, render system, render context
    • Effects Runtime
  • Port Effects Compiler
    • Largely review/refurbish and ensure consistency
  • Port windowing and input Win32 implementation
  • Port Spritebatch and SpriteFont
    • Rewrite BMFontLoader to conform to new content loading schemes
    • Need some thought on other texture loaders…DevilNet? Or port the Windows loaders

Milestone 2 (December 2013):

  • High level forward renderer
    • Port render queue
    • Redesign material (+ importer/exporter)
    • Port lights
    • Port camera, maybe add a few different camera implementations (e.g. arcball)
    • Port engine value mappings for materials
  • Bug fixing and exercising of the SharpDX Direct3D11 implementation
  • Finish BoundingVolume port & redesign
  • Finish up intersection/containment methods (exhaustive!) between bounding and math types.
  • WPF Support and SharpDX Direct3D11 implementation
  • Model support with AssimpNet
    • Not a port of the Scene graph, something more compact like XNA/SharpDX.Toolkit that can be added to the scene graph
    • AssimpNet content importer
  • Finalize image content importers
  • Port scene graph (separate component, may do some redesign)
    • Possible spatial hierarchy support such as Quad/Oct tree.

Milestone 3 (2014):

  • Lots of demo creation, if I haven’t created them during
  • High level deferred renderer
  • Possible MonoGame implementation, as a precursor to eventual OpenGL support
  • Mono support
  • Infantry Multiplayer Game (!)

 

Edit: Milestone 1 development will be running parallel with the development for Assimpnet 3.3. Going to be a busy next two and half months…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Unable to load the Are You a Human PlayThru™. Please contact the site owner to report the problem.