Here it is, Snapshot 7, late as usual. I was not able to get it out on Monday, but for snapshot 8 I'll do a feature freeze on Friday, package it and on Saturday I'll start working on Snapshot 9, so I hope that next time thing will be out on schedule. Anyway, the fixed release schedule is just for me, so that I can get used to some release discipline.
The first big feature that nobody will notice was the finishing of the Level class. This is pretty much the last step in my major internal structure refactoring. There is no such thing as a perfect design, but I'll get a great millage out of this one: generic renderer, game specific renderer, standalone terrain and grass components, level, rule set and modules. The introduction of the Level class was very disruptive and I spent a couple of hours fixing null pointer exceptions. Hopefully I fixed them all.
For GUI, I introduced a new set of conventions, both in code and GUI design. I'm going with a more compact and panel based representation, inspired by some other game engines. Here is a sample:
Looks about the same, but in the background things are different. Until snapshot 10 I need to finish both the refactoring and the fundamental mod GUI.
Then I uploaded this video:
I don't think that I'll go with the dropping from the sky them. I'll try to go with an organic build/progressive update scheme, and if this does not work, I'll try the Assasssin's Creed III Animus Simulation fade in. Anyway, most of the systems will be the same, so I had to fix this. The foundation button has been disabled for quite a few snapshots. That was no placeholder, dropping and terrain deformation worked, only it was far too slow. Setting the foundation is extremely difficult and time consuming, both as development and CPU time. You need to:
- Determine if this is a good place to drop. Currently, I'm always dropping, but there are some places where it is not a good idea, like on an almost vertical wall or on a patch of terrain with huge height differences. You need to sample the terrain in a wide radius and determine somehow how disruptive the terrain change would be and reject spots above some threshold.
- Deform the terrain. Very time consuming on such a large area. I''ll try to animate it in the future, not just for the looks, but for spreading out the task over time. The deformation is particularly hard because of chunked nature of terrain and the myriad of caches and pools it uses. They all must be updated, or else you get memory leaks or the terrain will disappear under you feet.
- Remove the grass. Again, same story: chunks and caches.
- Do something about objects that are under the falling platform. I did not do anything with this. In the future they will be destroyed.
- Do something with objects near the point the impact that don't get crushed. I did not do anything with this. I'll apply some explosion like effect, making the objects get thrown in a direction based on their angle to the point of impact, simulating a shock-wave.
So it is hard and I'm not done. The last two points are not implemented. And you also get ugly results when putting platforms very close one to another. And you can drop them on your head. It won't kill you, but It might get you stuck in the terrain. So still a lot to do.
Oh, and persistence. When loading the map the platforms should be still there. Unfortunately, I did not have enough time for persistence. I did not want to half ass it.
BY AGREEING TO DOWNLOAD THIS SOFTWARE, YOU TAKE TOTAL RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE OR MISUSE OF THE SOFTWARE. I AM NOT TO BE HELD RESPONSIBLE FOR ANY POSSIBLE HARM THAT CAN BE CAUSED BY THE SOFTWARE NOR DO I GUARANTEE THAT IT IS FIT FOR ANY PARTICULAR PURPOSE OR THAT THE INTEGRITY OF THE SOFTWARE WILL BE PRESERVED WHILE BEING TRANSFERRED ON ANY AND ALL MEANS OF COMMUNICATION.
Link: Snapshot 7