g_settings.setDefault("fast_move", "false");
// Server stuff
- g_settings.setDefault("fast_move", "false");
-
g_settings.setDefault("enable_experimental", "false");
g_settings.setDefault("creative_mode", "false");
g_settings.setDefault("enable_damage", "false"); //TODO: Set to true
+ g_settings.setDefault("give_initial_stuff", "false");
g_settings.setDefault("objectdata_interval", "0.2");
g_settings.setDefault("active_object_range", "2");
=============================== NOTES ==============================\r
NOTE: Things starting with TODO are sometimes only suggestions.\r
\r
-NOTE: VBO cannot be turned on for fast-changing stuff because there\r
- is an apparanet memory leak in irrlicht when using it (not sure)\r
- - It is not a memory leak but some kind of a buffer.\r
-\r
NOTE: iostream.imbue(std::locale("C")) is very slow\r
NOTE: Global locale is now set at initialization\r
\r
+NOTE: If VBO (EHM_STATIC) is used, remember to explicitly free the\r
+ hardware buffer (it is not freed automatically)\r
+\r
Random suggeestions (AKA very old suggestions that haven't been done):\r
----------------------------------------------------------------------\r
\r
SUGG: Fix address to be ipv6 compatible\r
\r
-NOTE: When a new sector is generated, it may change the ground level\r
- of it's and it's neighbors border that two blocks that are\r
- above and below each other and that are generated before and\r
- after the sector heightmap generation (order doesn't matter),\r
- can have a small gap between each other at the border.\r
-SUGG: Use same technique for sector heightmaps as what we're\r
- using for UnlimitedHeightmap? (getting all neighbors\r
- when generating)\r
-\r
SUGG: If player is on ground, mainly fetch ground-level blocks\r
\r
SUGG: Expose Connection's seqnums and ACKs to server and client.\r
sometimes very big by themselves\r
- This might not give much network performance gain though.\r
\r
-SUGG: Split MapBlockObject serialization to to-client and to-disk\r
- - This will allow saving ages of rats on disk but not sending\r
- them to clients\r
- - Not applicable. MapBlockObjects will be removed in the future.\r
-\r
SUGG: Precalculate lighting translation table at runtime (at startup)\r
- This is not doable because it is currently hand-made and not\r
based on some mathematical function.\r
---------\r
\r
SUGG: Combine MapBlock's face caches to so big pieces that VBO\r
- gets used\r
+ can be used\r
- That is >500 vertices\r
- This is not easy; all the MapBlocks close to the player would\r
still need to be drawn separately and combining the blocks\r
\r
TODO: Flowing water animation\r
\r
-SUGG: Combine meshes to bigger ones in ClientMap and set them EHM_STATIC\r
-\r
SUGG: Draw cubes in inventory directly with 3D drawing commands, so that\r
animating them is easier.\r
\r
SUGG: Option for enabling proper alpha channel for textures\r
-\r
-TODO: Make all water not backside culled\r
+TODO: A setting for enabling bilinear filtering for textures\r
\r
Configuration:\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
\r
Map:\r
----\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
{
setCreativeInventory(player);
}
- else
+ else if(g_settings.getBool("give_initial_stuff"))
{
- /*{
- InventoryItem *item = new ToolItem("WPick", 32000);
+ {
+ InventoryItem *item = new ToolItem("SteelPick", 0);
void* r = player->inventory.addItem("main", item);
assert(r == NULL);
- }*/
+ }
+ {
+ InventoryItem *item = new MaterialItem(CONTENT_TORCH, 99);
+ void* r = player->inventory.addItem("main", item);
+ assert(r == NULL);
+ }
+ {
+ InventoryItem *item = new ToolItem("SteelAxe", 0);
+ void* r = player->inventory.addItem("main", item);
+ assert(r == NULL);
+ }
+ {
+ InventoryItem *item = new ToolItem("SteelShovel", 0);
+ void* r = player->inventory.addItem("main", item);
+ assert(r == NULL);
+ }
+ {
+ InventoryItem *item = new MaterialItem(CONTENT_COBBLE, 99);
+ void* r = player->inventory.addItem("main", item);
+ assert(r == NULL);
+ }
/*{
InventoryItem *item = new MaterialItem(CONTENT_MESE, 6);
void* r = player->inventory.addItem("main", item);
void* r = player->inventory.addItem("main", item);
assert(r == NULL);
}*/
- /*// Give some lights
- {
- InventoryItem *item = new MaterialItem(CONTENT_TORCH, 999);
- bool r = player->inventory.addItem("main", item);
- assert(r == true);
- }
- // and some signs
+ /*// and some signs
for(u16 i=0; i<4; i++)
{
InventoryItem *item = new MapBlockObjectItem("Sign Example text");