cleaning notes and stuff

This commit is contained in:
Perttu Ahola 2011-04-06 11:34:41 +03:00
parent 12f8f09f8c
commit 90234e35a6
2 changed files with 32 additions and 70 deletions

@ -10,7 +10,7 @@
#else
#define BUILD_TYPE "Debug"
#endif
#define BUILD_INFO "VER="VERSION_STRING" BUILD_DATE=@BUILD_DATE@ RUN_IN_PLACE=@RUN_IN_PLACE@ INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ BUILD_TYPE="BUILD_TYPE
#define BUILD_INFO "VER="VERSION_STRING" RUN_IN_PLACE=@RUN_IN_PLACE@ INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ BUILD_TYPE="BUILD_TYPE
#endif

@ -28,8 +28,8 @@ NOTE: VBO cannot be turned on for fast-changing stuff because there
NOTE: iostream.imbue(std::locale("C")) is very slow
NOTE: Global locale is now set at initialization
Random suggeestions:
--------------------
Random suggeestions (AKA very old suggestions that haven't been done):
----------------------------------------------------------------------
SUGG: Fix address to be ipv6 compatible
@ -42,12 +42,7 @@ SUGG: Use same technique for sector heightmaps as what we're
using for UnlimitedHeightmap? (getting all neighbors
when generating)
SUGG: Transfer more blocks in a single packet
SUGG: A blockdata combiner class, to which blocks are added and at
destruction it sends all the stuff in as few packets as possible.
SUGG: If player is on ground, mainly fetch ground-level blocks
SUGG: Fetch stuff mainly from the viewing direction
SUGG: Expose Connection's seqnums and ACKs to server and client.
- This enables saving many packets and making a faster connection
@ -61,23 +56,21 @@ SUGG: More fine-grained control of client's dumping of blocks from
SUGG: A map editing mode (similar to dedicated server mode)
SUGG: Add a time value to the param of footstepped grass and check it
against a global timer when a block is accessed, to make old
steps fade away.
SUGG: Make a copy of close-range environment on client for showing
on screen, with minimal mutexes to slow down the main loop
SUGG: Transfer more blocks in a single packet
SUGG: A blockdata combiner class, to which blocks are added and at
destruction it sends all the stuff in as few packets as possible.
SUGG: Make a PACKET_COMBINED which contains many subpackets. Utilize
it by sending more stuff in a single packet.
- Add a packet queue to RemoteClient, from which packets will be
combined with object data packets
- This is not exactly trivial: the object data packets are
sometimes very big by themselves
- This might not give much network performance gain though.
SUGG: Split MapBlockObject serialization to to-client and to-disk
- This will allow saving ages of rats on disk but not sending
them to clients
- Not applicable. MapBlockObjects will be removed in the future.
SUGG: MovingObject::move and Player::move are basically the same.
combine them.
@ -91,7 +84,7 @@ SUGG: Precalculate lighting translation table at runtime (at startup)
SUGG: A version number to blocks, which increments when the block is
modified (node add/remove, water update, lighting update)
- This can then be used to make sure the most recent version of
a block has been sent to client
a block has been sent to client, for example
SUGG: Make the amount of blocks sending to client and the total
amount of blocks dynamically limited. Transferring blocks is the
@ -115,12 +108,15 @@ Gaming ideas:
Game content:
-------------
- When furnace is destroyed, move items to player's inventory
- Add lots of stuff, no matter if they have really no real purpose.
- Glass blocks
- WHen furnace is destroyed, move items to player's inventory
- Growing grass, decaying leaves
- This can be done in the active blocks I guess.
- Lots of stuff can be done in the active blocks.
- Uh, is there an active block list somewhere?
- Player health points
- When player dies, throw items on map
Documentation:
--------------
@ -136,32 +132,19 @@ TODO: Get rid of GotSplitPacketException
GUI:
----
TODO: Add gui option to remove map
TODO: Configuration menu, at least for keys
Graphics:
---------
TODO: Optimize day/night mesh updating somehow
- create copies of all textures for all lighting values and only
change texture for material?
- Umm... the collecting of the faces is the slow part
-> what about just changing the color values of the existing
meshbuffers? It should go quite fast.
- This is not easy; There'd need to be a buffer somewhere
that would contain the night and day lighting values.
- Actually if FastFaces would be stored, they could
hold both values
FEATURE: Combine MapBlock's face caches to so big pieces that VBO
SUGG: Combine MapBlock's face caches to so big pieces that VBO
gets used
- That is >500 vertices
- This is not easy; all the MapBlocks close to the player would
still need to be drawn separately and combining the blocks
would have to happen in a background thread
TODO: Make fetching sector's blocks more efficient when rendering
SUGG: Make fetching sector's blocks more efficient when rendering
sectors that have very large amounts of blocks (on client)
- Is this necessary at all?
@ -180,24 +163,19 @@ Configuration:
Client:
-------
TODO: Remove IrrlichtWrapper
TODO: Untie client network operations from framerate
- Needs some input queues or something
- This won't give much performance boost because calculating block
meshes takes so long
SUGG: Make morning and evening transition more smooth and maybe shorter
SUGG: Don't update all meshes always on single node changes, but
TODO: Don't update all meshes always on single node changes, but
check which ones should be updated
- implement Map::updateNodeMeshes()
TODO: Remove IrrlichtWrapper
SUGG: Add a "description" field to InventoryList and show it in
GUIInventoryMenu
- If separate menus are made for everything, this is not needed
TODO: See what is the main slowdown when a node is added or removed
and make it asynchronous at least for other players
- It probably is updateMeshes. How 'bout making it asynchronous?
- implement Map::updateNodeMeshes() and the usage of it
- It will give almost always a 4x boost in mesh update performance.
Server:
-------
@ -205,12 +183,6 @@ Server:
SUGG: Make an option to the server to disable building and digging near
the starting position
TODO: Copy the text of the last picked sign to inventory in creative
mode
TODO: Check what goes wrong with caching map to disk (Kray)
- Nothing?
FIXME: Server sometimes goes into some infinite PeerNotFoundException loop
* Fix the problem with the server constantly saving one or a few
@ -219,9 +191,6 @@ FIXME: Server sometimes goes into some infinite PeerNotFoundException loop
* Make a small history check to transformLiquids to detect and log
continuous oscillations, in such detail that they can be fixed.
TODO: Player health points
- When player dies, throw items on map
FIXME: If something is removed from craftresult with a right click,
it is only possible to get one item from it should give 4
@ -239,27 +208,22 @@ TODO: Mineral and ground material properties
TODO: Flowing water to actually contain flow direction information
FEATURE: Create a system that allows a huge amount of different "map
generator modules/filters"
FEATURE: Erosion simulation at map generation time
- Simulate water flows, which would carve out dirt fast and
then turn stone into gravel and sand and relocate it.
- How about relocating minerals, too? Coal and gold in
downstream sand and gravel would be kind of cool
- This would need a better way of handling minerals, mainly
to have mineral content as a separate field. the first
parameter field is free for this.
- Simulate rock falling from cliffs when water has removed
enough solid rock from the bottom
SUGG: Erosion simulation at map generation time
- Simulate water flows, which would carve out dirt fast and
then turn stone into gravel and sand and relocate it.
- How about relocating minerals, too? Coal and gold in
downstream sand and gravel would be kind of cool
- This would need a better way of handling minerals, mainly
to have mineral content as a separate field. the first
parameter field is free for this.
- Simulate rock falling from cliffs when water has removed
enough solid rock from the bottom
Mapgen v2:
* only_from_disk might not work anymore - check and fix it.
* Make the generator to run in background and not blocking block
placement and transfer
* Possibly add some kind of erosion and other stuff
* Make client to fetch stuff asynchronously
- Needs method SyncProcessData
* Better water generation (spread it to underwater caverns but don't
fill dungeons that don't touch big water masses)
* When generating a chunk and the neighboring chunk doesn't have mud
@ -276,8 +240,6 @@ Misc. stuff:
Make a system for pregenerating quick information for mapblocks, so
that the client can show them as cubes before they are actually sent
or even generated.
* Optimize VoxelManipulator lighting implementation by using indices
in place of coordinates?
Making it more portable:
------------------------