viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4db4aa00abaa5045cde29da07

๋งต


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e48b1af30eefae585755e316e7

์•„๋ฌด ์ž์› ์—†๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4da1ea80ce7fa0a0a37018279

์ฑ„์ง‘ + ์ˆ˜๋ ต ๊ฐ€๋Šฅ ์ž์› ์žˆ๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e48d1bf45aeaf80f0d231dccb1

์ž์ˆ˜์ • ์žˆ๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4d719a508eaaf0d0ca7fcb6d3

๊ธˆ ์žˆ๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4de1bf15aeaf90f5c34bb0d9e

๊ธˆ์† ์žˆ๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4d81ff15ebbad590e4b4ee276

์„์žฌ ์žˆ๋Š” ๋•…


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab078cb9d8e0aba70f9e79b6f4ec82b1b035dad48cd2be2c07d982b77e4df49a70ebbae580c4a97bf39

์„ํƒ„ ์žˆ๋Š” ๋•…



์–ด๋–ป๊ฒŒ ํ–ˆ๋ƒ๋ฉด, 3์ฐจ์› perlin noise ๊ตฌํ˜„ ๋œ ๊ฒƒ์„ ์ผ๋‹จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ด. ๊ทธ ๋‹ค์Œ ๊ฐ ์ž์›๋งˆ๋‹ค perlin noise์—์„œ ์“ธ ๋†’์ด๊ฐ’๊ณผ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•จ. ๊ทธ ๋‹ค์Œ x์™€ y ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง„ ๊ฐ ํƒ€์ผ๋งˆ๋‹ค ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•ด 'noise(x, y, ์ž์› ๋†’์ด) * ๊ฐ€์ค‘์น˜' ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ ์ค‘ ๊ฐ€์žฅ ๊ฐ’์ด ๋†’๊ฒŒ ๋‚˜์˜จ ์ž์›์„ ๊ทธ ํƒ€์ผ์— ๋ถ€์—ฌํ•จ.


์ฝ”๋“œ


letย resourcesย =ย [(0.0,ย 10.0),ย (0.2,ย 1.0),ย (0.4,ย 0.5),ย (0.6,ย 5.0),ย (0.8,ย 4.0),ย (1.0,ย 3.0)];

ย ย ย ย forย yย inย 0..MAP_SIZEย asย usizeย {
ย ย ย ย ย ย ย ย forย xย inย 0..MAP_SIZEย asย usizeย {
ย ย ย ย ย ย ย ย ย ย ย ย letย tileย =ย tiles.get_mut(&Point3::new(xย asย u32,ย yย asย u32,ย 0)).unwrap();

ย ย ย ย ย ย ย ย ย ย ย ย tile.resourceย =ย resources
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .iter()
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .map(|(a,ย b)|ย (perlin.get([xย asย f64ย /ย 12.3456789,ย yย asย f64ย /ย 12.3456789,ย *a])ย +ย 0.8660254)ย *ย b)
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .enumerate()
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .max_by(|(_,ย a),ย (_,ย b)|ย a.partial_cmp(b).unwrap_or(Ordering::Equal))
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .map(|(i,ย _)|ย i)
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย .unwrap()ย asย u8;
ย ย ย ย ย ย ย ย }
ย ย ย ย }