μœ λ‹ˆν‹°μ—μ„œ λ§Œλ“€μ—ˆλ΄€λ˜ κ²½ν—˜μ΄ μžˆμ–΄μ„œ 망정이지, μ•„λ‹ˆμ˜€μœΌλ©΄ μ§„μ§œ μ£½μ–΄λ‚˜κ°”μ„κ²ƒ κ°™μŒ.


λ©€ν‹°μŠ€λ ˆλ”©μœΌλ‘œ μ΄ˆκ³ μ† 이동 (1배속)

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


핡심은 μ΄λ ‡κ²Œ λΉ λ₯΄κ²Œ λ‘œλ”©λœλ‹€κ°€ μ•„λ‹ˆλΌ, μ΅œμ’…μ μΈ λ³΅μž‘ν•œ ꡬ쑰둜 λ§Œλ“€μ—ˆλŠ”λ° 였λ₯˜κ°€ μ•ˆλ‚œλ‹€λŠ” 점

λ‹Ήμ—°νžˆ μœ„μ•„λž˜ λ°©ν–₯μœΌλ‘œλ„ λ¬΄ν•œν•¨.



μ§€λ‚œλ²ˆμ— μœ λ‹ˆν‹°λ‘œ 이런 μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³ λ‚˜μ„œ ν•œμ°Έ 후에 ν›„νšŒλ˜λŠ” λΆ€λΆ„λ“€,

μ•„ μ΄λŸ°μ‹μœΌλ‘œ λ§Œλ“€μ—ˆμœΌλ©΄ 더 μ’‹μ•˜μ„ν…λ°, 이런 뢀뢄듀을 μ μš©ν•΄λ΄€μŒ.


별것 μ•„λ‹Œκ²ƒκ°™μ•„λ³΄μ—¬λ„ λ©€ν‹°μŠ€λ ˆλ”©μ„ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠλΌ μ§„μ§œ 고생 λ§Žμ΄ν–ˆμŒ.

μ§€λ‚œλ²ˆμ—λŠ” λͺ¨λ“ κ±Έ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν–ˆλŠ”λ°,

μ΄λ²ˆμ—λŠ” μ²­ν¬λ‘œλ”, μ²­ν¬λ°μ΄ν„°λ‘œλ”, μ§€μ—­λ‘œλ” 이 3개의 μŠ€λ ˆλ“œλ§Œ μ‘΄μž¬ν•˜κ³ , 이 3κ°œλŠ” λ³‘λ ¬λ‘œ λŒμ•„κ°€λ˜, 각각은 직렬둜 μ²˜λ¦¬ν•˜λ„λ‘ ν–ˆμŒ.

μ™œ 직렬이냐면, κ·Έλž˜μ•Ό λ‚˜μ€‘μ— νŽΈν•΄μ§€κ³ , μ„±λŠ₯이 μ’‹μ•„μ§„λ‹€λŠ”κ±Έ(특히 빛계산이 λ“€μ–΄κ°„λ‹€λ©΄)Β κ²½ν—˜ν–ˆκΈ°λ•Œλ¬Έμ—.


μ–΄λ–»κ²Œ ν–ˆλƒλ©΄, ν”Œλ ˆμ΄μ–΄κ°€ μ΄λ™ν•΄μ„œ 청크/청크데이터/μ§€μ—­ 쀑 뭐가 됐던 μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν•  λ•Œ,Β 

예λ₯Όλ“€μ–΄ 9개의 청크가 λ‘œλ“œλ˜μ–΄μ•Ό ν•œλ‹€λ©΄, 9개λ₯Ό λ¦¬μŠ€νŠΈμ— λ„£μ–΄μ£Όκ³ , λ‹€μ‹œ 리슀트λ₯Ό μŠ€λ ˆλ“œ 큐에 λ„£μ–΄μ€Œ.


μŠ€λ ˆλ“œ λ§€λ‹ˆμ €λŠ” 큐λ₯Ό μ²΄ν¬ν•˜λ©΄μ„œ ν˜„μž¬ μŠ€λ ˆλ“œκ°€ λŒκ³ μžˆμ§€ μ•Šκ³ , 큐에 λ¦¬μŠ€νŠΈκ°€ μ‘΄μž¬ν•œλ‹€λ©΄, μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•΄μ„œ 큐의 리슀트 ν•˜λ‚˜λ₯Ό μ „λ‹¬ν•΄μ€Œ.

그러면 μŠ€λ ˆλ“œμ—μ„œ 리슀트 μ•ˆμ˜ 9개의 일을 μ²˜λ¦¬ν•˜κ³  λ‹€μ‹œ λ§€λ‹ˆμ €κ°€ μŠ€λ ˆλ“œλ₯Ό ν• λ‹Ήν•΄μ£Όκ³  λ°˜λ³΅ν•˜λ©΄μ„œ 직렬둜 μ²˜λ¦¬ν•¨.


μ™œ μ΄λ ‡κ²Œ ν•΄μ•Όν–ˆλƒλ©΄, μŠ€λ ˆλ“œμ— μž‘μ—…μ„ ν• λ‹Ήν•΄μ£ΌλŠ”κ±Έ λ©”μΈμŠ€λ ˆλ“œμ—μ„œ ν•˜κΈ° λ•Œλ¬Έμ—,Β 

λ§Œμ•½ ν•œλ²ˆμ˜ μž‘μ—…μ— 청크 ν•˜λ‚˜μ”©λ§Œ λ„˜κ²¨μ£Όκ²Œλœλ‹€λ©΄, 1ν”„λ ˆμž„μ— μž‘μ—… 1κ°œλ°–μ— μ²˜λ¦¬ν•˜μ§€ λͺ»ν•¨.

κ·Έλž˜μ„œ ν•œλ²ˆμ˜ μž‘μ—…μ— 청크λ₯Ό μ—¬λŸ¬κ°œλ₯Ό λ„˜κ²¨μ€˜μ„œ 그런 문제λ₯Ό ν•΄κ²°ν•΄μ€Œ.


이게 μ €λ²ˆμ— μœ λ‹ˆν‹°λ‘œ λ§Œλ“€λ©΄μ„œ 계속 μ΄λ ‡κ²Œ ν•˜λ©΄ 직렬둜 잘 μ²˜λ¦¬λ˜μ§€ μ•Šμ„κΉŒ? ν•˜κ³  κ³ λ―Όν–ˆμ—ˆλ˜ κ΅¬μ‘°μž„.




λ°μ΄ν„°λŠ” Region, Chunk, ChunkData 3κ°œκ°€ μžˆλŠ”λ°

c++ 클래슀 μžμ²΄λŠ” 무쑰건 ν”Œλ ˆμ΄μ–΄ 주변에 μ •ν™•νžˆ λ‘œλ“œλ˜μ–΄μžˆκ³ , κ·Έ μ•ˆμ˜ 데이터λ₯Ό μŠ€λ ˆλ“œμ—μ„œ λ‘œλ“œν•˜λŠ” ꡬ쑰둜 λ§Œλ“€μ—ˆμŒ.


λ¬Έμ œλŠ” λ‘œλ“œμ™€ μ–Έλ‘œλ“œμ˜€μŒ.

μœ λ‹ˆν‹°μ—μ„œλŠ” 일단 풀링을 μ‚¬μš©ν•˜κ³ μžˆκΈ°λ„ ν–ˆκ³ , κ°€λΉ„μ§€μ½œλ ‰ν„° 덕뢄에 μ‚­μ œ 타이밍을 μ•ˆμž‘μ•„λ„ λμ—ˆλŠ”λ°,

μ—¬κΈ°μ„œλŠ” 청크 데이터와 지역데이터 등은 순수 c++클래슀라 μ‚­μ œ 타이밍을 μž‘μ•„μ•Ό ν–ˆμŒ.


더 큰 λ¬Έμ œλŠ” 데이터듀이 큐에 λ‹΄κ²¨μ„œ μ°¨λ‘€λ‘œ 천천히 μƒμ„±λ˜λŠ” 반면, μ‚­μ œλŠ” κ·Έ μ¦‰μ‹œ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ—,

자기 μžμ‹ μ˜ 데이터λ₯Ό λ‘œλ“œν•˜λŠ” 도쀑에 자기 μžμ‹ μ„ λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ μ‚­μ œν•˜λŠ” κ²½μš°κ°€ 생김.

그리고 μ²­ν¬μ—μ„œ 데이터 생성쀑에 μžμ‹ κ³Ό μ—°κ²°λœ 청크데이터에 접근을 ν•˜λŠ”λ° κ·Έ λ‘˜μ€ μ²˜λ¦¬λ˜λŠ” μŠ€λ ˆλ“œκ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—, μ‚­μ œκ°€ κ³€λž€ν–ˆμŒ.


c#μ—μ„œλŠ” κ·Έλƒ₯ λͺ¨λ“  μ°Έμ‘°κ°€ μ‚¬λΌμ§ˆλ•Œ μ‚­μ œλ˜μ„œ λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ μ΄μš©μ€‘μ— μ‚­μ œν•  κ°€λŠ₯성이 μ—†μ§€λ§Œ,

c++μ—μ„œλŠ” μ‚­μ œνƒ€μ΄λ°μ„ 잘λͺ»μž‘으면, λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ 이걸 μ΄μš©μ€‘μ΄κΈ°λ•Œλ¬Έμ— 무쑰건 ν¬λž˜μ‹œκ°€ 뜸.


λ³‘λ ¬μ²˜λ¦¬λΌμ„œ μ§„μ§œ 머리가 μ•„νŒ λŠ”λ°, 일단 ν•΄κ²° ν•œ 것 κ°™μŒ.

일단 λ‹Ήμ—°ν•˜κ²Œλ„ μ‚­μ œμ²˜λ¦¬λ₯Ό 큐에 λ„£κ³  천천히 μ²˜λ¦¬ν•¨.


μžκΈ°μžμ‹ μ΄ λ‘œλ“œλ˜μ§€ μ•Šμ•˜λ‹€λ©΄ μ‚­μ œλ₯Ό λ―Έλ£Έ.


μŠ€λ ˆλ“œμ—μ„œ μž‘μ—…μ„ ν• λ‹Ήν•΄μ€„λ•Œ, μœ νš¨ν•œ μž‘μ—…μΈμ§€ νŒλ‹¨μ„ 함.

μœ νš¨ν•œ μž‘μ—…μ΄λΌλ©΄, 여기와 μ—°κ²°λœ λ‹€λ₯Έλ°μ΄ν„°λ₯Ό μ‚­μ œν•˜μ§€ λͺ»ν•˜λ„둝 막아둠.

μŠ€λ ˆλ“œμ˜ μž‘μ—…μ΄ μ’…λ£Œλ¬μœΌλ©΄ 이제 막아둔걸 ν’€μ–΄μ€Œ.


μ§„μ§œ μ• λ§€ν•œλ°, μ‚­μ œλŠ” λ©”μΈμŠ€λ ˆλ“œμ—μ„œλ§Œ ν•˜κ³ , μŠ€λ ˆλ“œ λ§€λ‹ˆμ € μ—­μ‹œ λ©”μΈμŠ€λ ˆλ“œμ—μ„œ λŒμ•„κ°€κΈ° λ•Œλ¬Έμ—,Β 

μœ νš¨ν•œ μž‘μ—…μ΄λ‹€ == λ‚˜μ™€, λ‚˜λž‘ μ—°κ΄€λœ λ°μ΄ν„°λŠ” ν˜„μž¬ μ‘΄μž¬ν•˜λŠ” 데이터이며, μ‚­μ œνμ— λ“€μ–΄μžˆμ§€ μ•Šλ‹€ -> 연관데이터 μ‚­μ œ κΈˆμ§€ -> μŠ€λ ˆλ“œμ—μ„œ 데이터 λ‘œλ“œ -> μ‚­μ œ ν—ˆμš©

이런 μ‹μœΌλ‘œ λŒμ•„κ°ˆ 수 μžˆμ„κ²ƒ κ°™μŒ.


데이터가 λ‘œλ“œ 된 μ΄ν›„μ—λŠ” μ—°κ²°λœ λ‹€λ₯Έ 데이터에 μ ‘κ·Όν•  일이 μ—†κΈ° λ•Œλ¬Έμ—, μ‚­μ œλ˜λ˜ μ–΄λ–»κ²Œλ˜λ˜ 아무 상관 μ—†μŒ.



κ·Έ 3개의 데이터λ₯Ό λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λŠ” μ΄μœ λŠ”, λ‘œλ“œ 타이밍을 λΆ„λ¦¬μ‹œμΌœλ’€μŒ.

λΆ„λ¦¬μ‹œν‚€λŠ” μ΄μœ λŠ” 생각해둔 절차적 생성 방식이 1μ°¨ 생성/2μ°¨ 생성/3μ°¨ μƒμ„±μœΌλ‘œ κ΅¬λΆ„λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ—κΈ°λ„ ν•˜κ³ , 이러면 일반적으둜 더 λΉ λ₯΄κΈ° λ•Œλ¬Έμ΄κΈ°λ„ 함.


청크 데이터λ₯Ό λ‘œλ“œν•˜λŠ” μ‹œμ μ—λŠ” μ—°κ΄€ μ§€μ—­λ°μ΄ν„°λŠ” 이미 λ‘œλ“œλ˜μ–΄μžˆμ„κ±°κ³ ,

청크λ₯Ό λ‘œλ“œν•˜λŠ” μ‹œμ μ—λŠ” 청크데이터가 이미 λ‘œλ“œλ˜μ–΄ μžˆμ„κ±°μž„.

λ¬Όλ‘  μ—„μ²­ λΉ λ₯΄κ²Œ μ΄λ™ν•˜λ©΄ 이런 이점이 ν¬λ―Έν•΄μ§€κ² μ§€λ§Œ,Β 

κ·Έλž˜λ„ 일반적인 κ²½μš°μ—λŠ” μ΄λ™ν• λ•Œ 청크가 λ‚˜νƒ€λ‚˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ— 청크 데이터, 지역데이터가 λ‘œλ“œλ˜λŠ” μ‹œκ°„μ΄ ν¬ν•¨λ˜μ§€ μ•ŠμŒ.


그리고 μžμ„Έν•œ μ ˆμ°¨μ Β μƒμ„±μ„ ν•  μ˜ˆμ •μ΄κΈ° λ•Œλ¬Έμ— 데이터 λ‘œλ“œμ‹œκ°„μ΄ μƒλ‹Ήνžˆ κΈΈκ²ƒμœΌλ‘œ μ˜ˆμƒλ¨. κ·Έλž˜μ„œ λ”λ”μš± 이런 λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜κ³  μ‹Άμ—ˆμŒ.



사싀 아직 λΆˆν™•μ‹€ν•¨Β 

μ–΄λ–€ λ¬Έμ œκ°€ λ‚¨μ•„μžˆμ„μ§€ 걱정이 λ˜λ„€.

제발 였λ₯˜ μ•ˆλ‚¬μœΌλ©΄


μ•„λ¬΄νŠΌ κΈ°λ³Έ λ² μ΄μŠ€λŠ” 거의 μ™„μ„±ν•œκ²ƒ κ°™μŒ.

데이터 생성 ν•¨μˆ˜κ°™μ΄ λ‚˜μ€‘μ— μž‘μ—…ν•΄μ•Ό ν•˜λŠ” ν•¨μˆ˜λŠ” λΉ„μ–΄μžˆλŠ” μƒνƒœλ‘œ μ „λΆ€ μ μš©λ˜μ–΄μžˆμ–΄μ„œ λ‚˜μ€‘μ— μ•Œκ³ λ¦¬μ¦˜λ§Œ 짜면 됨.


이제 언리얼에 μ–΄λŠμ •λ„ μ μ‘ν•œ 것 κ°™μŒ

μ˜€λžœλ§Œμ— ν•˜λ£¨μ’…μΌ ν•΄μ„œ λΏŒλ“―ν•˜λ‹€


λ‹€μŒλͺ©ν‘œλŠ” μ˜€λŠ˜ν•œκ±° λ§ˆλ¬΄λ¦¬ν•˜κ³ , μˆ˜λ™μœΌλ‘œ ν…μŠ€μ³ μ•„ν‹€λΌμŠ€ λ§Œλ“€κΈ°λž‘, LOD μ‹œμŠ€ν…œ

λ©€λ¦¬μžˆμ„μˆ˜λ‘ μ—¬λŸ¬ 블둝을 ν•˜λ‚˜μ˜ 큰 λΈ”λ‘μœΌλ‘œ ν‘œν˜„ν•΄μ„œ μ‹œμ•Όκ±°λ¦¬λ₯Ό 거의 λ¬΄ν•œν•˜κ²Œ 늘릴 수 μžˆλ„λ‘.