Outpost Universe Forums
Projects & Development => Projects => OutpostHD => Topic started by: leeor_net on March 23, 2017, 11:53:03 AM
Been awhile since I posted anything.
I've been looking at and working on the middleware OutpostHD is built on, NAS2D. Over the last few weeks I've gone through and made a lot of changes to it and its interface. I believe it's vastly improved from where it was. Can see the current version and the updates I've made to it on the Github page here: https://github.com/lairworks/nas2d-core
I just finished committing changes to the OPHD SVN with the updated version of the NAS2D middleware and all of the code ported over. It's building properly and works very well.
Among the usual bug fixes, the changes to NAS2D include:
- A completely rebuilt XML interface (still based on TinyXML but minimized and scaled back in scope)
- Improved namespace declarations
- Improved exception heirarchy
- Many big fixes related to internal resource handling and memory leaks.
- Improvements to the OpenGL renderer that reduce about half of the state change calls.
- OpenGL Renderer now uses modern triangle vertex buffers instead of older style quads to draw literally everything.
- OpenGL Renderer no longer asks for a debug profile and sticks with a core context where possible.
- Overhauled documenation
- Overhauled interface headers that make a huge effort to remove as much implementation detail as possible.
So yeah, lots of work went into this. And now that I have a lot more free time on my hands I can look into OPHD and my other projects a lot more. :D
Sounds like a lot of improvements. Are you aware of any other projects using NAS2D outside of OutpostHD?
Always fun to hear what you're up to.
I'd love to hear more detail about some of the changes. Is there any piece you are particularly proud of?
As far as I know, I'm the only one that really makes any use of it though I would really like to see that change. Besides OutpostHD, I'm using it with several internal projects and a map editor I recently released: http://lairworks.com/projects/landlord-tile-map-editor
Note that that map editor hasn't yet been updated to NAS2D 1.3.1 and is missing several key features supported by a forked, private version of it being used for a different project.
There are three things I'm particularly happy with:
1) I fixed some long standing bugs that I've been scratching my head over for years.
2) I rolled TinyXML directly into the NAS2D interface and gave it a _very_ much needed interface overhaul (holy crap that library is a lot larger than expected and supports far too much to really be called 'tiny' so I pulled out the unnecessary stuff and will eventually comb over the remaining code and port it over to C++11 standards)
3) I cleaned up a lot of the public interface for NAS2D and removed as much of the implementation details as I could. There are no longer external library interfaces exposed in the public headers, the namespace has been cleaned up and it just all around feels a lot better than before.