loftar wrote:Well, probably the single greatest culprit is the fact that the smallest unit of map that the server deals with is 1000x1000 tiles, which means that even a house world of 4x4 tiles still takes 1 MB to store all the nil-tiles. I could, of course, optimize it by using more dynamic map sizes, but only at the cost of more computation in fetching tiles, so since storing 25 GB doesn't even enter into the realm of the problematic, it has seemed to me like a reasonable time-space tradeoff to do.
You could use power of two grid sizes for map tiles, with that the pointer arithmetric to get the offset of the tile becomes cheaper (since you can shift instead of base10 multiply/divide), this should outperform (or at least offset) the cost of fetching the grid size calculation.
Also - in case the map tiles are stored as individual files on disk - lz4 compression (or at least RLE to get rid of the voids) could boil down on-disk space, (de)compression is cheap compared to disk I/O.
jorb wrote:Ninijutsu wrote:Is it a big deal whether there are pocket universes or not? What would be so great about not having them besides saving storage space on the server?
Removing the ugly interface between the two worlds, which is a predictable source of positional confusion, and other ugliness.
If a house is destroyed, for example, a player in it will need to be placed in a position in the world outside the house, a position which does not necessarily -- it's hard to guarantee -- have full integrity in terms of being a position the player could actually have walked to. Historically this has made houses and the like a constant source of various wall-jumps and other such exploits.
When destorying a house the code could first remove the house and then place the objects inside on the space prior cooupied by it.
Overlap could be ignored in case all objects (apart from players) are destroyed (so only invobjs are placed), players that overlap could run out of the other (like it works with doors currently). In case this sounds to harsh the objects destroyed could yield a part of their material (which imho should happen anyway when destroying objects).
Voila: no more wall jumps, plus the items from the house are accessible instead of spawning inside other objects around.
zacty wrote:I'm not saying that someone who only plays a couple hours a day and only has a couple hundred K LP should be able to beat a guy who plays all day and has many millions into combat skills [...]
I say that someone who only plays a couple of hours a day should have a
chance to beat the nolifer.
There have been several suggestions to limit the advantage of skill differences (so more skill helps only up to a point, no more godmode on high skill deltas), this would be imho the way to go.