Thursday, January 8, 2009

Various UnBlogged Updates

I've been too busy to write about recent developments. Here is a summary of events since my last post:
  • TideTurner is progressing, visually and gameplay-wise. It now has sound effects, visual effects for damage and spells, a nicer map, and so forth. I hope soon to have it in a nice enough state to set up a server and invite people to connect and play.
  • A smart asset management system has been written. This is a highly-modular system that can ensure you currently have the most recent versions of assets, i.e., you have the same maps, textures, etc., as the server. It handles checking the state of assets and acquiring them. Currently the system is in place for maps, which are both large and likely to change fast, so this was important before setting up a server for people to connect to.
  • The network protocol has been significantly slimmed down: Smaller messages are sent for updating StateVariables, playing sounds, and so forth. Again, this was important to be done before setting up a server.
  • Various code refactorings, which led to both shorter and more manageable code, in particular in the core LogicEntity system.
  • Partial work towards smarter CPU utilization by the physics system: Fewer frames of physics are done for entities that you can't see well, and various physics frame rate parameters are now configurable. The overall result is a significant savings in CPU utilization, on both server and client. However, as I wrote this is 'partial' at this point, in some cases you might notice jerky motion due to not enough physics frames being calculated. The solution will be to carefully fine-tune the physics parameters, which is a complex matter.
    (Note to testers: You can disable the 'smart physics', which will revert to how Sauerbraten does physics - full speed, all the time. You won't see any jerky motion if you do that, but don't try to run dozens of NPCs with such settings if you don't have a powerful machine!)
  • Smooth camera movement, which gives a much nicer 'feel' to the game. Work remains, however, as besides smoothing the camera's movement it also needs to be 'smart' - to move to an appropriate position when in a cramped area, for example. This might be a fun little project for someone thinking about contributing to the Intensity Engine.
  • Various minor bugfixes, as I find them.