동영상주소 : https://youtu.be/RV5I0MysqTI
원신 모작 - 개인프로젝트
[구현]
캐릭터
종려(바위) - 공격, 원소공격, 궁극기, 점프, 활강, 대시
클레(불) - 공격, 원소공격, 궁극기, 점프, 활강
라이덴(번개) - 공격, 원소공격, 궁극기, 점프, 활강
나히다(풀) - 공격, 원소공격, 궁극기, 점프, 활강
아야토(물) - 원소공격, 순간이동, 궁극기, 점프, 활강, 대시
캐릭터 상태 제어 - 상태 패턴을 이용하여 관리
캐릭터 애니메이션 보간 - 0.2초내 수행된 애니메이션 을 선형보간 (최대 4개)
속성데미지 - 해당 오브젝트와 동일 속성인 경우 데미지 수치 조절
원소데미지 - 원소가 부착된 상태에서 원소공격을 할 경우 해당 원소 반응에 따른 데미지 조절
대사 - 큐에 넣어서 소리가 겹치지 않고 순차적으로 나오게 설정
[오브젝트 관리]
오브젝트 풀링
몬스터의 경우 재사용 될 수 있도록 사망시에 죽음으로 처리하여 안보이게 하고
필요시에 죽음으로 처리된 오브젝트를 확인하여 초기화시켜줌
인스턴싱
1000개의 원점으로된 점을 갖는 버퍼를 생성하여 사용
현재 활성화 된 이펙트의 개수만큼 셰이더에 값을 미리 전달
2D의 텍스쳐의 경우 점을 버텍스 셰이더에 전달
지오메트리셰이더를 통해 활성화된 이펙트의 경우 정점을 생성해 픽셀셰이더로 전달
[충돌처리]
SAP를 이용하여 충돌처리 최적화
정적 오브젝트와 동적오브젝트 분리
정적 오브젝트의 경우 처음에 한번정렬하고 추가 혹은 삭제될경우 갱신시켜 정렬 비용을 낮춤
[데칼]
SSD를 이용하여 터레인에 텍스쳐를 붙임
큐브박스를 이용하여 붙일경우 큐브안에 들어갔을 때 잘안붙는 현상
벽이 부드럽지않고 가파를때 잘붙지 않는 현상
노말맵을 정확하게 사용하지 못하여서 어색한 부분 보임
[몬스터]
슬라임 - 이동, 공격
란란루 - 이동, 공격, 순간이동(일정 거리 벗어날 경우)
보스(야타) - 할퀴기(특정거리 이내), 내려찍기(특정거리 이상)
[셰이더]
그림자
해상도의 가로, 세로 5배 크기의 렌더타겟을 이용해 오브젝트를 특정위치에서의 깊이값 기록
현재 카메라와의 깊이값 비교를 통해 그림자 생성하고 블러처리를 통해 자연스럽게 함
디졸브
노이즈 텍스쳐의 rgba 값을 이용하여 구현
왜곡
중간값으로 초기화된 렌더타겟에 왜곡이 일어난 부분을 기록하여 최종렌더타겟을 왜곡
톤맵핑
빛을 강하게 받을 경우 흰색의 되는 현상을 제거하기 위해 ACES 공식을 대입
[기믹]
블럭퍼즐
블럭 선택시 해당블럭과 연결 된 같은 블럭 제거
무지개블럭 - 블럭제거시 연결되어 제거 가능
상하좌우블럭 - 해당블럭의 줄과 열에 해당하는 블럭 제거
점수가 오를 수록 내려오는 블럭의 종류 증가를 통해 난이도 조절
전구퍼즐
전구 클릭시 해당전구와 인접한 전구의 스위치가 반전됨
모든 전구에 불이 들어올 경우 해당스테이지 클리어
[기타]
피킹
해당 오브젝트의 원형의 가상 구체를 이용해 피킹 판별
스테이터스, 아이템창
캐릭터와의 값 연동
UI창 활성화시 게임 일시정지
[아쉬운 점]
- 애니메이션 제어를 완벽하게 하지 못하였다.
- 애니메이션의 루트 이동값을 빼고 코드로 제어하였는데 각 장단점이 존재하였다.
- 이펙트의 경우 인스턴싱 처리를 하였지만 메시의 경우 인스턴싱 처리를 하지 못했다.
- 오브젝트의 바이너리를 통해 불러왔음에도 메모리를 평균 3GB 정도 사용하여 LOD를 시도하지 못하였다.
- 그림자의 경우 해상도가 큰 렌더타겟 사용시 메모리를 생각보다 많이 잡아먹어 고해상도를 사용하지 못하였다.
- 기회가 되면 그림자는 캐스케이드 셰도우 기법을 사용해보고 싶다.
[느낀점]
- 해당 게임의 경우 최적화가 상당히 잘 된 게임이란 걸 알 수 있었다.
- 캐릭터의 이동의 경우 캐릭터별로 애니메이션 정보를 다 불러오도록하였는데
- 실제 게임에서는 캐릭터의 파트(망토)의 움직임과 각 체형(남, 여, 어린아이)의 움직임을 합쳐서 사용하는 것 같다.
- LOD 적용이 아주 잘 되어있다. 거리가 가까울 때 바로 보이지 않고 거리+응시할경우 해당 객체의 선명도가 올라간다
- 타 게임에 비해 디테일이 잘 잡혀있어 새로운 컨텐츠 개발이 생각보다 쉬운 구조로 되어있다.
'이것저것' 카테고리의 다른 글
[DirectX9] 라그나로크 모작 (0) | 2022.11.06 |
---|---|
[MFC] 엔터더건전 에디터 (0) | 2022.07.20 |
[API] 메이플스토리 모작 (0) | 2022.06.28 |
[컬러트레이너] 다른 색 찾기 게임 제작 (Unity) (0) | 2022.02.20 |
[도넛 2048] 2048 게임 제작 (Unity) (0) | 2022.02.15 |