+TODO: Untie client network operations from framerate\r
+ - Needs some input queues or something\r
+ - This won't give much performance boost because calculating block\r
+ meshes takes so long\r
+\r
+SUGG: Make morning and evening transition more smooth and maybe shorter\r
+\r
+TODO: Don't update all meshes always on single node changes, but\r
+ check which ones should be updated\r
+ - implement Map::updateNodeMeshes() and the usage of it\r
+ - It will give almost always a 4x boost in mesh update performance.\r
+\r
+- A weapon engine\r
+\r
+- Tool/weapon visualization\r
+\r
+FIXME: When disconnected to the menu, memory is not freed properly\r
+\r
+Server:\r
+-------\r
+\r
+SUGG: Make an option to the server to disable building and digging near\r
+ the starting position\r
+\r
+FIXME: Server sometimes goes into some infinite PeerNotFoundException loop\r
+\r
+* Fix the problem with the server constantly saving one or a few\r
+ blocks? List the first saved block, maybe it explains.\r
+ - It is probably caused by oscillating water\r
+* Make a small history check to transformLiquids to detect and log\r
+ continuous oscillations, in such detail that they can be fixed.\r
+\r
+FIXME: The new optimized map sending doesn't sometimes send enough blocks\r
+ from big caves and such\r
+\r
+Environment:\r
+------------\r
+\r
+TODO: A list of "active blocks" in which stuff happens.\r
+ + Add a never-resetted game timer to the server\r
+ + Add a timestamp value to blocks\r
+ + The simple rule: All blocks near some player are "active"\r
+ - Do stuff in real time in active blocks\r
+ + Handle objects\r
+ TODO: Make proper hooks in here\r
+ - Grow grass, delete leaves without a tree\r
+ - Spawn some mobs based on some rules\r
+ - Transform cobble to mossy cobble near water\r
+ - Run a custom script\r
+ - ...And all kinds of other dynamic stuff\r
+ + Keep track of when a block becomes active and becomes inactive\r
+ + When a block goes inactive:\r
+ + Store objects statically to block\r
+ + Store timer value as the timestamp\r
+ + When a block goes active:\r
+ + Create active objects out of static objects\r
+ TODO: Make proper hooks in here\r
+ - Simulate the results of what would have happened if it would have\r
+ been active for all the time\r
+ - Grow a lot of grass and so on\r
+ + Initially it is fine to send information about every active object\r
+ to every player. Eventually it should be modified to only send info\r
+ about the nearest ones.\r
+ + This was left to be done by the old system and it sends only the\r
+ nearest ones.\r
+\r
+Objects:\r
+--------\r
+\r
+TODO: Get rid of MapBlockObjects and use only ActiveObjects\r
+ - Skipping the MapBlockObject data is nasty - there is no "total\r
+ length" stored; have to make a SkipMBOs function which contains\r
+ enough of the current code to skip them properly.\r
+\r
+SUGG: MovingObject::move and Player::move are basically the same.\r
+ combine them.\r
+ - NOTE: Player::move is more up-to-date.\r
+ - NOTE: There is a simple move implementation now in collision.{h,cpp}\r
+ - NOTE: MovingObject will be deleted (MapBlockObject)\r
+\r
+Map:\r
+----\r
+\r
+TODO: Mineral and ground material properties\r
+ - This way mineral ground toughness can be calculated with just\r
+ some formula, as well as tool strengths\r
+\r
+TODO: Flowing water to actually contain flow direction information\r
+ - There is a space for this - it just has to be implemented.\r
+\r
+SUGG: Erosion simulation at map generation time\r
+ - Simulate water flows, which would carve out dirt fast and\r
+ then turn stone into gravel and sand and relocate it.\r
+ - How about relocating minerals, too? Coal and gold in\r
+ downstream sand and gravel would be kind of cool\r
+ - This would need a better way of handling minerals, mainly\r
+ to have mineral content as a separate field. the first\r
+ parameter field is free for this.\r
+ - Simulate rock falling from cliffs when water has removed\r
+ enough solid rock from the bottom\r
+\r
+SUGG: Try out the notch way of generating maps, that is, make bunches\r
+ of low-res 3d noise and interpolate linearly.\r
+\r
+Mapgen v2:\r
+* Possibly add some kind of erosion and other stuff\r
+* Better water generation (spread it to underwater caverns but don't\r
+ fill dungeons that don't touch big water masses)\r
+* When generating a chunk and the neighboring chunk doesn't have mud\r
+ and stuff yet and the ground is fairly flat, the mud will flow to\r
+ the other chunk making nasty straight walls when the other chunk\r
+ is generated. Fix it. Maybe just a special case if the ground is\r
+ flat?\r
+\r
+Misc. stuff:\r
+------------\r
+* Move digging property stuff from material.{h,cpp} to mapnode.cpp\r
+ - ...Or maybe move content_features to material.{h,cpp}?\r
+\r
+Making it more portable:\r
+------------------------\r
+ \r
+Stuff to do before release:\r
+---------------------------\r
+- Player default privileges and default password\r
+- Chat privilege\r
+- Some simple block-based dynamic stuff in the world (finish the\r
+ ActiveBlockModifier stuff)\r
+- Protocol version field\r
+- Consider getting some textures from cisoun's texture pack\r
+- Add a long step function to objects that is called with the time\r
+ difference when block activates\r
+\r
+======================================================================\r