Shoyo
Vancouver Film School | 게임 디자이너 및 프로그래머 | 2024년 3월 ~ 2024년 6월 | itch.io 페이지
Shoyo는 2D 액션 플랫포머 게임으로, 주인공 Shoyo가 Megalo Corporation의 CEO인 Mr. Mania에 맞서 개인의 자유를 찾기 위해 모험을 떠나는 게임입니다.
Unity로 게임을 만드는 첫 프로젝트였던 Shoyo는 기술적, 협업적 측면에서 매우 보람 있는 경험이었습니다. 마감일을 맞추기 위해 팀원들과 협력하는 방법을 배우고, 필요한 기능을 구현하며 버그를 수정하는 과정은 어려웠지만, 그럼에도 불구하고 매우 뜻깊은 경험이었습니다.
주요 성과
AI 행동



적에게 사용되는 공격 코루틴의 예. TimeManager는 플레이어가 시간 정지 스킬을 사용할 때 Timescale을 제어하고 Lerp하는 Singleton입니다. 위 코드를 개선하자면, 공격 애니메이션과 더 정확하게 동기화하기 위해 메서드 중 일부를 애니메이션 이벤트에 연결하는 것이 좋을 것 같습니다.
디자인
AI 내비게이션은 A* Pathfinding Project를 사용하여 구현했습니다. 맵은 적들이 플레이어에게 가장 짧은 경로를 찾을 수 있도록 navigation grid로 구성되어 있으며, 플레이어가 일정 범위 안에 들어오면 공격을 시작합니다.
적의 공격은 요요 공격을 중심으로 설계되었습니다. 예를 들어, 적들은 Shoyo의 요요 공격 범위 바로 경계에서 공격을 시도하도록 설정했습니다. 이렇게 설계한 이유는 플레이어가 요요의 최대 범위를 자연스럽게 배울 수 있도록 하기 위함입니다.
전투


전투가 있는 모든 방에서 사용되는 Spawning Coroutine. 적은 지상 적인지 아닌지에 따라 적절한 스폰 지점에 Instantiate 되고, 그 후에는 해당 라운드의 총 적 수에서 제거됩니다. 위 코드를 개선하려면, CompareTag 대신 적 유형을 나타내는 Enum을 사용하는 것이 좋습니다.

Coroutine에서 적을 스폰할 때 사용하는 적 List는 포인트 값을 기반으로 생성됩니다. 각 적의 포인트 값은 라운드의 총 포인트에서 차감되며, 이를 통해 List가 구성됩니다. 따라서 적의 포인트 값은 스폰 빈도를 결정하는 가중치 역할도 하게 됩니다.
개요
모든 교전은 각 룸에서 활성화되는 라운드 전투 시스템을 중심으로 이루어집니다. 각 전투는 특정 수의 라운드로 구성되며, 라운드마다 증가하는 포인트 예산이 설정됩니다. 각 적에게는 포인트 값이 할당되며, 이 값은 웨이브당 스폰 빈도를 결정하는 확률로도 작용합니다. 스폰된 적들은 맵에 설정된 스폰 지점에서 등장하며, 룸에 있는 모든 적을 처치할 때까지 문이 잠기게 됩니다.
이 시스템은 빠른 iteration을 우선으로 설계하고 구현했습니다. 이를 통해 웨이브/포인트 구성, 적 유형, 스폰 지점 위치, 그리고 activation trigger 배치와 같은 주요 변수를 쉽게 수정하고 조정할 수 있도록 했습니다.
Parallax


이 코루틴은 발 구르기 동작을 에뮬레이트하며, 전체 움직임은 Animation Curved을 따릅니다. 이후 Impulse 값이 CameraManager Singleton으로 전달되어 카메라 흔들림을 생성합니다. 이를 개선하기 위해, Retirement Rumble에서 사용된 Event Handling System을 도입하여 싱글톤 의존성을 줄이는 것이 좋을 것 같습니다.
왜 Parallax?
정적 배경을 사용한 초기 플레이테스트에서 공통적으로 피드백된 부분은 게임 환경에 대한 혼란스러움이었습니다. 플레이어는 실내에서 싸우고 있다는 느낌은 받았지만, 메카 내부에서 전투가 이루어지고 있다는 아이디어는 잘 전달되지 않았습니다.
이 문제를 해결하기 위해, 수평 스크롤뿐만 아니라 배경의 수직 이동과 Camera Shake를 포함한 Parallax Effect를 구현했습니다. 이 솔루션은 완벽하지는 않았지만, Parallax Effect 덕분에 플레이어는 자신이 움직이는 환경 안에 있다는 사실을 더 잘 인식할 수 있게 되었습니다.