ndc 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅:...

Post on 08-Aug-2015

23.981 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

한 그루 한 그루 심지 않아도 돼요.생태학에 기반한 <야생의 땅: 듀랑고>의 절차적 생성 생태계

넥슨 코리아 왓스튜디오

강 임 성

저작물 인용 저작권법 제35조의 3 ‘공정이용' 조항에 따라 교육과 연구 목적으로 이용하고 있습니다. 혹시 문제가 있을 경우, imseongkang@nexon.co.kr 로 연락 주시면 적절한 조치를 취하겠습니다.

스크린샷 안내 발표에 쓰인 모든 게임 스크린샷 및 영상은 개발 중인 테스트 버전의 것으로서, 실제 출시 버전과는 다를 수 있습니다.

차례

4. 결론 및 요약

1. 발표자 소개 및 프로젝트 소개2. 식생 시뮬레이터 개발 과정 돌아보기3. 동물 무리에 대한 얘기들

지질학/고생물학을 공부했었는데

발표자는...

지질학/고생물학을 공부했었는데 어쩌다 보니(?) 게임을 디자인하고 있습니다.

발표자는...

지질학/고생물학을 공부했었는데

아이패드용 기능성 게임

페이스북 소셜 게임

모바일 소셜 게임

모바일 소셜 게임

모바일 MMORPG

어쩌다 보니(?) 게임을 디자인하고 있습니다.

발표자는...

생존

투쟁

개척

환경이 매우 중요삶의 터전 자원 채집사냥터 전장

[ ]

섬은 플레이어의 집이자

섬은 플레이어의 집이자

탐험 목적지이며

섬은 플레이어의 집이자

탐험 목적지이며

다른 부족을 만나는 곳

섬은 플레이어의 집이자

탐험 목적지이며

다른 부족을 만나는 곳

그런 섬들을 일일이 만들기에는 너무 많고 너무 커요.

그래서 듀랑고 개발팀에선 절차적 생성에 많은 공을 들입니다.

그래서 듀랑고 개발팀에선 절차적 생성에 많은 공을 들입니다.

위키피디아 Procedural generation 항목 중에서 발췌

컨텐츠를 수동으로 만드는 것이 아니라 알고리즘으로 생성하는 것. 처음엔 그래픽 텍스처나 메쉬 등에 주로 쓰였으나, 이후 사운드, 음성 합성, 게임 월드/던전/레벨 생성 등으로 적용 분야가 넓어짐. 최근엔 영화의 군중 장면 CG 등에서도 쓰이는 중

유저 수만큼 다양한 섬을 만들자! <야생의 땅: 듀랑고>의 절차적인 섬 생성 기법

NDC 2014, 진선웅

<야생의 땅: 듀랑고>에서의 유니티를 이용한 렌더링 개발 이터레이션과 최적화

NDC 2014, 김혁

나도 저 게임 만들고 싶다!

나도 저 게임 만들고 싶다!그리고 운 좋게 저도 함께 만들게 되었습니다.

나도 저 게임 만들고 싶다!그리고 운 좋게 저도 함께 만들게 되었습니다.

왓스튜디오에서요.

사람들을 만나보세요.

Day 1 14:45-15:10 박주은 물리 기반 렌더링 지난 1년간의 경험 아티스트!? 프로그래머?? 동상이몽은 이제 그만

15:20-16:10 강임성 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 <야생의 땅: 듀랑고>의 절차적 생성 생태계

17:40-18:30 변수민 <야생의 땅: 듀랑고>의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담

사람들을 만나보세요.

지금 여기 →

Day 2 09:50-10:40 이광영 모바일 게임에 밀도 높은 MMO 전투를 허하라 <야생의 땅: 듀랑고> 전투 시스템 개발 일지

13:00-13:50 이은석 Pay-to-Skip 게임 속 로봇 경제와 내몰리는 인간

14:10-15:00 양승명 <야생의 땅: 듀랑고>의 시뮬레이션 MMO 샌드박스 만들기

사람들을 만나보세요.

Day 3 11:00-11:25 김찬웅 그룹웨어에 새 에너지를 Chromium 엔진을 이용한 웹 기반 기술 도입기

11:35-12:00 안미루 개방과 소통으로 자유롭고 창의적인 조직 만들기

14:10-15:00 이정수 가죽이 서 말이라도 꿰어야 장화 <야생의 땅: 듀랑고>의 아이템과 제작 시스템 변천사

15:20-16:10 류지원 복잡계로서의 게임 <야생의 땅: 듀랑고> 속의 복잡계

사람들을 만나보세요.

디렉터

디렉터

생물 공부도 하셨는데 식생 좀 다듬어 주시죠.

디렉터

생물 공부도 하셨는데 식생 좀 다듬어 주시죠.

까짓 거 해보죠.

식물은 전공이 아니지만..

그때는 그게 그렇게 거대한 일인줄 몰랐습니다...

현황과 요구 조건 파악

한대

온대

열대벽지형

벽지형

1. World Gen• 대륙/섬의 형태를 결정

• 강, 호수의 모양과 분포를 결정

• 벽지형의 모양과 분포를 결정

• 타일 별 군계, 고도, 습도 정보를 결정

세계의 생성

한대

온대

열대벽지형

벽지형

1. World Gen• 대륙/섬의 형태를 결정

• 강, 호수의 모양과 분포를 결정

• 벽지형의 모양과 분포를 결정

• 타일 별 군계, 고도, 습도 정보를 결정

2. 식생 시뮬레이터• 월드젠에서 넘겨준 정보에 맞춰 나무와 암석을 심음

• 나무와 암석의 종류와 분포를 결정

• 특정 주기마다 나무와 암석을 추가로 심거나 제거

세계의 생성

한대

온대

열대벽지형

벽지형

1. World Gen• 대륙/섬의 형태를 결정

• 강, 호수의 모양과 분포를 결정

• 벽지형의 모양과 분포를 결정

• 타일 별 군계, 고도, 습도 정보를 결정

2. 식생 시뮬레이터• 월드젠에서 넘겨준 정보에 맞춰 나무와 암석을 심음

• 나무와 암석의 종류와 분포를 결정

• 특정 주기마다 나무와 암석을 추가로 심거나 제거

3. 동물 제어기• 동물을 배치하고 행동 패턴을 결정

• 해당 타일의 식생 정보에 맞는 동물을 배치

세계의 생성

기존 식생 시뮬레이터의 로직

기존 식생 시뮬레이터의 로직

1.특정 땅 타일의 군계 정보를 확인해서

강온대림

타이가

초원

설원

기존 식생 시뮬레이터의 로직

1.특정 땅 타일의 군계 정보를 확인해서

강온대림

타이가

초원

설원

2. 해당 군계의 나무/관목/풀/돌 분포 확률과

기존 식생 시뮬레이터의 로직

3. 각 식물의 출현 확률로 심을 대상을 선정

1.특정 땅 타일의 군계 정보를 확인해서

강온대림

타이가

초원

설원

2. 해당 군계의 나무/관목/풀/돌 분포 확률과

기존 식생 시뮬레이터의 로직

3. 각 식물의 출현 확률로 심을 대상을 선정

1.특정 땅 타일의 군계 정보를 확인해서

강온대림

타이가

초원

설원

이름

전나무id

엔티티id

밀집도

70

출현군계

타이가

출현확률

0.2

2. 해당 군계의 나무/관목/풀/돌 분포 확률과

프로토타이핑 때부터 잘 써온 로직이고, 계속 개선했지만..

야자수

갈대활엽수

고사리

작은 나무 활엽수

마른 덤불

야자나무고사리

야자수

갈대활엽수

고사리

작은 나무 활엽수

마른 덤불

야자나무고사리

“오, 그래픽 귀엽다!”

야자수

갈대활엽수

고사리

작은 나무 활엽수

마른 덤불

야자나무고사리

“오, 그래픽 귀엽다!” “뭐야, 버그인가?”

표현이 사실적일수록 개연성에 대한 기대값도 높아집니다.

야자수

갈대활엽수

고사리

작은 나무 활엽수

마른 덤불

야자나무고사리

“오, 그래픽 귀엽다!” “뭐야, 버그인가?”

잉? 갈대가 왜 여기에 있지? 아까 강가에서 한참 찾아도 없더니만.

머리 속에서 생각하는 것과 게임 속 세계가 어긋나면 플레이에 혼란이 생깁니다.

잉? 갈대가 왜 여기에 있지? 아까 강가에서 한참 찾아도 없더니만.

여기 내륙인데...야자수는 해변에 있어야 하는 거 아냐? 야자수 옆에 참나무라니 뭔가 이상한데. 아차, 내가 뭐 하려고 했더라?

위화감이 들면 몰입감이 깨집니다.

여기 내륙인데...야자수는 해변에 있어야 하는 거 아냐? 야자수 옆에 참나무라니 뭔가 이상한데. 아차, 내가 뭐 하려고 했더라?

그런 관점에서 많이 고쳐보기로 했는데...

그동안 쌓인 요구조건들도 많습...

그동안 쌓인 요구조건들도 많습...

원하는 자연물을 쉽게 찾을 수 있어야 돼요! 진행에 필수적인 자원 은 곳곳에 있어야 하고요! 그리고...

그동안 쌓인 요구조건들도 많습...

원하는 자연물을 쉽게 찾을 수 있어야 돼요! 진행에 필수적인 자원 은 곳곳에 있어야 하고요! 그리고...

속도도 개선해야 해요. 지금 너무 느려서 한 번 돌릴 때마다 아주 그냥 속이...

그동안 쌓인 요구조건들도 많습...

원하는 자연물을 쉽게 찾을 수 있어야 돼요! 진행에 필수적인 자원 은 곳곳에 있어야 하고요! 그리고...

속도도 개선해야 해요. 지금 너무 느려서 한 번 돌릴 때마다 아주 그냥 속이...

군계 별로 애셋들 색조 모두 맞춰놨어요! 너무 휑하거나 너무 빽빽하지 않게 해주세요! 벽지형 도 이제 들어갈 건데..

그동안 쌓인 요구조건들도 많습...

열심히 만들게요! 많이 고칠게요!!

원하는 자연물을 쉽게 찾을 수 있어야 돼요! 진행에 필수적인 자원 은 곳곳에 있어야 하고요! 그리고...

속도도 개선해야 해요. 지금 너무 느려서 한 번 돌릴 때마다 아주 그냥 속이...

군계 별로 애셋들 색조 모두 맞춰놨어요! 너무 휑하거나 너무 빽빽하지 않게 해주세요! 벽지형 도 이제 들어갈 건데..

자료 조사

http://commons.wikimedia.org/wiki/File:Muscles_anterior_labeled.png

원리를 알면

http://commons.wikimedia.org/wiki/File:Muscles_anterior_labeled.png

원리를 알면

http://commons.wikimedia.org/wiki/File:Leda_and_the_Swan_1505-1510.jpg

정확하게 그릴 수 있고

http://commons.wikimedia.org/wiki/File:Muscles_anterior_labeled.png

원리를 알면

http://commons.wikimedia.org/wiki/File:Leda_and_the_Swan_1505-1510.jpg

정확하게 그릴 수 있고

https://www.flickr.com/photos/hisgett/4693824604

의도에 맞춰 모델링 가능

https://www.flickr.com/photos/hikingartist/6217869031

원리를 알면

https://www.flickr.com/photos/hikingartist/6217869031

원리를 알면

http://en.wikipedia.org/wiki/Trajectory_of_a_projectile

정확하게 계산할 수 있고

https://www.flickr.com/photos/hikingartist/6217869031

원리를 알면

https://thirdpersonblog.wordpress.com/2011/08/07/portal-review/

의도에 맞춰 모델링 가능

http://en.wikipedia.org/wiki/Trajectory_of_a_projectile

정확하게 계산할 수 있고

그러니까 식물 생태학의 원리를 조금만 공부해봅시다!

학교 다닐 때보다 더 열심히 공부했...

modified from http://en.wikipedia.org/wiki/Biome#/media/File:PrecipitationTempBiomes.jpg

연평균 온도 (°C)

연평균 강

수량 (cm

)

열대우림

온대 계절림

한대림

아열대 사막

열대 계절림 사바나

-10 0 10 20 30

100

200

300

400

삼림/관목지

툰드라 온대 초지/추운 사막

온대 다우림

기존에 쓰던 식생 단위는 군계

하지만 식생 단위를 규모 별로 살펴 보니

소규모 대규모

from Pedrotti, 2013

하지만 식생 단위를 규모 별로 살펴 보니

소규모 대규모

개체

I

군집

II

분층 군락

III

식물 군락

IV V VI VII

군계

VIII

from Pedrotti, 2013

개체 군집 분층 군락 군계

하지만 식생 단위를 규모 별로 살펴 보니

식물 군락소규모 대규모

I II III IV V VI VII VIII

from Pedrotti, 2013

플레이어가 실제 게임에서 보는 단위

개체 군집 분층 군락 군계

하지만 식생 단위를 규모 별로 살펴 보니

식물 군락소규모 대규모

I II III IV V VI VII VIII

from Pedrotti, 2013

플레이어가 실제 게임에서 보는 단위

기존 시뮬이 쓰던 단위

습한 풀밭습한 풀밭 사바나 숲 갈대강

사바나라는 군계에는..

남아프리카 칼라하리 지역 from Perry et al., 2008

열대림이라는 군계에는...

모래밭강

다년생 풀작은 개울

키 작은 나무키 큰 나무

키가 아주 큰 나무

아마존의 강 부근 지역 from Perry et al., 2008

from Schulze et al., 2002

실제로 보면..

from Schulze et al., 2002

실제로 보면..

습지 풀밭from Schulze et al., 2002

실제로 보면..

습지 풀밭

덤불+삐죽삐죽 식물

from Schulze et al., 2002

실제로 보면..

습지 풀밭

덤불

덤불+삐죽삐죽 식물

from Schulze et al., 2002

실제로 보면..

습지 풀밭

덤불

덤불+삐죽삐죽 식물

덤불 약간 + 키작은 나무

from Schulze et al., 2002

실제로 보면..

습지 풀밭

덤불

덤불+삐죽삐죽 식물

덤불 약간 + 키작은 나무

키작은 나무

from Schulze et al., 2002

실제로 보면..

습지 풀밭

덤불

덤불+삐죽삐죽 식물

덤불 약간 + 키작은 나무

키작은 나무

황무지

from Schulze et al., 2002

실제로 보면..

패치(patch)

패치 패치

매트릭스(matrix)

매트릭스

매트릭스모자이크

코리더(corridor)

http://ag.arizona.edu/extension/riparian/chapt5/p3.html

얘네들이 있으면 자연스럽겠구나!

패치(patch)

패치 패치

매트릭스(matrix)

매트릭스

매트릭스모자이크

코리더(corridor)

http://ag.arizona.edu/extension/riparian/chapt5/p3.html

얘네들이 있으면 자연스럽겠구나!

패치(patch)

패치 패치

매트릭스(matrix)

매트릭스

매트릭스모자이크

코리더(corridor)

http://ag.arizona.edu/extension/riparian/chapt5/p3.html

얘네들이 있으면 자연스럽겠구나!

패치(patch)

패치 패치

매트릭스(matrix)

매트릭스

매트릭스모자이크

코리더(corridor)

http://ag.arizona.edu/extension/riparian/chapt5/p3.html

얘네들이 있으면 자연스럽겠구나!

패치(patch)

패치 패치

매트릭스(matrix)

매트릭스

매트릭스모자이크

코리더(corridor)

http://ag.arizona.edu/extension/riparian/chapt5/p3.html

얘네들이 있으면 자연스럽겠구나!

이런 공간에 플레이어들이 개입하면?

from Schulze et al., 2002

플레이어들이 숲을 베어내면, 숲이 어떻게 역동적으로 반응해야 할까?

파괴

재성장

경쟁

평형

파괴

재성장

평형

개척종 소멸

개척종 소멸

평형

from Schulze et al., 2002

플레이어들이 숲을 베어내면, 숲이 어떻게 역동적으로 반응해야 할까?

파괴

재성장

경쟁

평형

파괴

재성장

평형

개척종 소멸

개척종 소멸

평형

from Schulze et al., 2002

플레이어들이 숲을 베어내면, 숲이 어떻게 역동적으로 반응해야 할까?

파괴

재성장

경쟁

평형

파괴

재성장

평형

개척종 소멸

개척종 소멸

평형

from Schulze et al., 2002

플레이어들이 숲을 베어내면, 숲이 어떻게 역동적으로 반응해야 할까?

그런 역동성을 개체 단위의 시뮬레이터에선 어떻게 구현할까?

from Schulze et al., 2002

1 작은 풀, 2 관목, 3 커다란 나무

그런 역동성을 개체 단위의 시뮬레이터에선 어떻게 구현할까?

from Schulze et al., 2002

1 작은 풀, 2 관목, 3 커다란 나무

그런 역동성을 개체 단위의 시뮬레이터에선 어떻게 구현할까?

from Schulze et al., 2002

1 작은 풀, 2 관목, 3 커다란 나무

그런 역동성을 개체 단위의 시뮬레이터에선 어떻게 구현할까?

A. 작은 풀부터 먼저 심고 B. 작은 풀 많아지면 관목을 심고 C. 관목 많아지면 커다란 나무를 심되 D. 나무 아래의 관목과 풀을 없애면?

from Schulze et al., 2002

1 작은 풀, 2 관목, 3 커다란 나무

그런 역동성을 개체 단위의 시뮬레이터에선 어떻게 구현할까?

A. 작은 풀부터 먼저 심고 B. 작은 풀 많아지면 관목을 심고 C. 관목 많아지면 커다란 나무를 심되 D. 나무 아래의 관목과 풀을 없애면?

이거 어떻게든 될 거 같기도???

비전 공유

조사한 내용 바탕으로 식생 시뮬레이터를 어떻게 만들지

끝 그림을 전체 팀과 공유함

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태3. 플레이어가 필요한 자원의 위치를 직관적으로 찾을 수 있게 만든다: (예) 갈대는 물가에.

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태3. 플레이어가 필요한 자원의 위치를 직관적으로 찾을 수 있게 만든다: (예) 갈대는 물가에.4. 플레이어의 행동에 따라 식생이 역동적으로 반응할 기반을 만든다.

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태3. 플레이어가 필요한 자원의 위치를 직관적으로 찾을 수 있게 만든다: (예) 갈대는 물가에.4. 플레이어의 행동에 따라 식생이 역동적으로 반응할 기반을 만든다.

새로운 식생 시뮬레이터의 비전

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태3. 플레이어가 필요한 자원의 위치를 직관적으로 찾을 수 있게 만든다: (예) 갈대는 물가에.4. 플레이어의 행동에 따라 식생이 역동적으로 반응할 기반을 만든다.

새로운 식생 시뮬레이터의 비전

세부 로직 디자인

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

온도 더위 추위

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

물 가뭄 홍수

온도 더위 추위

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

빛 빛

물 가뭄 홍수

온도 더위 추위

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

빛 빛

화학적 미네랄 부족/과다 오염물질(중금속, 살충제)

물 가뭄 홍수

온도 더위 추위

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

빛 빛

화학적 미네랄 부족/과다 오염물질(중금속, 살충제)

기계적 바람 토양 이동 물에 잠김

물 가뭄 홍수

온도 더위 추위

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

온도

화학적

기계적

더위 추위

가뭄 홍수

미네랄 부족/과다 오염물질(중금속, 살충제)

바람 토양 이동 물에 잠김

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

그중 플레이어가 게임 공간에서

인지가능한 것들

from Schulze et al., 2002

개별 식물 분포에 영향 주는

스트레스 요인

생물적 요소

비생물적 요소

병충해 뜯어 먹힘 다른 식물과 경쟁

온도

화학적

기계적

더위 추위

가뭄 홍수

미네랄 부족/과다 오염물질(중금속, 살충제)

바람 토양 이동 물에 잠김

식생이 군계를 넘나들면서 점이적으로 변화하게 만들려면

그중 플레이어가 게임 공간에서

인지가능한 것들

시뮬레이터에서는 이렇게 사용하기로...

뜯어 먹힘덩치 크면 경쟁에서 이김

염도 높음/낮음

온도

덩치

디자인한 로직을 한 장 요약하면

식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

디자인한 로직을 한 장 요약하면

타일의 환경 특성을 확인1식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

디자인한 로직을 한 장 요약하면

타일의 환경 특성을 확인1

그 특성에 맞는 식물을 그 타일에 넣어보고2

식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

디자인한 로직을 한 장 요약하면

타일의 환경 특성을 확인1

주변의 덩치 큰 식물들이 얼마나 있는지 계산(!)해서 출현/생존 조건에 맞나 판단.

3그 특성에 맞는 식물을 그 타일에 넣어보고2

식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

디자인한 로직을 한 장 요약하면

타일의 환경 특성을 확인1

주변의 덩치 큰 식물들이 얼마나 있는지 계산(!)해서 출현/생존 조건에 맞나 판단.

3그 특성에 맞는 식물을 그 타일에 넣어보고2

(덩치 큰 식물로 단순화함)

4 조건에 맞는 식물이 여럿이면 경쟁에서 이긴 식물을 심음

식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

디자인한 로직을 한 장 요약하면

타일의 환경 특성을 확인1

주변의 덩치 큰 식물들이 얼마나 있는지 계산(!)해서 출현/생존 조건에 맞나 판단.

3그 특성에 맞는 식물을 그 타일에 넣어보고2

5 땅에 식물 심을 때마다 모든 타일에서 이를 반복

(덩치 큰 식물로 단순화함)

4 조건에 맞는 식물이 여럿이면 경쟁에서 이긴 식물을 심음

식생이 심겨져 있는 타일

생존 범위가 정해진 식물들

문제: 다음 그림의 A, B, C처럼 임의의 타일에 대해, 반경 N타일 안의 숫자 총합을 구하는 방법은?

30 500

200 250 30 500

250 700

30 A?

700 850 50 250

500 B?

500 400

500 250

C? 700 500

50 30

연산량이 무지막지..

문제: 다음 그림의 A, B, C처럼 임의의 타일에 대해, 반경 N타일 안의 숫자 총합을 구하는 방법은?

30 500

200 250 30 500

250 700

30 A?

700 850 50 250

500 B?

500 400

500 250

C? 700 500

50 30

(조건 1) N은 1, 3, 5, 7, ... 식물 종류마다 다름.

연산량이 무지막지..

문제: 다음 그림의 A, B, C처럼 임의의 타일에 대해, 반경 N타일 안의 숫자 총합을 구하는 방법은?

30 500

200 250 30 500

250 700

30 A?

700 850 50 250

500 B?

500 400

500 250

C? 700 500

50 30

(조건 1) N은 1, 3, 5, 7, ... 식물 종류마다 다름.

(조건 2) 시뮬레이션 한 번 돌 때마다 재계산해야 함.

연산량이 무지막지..

문제: 다음 그림의 A, B, C처럼 임의의 타일에 대해, 반경 N타일 안의 숫자 총합을 구하는 방법은?

30 500

200 250 30 500

250 700

30 A?

700 850 50 250

500 B?

500 400

500 250

C? 700 500

50 30

(조건 1) N은 1, 3, 5, 7, ... 식물 종류마다 다름.

(조건 2) 시뮬레이션 한 번 돌 때마다 재계산해야 함.

(조건 3) 빨라야 한다. 2048x2048 타일 기준으로 십수 초 쯤?

연산량이 무지막지..

문제: 다음 그림의 A, B, C처럼 임의의 타일에 대해, 반경 N타일 안의 숫자 총합을 구하는 방법은?

30 500

200 250 30 500

250 700

30 A?

700 850 50 250

500 B?

500 400

500 250

C? 700 500

50 30

(조건 1) N은 1, 3, 5, 7, ... 식물 종류마다 다름.

(조건 2) 시뮬레이션 한 번 돌 때마다 재계산해야 함.

(조건 3) 빨라야 한다. 2048x2048 타일 기준으로 십수 초 쯤?

연산량이 무지막지..

우리는 답을 찾을 것이다. 늘 그랬듯이.

답이 궁금하시면, 오늘 오후 5시 40분에 좌석 고정!

답이 궁금하시면, 오늘 오후 5시 40분에 좌석 고정!

수학과 컴퓨터의 힘으로 빔!

식물 데이터 작성

이름

전나무id

엔티티id

너의 이름은 전나무. 소스코드는 너를 ‘엔티티id'로 부르고 있지.

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

1. 수십 종의 모든 식물을 크기 별로 줄 세우고

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

1. 수십 종의 모든 식물을 크기 별로 줄 세우고

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

1. 수십 종의 모든 식물을 크기 별로 줄 세우고2. 풀, 나무 등에 따라 덩치 값을 정하고

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

70150

1,200

180

350

600

1. 수십 종의 모든 식물을 크기 별로 줄 세우고2. 풀, 나무 등에 따라 덩치 값을 정하고

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

70150

1,200

180

350

600

1. 수십 종의 모든 식물을 크기 별로 줄 세우고2. 풀, 나무 등에 따라 덩치 값을 정하고3. 반경 몇 m만큼 다른 식물들 눈치(?)를 볼 것이며

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

70150

1,200

180

350

600

1. 수십 종의 모든 식물을 크기 별로 줄 세우고2. 풀, 나무 등에 따라 덩치 값을 정하고3. 반경 몇 m만큼 다른 식물들 눈치(?)를 볼 것이며4. 출현/소멸 조건은 어떻게 되는지 결정

식물의 덩치(바이오매스)와 출현 조건과 소멸 조건을 정해주자.

말로는 간단한데 제대로 된 숫자 맞춰주기 위해서 굉장히 여러 번 손을 댔었네요.

70150

1,200

180

350

600

1. 수십 종의 모든 식물을 크기 별로 줄 세우고2. 풀, 나무 등에 따라 덩치 값을 정하고3. 반경 몇 m만큼 다른 식물들 눈치(?)를 볼 것이며4. 출현/소멸 조건은 어떻게 되는지 결정

이름

전나무id

엔티티id

덩치

850이름

전나무id

엔티티id

너는 꽤 큰 나무야.

덩치

850

반경

3타일

이름

전나무id

엔티티id

너는 꽤 큰 나무야.반경 7m안에

덩치

850

반경

3타일

생성/소멸 300~9000

이름

전나무id

엔티티id

관목들이 한둘은 있어야 생겨날 수 있고 너같은 덩치가 열 그루 넘으면 더는 생겨날 수 없어.

너는 꽤 큰 나무야.반경 7m안에

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

추움 더움

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

추움 더움

습함

건조함

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

설원 / 툰드라

추움 더움

습함

건조함

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

설원 / 툰드라 온대림 / 열대림

추움 더움

습함

건조함

식물 형태/종류에 따라 군계 별로 배치하며 각각 상대적 온도/습도 범위를 정해주자.

설원 / 툰드라 온대림 / 열대림

추움 더움

습함

건조함

이것도 실제로는 정말 손을 많이 댄 숫자네요...

덩치

850

온도 -40~-11

습도

5~70

반경

3타일

생성/소멸 300~9000

이름

전나무id

엔티티id

너는 이 온도와 습도 범위에서만 살 수 있단다.

* 온도 단위는 현실 온도와는 무관

어느 정도 됐으니 이제 실제 돌려보면서 반복 개선합니다.

#1 온도와 습도

온도가 뭔가 이상한데?

야자수

마른 덤불

활엽수

온도가 뭔가 이상해요. 타일 별로 온도가 다른 거 아니었나요?

온도가 뭔가 이상해요. 타일 별로 온도가 다른 거 아니었나요?

음? 원래 같은 군계면 온도도 모두 똑같았는데요?

온도가 뭔가 이상해요. 타일 별로 온도가 다른 거 아니었나요?

음? 원래 같은 군계면 온도도 모두 똑같았는데요?

앗, 그럼 군계 경계 면에선 한 발자국만 움직여도 온도가 확 바뀔 텐데.. 그럼 온도 맵을 이렇게 점진적인 형태로 바꿔 주세요.

그리고 한 군계는 이렇게 온도가 범위를 갖게 해주세요.

그리고 한 군계는 이렇게 온도가 범위를 갖게 해주세요.

ㅇㅇ

다 됐어요. 확인 좀..

오, 굿굿!

다 됐어요. 확인 좀..

#2 군계 속성

스프라이트가 의도한 군계에서 벗어난다.

스프라이트가 의도한 군계에서 벗어난다.

눈 안 덮인 나무가 눈밭 위에

스프라이트가 의도한 군계에서 벗어난다.

눈 안 덮인 나무가 눈밭 위에

눈 덮인 나무가 흙 위에

이거 너무 이상하지 않아요?

으으. 식물에서 군계 정보를 없앴더니... 온도를 정확히 맞추면 될 수도 있어요.

이거 너무 이상하지 않아요?

으으. 식물에서 군계 정보를 없앴더니... 온도를 정확히 맞추면 될 수도 있어요.

이거 너무 이상하지 않아요?

음.. 그걸로는 완벽하게 제어하지 못할 것 같은데.. 식생 점이적으로 만들면서도 스프라이트 맞출 수 있지 않을까요?

으으. 식물에서 군계 정보를 없앴더니... 온도를 정확히 맞추면 될 수도 있어요.

이거 너무 이상하지 않아요?

음.. 그걸로는 완벽하게 제어하지 못할 것 같은데.. 식생 점이적으로 만들면서도 스프라이트 맞출 수 있지 않을까요?

음~ 그럼 식물 별로 군계를 화이트리스트/블랙리스트 형태로 관리해볼게요.

으으. 식물에서 군계 정보를 없앴더니... 온도를 정확히 맞추면 될 수도 있어요.

이거 너무 이상하지 않아요?

음.. 그걸로는 완벽하게 제어하지 못할 것 같은데.. 식생 점이적으로 만들면서도 스프라이트 맞출 수 있지 않을까요?

음~ 그럼 식물 별로 군계를 화이트리스트/블랙리스트 형태로 관리해볼게요.

덩치

850

온도 -40~-11

습도

5~70

반경

3타일

생성/소멸 300~9000

출현 군계

온대림툰드라

이름

전나무id

엔티티id

온대림, 툰드라 말고 다른 곳엔 나오지 마! 특히 눈 덮인 설원에 나오지 마!

해결!

해결!

눈 덮인 나무는 눈 위에

해결!

눈 덮인 나무는 눈 위에

눈 안 덮인 나무는 흙 위에

#3 염도와 디스턴스 필드

습도만으로는 해변이 이상하다.

습도만으로는 해변이 이상하다.

물이 잠시 없지만 원래 바다

습도만으로는 해변이 이상하다.

해변의 야자수는 OK

물이 잠시 없지만 원래 바다

습도만으로는 해변이 이상하다.

해변의 야자수는 OK

물이 잠시 없지만 원래 바다

호수/바다 주변이라 습도가 높아 모래밭에 갈대가 자란다.

갈대가 해변에 자라면 안 될 것 같아요. 이렇게 해안선 기준으로 거리를 측정해서 ‘염도’ 속성을 넣어주세요. 갈대는 염도가 0, 1인 곳엔 못 나오는 거죠.

갈대가 해변에 자라면 안 될 것 같아요. 이렇게 해안선 기준으로 거리를 측정해서 ‘염도’ 속성을 넣어주세요. 갈대는 염도가 0, 1인 곳엔 못 나오는 거죠.

염도 높음

갈대가 해변에 자라면 안 될 것 같아요. 이렇게 해안선 기준으로 거리를 측정해서 ‘염도’ 속성을 넣어주세요. 갈대는 염도가 0, 1인 곳엔 못 나오는 거죠.

염도 높음

염도 낮음

갈대가 해변에 자라면 안 될 것 같아요. 이렇게 해안선 기준으로 거리를 측정해서 ‘염도’ 속성을 넣어주세요. 갈대는 염도가 0, 1인 곳엔 못 나오는 거죠.

염도 높음

염도 낮음

음~ 해변에서의 거리를 새로 측정하기보단.. 우리 물 처리하는 것에 디스턴스 필드라는 걸 쓰는데 그걸 활용하면 어떨까요?

갈대가 해변에 자라면 안 될 것 같아요. 이렇게 해안선 기준으로 거리를 측정해서 ‘염도’ 속성을 넣어주세요. 갈대는 염도가 0, 1인 곳엔 못 나오는 거죠.

염도 높음

염도 낮음

음~ 해변에서의 거리를 새로 측정하기보단.. 우리 물 처리하는 것에 디스턴스 필드라는 걸 쓰는데 그걸 활용하면 어떨까요?

디스턴스 필드? 그게 뭐죠?

100

125

150

75

175

이렇게 물 경계 렌더링할 때 쓰는 값이거든요. 바다 뿐만 아니라 강, 호수에도 쓰면 되겠네요.

100

125

150

75

175

이렇게 물 경계 렌더링할 때 쓰는 값이거든요. 바다 뿐만 아니라 강, 호수에도 쓰면 되겠네요.쩌...쩐다!

덩치

850

온도 -40~-11

습도

5~70 바다 df

0~100강 df

0~100

반경

3타일

생성/소멸 300~9000

출현 군계

온대림툰드라

이름

전나무id

엔티티id

바다랑 강에 딱 붙어서 나오지마!

덩치

850

온도 -40~-11

습도

5~70 바다 df

0~100

호수 df

0~255

강 df

0~100

반경

3타일

생성/소멸 300~9000

출현 군계

온대림툰드라

이름

전나무id

엔티티id

바다랑 강에 딱 붙어서 나오지마!호수는 뭐 상관없을 듯?

해결!

호수 갈대 습도 별 차이 없는데도 갈대 안 자람

해결!

호수 갈대 습도 별 차이 없는데도 갈대 안 자람

125 100 75150

호수 기준 디스턴스 필드

해결!

호수 갈대 습도 별 차이 없는데도 갈대 안 자람

125 100 75150

호수 기준 디스턴스 필드

갈대가 자랄 수 있는 범위

#4 벽지형과 디스턴스 필드

벽 지형 주위로 큰 나무가 안 심기게 할 방법이 있을까요? 나무에 가려 벽지형이 안 보여요.

벽 지형 주위로 큰 나무가 안 심기게 할 방법이 있을까요? 나무에 가려 벽지형이 안 보여요.

어, 잠시만요. 그거 제 쪽에서 할 수 있을 것 같은데...

이렇게 벽지형도 경계선 기준으로 디스턴스 필드를 만들면 될 것 같은데요?

ㅇㅇ. 만들었어요.

이렇게 벽지형도 경계선 기준으로 디스턴스 필드를 만들면 될 것 같은데요?

덩치

850

온도 -40~-11

습도

5~70 바다 df

0~100

호수 df

0~255

강 df

0~100

벽지형 df

0~90

반경

3타일

생성/소멸 300~9000

출현 군계

온대림툰드라

이름

전나무id

엔티티id

넌 키 큰 나무니까 벽지형에 너무 딱 붙지마!

해결!

나무는 벽지형에서 떨어진 곳에

벽지형 주변엔 바위

#5 멀티 스테이지

빽빽한 갈대밭을 만들고 싶은데, 너무 듬성듬성 나오네요.

빽빽한 갈대밭을 만들고 싶은데, 너무 듬성듬성 나오네요.

시뮬레이션 시행 회수를 늘려서, 더 많이 심어보면 어때요?

으아, 그랬더니 소철류도 너무 빽빽하게 생기네요. 얘넨 이러면 안 되는데..

으아, 그랬더니 소철류도 너무 빽빽하게 생기네요. 얘넨 이러면 안 되는데..

음, 생기는 위치는 지금처럼 자연스럽되, 어떤 건 좀 더 많이 생기고, 어떤 건 좀 덜 생겨야 하는군요... 잠시만요.

멀티 스테이지를 도입하자.

스테이지에 속한 애들끼리만 서로 경쟁해요. 1스테이지에 식물이 10종이고, 2스테이지에 식물이 20종이면, 1스테이지 식물 각각은 2스테이지 식물들보다 대충 2배 더 많이 생길 수 있겠네요!

멀티 스테이지를 도입하자.

스테이지에 속한 애들끼리만 서로 경쟁해요. 1스테이지에 식물이 10종이고, 2스테이지에 식물이 20종이면, 1스테이지 식물 각각은 2스테이지 식물들보다 대충 2배 더 많이 생길 수 있겠네요!

오, 일단 한 번 볼게요!

스테이지

2

덩치

850

온도 -40~-11

습도

5~70 바다 df

0~100

호수 df

0~255

강 df

0~100

벽지형 df

0~90

반경

3타일

생성/소멸 300~9000

출현 군계

온대림툰드라

이름

전나무id

엔티티id

스테이지 1엔 갈대나 돌처럼 많이 심겨야 하는 것들만 있어. 넌 스테이지 2에서 다른 식물들과 섞여서 심기도록 해.

해결!

빽빽한 갈대밭

#6 식생 최종 결과물

1. 플레이어의 위화감을 줄인다: 식생의 점이적 변화 2. 플레이어가 환경을 자연스럽게 받아들이게 만든다: 모자이크, 패치, 코리더 등의 형태 3. 플레이어가 필요한 자원의 위치를 직관적으로 찾을 수 있게 만든다: (예) 갈대는 물가에. 4. 플레이어의 행동에 따라 식생이 역동적으로 반응할 기반을 만든다.

새로운 식생 시뮬레이터의 비전

코리더

코리더

모자이크

매트릭스 패치

해변

온대림

호수

설원/한대림

한대림내부 테스트 유저 스크린샷

사막

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

목표 달성?

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

절차적으로 만들어낸 생태계, 과연 테스트 유저들의 반응은?

Q. 식물, 동물 등 자연 환경 배치는 어떠셨나요? 그 이유는?

물론 아직 할 일이!

새로 찾은 문제 중 하나플레이어가 애써 가꾼 마을이새로 생긴 나무에 파묻혀 버림

우리는 답을 찾을 것이다. 늘 그랬듯이.

그럼 이제 동물 얘기를 해볼게요!

듀랑고라면 역시 공룡이지!

모바일이라는데 타격감은 어떨까?

마영전 개발진이 많다던데 그럼 액션도 끝내주겠네?

공룡이라니 낭만적이잖아?

그래서, 플레이어 - 공룡 간 상호작용에 많은 공을 들이고 있습니다.

그래서, 플레이어 - 공룡 간 상호작용에 많은 공을 들이고 있습니다.

더 보고 싶으시면, 내일 아침 9시 50분에!!

디렉터

한편...

디렉터

개별 동물은 어느 정도 되어 가는데, 무리로서의 동물은 아직 아쉽군요. 동물원이 아닌 사파리로 만들고 싶은데..

한편...

디렉터

개별 동물은 어느 정도 되어 가는데, 무리로서의 동물은 아직 아쉽군요. 동물원이 아닌 사파리로 만들고 싶은데..

사파리요?? 좀 더 설명을...

한편...

음.. 동물들이 늘 같은 곳에만 있는 게 아니라, 떼지어 물 마시러 가기도 하고

우두머리가 앞장 서면 다른 이가 뒤따르고 무리 뒤엔 새끼들이 촐랑거리고

늘 깨어 있는 게 아니라 몰려서 잠자기도 하는데, 그때 보초를 세우기도 하고

뭔가 함께 사냥하기도 하고

먹을 게 있으면 친구도 부르고

그러다 다른 동물을 만나면 맞서 싸우는.. 그런 역동적인 모습 말이죠.

디렉터오, 구경하는 재미도 쏠쏠하겠네요. 그럼 그걸 어떻게 만들면 되나요?

디렉터

그건 이제부터 님이 알아서 잘.

오, 구경하는 재미도 쏠쏠하겠네요. 그럼 그걸 어떻게 만들면 되나요?

디렉터

그건 이제부터 님이 알아서 잘.

오, 구경하는 재미도 쏠쏠하겠네요. 그럼 그걸 어떻게 만들면 되나요?

Aㅏ… 척추 동물은 잘 모르는데…

그래서 동물 행동학의 원리도 조금..

무리를 구성하는 건 상대적으로 쉽습니다.

http://upload.wikimedia.org/wikipedia/commons/9/93/Herd_of_Elephants.jpg

https://www.flickr.com/photos/ekilby/12033414114/

http://upload.wikimedia.org/wikipedia/commons/e/eb/Mother_and_Baby_Ducks_(5828496140).jpg

http://upload.wikimedia.org/wikipedia/commons/0/06/Falkland_Islands_Penguins_41.jpg

무리를 구성하는 건 상대적으로 쉽습니다.

http://upload.wikimedia.org/wikipedia/commons/9/93/Herd_of_Elephants.jpg

https://www.flickr.com/photos/ekilby/12033414114/

http://upload.wikimedia.org/wikipedia/commons/e/eb/Mother_and_Baby_Ducks_(5828496140).jpg

http://upload.wikimedia.org/wikipedia/commons/0/06/Falkland_Islands_Penguins_41.jpg

펭귄 x 10

무리를 구성하는 건 상대적으로 쉽습니다.

http://upload.wikimedia.org/wikipedia/commons/9/93/Herd_of_Elephants.jpg

https://www.flickr.com/photos/ekilby/12033414114/

http://upload.wikimedia.org/wikipedia/commons/e/eb/Mother_and_Baby_Ducks_(5828496140).jpg

http://upload.wikimedia.org/wikipedia/commons/0/06/Falkland_Islands_Penguins_41.jpg

펭귄 x 10어미오리 x 1 새끼오리 x 6

무리를 구성하는 건 상대적으로 쉽습니다.

http://upload.wikimedia.org/wikipedia/commons/9/93/Herd_of_Elephants.jpg

https://www.flickr.com/photos/ekilby/12033414114/

http://upload.wikimedia.org/wikipedia/commons/e/eb/Mother_and_Baby_Ducks_(5828496140).jpg

http://upload.wikimedia.org/wikipedia/commons/0/06/Falkland_Islands_Penguins_41.jpg

펭귄 x 10어미오리 x 1 새끼오리 x 6

우두머리 늑대 x 1 추종자 늑대 x 4

무리를 구성하는 건 상대적으로 쉽습니다.

http://upload.wikimedia.org/wikipedia/commons/9/93/Herd_of_Elephants.jpg

https://www.flickr.com/photos/ekilby/12033414114/

http://upload.wikimedia.org/wikipedia/commons/e/eb/Mother_and_Baby_Ducks_(5828496140).jpg

http://upload.wikimedia.org/wikipedia/commons/0/06/Falkland_Islands_Penguins_41.jpg

펭귄 x 10어미오리 x 1 새끼오리 x 6

우두머리 늑대 x 1 추종자 늑대 x 4

수컷 코끼리 x 1 암컷 코끼리 x 3 새끼 코끼리 x 1

짜잔, 나와랏, 무리 id “#&*&(%”

화면 안에 보이는 건 다섯 마리 뿐이지만,

어미 트리케라톱스 x 14 새끼 트리케라톱스 x 6

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

떼지어 이동

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

떼지어 이동

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

떼지어 이동

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

from Dingle, 2014

거시적인 움직임

아이들/랜덤 모션

인터럽트에 대해 추격/도망

갈증/배고픔

떼지어 이동

from Dingle, 2014

거시적인 움직임

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

갈증/배고픔

떼지어 이동

아이들/랜덤 모션

인터럽트에 대해 추격/도망

from Dingle, 2014

거시적인 움직임

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

갈증/배고픔

떼지어 이동

아이들/랜덤 모션

인터럽트에 대해 추격/도망개체 단위의 AI

from Dingle, 2014

거시적인 움직임

하지만, 무리를 무리답게 움직이게 만드는 건 좀 생각해봐야 합니다.움직이게

갈증/배고픔

떼지어 이동무리 단위의 AI

아이들/랜덤 모션

인터럽트에 대해 추격/도망개체 단위의 AI

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

남서쪽 방향 10m인 곳에 가서 5분 동안 물을 마시도록 해라.

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

남서쪽 방향 10m인 곳에 가서 5분 동안 물을 마시도록 해라.

욕구를 정하고 해당 행동 지시

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

남서쪽 방향 10m인 곳에 가서 5분 동안 물을 마시도록 해라.네, 그러겠습니다!

욕구를 정하고 해당 행동 지시

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

남서쪽 방향 10m인 곳에 가서 5분 동안 물을 마시도록 해라.네, 그러겠습니다!

욕구를 정하고 해당 행동 지시

무리 전체의 욕구는 무리 AI가 정해서 알려준다.

무리 AI

하나의 동물 무리

남서쪽 방향 10m인 곳에 가서 5분 동안 물을 마시도록 해라.네, 그러겠습니다!

우린 아무 생각이 없다.

욕구를 정하고 해당 행동 지시

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

전방에 플레이어가 나타났지 말입니다.

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

전방에 플레이어가 나타났지 말입니다.

상황 보고

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

위험하지 않다. 일단 계속 물 마시러 가라.

전방에 플레이어가 나타났지 말입니다.

상황 보고

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

위험하지 않다. 일단 계속 물 마시러 가라.

전방에 플레이어가 나타났지 말입니다.

상황 보고

판단 & 행동 지시

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

위험하지 않다. 일단 계속 물 마시러 가라.

전방에 플레이어가 나타났지 말입니다.

우린 뇌가 없지. 으허허 아하하

상황 보고

판단 & 행동 지시

개체는 주변 인식과 행동만. 판단은 무리 AI가 하고 개체는 그 명령을 따른다.

무리 AI

하나의 동물 무리

위험하지 않다. 일단 계속 물 마시러 가라.

전방에 플레이어가 나타났지 말입니다.

우린 뇌가 없지. 으허허 아하하

상황 보고

판단 & 행동 지시

위험한 정도는 어떻게 판단을??

1972년 Krukk이 조사한 바에 따르면,

하이에나는 사냥감에 따라 무리 숫자를 맞춰 나간다고... Manning and Dawkins, 2012

1972년 Krukk이 조사한 바에 따르면,

하이에나는 사냥감에 따라 무리 숫자를 맞춰 나간다고... Manning and Dawkins, 2012

http://upload.wikimedia.org/wikipedia/commons/8/8e/Hyenas_at_stolen_impala_kill.jpg

평균 1.2마리 vs 어린 가젤

1972년 Krukk이 조사한 바에 따르면,

하이에나는 사냥감에 따라 무리 숫자를 맞춰 나간다고... Manning and Dawkins, 2012

http://upload.wikimedia.org/wikipedia/commons/8/8e/Hyenas_at_stolen_impala_kill.jpg

평균 1.2마리 vs 어린 가젤

https://www.flickr.com/photos/arnolouise/449171240/

평균 2.5마리 vs 큰 영양

1972년 Krukk이 조사한 바에 따르면,

하이에나는 사냥감에 따라 무리 숫자를 맞춰 나간다고... Manning and Dawkins, 2012

http://upload.wikimedia.org/wikipedia/commons/8/8e/Hyenas_at_stolen_impala_kill.jpg

평균 1.2마리 vs 어린 가젤

https://www.flickr.com/photos/arnolouise/449171240/

평균 2.5마리 vs 큰 영양

http://www.hyaenidae.org/uploads/images/hyenas/spotted_groupinwater.jpg

평균 10.8마리 vs 얼룩말

먹잇감인 얼룩말들도 그 사실을 알고 있다.

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

밥은 먹고 다니니 ㅋㅋ

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

밥은 먹고 다니니 ㅋㅋ

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

밥은 먹고 다니니 ㅋㅋ

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

밥은 먹고 다니니 ㅋㅋ

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

위험해. 저 숫자라면 우리를 노리는 거야.

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

먹잇감인 얼룩말들도 그 사실을 알고 있다.

밥은 먹고 다니니 ㅋㅋ

진돗개 1호 발령!

괜찮아. 저 숫자론 우리한테 못 덤벼

© Toei Animation

위험해. 저 숫자라면 우리를 노리는 거야.

© Toei Animation

http://upload.wikimedia.org/wikipedia/commons/8/83/Zebra_Botswana_edit02.jpg

https://www.flickr.com/photos/vidyo/9819211574/http://pt.wikipedia.org/wiki/Zebra

이걸 게임에 응용하면??

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

아이고, 장에 다녀 오세요?

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

http://clipbank.ebs.co.kr/selectPrimidPopList?clsfnSystId=&gbnId=pri&searchTxt=&sort=0&pageIndex=2577#

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

아이고, 장에 다녀 오세요?

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

http://clipbank.ebs.co.kr/selectPrimidPopList?clsfnSystId=&gbnId=pri&searchTxt=&sort=0&pageIndex=2577#

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

아이고, 장에 다녀 오세요?

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

http://clipbank.ebs.co.kr/selectPrimidPopList?clsfnSystId=&gbnId=pri&searchTxt=&sort=0&pageIndex=2577#

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

아이고, 장에 다녀 오세요?

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

위험해. 저 숫자라면 우리를 노리는 거야.

© Toei Animation

http://clipbank.ebs.co.kr/selectPrimidPopList?clsfnSystId=&gbnId=pri&searchTxt=&sort=0&pageIndex=2577#

http://en.wikipedia.org/wiki/Agriculture_in_China

이걸 게임에 응용하면??

아이고, 장에 다녀 오세요?

진돗개 1호 발령!

괜찮아. 저 숫자론 우리한테 못 덤벼.

© Toei Animation

위험해. 저 숫자라면 우리를 노리는 거야.

© Toei Animation

나아가 플레이어의 레벨을 본다면?

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

우쭈쭈, 재롱 피우러 왔쪄요?

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

http://en.rocketnews24.com/2014/02/23/18-people-who-know-how-to-squeeze-in-a-nap/

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

우쭈쭈, 재롱 피우러 왔쪄요?

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

http://en.rocketnews24.com/2014/02/23/18-people-who-know-how-to-squeeze-in-a-nap/

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

우쭈쭈, 재롱 피우러 왔쪄요?

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

http://en.rocketnews24.com/2014/02/23/18-people-who-know-how-to-squeeze-in-a-nap/

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

우쭈쭈, 재롱 피우러 왔쪄요?

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

위험해. 저 레벨엔 우리가 크게 당한다.

© Toei Animation

http://en.rocketnews24.com/2014/02/23/18-people-who-know-how-to-squeeze-in-a-nap/

https://www.flickr.com/photos/evarinaldiphotography/6271446513

나아가 플레이어의 레벨을 본다면?

우쭈쭈, 재롱 피우러 왔쪄요?

진돗개 1호 발령!

괜찮아. 저 레벨론 우리한테 피해 못 줘.

© Toei Animation

위험해. 저 레벨엔 우리가 크게 당한다.

© Toei Animation

나아가 플레이어의 장비를 본다면?

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

아이고, 내 등이나 좀 긁어 다오.

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

©Tristar Pictures, Rambo: First Blood Part II

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

아이고, 내 등이나 좀 긁어 다오.

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

©Tristar Pictures, Rambo: First Blood Part II

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

아이고, 내 등이나 좀 긁어 다오.

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

©Tristar Pictures, Rambo: First Blood Part II

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

아이고, 내 등이나 좀 긁어 다오.

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

위험해. 저건 맞으면 큰 일 난다.

© Toei Animation

©Tristar Pictures, Rambo: First Blood Part II

© CJ 엔터테인먼트, 거룩한 계보

나아가 플레이어의 장비를 본다면?

아이고, 내 등이나 좀 긁어 다오.

진돗개 1호 발령!

괜찮아. 저건 맞아도 별로 안 아파.

© Toei Animation

위험해. 저건 맞으면 큰 일 난다.

© Toei Animation

지켜보려 합니다. 그러니 지켜봐 주세요.

결론

시뮬레이션에 왜 그렇게 공을 들이나요?

그렇게 하면 재미가 있나요?

1

2

3

4

5

6

7 8

9

10

11

1213

14 151617

18

19

20

21

2223

25

26

24

http://www.auduboninstitute.org/sites/default/files/Audubon-Aquarium-of-the-Americas-Map.jpg

1

2

3

4

5

6

7 8

9

10

11

1213

14 151617

18

19

20

21

2223

25

26

24

http://www.auduboninstitute.org/sites/default/files/Audubon-Aquarium-of-the-Americas-Map.jpg

세상에는 수족관처럼

꽉 짜여진 동선에서

하나 하나 공들인 수조를

보는 재미도 있겠지만

http://upload.wikimedia.org/wikipedia/commons/1/16/Gold_Coast_summer,_Burleigh_Heads_Beach.jpg

어떤 환경을 놀이터 삼아

다른 사람들과 그곳에서만 할 수 있는

특별한 뭔가를 하는 재미도 있지 않을까요?

http://upload.wikimedia.org/wikipedia/commons/1/16/Gold_Coast_summer,_Burleigh_Heads_Beach.jpg

그런 놀이터를 공 들여 만들고 있습니다.

독특한 재미가 있을 거에요.

관련 이야기는 여기에서 좀 더 자세히!

요약

* 시뮬레이션이 ‘즐거운 놀이터’가 되려면 플레이어의 멘탈 모델을 만족해야 합니다.

요약

* 시뮬레이션이 ‘즐거운 놀이터’가 되려면 플레이어의 멘탈 모델을 만족해야 합니다.

* 듀랑고는 높은 표현 수준에 맞춰 생태계 시뮬레이션을 풍성/정교하게 만들고 있습니다.

요약

* 시뮬레이션이 ‘즐거운 놀이터’가 되려면 플레이어의 멘탈 모델을 만족해야 합니다.

* 듀랑고는 높은 표현 수준에 맞춰 생태계 시뮬레이션을 풍성/정교하게 만들고 있습니다.

* 모사하려는 현실의 구성 원리를 이해하면, 시뮬레이션을 만드는 데에 큰 도움이 됩니다.

요약

* 시뮬레이션이 ‘즐거운 놀이터’가 되려면 플레이어의 멘탈 모델을 만족해야 합니다.

* 듀랑고는 높은 표현 수준에 맞춰 생태계 시뮬레이션을 풍성/정교하게 만들고 있습니다.

* 모사하려는 현실의 구성 원리를 이해하면, 시뮬레이션을 만드는 데에 큰 도움이 됩니다.

* 기능을 구현할 때에는 ‘비전 공유-빠른 프로토타이핑-반복 개선’이 가장 중요합니다.

요약

* 시뮬레이션이 ‘즐거운 놀이터’가 되려면 플레이어의 멘탈 모델을 만족해야 합니다.

* 듀랑고는 높은 표현 수준에 맞춰 생태계 시뮬레이션을 풍성/정교하게 만들고 있습니다.

* 모사하려는 현실의 구성 원리를 이해하면, 시뮬레이션을 만드는 데에 큰 도움이 됩니다.

* 기능을 구현할 때에는 ‘비전 공유-빠른 프로토타이핑-반복 개선’이 가장 중요합니다.

* 가장 좋은 해법은 동료들에게서 나옵니다. 그러니 상황을 항상 공유하세요.

요약

참고문헌 Hugh Dingle, 2014

Migration: the biology of life on the move

Aubrey Manning and Stamp Dawkins, 2012

An introduction to animal behaviour

Franco Pedrotti, 2013

Plant and vegetation mapping

David A. Perry, Ram Oren, and Stephen C. Hart, 2008

Forest ecosystems

Ernst-Detlef Schulze, Erwin Beck, and Klaus Muller-Hohenstein, 2005

Plant ecology

We’re Hiring!

감사합니다.

@imseong

top related