Hello players,
this dev version has some optimizations to eliminate bottlenecks.
get it here: http://files.star-made.org/build/pre/starmade-build_20131011_093740.zip
(as always: "dev" is username/password. The build will be installed onto play.star-made.org:4242 Please be careful with installing the build onto a game server, as pre-builds can contain game breaking bugs.)
Physics optimization:
By developing an algorithm from a combination of these two papers:
Casting rays onto block structures has been vastly improved. While it won't make much difference in a quiet game (doesn't affect block/block collisions), it make a huge difference when things get crowded. Shooting a barrage of from the side through a planet moved (for me) from 2fps when shooting to 140fps. It will especially be valuable in battles of big ships.
Further optimization of block/block physics will also be in focus soon.
Request/IO optimization:
The synchronization of reading blocks from disk was brought to a finer level. I replaced an object wide lock when reading and writing with a file read/write reentrant lock. This basically means that many thready may read from files at once. Should a write occur, the write lock will wait for all current read locks to finish. While writing, no write lock can be acquired until it's finished. This ensures that dirty data is not read, but also multiple threads can do IO at once.
Furthermore a thread pool is now used to distribute the requests for segments. This will give a lot better efficiency for the server handling and answering requests.
The build needs some time to test to make sure, there is no mistake in the IO request, and deadlocks are not happening (I have strict locking order, but you never know)
Thanks for testing,
and thanks for playing StarMade,
- schema
this dev version has some optimizations to eliminate bottlenecks.
get it here: http://files.star-made.org/build/pre/starmade-build_20131011_093740.zip
(as always: "dev" is username/password. The build will be installed onto play.star-made.org:4242 Please be careful with installing the build onto a game server, as pre-builds can contain game breaking bugs.)
Physics optimization:
By developing an algorithm from a combination of these two papers:
- http://www.cse.chalmers.se/edu/year/2010/course/TDA361/grid.pdf
- http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=671DC2838F2E887337D2CE9395154BCB?doi=10.1.1.29.987&rep=rep1&type=pdf
Casting rays onto block structures has been vastly improved. While it won't make much difference in a quiet game (doesn't affect block/block collisions), it make a huge difference when things get crowded. Shooting a barrage of from the side through a planet moved (for me) from 2fps when shooting to 140fps. It will especially be valuable in battles of big ships.
Further optimization of block/block physics will also be in focus soon.
Request/IO optimization:
The synchronization of reading blocks from disk was brought to a finer level. I replaced an object wide lock when reading and writing with a file read/write reentrant lock. This basically means that many thready may read from files at once. Should a write occur, the write lock will wait for all current read locks to finish. While writing, no write lock can be acquired until it's finished. This ensures that dirty data is not read, but also multiple threads can do IO at once.
Furthermore a thread pool is now used to distribute the requests for segments. This will give a lot better efficiency for the server handling and answering requests.
The build needs some time to test to make sure, there is no mistake in the IO request, and deadlocks are not happening (I have strict locking order, but you never know)
Thanks for testing,
and thanks for playing StarMade,
- schema