2023. 3. 29. 19:10ㆍ프로젝트/Unity로 공포게임 개발
오브젝트 배치 & 라이팅
ProBuilder로 만든 더미모델 대신에 본격적으로 에셋을 배치해보았다. 3D 작업물을 위한 포트폴리오가 아니기 때문에 맵은 되도록 무료 에셋을 다운받아 제작할 생각이었지만... 아무래도 무료 에셋으로는 한계가 있었다. 그렇다고 유료 에셋을 다운받자니 주객전도가 된 느낌이고 구글링을 하자니 저작권을 신경쓰는게 너무 복잡했다. 역시 필요한 에셋은 스스로 만드는게 제일 마음 편한 것 같다.
(모든 모델링은 3ds max를 통해 작업했다.)
<오두막(관리인 숙소)>
스타팅 지점이 되는 오두막이다. 플레이어는 이 곳에서 게임에 필요한 룰을 숙지하고 도구들을 챙길 수 있다.
<산장>
관리인 숙소인 오두막과 조금 떨어진 곳에 위치한 산장이다. 플레이어는 이 산장 주변을 순찰하게 된다.
열고 닫을 수 있도록 모델의 문 부분은 따로 떼어두었으며 추후 joint를 넣어 구현할 생각이다.
<농구 골대>
산장 주변에 위치한 간이 농구장에 사용될 에셋.
엉성하지만 uv맵도 직접 펼쳤다.
줄이 그어지는 부분만 신경쓰면 되고 나머지는 빨강, 하양으로 색 구분만 잘 해주면 돼서 나름 수월했다.
(사실상 날로 먹은 수준... ...)
<접이식 의자>
낚시터와 캠핑장에 사용될 간이 의자. 의외로 프리 에셋이 있을 것 같은데 없어서 당황했던 오브젝트 1순위.
<캠핑용 그릴>
사실 만드는건 그렇게 어렵지 않았다. 석쇠를 만드는게 조금 노가다였을 뿐...
모양을 더 예쁘게 잡고싶은 욕심도 있었는데 수정을 하려니 도무지 엄두가 나질 않았다. 나중에 기회가 된다면 갈아끼워볼 것.
<낚싯대 거치대>
다행히 낚싯대는 배포중인 에셋이 있었다. 낚싯대까지 만들어야하나 눈 앞이 캄캄했는데 정말 다행이었다.
행복한 기분으로 낚싯대 거치대만 만들었다.
제작한 오브젝트와 다운받은 에셋들을 적절히 배치하면 대략 이런 느낌들. 주변이 어두워 아직 잘 보이진 않는다. 어느정도 맵 제작이 끝나면 어서 손전등부터 만들어야 할 것 같다.
아직 좀 휑한 감이 없지 않아 있지만 우선은 틀만 잡아준다는 느낌으로 진행중이다. 이번 프로젝트에서는 그래픽 보다 코드와 최적화에 중점을 두고싶기 때문이다. 맵은 최소한의 작업으로 끝낼 예정이며 이 이후로는 필요한 부분을 그때 그때 만들어 채워 넣는 방식으로 진행할 것 같다.
조명이 거의 필요없는 게임이기는 하지만 플레이어가 도구를 챙기고 룰을 숙지해야하는 오두막에는 약간의 불빛이 필요하다. 그러기 책상 위에 놓인 램프에 조명을 넣도록 하겠다.
Directional Light | Point Light | Spotlight | Area Light |
- 방향광. 씬 전체에 균일한 빛을 주는 조명. 현실세계의 태양빛과 유사함. - 맵의 어느 곳에 위치해도 상관 없음. |
- 한 포인트를 중심으로 모든 방향에 균등하게 빛을 주는 조명. - '구' 모양으로 빛이 퍼져나가며 빛의 범위를 지정할 수 있음. - 광원에서 거리가 멀어질수록 빛이 약해짐. |
- 흔히들 말하는 스포트라이트. 지정한 포인트에서 원뿔 형태로 빛이 퍼져나감. - 서치라이트, 자동차의 헤드라이트 같은 인공광원에 주로 사용됨. |
- 면 광원. 사각형의 한쪽 면에서만 빛이 발산됨. - bake로만 사용 가능. |
이번에는 위 4가지 조명 중 Point Light를 사용할 예정이다. 실내조명에는 Area Light를 사용할수도 있지만 방 전체에 고루 퍼진 빛 보다는 램프의 주변으로만 빛이 퍼져 있는 것을 원하기 때문.
일단 Point Light를 하나 만들어 램프의 안으로 들어오게끔 위치를 옮겨주었다.
전체적으로 살펴보면 이런 느낌. 방 전체가 밝은 것이 아닌 램프의 주변으로만 빛이 퍼져있다.
Point Light의 설정들이다. 하나하나 살펴보도록 하자.
Type - 조명의 타입을 변경할 수 있다.(spot, directional, point, area)
Range - 빛의 범위
Color - 빛의 색
Mode - Realtime / Mix / Baked
Realtime | Mix | Baked |
- 매 프레임마다 조명을 계산하고 업데이트 함. 런타임시 많은 계산이 필요함. |
- Realtime과 Baked를 혼합한 것. | - 미리 만들어진 조명과 그림자를 계산하여 디스크에 저장함. static객체에만 사용가능. - 런타임시 추가 연산이 필요하지 않아 최적화를 위해 사용됨. |
Intensity - 빛의 세기
Shadow Type - 그림자 설정
일단은 위 설정들만 만져도 충분히 멋진 조명을 만들어낼 수 있다.
설정을 조정한 결과물. 빛의 색을 조금 더 노란끼가 돌도록 바꾸고 그림자를 넣어주었다. 여기서 Realtime 모드와 Baked 모드에는 무슨 차이가 있을까? 일단 뜻을 직역해보자. Realtime은 실시간, Baked는 구워졌다는 뜻이다. 이제 이 뜻을 조명에 적용해보면 Realtime모드는 실시간 조명, Baked는 구워진 조명이라는 의미가 된다. Realtime모드는 게임을 실행하면 매 프레임마다 실시간으로 조명과 그림자 연산을 수행한다. Baked모드는 미리 구워진, 그러니까 미리 만들어진 그림자를 이용한다.
최적화를 위해서는 Baked 모드를 주로 사용하지만 Baked는 static 객체에만 사용할 수 있다. 또, Baked 모드를 사용하기 위해서는 라이팅을 구워주는 작업이 필요하다. 그러니 일단은 realtime 모드로 설정해두었다. 애초에 이 게임은 많은 빛이 필요하지 않으니 지금 당장은 최적화를 할 필요가 없다.
'프로젝트 > Unity로 공포게임 개발' 카테고리의 다른 글
[Unity 공포게임] 1인칭 손전등 라이트 구현 (1) | 2023.04.12 |
---|---|
[Unity 공포게임] 1인칭 플레이어 이동, 마우스로 카메라 시점 조작(3) - 마우스로 카메라 시점 조작하기 (2) | 2023.03.31 |
[Unity 공포게임] 1인칭 플레이어 이동, 마우스로 카메라 시점 조작(2) - 오브젝트에 중력 적용하기 (0) | 2023.03.30 |
[Unity 공포게임] 1인칭 플레이어 이동, 마우스로 카메라 시점 조작(1) - 키보드로 오브젝트 이동하기 (1) | 2023.03.30 |
[Unity 공포게임] 맵 제작(1) - Fog(안개)와 Directional Light로 밤 시간대 만들기 (2) | 2023.03.17 |