that the client can show them as cubes before they are actually sent\r
or even generated.\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
Gaming ideas:\r
-------------\r
\r
\r
TODO: Better control of draw_control.wanted_max_blocks\r
\r
-TODO: Block mesh generator to tile properly on smooth lighting\r
+TODO: Further investigate the use of GPU lighting in addition to the\r
+ current one\r
+\r
+TODO: Artificial (night) light could be more yellow colored than sunlight.\r
+ - This is technically doable.\r
+ - Also the actual colors of the textures could be made less colorful\r
+ in the dark but it's a bit more difficult.\r
+\r
+SUGG: Somehow make the night less colorful\r
\r
Configuration:\r
--------------\r
\r
FIXME: When disconnected to the menu, memory is not freed properly\r
\r
+TODO: Investigate how much the mesh generator thread gets used when\r
+ transferring map data\r
+\r
Server:\r
-------\r
\r
\r
FIXME: The new optimized map sending doesn't sometimes send enough blocks\r
from big caves and such\r
+FIXME: Block send distance configuration does not take effect for some reason\r
+\r
+TODO: Map saving should be done by EmergeThread\r
+\r
+SUGG: Map unloading based on sector reference is not very good, it keeps\r
+ unnecessary stuff in memory. I guess. Investigate this.\r
\r
-* Take player's walking direction into account in GetNextBlocks\r
+TODO: When block is placed and it has param_type==CPT_FACEDIR_SIMPLE, set\r
+ the direction accordingly.\r
\r
Environment:\r
------------\r
\r
-TODO: A list of "active blocks" in which stuff happens.\r
+TODO: A list of "active blocks" in which stuff happens. (+=done)\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
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
+ - There are TODOs in appropriate files: material.h, content_mapnode.h\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
+Mapgen v2 (the current one):\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
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
+* Consider not updating this one and make a good mainly block-based\r
+ generator\r
+\r
+SUGG: Make two "modified states", one that forces the block to be saved at\r
+ the next save event, and one that makes the block to be saved at exit\r
+ time.\r
+\r
+TODO: Add a not_fully_generated flag to MapBlock, which would be set for\r
+ blocks that contain eg. trees from neighboring generations but haven't\r
+ been generated itself. This is required for the future generator.\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
+- Make sure server handles removing grass when a block is placed (etc)\r
+ - The client should not do it by itself\r
+- Block cube placement around player's head\r
+- Protocol version field\r
+- Consider getting some textures from cisoun's texture pack\r
+ - Ask from Cisoun\r
+- Make sure the fence implementation and data format is good\r
+ - Think about using same bits for material for fences and doors, for\r
+ example\r
+- Finish the ActiveBlockModifier stuff and use it for something\r
+- Move mineral to param2, increment map serialization version, add conversion\r
+\r
+TODO: Add a per-sector database to store surface stuff as simple flags/values\r
+ - Light?\r
+ - A building?\r
+ And at some point make the server send this data to the client too,\r
+ instead of referring to the noise functions\r
+ - Ground height\r
+ - Surface ground type\r
+ - Trees?\r
+\r
+TODO: Restart irrlicht completely when coming back to main menu from game.\r
+ - This gets rid of everything that is stored in irrlicht's caches.\r
+\r
+TODO: Merge bahamada's audio stuff (clean patch available)\r
+\r
+TODO: Merge spongie's chest/furnace direction (by hand)\r
+\r
+TODO: Merge key configuration menu (no clean patch available)\r
\r
Making it more portable:\r
------------------------\r
\r
Stuff to do after release:\r
---------------------------\r
-- Make sure server handles removing grass when a block is placed (etc)\r
- - The client should not do it by itself\r
-- Block cube placement around player's head\r
-- Protocol version field\r
-- Consider getting some textures from cisoun's texture pack\r
- - Ask from Cisoun\r
-- Make sure the fence implementation and data format is good\r
- - Think about using same bits for material for fences and doors, for\r
- example\r
-- Finish the ActiveBlockModifier stuff and use it for something\r
-- Move mineral to param2, increment map serialization version, add conversion\r
+\r
+Doing currently:\r
+----------------\r
+\r
+TODO: Use MapBlock::resetUsageTimer() in appropriate places\r
+ (on client and server)\r
\r
======================================================================\r
\r
// Initialize porting::path_data and porting::path_userdata\r
porting::initializePaths();\r
\r
+ // Create user data directory\r
+ fs::CreateDir(porting::path_userdata);\r
+ \r
// Initialize debug streams\r
#ifdef RUN_IN_PLACE\r
std::string debugfile = DEBUGFILE;\r
\r
DSTACK(__FUNCTION_NAME);\r
\r
- // Create user data directory\r
- fs::CreateDir(porting::path_userdata);\r
- \r
// Init material properties table\r
- initializeMaterialProperties();\r
+ //initializeMaterialProperties();\r
\r
// Debug handler\r
BEGIN_DEBUG_EXCEPTION_HANDLER\r
Preload some textures and stuff\r
*/\r
\r
- init_content_inventory_texture_paths();\r
init_mapnode(); // Second call with g_texturesource set\r
init_mineral();\r
\r