Things have been pretty quiet for a while on this blog. Much of the team has moved onto other jobs (myself included), but there is a handful of people (myself included) that are continuing with Helium.
- Progress is being made to integrate Lunar Engine and Helium Tools code. You can hardly find references to Lunar in the code anymore, with all the namespaces and macros being changed over to Helium.
- I have reworked pretty much the entire premake scripts. The project has been split into two solutions now: one for tools (the editor), and one for runtime (the game).
- I have setup a CI server at home to try and keep our builds working (20+ projects across x86|x64, Debug|Intermediate|Profile|Release, Tools|Runtime). I applied for an open source license for pulse, so I will probably switch over to that. Paul Haile had good things to say about it, and its free for open source projects.
- I am still working to get the engine render working in the Editor viewport. That should be coming back online in a matter of weeks, followed by the return of the manipulators and curve objects.
- Work has also started on a new componentized game object update system. More information about that will come as implementation starts to produce some results.
Anyway, just because you don’t see this space updated very often doesn’t mean that work isn’t happening. Drop by and check out our latest commits in our GitHub repo
Currently we are making a big push to get the new renderer integrated into the editor application and remove the current temporary renderer. Naturally this is requiring some rework of the internals of the editor, as well as some new debug draw features in the renderer side, all of which is in progress now. Additionally, more work is going in to the drawer UI, and related tasks so that it actually becomes viable for use in the editor. We’ve also made some strides in reducing the complexity of our source control setup (no more git submodules, yay!), and made our premake scripts a little smarter. The end result is that it’s a bit easier to get started with Helium, so what are you waiting for? Give it a try.
We are now definitely hitting our stride with the unification process. The pieces are starting to click into place and we are making good progress. It looks like we are on track to begin unifying our object model (the data that backs each in-game object) between the tools and engine next week. A lot of the design work for this has already been done because the line is somewhat blurred between these low level systems that we have been integrating together. Hopefully that makes for continued progress at this pace.
Getting back into the groove after the break. One of the last things we did before we left was design a system for keeping reflection information for our data in memory, even at runtime, which gives us a large boost to flexibility… the difficult part about this being that the runtime portion of the system must adhere to stricter performance requirements. It must be decently fast, and it can’t chew up a lot of memory. Implementation based on that design is now underway. Besides that we are also in the middle of getting the short term task list back in order after our vacation, re-working the “canvas strip” UI to more efficiently use the horizontal tool property space and Andy and I are also preparing for a quick trip to China.
This was somewhat of a short cycle… we lost about a week of time to the holidays and what not, but that being said, we did get a few things squared away. Some progress was made on the unification stuff, we have an actual design in mind of the system that was blocking us previously and we are currently chipping away at that. We also had a chat and laid out the differences in our use of enumerations across the code base, the unification of which is something we will have to tackle soon.
The code merge of the core systems in Lunar and Helium is complete, it all lives under the same roof now. Along the way we removed some duplicate functionality in the cases where sharing would be trivial. Any system that led us into a sticky situation we saved for later discussion, the first of these being our serialization system. Mostly this cycle we learned that our serialization systems are too diverse to simply merge into one, so we decided to merge the parts of it that are similar, and move on for now, at the very least letting us continue to work towards environment construction even if the serialization solution is not perfect.
Helium aims to be an open source game engine toolkit to help provide foundation technology and GUI tools for building game engines (not games per se).
This project was seeded with code from Nocturnal Initiative, an open source project at Insomniac Games. Its continued development is generously funded by Whitemoon Dreams, Inc.