이전 κ²Œμ‹œκΈ€



-----------------------------------------------------------------------------------



μ•ˆλ…•.

μ˜€λŠ˜μ€ λ§΅ μ‹œμŠ€ν…œ μ œμž‘ν•œ λ‚΄μš© κ°„λ‹¨νžˆ μ†Œκ°œν•˜λ €κ³  μ™”μ–΄.


λ‚˜λŠ”


μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ : μžμ—°μŠ€λŸ¬μš΄ 타일 배치λ₯Ό μœ„ν•΄ μ‚¬μš©


μ•„μ΄μž‘ λ˜μ „ 생성 : λ°©κ³Ό 방을 ν™•μ‹€νžˆ κ΅¬λΆ„ν•˜μ—¬ 전체 맡을 컨트둀 κ°€λŠ₯


방식을 κ²°ν•©ν•΄μ„œ λ§΅ 생성 μ‹œμŠ€ν…œμ„ λ§Œλ“€μ—ˆμ–΄.


μœ„μ— 링크λ₯Ό 읽으면 λ‚΄μš©μ„ 잘 μ„€λͺ…ν•΄μ€˜μ„œ ν•„μš” 없을지도 λͺ¨λ₯΄κ² μ§€λ§Œ μ˜μ–΄κ°€ λΆˆνŽΈν•œ μ‚¬λžŒ μžˆμ„ μˆ˜λ„ μžˆμœΌλ‹ˆ

κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•΄μ€„κ²Œ.


μš°μ„  μ•„μ΄μž‘ λ°©μ‹μ˜ λ˜μ „ 생성은 κ²Œμž„ κ·ΈλŒ€λ‘œμ˜ λ˜μ „ 생성 λ°©μ‹μ΄λ‹ˆκΉŒ νŒ¨μŠ€ν• κ²Œ.

μ•„μ΄μž‘ κ²Œμž„μ„ μ•ˆ ν•΄λ³Έ μ‚¬λžŒμ€



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


이런 λ°©μ‹μœΌλ‘œ λ˜μ „μ„ μƒμ„±ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ 될 것 κ°™μ•„.


μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜μ€ μžμ—°μŠ€λŸ¬μš΄ μ§€ν˜•μ„ λ§Œλ“œλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄μ•Ό.


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


μœ„ 사진을 보면 μ•Œκ³ λ¦¬μ¦˜μ΄ μ–΄λ–»κ²Œ κ΅¬λ™ν•˜λŠ”μ§€ λŒ€λž΅μ μœΌλ‘œ μœ μΆ”ν•  수 μžˆμ–΄.



μš°μ„  μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€λ₯Ό μ„€λͺ…ν•˜κΈ° 전에 μ „μ œ 쑰건뢀터 μ •μ˜ν•˜κ³  μ‹œμž‘ν• κ²Œ.



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


λ‚˜λŠ” λ²½μ΄λž‘ λ•… νƒ€μΌμ˜ μœ„μΉ˜λ₯Ό 2차원 배열에 μ €μž₯ν–ˆμ–΄.

벽은 1, 땅은 0 μ΄λŸ°μ‹μœΌλ‘œ.


μœ„ 그림의 타일 λ°°μΉ˜λŠ”


100000

111100

011110

011111

000111


이런 μ‹μœΌλ‘œ 배열에 μ €μž₯λΌμžˆμ–΄.

λ‚΄κ°€ μ‚¬μš©ν•œ μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜μ€ 2차원 배열을 κΈ°μ€€μœΌλ‘œ μ μš©ν•΄.


μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€λ₯Ό μ‹œμž‘ν•  λ•ŒλŠ”


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


이런 μ‹μœΌλ‘œ 각 λ°°μ—΄μ˜ μœ„μΉ˜λ§ˆλ‹€ 45% ν™•λ₯ λ‘œ 0κ³Ό 1 값을 κ²°μ •ν•΄.

이 ν™•λ₯ μ€ κ²°κ³Όλ₯Ό λ³΄λ©΄μ„œ μž„μ˜λ‘œ μ‘°μ •ν•˜κ³  초기 μ‹œμž‘μ„ νŽ„λ¦° λ…Έμ΄μ¦ˆλ₯Ό μ‚¬μš©ν•΄μ„œ κ²°μ •ν•˜λŠ” κ²½μš°λ„ μžˆμ–΄.


어쨋든, μœ„μ˜ μ‚¬μ§„μœΌλ‘œλŠ” 맡으둜 ν™œμš©ν•  수 μ—†μœΌλ‹ˆκΉŒ λͺ¨μ’…μ˜ 곡정을 κ°€ν•΄μ•Ό 돼. μ—¬κΈ°μ„œ μ‚¬μš©ν•˜λŠ”κ²Œ

μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜μ΄μ•Ό.


각 λ°°μ—΄ 값을 ν•˜λ‚˜μ˜ μ„Έν¬μ²˜λŸΌ 보고 세포 μ£Όμœ„μ— μœ„μΉ˜ν•œ 세포값을 μ°Έκ³ ν•΄μ„œ 값을 μˆ˜μ •ν•΄.



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


(x,y)에 μœ„μΉ˜ν•œ 세포λ₯Ό κΈ°μ€€μœΌλ‘œ 3*3 λ°°μ—΄μ˜ 값을 μ°Έκ³ ν•΄. μ΄λ•Œ ν™•μΈν•˜λŠ” μ •λ³΄λŠ” λ‹€μŒκ³Ό κ°™μ•„.


1.(x,y)에 μœ„μΉ˜ν•œ 세포가 ν™œμ„±ν™”λλŠ”κ°€?(ν™œμ„±ν™” : λ²½, λΉ„ν™œμ„±ν™” : λ•…)


2.(x,y)λ₯Ό μ œμ™Έν•œ (x-1,y-1) ~ (x+1,y+1)의 세포듀 쀑 ν™œμ„±ν™”λœ μ„Έν¬λ“€μ˜ κ°œμˆ˜μ™€ λΉ„ν™œμ„±ν™”λœ μ„Έν¬λ“€μ˜ 개수


이 두 정보λ₯Ό μ’…ν•©ν•΄μ„œ 맡을 λ‹€λ“¬λŠ”κ±°μ•Ό.



λ‚˜λŠ” λ‹€μŒ λ°©μ‹μœΌλ‘œ 맡을 λ‹€λ“¬μ—ˆμ–΄.



(x,y) 타일이 땅일 경우 -> μ£Όμœ„μ— λ•… 타일 κ°œμˆ˜κ°€ 4 이상일 경우 -> (x,y) 타일은 κ·ΈλŒ€λ‘œ λ•…μœΌλ‘œ μœ μ§€

(x,y) 타일이 벽일 경우 -> μ£Όμœ„μ— λ•… 타일 κ°œμˆ˜κ°€ 5 이상일 경우 -> (x,y) 타일은 λ•… νƒ€μΌλ‘œ 변함.

κ·Έ 외에 경우 -> (x,y) 타일은 벽으둜 λ°”λ€œ.


이 방식이 μœ„μ—μ„œ λ³΄μ—¬μ£Όμ—ˆλ˜



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


이 λ°©μ‹μ΄λž‘ λ˜‘κ°™μœΌλ‹ˆκΉŒ κ²°κ³ΌλŠ” μœ„ μ‚¬μ§„μœΌλ‘œ λŒ€μ²΄ν• κ²Œ.



그런데 이 μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜λ§Œμ„ μ‚¬μš©ν•˜λ©΄ λ°© κ°œμˆ˜λ‚˜ λ˜μ „μ˜ ꡬ쑰λ₯Ό μ‘°μ ˆν•  수 μ—†λ‹€λŠ” 단점이 μžˆμ–΄.


κ·Έλž˜μ„œ μ—¬κΈ°μ„œ μ•„μ΄μž‘ λ˜μ „ μ•Œκ³ λ¦¬μ¦˜μ„ κ²°ν•©μ‹œμΌ°μ–΄.


κ²°ν•©ν•  λ•Œ 많이 μ°Έκ³ ν•œ λ ˆλ”§ κ²Œμ‹œκΈ€μ΄ μžˆμ–΄.


이 κ²Œμ‹œκΈ€μ—μ„œλŠ” BSP(Binary Space Partitioning) μ•Œκ³ λ¦¬μ¦˜μ΄λž‘ μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜μ„ κ²°ν•©μ‹œμΌ°μ–΄.


κ΄€μ‹¬μžˆμœΌλ©΄ ν•œ 번 κΌ­ 읽어봐. 도움 될거라 생각해.





μ € λ ˆλ”§ κ²Œμ‹œκΈ€μ—μ„œλŠ” 기쑴의 μ…€λ£°λŸ¬ μ˜€ν† λ§ˆνƒ€ μ•Œκ³ λ¦¬μ¦˜μ„ 쑰금 λ³€ν˜•μ‹œμΌ°μ–΄.


λ°”λ‘œ 영ꡬ적인 λ²½κ³Ό 땅을 λ°°μΉ˜μ‹œν‚¨κ±΄λ°, 이 κ°œλ…μ„ ν†΅ν•΄μ„œ 방의 ꡬ쑰λ₯Ό λ§Œλ“€ 수 μžˆμ—ˆμ–΄.


이제 타일 λ°°μ—΄μ—λŠ” λ•…(0), λ²½(1) κ°’ 말고도 영ꡬ적인 λ•…(2), 영ꡬ적인 λ²½(3) 값을 κ°€μ§ˆ 수 μžˆμ–΄.



그리고 μœ„μ—μ„œ 이야기 ν–ˆλ˜



(x,y) 타일이 땅일 경우 -> μ£Όμœ„μ— λ•… 타일 κ°œμˆ˜κ°€ 4 이상일 경우 -> (x,y) 타일은 κ·ΈλŒ€λ‘œ λ•…μœΌλ‘œ μœ μ§€

(x,y) 타일이 벽일 경우 -> μ£Όμœ„μ— λ•… 타일 κ°œμˆ˜κ°€ 5 이상일 경우 -> (x,y) 타일은 λ•… νƒ€μΌλ‘œ 변함.

κ·Έ 외에 경우 -> (x,y) 타일은 벽으둜 λ°”λ€œ


이 ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€μŒκ³Ό 같이 λ°”λ€Œμ–΄.


(x,y) 타일이 영ꡬ적인 λ•…(2)이 μ•„λ‹Œ λ•…(0)일 경우 -> μ£Όμœ„μ— λ•…(0, 2) 타일 κ°œμˆ˜κ°€ 4 이상일 경우 -> (x,y) 타일은 κ·ΈλŒ€λ‘œ λ•…(0)으둜 μœ μ§€

(x,y) 타일이 영ꡬ적인 λ²½(3)이 μ•„λ‹Œ λ²½(1)일 경우 -> μ£Όμœ„μ— λ•…(0, 2) 타일 κ°œμˆ˜κ°€ 5 이상일 경우 -> (x,y) 타일은 λ•…(0) νƒ€μΌλ‘œ 변함.

κ·Έ 외에 λ•…(0)μ΄λ‚˜ λ²½(1)일 경우 -> (x,y) 타일은 λ²½(1)으둜 λ°”λ€œ



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


말이 μ–΄λ €μ›Œμ„œ μ½”λ“œκ°€ 더 νŽΈν•˜λ©΄ 이거 보면 돼.



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


결과적으둜 ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μœ„ μ‚¬μ§„μ²˜λŸΌ λ³€ν•˜λŠ” 것을 λ³Ό 수 μžˆμ–΄.


영ꡬ적인 λ²½μ΄λ‚˜ λ•… 타일은 ν”„λ‘œμ„ΈμŠ€κ°€ 변해도 영ꡬ적인 λ•…, 벽으둜 남아.


κ·Έλž˜μ„œ 이 영ꡬ적인 땅을 μ‚¬μš©ν•΄μ„œ 방의 ν˜•νƒœλ₯Ό μœ μ§€ν•  μ΅œμ†Œ λ²”μœ„λ₯Ό μ§€μ •ν•˜λŠ”κ±°μ•Ό.


κ·Έ λ‹€μŒμ— μ£Όμœ„μ— 45% ν™•λ₯ λ‘œ μƒμ„±λ˜λŠ” λ•… 타일듀을 λ°°μΉ˜ν•΄μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό 돌리면 μ €λŸ° λ°© ν˜•νƒœκ°€ 생겨.



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


μ–΄λŠμ •λ„ λ§΅ λ°°μ—΄μ˜ 크기가 컀지면 κ½€ λ‹€μ–‘ν•œ ν˜•νƒœκ°€ λ‚˜μ˜€κ²Œ 돼.


이제 λ°© ν•˜λ‚˜μ˜ λŒ€λž΅μ μΈ ν˜•νƒœλ₯Ό μ •ν–ˆμœΌλ‹ˆ λ°©κ³Ό 방을 μž‡λŠ” 벽을 λ§Œλ“€μ–΄μ•Ό 돼.



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


μ˜…μ€ νšŒμƒ‰ - λ•…(0)

짙은 νšŒμƒ‰ - λ²½(1)

흰색 - 영ꡬ적인 λ•…(2)

검은색 - 영ꡬ적인 λ²½(3)


각 색듀은 λ‹€μŒ 데이터λ₯Ό μ˜λ―Έν•΄.


λ°©κ³Ό 방을 μž‡λŠ” 길을 μœ„ν•΄ 영ꡬ적인 λ•…μœΌλ‘œ 직선길을 λ§Œλ“  후에 κ·Έ κΈΈ μ£Όμœ„λ‘œ μ…€λ£°λŸ¬ 세포듀을 뿌리면


λ°©κ³Ό 방을 μž‡λŠ” 길을 λ§Œλ“€ 수 μžˆμ–΄.


μ§€κΈˆκΉŒμ§€ 흐름을 잘 λ”°λΌμ™”μœΌλ©΄ μ‰½κ²Œ 이해할 수 μžˆμ„κ±°μ•Ό.


κ·Έ λ‹€μŒ 영ꡬ적인 λ•… μ£Όμœ„μ— λ•…(0)κ³Ό λ²½(1)을 45:55 λΉ„μœ¨λ‘œ 뿌린 λ’€ μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν•˜λ©΄ 돼.



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


그럼 결과적으둜 이런 μ‹μœΌλ‘œ 랜덀 μƒμ„±λ˜λŠ” 맡을 λ§Œλ“€ 수 μžˆμ–΄.


물은 μž„μ‹œλ‘œ κ³ μ • μƒμ„±λ˜λ‹ˆ λ¬΄μ‹œν•΄μ€˜.




이제 λ§΅ 데이터λ₯Ό 담은 배열이 μ€€λΉ„ λμœΌλ‹ˆ κ·Έ 값에 λ§žμΆ”μ–΄μ„œ 타일링 ν•˜λ©΄ 돼.


λ‚΄κ°€ μ‚¬μš©ν•œ κ²Œμž„ 엔진인 κ²Œμž„λ©”μ΄μ»€ μŠ€νŠœλ””μ˜€ 2(GMS:2)λŠ” μ˜€ν† νƒ€μΌλ§ κΈ°λŠ₯이


μ œλŒ€λ‘œ μ€€λΉ„κ°€ μ•ˆλΌμžˆμ–΄μ„œ 직접 μ§œμ•Όλμ–΄. λ‹€λ₯Έ 엔진은 잘 λͺ¨λ₯΄κ² λ„€.





μ˜€ν† νƒ€μΌλ§μ€ κ²Œμ‹œκΈ€μ„ μ°Έκ³ ν•΄μ„œ λ§Œλ“€μ—ˆμ–΄.


λ‚˜λŠ” 8-bit λ°©ν–₯ 타일을 μ‚¬μš©ν–ˆμ–΄. μ›λ¦¬λŠ” μ‰¬μš°λ‹ˆκΉŒ κ²Œμ‹œκΈ€μ˜ 그림만 봐도 이해할 수 μžˆμ„κ±°μ•Ό.




결과적으둜



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



이런 ν˜•νƒœμ˜ 맡을 λ§Œλ“€ 수 μžˆμ—ˆμ–΄.





사싀 μ–΄λŠμ •λ„ 이 방식을 써본 μ‚¬λžŒλ“€μ€ μ•Œκ² μ§€λ§Œ, 아직 λ‚΄κ°€ λ§Œλ“  λ§΅ 생성 μ•Œκ³ λ¦¬μ¦˜ μžμ²΄κ°€ 많이 λΉˆμ•½ν•΄.


λ§΅ 생성 μ•Œκ³ λ¦¬μ¦˜μ„ μ„Έ λ„€λ²ˆμ •λ„ κ°ˆμ•„ μ—ŽμœΌλ©΄μ„œ 뭐가 제일 쒋을지 고민쀑인데 λ‚˜μ€‘μ— 가닀듬고 λ‹€μ‹œ 올릴게.


그럼 λ‹€μŒμ—λ΄~