From 523d29b84567888b0e8876ddb1b08d73dae10597 Mon Sep 17 00:00:00 2001
From: madmaxoft
Date: Thu, 5 Jun 2014 21:25:18 +0200
Subject: [PATCH] docs/Generator: Added basic terrain composition.
---
docs/Generator.html | 32 +++++++++++++++++++++++++++++++-
docs/img/perlincompositor1.jpg | Bin 0 -> 15457 bytes
docs/img/perlincompositor2.jpg | Bin 0 -> 29005 bytes
docs/img/perlincompositor3.jpg | Bin 0 -> 21119 bytes
4 files changed, 31 insertions(+), 1 deletion(-)
create mode 100644 docs/img/perlincompositor1.jpg
create mode 100644 docs/img/perlincompositor2.jpg
create mode 100644 docs/img/perlincompositor3.jpg
diff --git a/docs/Generator.html b/docs/Generator.html
index 860144338..4647a2165 100644
--- a/docs/Generator.html
+++ b/docs/Generator.html
@@ -341,7 +341,7 @@ than the columns further away. The following image shows the output of MCServer'
generator (each block type represents a different biome - ocean in the front (stone), plains and ice plains
behind it (lapis, whitewool), extreme hills back right (soulsand), desert hills back left (mossy
cobble)):
-
+
One key observation about this whole approach is that in order for it to work, the biomes must be
available for columns outside the currently generated chunk, otherwise the columns at the chunk's edge would
@@ -356,6 +356,36 @@ would become impossible to apply the averaging.
Terrain composition
+As with the other generators, the composition generator category has its easy and debugging items, too.
+There's the "special" composition of "all the blocks are the same type", which fills the entire column, from
+the bottom to the height, with a single blocktype. This generator is useful when testing the generators in
+the other categories, to speed up the generation by leaving out unnecessary calculations. Another special
+compositor is a similar one, that fills all blocks with the same type, but the type varies for each biome.
+This way it's easy to see the generated biomes and possibly the heights for those biomes, as shown in the
+previous section on the height averaging screenshot.
+
+For a natural look, we need to put together a more complicated algorithm. The standard set forth in
+MineCraft is that the top of the world is covered in grass, then there are a few blocks of dirt and finally
+stone. This basic layout is then varied for different biomes - deserts have sand and sandstone instead of the
+grass and dirt layer. Mushroom biomes have mycelium in place of the grass. This per-biome dependency is
+trivial to implement - when compositing, simply use the appropriate layout for the column's biome.
+
+The next change concerns oceans. The generated heightmap doesn't include any waterlevel indication
+whatsoever. So it's up to the terrain compositor to actually decide where to place water. We do this by
+configuration - simply have a value in the config file specifying the sealevel height. The compositor then
+has to add water above any column which has a height lower than that. Additionally, the water needs to
+override per-biome layout selection - we don't want grass blocks to generate under water when the terrain
+height in the plains biome drops below the sealevel accidentally.
+
+The final feature in the compositor is the decision between multiple composition layouts within a single
+biome. A megataiga biome contains patches of non-grass dirt and podzol blocks, and the ocean floor can be
+made of dirt, gravel, sand or clay. A simple 2D Perlin noise can be used to select the layout to use for a
+specific column - simply threshold the noise's value by as many thresholds as there are layout variations,
+and use the layout corresponding to the threshold:
+
+
+
+
(TODO)
diff --git a/docs/img/perlincompositor1.jpg b/docs/img/perlincompositor1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0d8f93cd9f8ab097c5c2c8014f462067520a0f41
GIT binary patch
literal 15457
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
WhNmW0qX!m#;7oX#iZ<+@ss9b!au8Sm
literal 0
HcmV?d00001
diff --git a/docs/img/perlincompositor2.jpg b/docs/img/perlincompositor2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..11fc5b51d4dfb429c154a092d397a99ed9879f6c
GIT binary patch
literal 29005
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⁡)wwK3ug@o#K*>DKHXc|rMPaDG_FsLv_oYeZvoAH3hXLQ_Jrr_J&(MWs>rSguZCc^J>I7d|8=uH$`HIZB
zzAQg~J3p$g%0I{TtZVz$QhBU9jX>n{PnW)=dv?AAqxt>r?R>0sH(HXaZI240pd0~I
zRLNJ*^=
zQ__GnAy1bkoWpG-Y&LUH&oJhI89ci|tc$ynGtF7KlOWbT-cD!%@!g%>YhK3e@y&AM
zA*({pQV5_9iL9+Ae=(y0x}0zgHu^vp1AsbI5L|q{Y75!24>d7_V%v(`-mWUOXvQ^W
z+K$(Ev72``3FfkHChN^jdp9SV%a%-s>pEz;t=W>O%NH~Onvr1ErI^MlzRVhuH`-_eZUP7ub{O{&SoYI$
zD{jSu5kMN&F!ZbXk@D*XjZX=574=zGSIRth!ooKm1sP1;<)oIbi
zQ>jR{RfxXb0_~1iW>L^SRMQMIT-+qLr4=LP
zV^f@;b6oW=IH;(!{{SzU>foGkwWn64SjwAD`s*v~xn8%wTWQ?TZLXMM!wyAJvS!n6
zgf4S!Dft`wr_!aCahhv^b8hh-q;P!?V_VdP{pjw$s~%<#5}|rEe}_H%yGePk#b|aq
zV)U-2!FUzPY10lXr?8x0R;K~G3h`GUjFVKYr34DmjFS`W`}^^zlScL*l44P5?2xq`?nm|c>@Bq&xO{XwCgQ@uT73zAH7Xf
zd&^h;UoD05R+?Z_Q&C+9QC+QuE1U6diyo(@%WmTjjnTJtVbIr7@+ywC&v=_tTPq1>
z1AL!$G#y>f3Zv?4I;t)WPh&dD4xE)ut*OoE7jJc-+etV2)dn~EslonL4eiF<^G}8^
z?A;~{W?)?x=V9HCEPpa<+qpZ>SwS+d{WxcM!Vf4?aHl-)?L>gRnt9a*I<5`EfVn^z?99DwQb^T`+=
zTA_RXsCwX37ck%6N}p&{Si#QKIjgscl&tB=&Tdw+(Cfz1h93=1ikg(KChYE&`BGQ;
z9A>K6Cb_$b4&z;3tq0z&Ug{DU*5{N$kCR%q130XxqdBe3HWG2g0BXR$D5)80&9%AO
zIH{W7+JGrWIjh#~j8uM3DZp)@3*L4Xsm(bik(}bHwo6b1g|}2PMVhe`WYoqkC<7Kq
zaA_0eHK9CMsuBzu0JR+09csPZ#|N5#xfN3B$rJ%j?rf7(gXO97s}oI%B2P*Hy=uFN
zt$TPu1B#(#5y;}Vts%%10bSw1=~SjnS4M4ey(*mcN78^f$r7tPe$~)Dk@Tn@&)R@F
z=_4YlND7+hX0^cSS$9xi^q>mX@({wh4LWX>&m!TgR>`r70P115+P!J*eYd@1iAY+l
zJmhzv4dvAEdeo;;$m?8>+D`7ZI$RUpfI2U>Zar%Kg!y63a?waht$jX17*GdaqFywS
zVooKD>~ZcZsIt1oIj$>4R+4+0g&2xQ`8~kzT^+Guiq4B}3A48_ry6*PMjCCWX3}kZ
zo}VMIvbxSWt@|nR2Q|dmJ7iZ!Vlo;+4nCFb`bU$C|T>j2f+jO?={$0N#kwO9}EWUdm3Kv`5?1@Tjha(rYR%@JqJ-r*>rr97LtkTF3k^Z@FpZYZha;
z_oqo9Wi^h|?KI@M&wAA1BGh9H4Rd#P{{S)Kx=G(~HJdbhjR0cBZ}W7nhfB5T#a4n0
zu;RKMJ|&7HBk-y+O%2#_i<7e4vXRFGVWnk3>S{z-rd`oGxb~*n*bC3}o5duz+(Xd^
zZ^o)>HpfkoZf$a@oH~w`%PP}~=WE^keNS$NTZXMas>Y-CzMk#>0G9jtUu%{ohZRwy
z=CqN;#kxqp#40ZqD3NG65T6CQw_X(=U}7Wp^E42FXh-S
z
zuUlym6TV<(ll#(h`3{1ebECl^&y*F1Mo*NF%9ZMGWKxC=d#+OTNn7r{+WWl>Ynx-w
z6`3`$&r05s3%hOz`&3^1IR1vKw6^4s$uhV1OiiEAQSD;BEj>ZtD$80v`u^^}dfj}{
zf^7-yRpzl{+Pb8Ozxumbo85p>`kelhuWaM*S;&9gWk1Y{uV}xd%$^dW(b<37(fOa6jN6{{SOVm$XBP3&wxjjF0I_)q>sFsNgXZ_#ox!ujO+Z
z+Q@=9t-CvH0g*@AY$F--(ETb2Zyxcyn^iHycxOBl^r)UDoOXA9M_wBx#nyM693r=J
zR!i^S(H36vHIT;yPdg5~IuFK(=Z0tUH?!SMbts5(N?V(ga2OWKDGsG_(h>^$h
zTxaDA)K+tqN^$m*ew#
z>yj{Qq7vtdcCqAQs45j@O-V}KR>wPa008k=7w7>s(_b*=xvfQpO1>Ese?hRW#Dy6}o3QSJww`>bysh_=CntE;`fG*oYPAgW{BBWH7HoJi0wFC(g
VgCi;rRyd^Hw;W>R?G<)^|Ji^@M>PNd
literal 0
HcmV?d00001
diff --git a/docs/img/perlincompositor3.jpg b/docs/img/perlincompositor3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..46a2583bacb13a375744e9866b439d7458be07a4
GIT binary patch
literal 21119
zcmeFYbyQs2)-PCiLI{L}!l4Kb1;O1Rcz~dVOOOB+Ah^4R;2PXr3WB=^m*BzO-5t6(
z_q*ra)8Bhzbicn|kI|bk*{iDd*n7>jru?St$3KrtfLAgS(h>j!1O$K-{15QBjO`@u
zWM%>YNK4ZLo&f*=L;x!SA^-)_A)&w0QveR{y-EIgw+4?He5%pO~EbGd;7svbwguvAMOqb9{1oc7Abrb$#>17Xp0S{(bz5
zvHu%i*l@lOk&%&*(VqB1Ky-u?5;ii*TNc#UB8q4R)^EsJy`SNTMrM?^J*Qw(Is$&O
z89~RTWM8H_eq!w}&i>qGQaot8x{D;8O7D#%QP7mffT1f^SQ^kcC83x!=pVO&c;Do&&kqEv
zHuVeniE|X*C`jxbRJ*4<0w~^({W*pfeJed6bxk0YPF_z5lV;ztdiS;}b%stuKh5fg
zZC7XnU+7^~(Top3EQlS?^j(lyer%hT>Vy&A(;DNEi&Mw#^cgDo5AlbR76*wgjvo6JT<}1xoAY1
z+9&z(QC~3QyF8w&h4F=={z28H^j26P2^w}8z4BZx3MJ$zg#~GS8>bB--qUSN)2wh^
zO~IU2$v)A>eZV*50co$48(&4@%|;rOTa~Y&I(`up5GMAh>S=D#3@o>HIJi6;#}baj
z6`v&!&=aLEGOI3m1TY-AixFzc$#fmjRWEbZr_}2Sg
zDvWV#aO|XE*oi>(?RmUU4-nMb9&m=wDNcSlJGWHaG;A*BdIj6PE9!vMKL}U}Zvws-a_N46tRp$rFG#!k=Xs&6ESgAu0hzztFy*ZLkc
z*st>DY{UCGw(FY@%cN^&g+5Hh-m!X{9DlH!H~2R1(c<_BFyYvBq}82KMWQSKcmS6^
z(RX7dDwRzCYKeXXkek48L*@Y_6~xD_-J80es~|L8jX}r!nb_2klx$;=2eZ5aN$Yv(
zm_j3G6sJmzWmc2rtbF{(!;cQB&kS^j-zawJ+df~7v66SIKbrjTTDkQzF8V2d*WOet
zQS>Sl^%s)qi!QV(w_}`ej3P?;UUK3hx;C`QrldB)%ZrWJ+qwHv49YxWmc5SM;3Kv|
zj(0^g2e8%`gkh->!p4%HMAo=?itD#HYF-$J?X`MpZtk9iVRwCEN${-f>`yplPm4<{
z8Ro+V5=@g&C-%Qf!>4gXk$Q+xlZa*Ob_mK_xAmcg4RL2N#_5E|rmXVyy3LNQIebjx
zcgF%|X4eLFSTo2?;1}Fs((_)9HRooiiTh7iaCw>}?WHgEm+jx}YPH#HW1H7ay|FVw
zAh1-_66zG{fhiv&W1FXv)K*v3*Mw53zMx(%1BmSJfd_wWU}34TU)#C6AauIXl_ykb
z90p@sM&frwwtbRBIs)!+poBK6#eHqF#1SV%(a8!?Ni}!QWb7EA;Bzn9I9AOIDWQ)H
z>p#*_*Zl=&!Xv*pk|K2-VTYsbtIbFR1t!jXlOW!c_{43(1s7h0js9N>yI={t={
z@Qi_hli0jMOIn_x3(g!x!MY$z=%-_e?0f*JwWYwd&`^27sm!U&$-v$T55qt=W%NRV
zPG#mY3f>423eZYntn{294h(jtwy{2eA?>(A^j1I!y@t7r6Ct^ugZYOE4!!%CYN|d%
zfHE=TG+<8DsrJDS+Gfh?Qfq^jvoUY((8jiGuY-5?_eq#?QYBtC9Na>DX66Q=to;@Y
z5q(W0_ywS#5{F}x+TZx{S?@+!A^=vmy9A|lOS|o=x}?(d!9%yRj#i4?xnu5FQpYvl
z-j3RB8&s!YX0Do(C&vt{2`1aYNFo