We would first like to apologise for the delay since the last blog post. We have hit a snag with one of our dependencies in the game's code which has meant that we will need to replace it with a custom solution. For the sake of long-term development it made the most sense to write our own version of that dependency and integrate it with the engine. We have also hit some technical issues on the video front, and the interview with Ben should be released next weekend!
For our next installment of Developer Delvings, we have some cool new developments. These range from game design, to programming developments, all the way to the development of a web application for powering service related to SoA, and Regrowth Studios as a whole!
In short, we are continuing the quest to make Seed of Andromeda more accessible, unique, and smoooooooth. Giving you as interesting and as fun an experience as possible. Now for the details...
Flora generation now allows for single and multi-block forms, such as the death cacti and tall grass. This will make the worlds you can explore that bit more interesting, and give that bit more power to the procedural generation engine behind the majority of environments you'll encounter.
In that same vein, we have also worked on large tree generation with sub-flora as fruit, and space colonization for branches. Space Colonization is a method to generate realistic branches that avoid each other and seek out light. However, this method is much slower than the cellular automata branch generation. For those Computer Science gurus out there, Space Colonization is O(n * n * m) in complexity, whereas cellular automata is between O(n) and O(n * n) depending on the parameters. For this reason, we are using both methods in our tree generation. For smaller trees, typically cellular automata generation is just fine, and overlapping branches aren't too much of a problem. But for giant trees like the one below, space colonization can generate the main branches then cellular automata can generate the sub-branches. All of this happens quite fast as long as you keep the number of data points for the colonization low, and make sure to use a good step size. When we make our tree editor, we will make sure that it flags performance warnings, so that modders can be sure that their trees won't take forever to generate!
We've also optimized generation of flora a bit more with some really clever usage of bitfields. Trees are generated on a separate thread without any information about the grid, and then are pasted on to the grid later as a performance boost. Because of this, we send a list of "nodes" to the main thread for placement. Before, if two branches overlapped, the nodes for those branches would both be sent to the main thread to be placed, which is a waste of time and memory. Now, overlapping nodes do not cause redundant voxel edits, because most overlaps are discarded! This yielded a pretty significant boost to performance with trees that have lots of overlapping branches, like bargonite crystals! ( yes, crystals use the tree generator :P )
Now let's talk about voxels a bit. The voxel acquire/release API allows for mods to “Acquire” and “Release” certain chunks, guaranteeing that the chunks will be in memory for as long as they are acquired by at least one thread. It is essentially a refcounting system for voxel data. This doesn’t provide much of a performance benefit over the old method with regards to basic gameplay, but it gives modders and code a much easier thread-safe API for getting access to the voxel grid. And it greatly simplifies the code, which is good for us, and in extension you!
The writers have been hard at work determining the overall structure of the game story. This is at a high level and is lending itself to making it easier to specify detailed things about the different factions in the story. They have been discussing the alien race that shoots down the colonists in some significant detail, as well as the humans and some other factions that are yet to be revealed!
There has also been work done on a web application that will serve user, modding, forum, blog and other functionalities related to SoA, and ultimately other Regrowth Studios projects. The application is being designed to be very powerful, allowing it to be integrated with more than just a single website - instead multiple websites and clients. The modding service that will be a part of it will be critical to making the modding experience as easy for both creators and users as possible. There will be more info to come on this, so keep your eyes peeled!
Finally, we have been investigating the best server infrastructure for this web application, and have begun setting it up for implementing the application. It will be far more powerful than the server infrastructure we currently use, allowing many more concurrent users of the web application. The server being courtesy of our own Jeremy, who has put in a lot of work towards this side of the work.
That’s it for now! Back to work for us. Be sure to let us know what you think of this progress in the comments or on the forums!