summaryrefslogtreecommitdiff
path: root/genmap.py
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-04-11 18:33:05 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-04-11 18:33:05 +0300
commit81ac026e1f04f1c40eb246e21e9aac25c8ec8f92 (patch)
treecac54b3f77b2cbbbb58207498e4264fa99adcede /genmap.py
parent50a8087684cb9cdee033053c01a6e51eb516565b (diff)
downloadminetest-81ac026e1f04f1c40eb246e21e9aac25c8ec8f92.tar.gz
minetest-81ac026e1f04f1c40eb246e21e9aac25c8ec8f92.tar.bz2
minetest-81ac026e1f04f1c40eb246e21e9aac25c8ec8f92.zip
updated example map generator python script
Diffstat (limited to 'genmap.py')
-rwxr-xr-xgenmap.py91
1 files changed, 70 insertions, 21 deletions
diff --git a/genmap.py b/genmap.py
index 8f7d421b1..aaa35690f 100755
--- a/genmap.py
+++ b/genmap.py
@@ -1,17 +1,12 @@
-#!/usr/bin/python
+#!/usr/bin/python2
-"
-This is an example script that generates some valid map data.
-"
+# This is an example script that generates some valid map data.
import struct
import random
-
-def getrand():
- i = random.randrange(0,2)
- if i==0:
- return 0
- return 254
+import os
+import sys
+from pnoise import pnoise
"""
Map format:
@@ -25,18 +20,72 @@ ffff = -1
0001 = 1
"""
-f = open("map/sectors/00000000/ffff", "wb")
+def to4h(i):
+ s = "";
+ s += '{0:1x}'.format((i>>12) & 0x000f)
+ s += '{0:1x}'.format((i>>8) & 0x000f)
+ s += '{0:1x}'.format((i>>4) & 0x000f)
+ s += '{0:1x}'.format((i>>0) & 0x000f)
+ return s
+
+def getrand():
+ i = random.randrange(0,2)
+ if i==0:
+ return 0
+ return 254
+
+def writeblock(mapdir, px,py,pz, version):
+ sectordir = mapdir + "/sectors/" + to4h(px) + to4h(pz)
+
+ try:
+ os.makedirs(sectordir)
+ except OSError:
+ pass
+
+ f = open(sectordir+"/"+to4h(py), "wb")
+
+ if version == 0:
+ # version
+ f.write(struct.pack('B', 0))
+ # is_underground
+ f.write(struct.pack('B', 0))
+ elif version == 2:
+ # version
+ f.write(struct.pack('B', 2))
+ # is_underground
+ f.write(struct.pack('B', 0))
+
+ for z in range(0,16):
+ for y in range(0,16):
+ for x in range(0,16):
+ b = 254
+ r = 20.0*pnoise((px*16+x)/100.,(pz*16+z)/100.,0)
+ r += 5.0*pnoise((px*16+x)/25.,(pz*16+z)/25.,0)
+ #print("r="+str(r))
+ y1 = py*16+y
+ if y1 <= r-3:
+ b = 0 #stone
+ elif y1 <= r:
+ b = 1 #grass
+ elif y1 <= 1:
+ b = 9 #water
+ if version == 0:
+ # Material content
+ f.write(struct.pack('B', b))
+ elif version == 2:
+ # Material content
+ f.write(struct.pack('B', b))
+ # Brightness
+ f.write(struct.pack('B', 15))
-# version
-f.write(struct.pack('B', 2))
-# is_underground
-f.write(struct.pack('B', 0))
+ f.close()
-for i in range(0,16*16*16):
- # Material content
- f.write(struct.pack('B', getrand()))
- # Brightness
- f.write(struct.pack('B', 15))
+mapdir = "map"
-f.close()
+for z in range(-2,3):
+ for y in range(-1,2):
+ for x in range(-2,3):
+ print("generating block "+str(x)+","+str(y)+","+str(z))
+ writeblock(mapdir, x,y,z, 0)
+#END