오늘은 어제 못한 Lighting의 나머지 부분과 Terrain, Navigation, 적 캐릭터의 AI와 FSM(Finite State Machine) 구현 일부를 했다.

 

가장 중요해보이는 내용은 Light Probe였다. 이전에 몇 번 사용했는데, 그냥 Light를 사용할 때 배치하는 것 정도로 막연히 알고 있었다. 실제로는, 저기 보이는 노란색 구, Light Probe 하나하나에 주변의 빛에 대한 정보가 저장되어 동적인 오브젝트가 가까이 다가오면 빛에 대한 효과를 주는 것이었다. 이전의 LightMap은 정적인 오브젝트에 대한 빛을 저장하고, 이 Light Probe는 일정 지점마다 빛에 대한 정보를 저장해서 동적인 오브젝트에 대한 빛의 처리를 하는 셈이다. 따라서, 빛이 없거나 동적인 오브젝트가 접근하지 못하는 곳에는 배치를 하지 않고, 빛에 대한 처리가 필요한 곳은 촘촘하게 배치하는 식으로 Lighting 작업을 훨씬 효율적으로 처리할 수 있게 해주는 기능이다. 이 Light Probe도 Bake를 해주어야 했는데, Lighting을 Bake하는 데에는 1분 정도의 시간이 걸렸지만 Light Probe는 생각보다 금방 Bake가 되었다.

그 다음은 Reflection Probe에 대해서도 배웠다. 거울 같은 효과를 줄 수 있는 기능이다. 이것도 다른 것과 마찬가지로 Bake를 해서 미리 정보를 저장시켜놓아 효율적으로 사용할 수 있고, 혹은 실시간으로 렌더링을 하게끔 설정할 수도 있다고 한다. 게임 내에서 거울로 설정을 할 수도 있을 것 같다. 일부 게임에서는 거울이 있긴 하지만 캐릭터가 가까이 가도 비치지 않는 경우가 있는데, 성능 상의 이유로 미리 Bake하여 사용해서 그런 것 같다. 이외에도 철로 된 갑옷에 텍스쳐를 입혀 주변 물체가 반사되어 보이는 효과도 낼 수 있다는 것 같다.

다음으로는 Terrain에 대해서 배웠다. 지형인데, 이전에 배운 적이 있어서 편안하게 들었다. 새롭게 알게 된 내용은, 중앙 좌측에 보이는 문처럼 오브젝트를 배치할 때, Terrain에 Hole을 뚫어서 배치한다는 내용이나, 나무, 풀 등도 Light Probe의 영향을 받는다는 것이었다.

이외에는 TreeIt이라고 하는, 무료로 나무 모델을 만들 수 있는 프로그램에 대해서도 소개를 받았다.

Navigation의 기능에 대해서도 더 자세히 배웠다. 이전에 Nav Mesh에 대해서 배웠는데, 이를 더 잘 활용할 수 있는 방법과 같은 것이었다. Off Mesh Link를 사용해서 Navigation 기능을 활용할 때 지형을 올라가거나 내려갈 수 있고, Nav Mesh Obstacle 컴포넌트를 등록해서 장애물로 활용하며 길을 막는 문 등을 만들 수도 있다.

One Page Dungeon이라는 무료 사이트에 대해서도 소개받았다. 엔터키를 누르면 손쉽게 던전에 대한 컨셉이나, 배치 등을 짜임새있게 랜덤으로 짜주는 좋은 사이트다. 게임으로 던전을 만들 때 참고하면 좋을 것 같은 사이트다.

ProGrids에 대해서도 배웠다. 유니티 패키지에 정식으로 등록되어 있는 기능이다. 위의 사진처럼 격자를 만들어주고, 오브젝트를 움직일 때 일정 간격만큼 움직이게 할 수 있다. 위에서는 1로 등록되어있어서 움직이면 Position값이 1로 나누어 떨어지게끔 움직인다. 유니티의 기본 움직임은 굉장히 작은 소수점 단위로도 움직이기 때문에 오와 열을 맞추기가 굉장히 어려운데, 이 기능을 사용하면 던전 배치를 훨씬 쉽게 할 수 있을 것 같다.

 

 

오늘은 약간 기능들에 대한 개념적인 부분을 많이 배운 것 같다. AI 구현 모델과 FSM(Finite State Machine)에 대해서도 배우고 기본적인 구현을 하기도 했는데, 아직 구현할 부분이 좀 남은 것 같고, 현재까지 구현한 부분은 코드가 어렵지 않아서 정리할 내용이 많지 않아 강의를 조금 더 듣고, 적 AI 구현에 관한 내용을 한 글에 정리할 예정이다.

 

슬슬 윤곽이 잡혀가는 것 같다. 앞으로 남은 부분은 4장 / 적 AI 구현, 5장 / 전투 시스템(근접 공격, 원거리 공격, NPC 전투?), 6장 / 인벤토리, 아이템, 상점, 장비 교체, 7장 / 플레이어 상태창, 다이얼로그, 퀘스트, 레벨 디자인 등이다. 생각보다 진행이 순조로워서 빠르면 일주일 안에 마무리할 수 있을 것 같다. 이후 게임을 직접 구현하면서 더 배우고, 간단하게 포트폴리오를 만들 생각이다. 더 부지런히 배워야겠다.

+ Recent posts