Zico's development blog 3
Hey folks,

Well 0.57 has spent some time online now and I must say I am very satisfied with it. Especially regarding Multiplayer I now have a pretty good picture of what works good and what does not.

As for 0.60 I'd like to "finish" the Multiplayer. "Finish" of course does not mean I'll never do anything on it anymore and this will not yet include the Level downloader (probably) but I am rather referring to the game mechanics. There are a lot of flaws in the Multiplayer code still - partially caused by me, partially caused by "pragmatic" design choices in 95.

I know now what to do and so here's the plan for the future:

First I'd like to release 0.57.1 - a direct Bugfix release for the 0.57 version. Almost every release I ever uploaded had kinda like a "theme". The theme for 0.57 would probably be "the release of the strange bugs". A lot of weird stuff was going on here but I sorted most out. Now I am sitting on the last one or two confusing things and I expect it might not take too long anymore until I can give you a good update.

After that it's time for 0.58. This version will focus on two different things:
a) Optimization.
While the game is already pretty fast, it can be much faster. Especially with my plans to introduce a more accurate dynamic lighting system, the requirements will grow just another bit. Then there's the support for bigger levels that stresses the engine more than it needs to. Also many parts of the engine still could be optimized for a more dynamic and efficient RAM usage. That will also mean that even more engine limits will disappear. For example I finally want to dynamically allocate the segments of a level which makes is probably unnecessary to limit the cubes to 9000. Technically - even with the very restrictive data types the engine currently uses - a cube limit of 32768 should be the most logical result.
All this I am planning for 0.58. It's not the smallest part I ever planned but it's a straightforward work to do. I cannot say how much the optimizations will lower CPU but the RAM usage will drastically shrink and I also want the CPU loaded at least less than it is now - even with the more accurate dynamic lighting.
Some optimizations will also be done after 0.58 but the main work I want to do here.
Since 0.57 contains approximately 5 times more features and tasks I initially wanted to include into this release I can safely focus a bit on this "behind the scenes" work.

b) Towards Host authorative Multiplayer.
Explaination: Host-auhorative Multiplayer means that the Host says what goes and what not. Usually in Descent all Clients decide many actions on their own. Due to packet loss, lag/ping, these decisions can have different outcomes for each player, making the game inconsistent.
A good amount of Feedback helped my to shape a picture of what we really need for a solid Multiplayer experience. And due to the modular design of the Multiplayer and the abstraction between the Networking protocol-support I can safely start working on more reliable techniques.
I am still against a "full" host-authorative Multiplayer as it puts a lot more load on this host and pretty much makes the game unusable for less reliable online connections. Not to mention the work I need to go through. Wink
However I developed some program flow charts listing some good new ways to cover most actions of the game. Almost all program logic except player movements and the basic hit detection - the factors that would increase traffic drastically and require fast online connections for both client and host - will be host authorative or host controlled.
Our packet loss prevention already cares for a lot here but it cannot compensate delayed packets that create inconsistencies in combination with client-side decisions. So these actions will be done by the host. Including doors, powerups - their movement and the decision who is able to collect them - consstant object synchronization and a more reliable control for robots in all game designated game modes.

Also I'd like to decrease the traffic load for the host while increasing the accuracy for the player movement, allowing for better hitting (while this of course will always depend on ping, too).

All additions and changes are designed so that they will work seamlessly with a full host-authorative game design as well if it becomes necessary or desired (i.e. if I become bored enough to do so) - no half-baked patatoes.

And all that I want in 2011. Will be a hot summer!

Stay tuned,
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Very nice Zico, well as for that Hot Summer it's raining kitties and doggies xD  ;D Cool
Can't wait to see even further optimisation. I currently run DXX on a small Atom desktop ( a D510MO does all kinds of useful stuff Wink ) and an EeePC 1005HA ( both Linux ). I have my big hot -n- loud quad-core rig at home as well but the EeePC I take to work with me and it passes lunch time nicely.

I've been getting into DIY solar so perhaps these optimisations would help in a super-tiny ARM-based system ( classic games, light emulation ). Even lower requirements... I'm such a nerd.

...Not that it doesn't already run great! Just saying this kind of work always helps someone or other out. Smile
@XA Hydra,

Yes, it's my goal to optimize the game for small end systems and/or embedded devices. I am using an eeePC myself and I can force clock it down to 1Ghz. It runs VERY smooth (I can safely reach 200FPS) but I want more.
Especially I want to "catch" the increased demands caused by the more accurate dynamic lighting. That's the primary goal.

And I must say (I should have added this to th epost above but I can do it here as well) that probably not all optimizations will take place in 0.58. It's a question of time and workload. 0.58 *should* be released in this year and I hope I can do so. So optimizations that require more time will probably be put to a later release.

I can do several things. In the past I removed some speed optimizations due to glitches they caused. But using them again - in a more controlled way - can help greatly (i.e. using less accurate collisions for powerups, debris and such). Also some code is nbow used in other context and could be optimized for this new use. Especially if some functions come with builtin caching, I can optimize greatly as well - depending on the maount we cache sometimes cache lookups take longer than not caching at all...

So yeah it's a lot I can do and my trusted profiler will be able to help me here. Smile
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
If all goes as planned, v0.57.1 will be released within the next 24 hours.
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
(07-16-2011, 07:24 PM)zico link Wrote:If all goes as planned, v0.57.1 will be released within the next 24 hours.

"I love it when a plan comes together."


zif: Why haven't they fixed that yet :S
Ralathar: Bug report it :p
zif: I'll bug report you
ATTENTION! If you wonder where the Multiplayer discussion went, I decided to split it up to a seperate topic which you can find here:
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Hey folks,

I think you deserve an update.

As you might notice it's going slow these days. Yes it is. I am mostly planning out changes but I am not coding too much these days. Partially this is related to personal things (just running short on time) - partially because I stopped smoking. Even tho I am vaping now to get off the nicotine slowly. Works pretty well. However coding was one of the rituals where I smoked most often - while bruting over problems, after solving an annoying bug, etc.
Right now I am fighting these habits and so I take it slow. I think next week I'll continue more seriously again.

However even tho there is no real development these days I want to raise your attention to another topic which is really important to me:

Please read the linked topic and post your Feedback there. Thank you!

stay tuned,
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!

Just wanted to wish you the best on your efforts to break away from the smokes. Your health certainly comes first.
Hey guys,

I feel it's Update-time for you again. I feel guilty that there weren't so many code changes recently. Well I used to be a motivated coder like many others - but then I took an arrow to the knee... ... I am sorry I should stop being on the internetz for too long.

Anyways please be aware that I haven't given up the project. On the contrary! Still have lotsa good stuff planned for you Mulitplayer guys out there and as soon as the Multiplayer powerup code is rewritten and some other Multiplayer glitches and general bugs are sorted out, I will publish a new release. I work on this hard - I promise. Smile

stay tuned,
- zico

The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!

Forum Jump:

Users browsing this thread: 1 Guest(s)