My Colony 2 is in the middle of a major overhaul to both it's logic and rendering engines. This update brings many changes that have been suggested by the community, so let's take a look at what is here and what is soon to come.
From a technical standpoint, My Colony 2 v0.40.0 (the previous release) and v0.41.0 (this release) are not even the same game. What started as a suggestion from @spamdude
to process foreground settlement logic the same way background settlements are processed basically transformed into a complete rewrite of the game's server code. There is now almost no similarity in the way the game is processed compared to previous releases.
Everything in My Colony 2 is now simulated based on structure statistics, the only exception being unit/resource harvesting. This was actually going to be the original design for My Colony 2, but when I was soliciting community feedback at the beginning, there was a strong preference to have 100% accurate production stats with visible structure output bars, so the idea was scrapped (I was also going to simulate resource harvesting but that was also not a popular idea). With settlements and worlds now getting larger and larger though, I think it became apparent to many that the simulated model was best, and the game engine has now been rewritten accordingly.
This update is all about game performance, and the logic thread of the game should now be able to handle games that are several orders of magnitude larger than the largest colonies currently in existence. It is possible that some things might currently be broken or might not be working the way they were. Honestly I changed so many things this update that it would be quite easy for something to have slipped through the cracks, so please let me know in this thread or elsewhere in the forum what I may have missed. In general though, expect game performance to be much improved in this update.
Since I was already working on performance, I have been wanting to make a change to the Scroll3D engine for some time related to 3d model instancing. Basically, instead of creating a new 3d model for each structure in the game, you create one "instance" of the model which is reused/redrawn by the GPU multiple times. If you would like to see an example on how this can impact performance, please see the following WebGL example that the new code was inspired by: https://threejs.org/examples/?q=instan#webgl_instancing_performance
The reason I could not easily do this, is because 3d models using regular materials could not have both the regular face colors and the glowing "emissive" face colors without using two separate 3d models. Ultimately what I had to do was write my own custom 3d model shader material for Voxel Paint files, which now allows for regular, emissive, and metallic faces in one single model.
Lightmaps and Metallic maps are now baked right into the 3d model geometries when they are compiled in Voxel Paint. If models do not have this infomation baked in, they will need to be recompiled by the engine at run time. I already went through and recompiled most of the models in the game (especially the larger ones) so I don't think it will be much of a problem for MC2, and Voxel Paint will now automatically do this for all .vpp files going forward. This data actually makes precompiled .vpp files slightly larger, but it's not by much and I think it is worth it.
Using the new model light and metallic maps does incur a slight performance cost, as there is more shader processing that needs to be done on the models. For this reason, I have introduced two new engine settings for turning on/off voxel emissive and metallic properties. If you are on a mobile or do not have much of a GPU on your system, you can try turning them both off and seeing if it helps.
This update also removes the Depth of Field effect (Bokeh effect) from the game, the effect that would blur out the background. I might bring this back in the future, but it just wasn't focusing correctly and I did not have time to properly debug it.
So those are the main engine changes in this update. It might not seem like a ton, but it's basically all I have been working on for the past several weeks. TBH there is probably more that needs done too (please let me know), but I can't keep grinding on this update for MC2 while all of my other projects slip behind schedule, so further changes will need to wait.
There are some minor content related changes as well. Firstly, the Tree Farm
and the Palm Sapling
are now buildable on the Forest World, which was an accidental oversight on my part. In addition, the Spice Den
can now be built on the Spice World again.
3D model art has been updated for the following structures: Barracks, Construction Yard, City Hall, Golden Shelter
and Spice Drilling Operation
Finally, two new structures from @spamdude
have been added to the game, the Crystalline Trap
and the Crystallizer Array
, both Ice World exclusives.
I know there are now quite a few Voxel Art submissions waiting to be added to the game in the backlog. I hope to be able to get to all of these in the next update, and if I don't have to end up rewriting the whole game again then my plan is to work on those for 0.42.0. There are also changes that need to be made to the GBT to address spamming and other issues, and those are also on the list.
Hopefully the next update will not be so technically intensive and I can go back to adding fun stuff, but that will depend on how many bugs these changes introduced, so please let me know what issues you find in this release, thanks for playing mc2 and stay tuned for more!