- added map generating script

- dropped support for versions older than 2 because of lighting support
This commit is contained in:
Perttu Ahola 2010-11-29 12:16:17 +02:00
parent b326e75baa
commit c18af6e728
4 changed files with 66 additions and 40 deletions

38
genmap.py Executable file

@ -0,0 +1,38 @@
#!/usr/bin/python
import struct
import random
def getrand():
i = random.randrange(0,2)
if i==0:
return 0
return 254
"""
Map format:
map/sectors/XXXXZZZZ/YYYY
XXXX,YYYY,ZZZZ = coordinates in hexadecimal
fffe = -2
ffff = -1
0000 = 0
0001 = 1
"""
f = open("map/sectors/00000000/ffff", "wb")
# version
f.write(struct.pack('B', 2))
# is_underground
f.write(struct.pack('B', 0))
for i in range(0,16*16*16):
# Material content
f.write(struct.pack('B', getrand()))
# Brightness
f.write(struct.pack('B', 15))
f.close()

@ -148,9 +148,9 @@ void Client::step(float dtime)
counter -= dtime; counter -= dtime;
if(counter <= 0.0) if(counter <= 0.0)
{ {
counter = 10.0; counter = 20.0;
dout_client<<"Client packetcounter:"<<std::endl; dout_client<<"Client packetcounter (20s):"<<std::endl;
m_packetcounter.print(dout_client); m_packetcounter.print(dout_client);
m_packetcounter.clear(); m_packetcounter.clear();
} }

@ -1780,16 +1780,15 @@ MapBlock * ServerMap::emergeBlock(
MapNode n; MapNode n;
n.d = MATERIAL_MESE; n.d = MATERIAL_MESE;
if(rand()%8 == 0) if(is_ground_material(block->getNode(cp).d))
block->setNode(cp, n); if(rand()%8 == 0)
block->setNode(cp, n);
for(u16 i=0; i<26; i++) for(u16 i=0; i<26; i++)
{ {
if(!is_ground_material(block->getNode(cp+g_26dirs[i]).d)) if(is_ground_material(block->getNode(cp+g_26dirs[i]).d))
continue; if(rand()%8 == 0)
block->setNode(cp+g_26dirs[i], n);
if(rand()%8 == 0)
block->setNode(cp+g_26dirs[i], n);
} }
} }
} }
@ -1798,15 +1797,25 @@ MapBlock * ServerMap::emergeBlock(
/* /*
Create a few rats in empty blocks underground Create a few rats in empty blocks underground
*/ */
/*if(is_underground && low_block_is_empty == true) if(is_underground)
{ {
//for(u16 i=0; i<2; i++) //for(u16 i=0; i<2; i++)
{ {
v3s16 pos(8, 1, 8); v3s16 cp(
RatObject *obj = new RatObject(NULL, -1, intToFloat(pos)); (rand()%(MAP_BLOCKSIZE-2))+1,
block->addObject(obj); (rand()%(MAP_BLOCKSIZE-2))+1,
(rand()%(MAP_BLOCKSIZE-2))+1
);
// Check that the place is empty
//if(!is_ground_material(block->getNode(cp).d))
if(1)
{
RatObject *obj = new RatObject(NULL, -1, intToFloat(cp));
block->addObject(obj);
}
} }
}*/ }
/* /*
Add block to sector. Add block to sector.
@ -2491,31 +2500,8 @@ void ServerMap::loadBlock(std::string sectordir, std::string blockfile, MapSecto
Convert old formats to new and save Convert old formats to new and save
*/ */
if(version == 0 || version == 1) // Save old format blocks in new format
{ if(version < SER_FMT_VER_HIGHEST)
dstream<<"Block ("<<p3d.X<<","<<p3d.Y<<","<<p3d.Z<<")"
" is in old format. Updating lighting and saving"
" modified blocks in new format."<<std::endl;
// Old version has zero lighting, update it
core::map<v3s16, MapBlock*> blocks_changed;
blocks_changed.insert(block->getPos(), block);
core::map<v3s16, MapBlock*> modified_blocks;
updateLighting(blocks_changed, modified_blocks);
// Close input file
is.close();
// Save modified blocks
core::map<v3s16, MapBlock * >::Iterator i = modified_blocks.getIterator();
for(; i.atEnd() == false; i++)
{
MapBlock *b2 = i.getNode()->getValue();
saveBlock(b2);
}
}
// Save blocks in new format
else if(version < SER_FMT_VER_HIGHEST)
{ {
saveBlock(block); saveBlock(block);
} }

@ -15,8 +15,10 @@
loadable by any version. Other compatibility is not loadable by any version. Other compatibility is not
maintained. maintained.
Serialization format versions: Serialization format versions:
== Unsupported ==
0: original networked test with 1-byte nodes 0: original networked test with 1-byte nodes
1: update with 2-byte nodes 1: update with 2-byte nodes
== Supported ==
2: lighting is transmitted in param 2: lighting is transmitted in param
3: optional fetching of far blocks 3: optional fetching of far blocks
4: block compression 4: block compression
@ -31,7 +33,7 @@
// Highest supported serialization version // Highest supported serialization version
#define SER_FMT_VER_HIGHEST 9 #define SER_FMT_VER_HIGHEST 9
// Lowest supported serialization version // Lowest supported serialization version
#define SER_FMT_VER_LOWEST 0 #define SER_FMT_VER_LOWEST 2
#define ser_ver_supported(v) (v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST) #define ser_ver_supported(v) (v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST)