Re: OP plans and progress
Posted by Jeff Disher
Reply to: OP plans and progress (Posted by Posted by Jeff Disher)
Re: OP plans and progress
Work on this continues. The custom portal creation mechanics are in place and seem to be working. A few more of the hard-coded bits of configuration have been formalized into data files.

The way that block damage is handled has been changed a bit. Originally, I wanted to make the data files specify tool durability and block toughness in milliseconds, but then handle the internal representation in terms of ticks. This created a bunch of bootstrapping problems (for example, the client couldn't cleanly initialize its internal data representations prior to connecting to the server, which seemed suboptimal). In the end, all I did was formalize all of this to use milliseconds and increase the precision of the block damage value from 2^15 bits to 2^31 bits, which now means blocks can be harder than what you can break with a bare hand in 32 seconds. As a result, I was able to rebalance the block toughness so that the tools now feel worth-while.

Simplified some client-side logic to avoid redundant data and extraneous levels of indirection (and levels of delayed callbacks).

Made a bunch of changes to how the network packs data allowing for a much shorter path length (and far less frequent monitor acquires) and more aggressive and dynamic network usage.

The 27 cuboids around world spawn are now always kept alive, which should improve the feel of start-up and initial server connection.

There is still more work to do to formalize all the remaining inline item type references, in the core code, but these are coming along.

Some of the big questions still to answer are how entities/creatures/passives can/could/should be queried (both from a design perspective, but also in terms of scalability) as well as how to change the hopper logic for how passives interact with it. Currently, the passive items "push" themselves into the hopper, if one is there, but this design seems backward. Ideally, something like a hopper could register for callbacks of when some kind of entity enters a certain volume relative to it, but I am not sure how is best to formalize that (it would make more sense but would also allow for things like "fans", etc, to push or otherwise interact with things in the world without polling).

I also have a few ideas for what to improve in a future performance update: On-disk resource management as well as hot points around things like height map reconstruction.

As expected, this task is becoming large since it is quite broad, in plan, but little was known about the depth (which has been quite the mix). Still, at least it is something interesting to do,
Jeff.