크래프톤 정글 게임랩 2주 차 과정 완료 후기
목차
- 01. 개발 진행
- 02. 개발 상세 내용
- 03. 전체 플레이 영상
- 04. 후기
01. 개발 진행
시작
이번에 제작한 게임은 Only Hook으로 훅을 통한 로프 조작 게임을 제작했습니다.
새로운 팀원과 함께 오랜 기간 동안 기획을 하고, 게임 개발을 진행했습니다.
로프 스윙을 통해 캐릭터가 회전하거나 코인을 먹어 점수를 획득하고, 이를 통해 탈출하는 게임입니다.
튜토리얼, 일반 스테이지 1~3, 챌린지 스테이지가 있어 총 5개의 레벨로 구성되어 있습니다.
역할
저는 무한맵 시스템과 UI 시스템 일부를 맡아 개발했습니다.
02. 전체 플레이 영상
개발 상세 내용을 다루기 전에 전체 플레이 영상을 먼저 보여드리겠습니다.
다른 팀원들과 협동하면서 게임을 제작한 결과, 아래와 같은 게임을 제작할 수 있었습니다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
03. 개발 상세 내용
맵 시스템 구현
1) 시스템 작동 원리
- 무한 레벨 생성
사용자가 원하는 대로 장애물 데이터를 입력하고, 그에 알맞은 랜덤 패턴을 생성합니다.
생성된 패턴을 바탕으로 플레이어 주위에 있는 청크에 패턴을 랜덤으로 하나 정합니다.
패턴에 포함된 장애물 및 아이템 데이터는 오브젝트 풀에서 가져와 관련 데이터를 입력 후, 배치합니다.
(이미 상호작용을 완료한 아이템은 청크가 다시 생성되어도 활성화되지 않도록 처리했습니다.)
플레이어가 해당 청크로부터 멀어지면, 청크에 있는 모든 객체를 오브젝트 풀로 반환합니다.
플레이어가 이전에 생성된 청크로 재진입할 때, 청크를 새로 생성하지 않고 기존 청크 데이터를 재활용합니다.
- 테스트 모드
테스트 모드는 현재 맵 생성기에 등록된 패턴을 모두 확인하는 모드입니다.
모든 패턴을 쉽게 구분할 수 있도록 TextMeshPro와 구역 Cube가 동시에 출력됩니다.
또한, 일정 간격으로 배치되어 순서대로 확인할 수 있습니다.
2) 시스템 구조도 및 설명

해당 목차는 각 클래스별로 역할을 적은 부분입니다.
- 데이터
| [ObstacleData.cs] 장애물/아이템의 데이터를 저장할 수 있습니다. 각 청크에 배치된 장애물/아이템의 고유 번호가 저장됩니다. 그래서, 오브젝트 풀에서 새롭게 배치되는 객체이더라도 고유 번호로 인해 구별이 가능합니다. 현재 사용 여부 데이터도 함께 저장되어 맵 관리 시스템에 의해 이미 사용된 아이템은 항상 비활성화되도록 처리됩니다. |
| [ObstacleType.cs] 현재 장애물/아이템의 종류를 알려주는 열거형이 담겨있습니다. |
| [ItemInteraction.cs] 현재 활성화된 아이템과 상호작용 시, 특정 행동을 호출하도록 설정되어 있습니다. 또한, 상호작용이 완료되었으므로 항상 비활성화되도록 맵 생성기에 알려줍니다. |
- 패턴 관리 시스템
| [TileBehavior.cs] 청크 프리팹이 가지고 있는 cs파일입니다. MapGenerator에서 해당 청크 생성 시 패턴을 입력하면, TileBehavior에서 패턴에 맞게 장애물/아이템의 객체를 오브젝트 풀에서 가지고 옵니다. 이 때, 각 청크별로 장애물/아이템의 객체 정보를 가지고 있습니다. 또한, 청크 비활성화 시, 청크의 자식으로 있는 장애물/아이템을 모두 오브젝트 풀로 반환하는 함수도 가지고 있습니다. |
| [TilePattern.cs] 현재 패턴에 장애물/아이템의 데이터(ObstacleData)를 가지고 있습니다. ScriptableObject 클래스를 상속받습니다. |
| [TilePatternGenerator.cs] 사용자가 임의의 가중치, 랜덤 위치 범위 등을 지정해서 원하는 장애물/아이템의 개수를 제작하는 클래스입니다. ContextMenu 속성을 사용해 Insepctor 창에서 해당 함수를 직접 실행할 수 있습니다. 실행 시, 원하는 경로에 랜덤 패턴 애셋 정보가 생성되고, 이는 TilePattern로 저장됩니다. |
- 맵 관리 시스템
| [MapGenerator.cs] 플레이 시, 맵을 생성하는 클래스입니다. 직선형, 방사형(360도), 테스트 모드 등 다양한 모드를 지원합니다. 현재 활성화된 청크와 이전에 생성되었던 청크 기록을 모두 가지고 있습니다. Update 함수를 통해 플레이어가 임의의 거리보다 멀어진 경우, 멀어진 청크를 오브젝트 풀로 반납하고, 가까워진 청크를 새롭게 생성합니다. 임의의 거리는 월드 좌표계를 청크 크기 기준으로 변형해서 사용합니다. 새롭게 생성하기 전에 이전 생성 기록이 있다면, Dictionary에서 가져옵니다. 일정 청크 거리를 이동했다면, 결승선을 출력하도록 합니다. 청크에 배치되는 장애물/아이템 별로 고유 번호를 부여해 사용 여부를 구별합니다. 즉, 이미 사용한 아이템은 해당 청크에 다시 재진입해도 다시 활성화되지 않습니다. 테스트 모드로 현재 맵 생성기에 입력된 모든 패턴을 출력하고 확인할 수 있습니다. |
| [ObjectNumberGenerator.cs] 고유 번호를 관리하고 생성합니다. 오직 함수를 통해서만 생성된 고유 번호를 전달합니다. |
- 객체 관리 시스템
| [PooledObjectInfo.cs] 현재 오브젝트 풀로부터 배치 받을 객체에게 고유 번호와 장애물/아이템 타입을 부여하는 데이터 클래스입니다. 추후에 오브젝트 풀에 반납될 때, 타입을 통해 빠르게 반납할 수 있습니다. |
| [ObjectPooler.cs] 오브젝트 풀을 관리하는 클래스입니다. 오브젝트 풀에는 지정된 종류마다 Dictionary로 관리됩니다. Dictionary는 GameObject Prefab을 키로 가지고, Data를 Queue로 가집니다. 해당 장애물/아이템을 생성하라고 호출하면, 오브젝트 풀에서 하나씩 가져오고, 반납할 경우에는 다시 Queue에 채웁니다. Queue가 비어 있는 경우에는 오브젝트를 새롭게 생성해 바로 호출된 곳으로 객체를 반환합니다. |
3) 발전 과정
1. 직선형(일자) 무한 맵 생성기 및 오브젝트 풀링 구현
2. 데이터에 따라 장애물 생성 시스템 구현
3. 일정 청크 수를 지나면, 결승 지점 생성 시스템 구현
4. 방사형(360도) 무한 맵 생성 기능 추가
5. 기존에 생성된 청크 데이터를 저장하고 재방문 시, 해당 청크 데이터를 다시 사용
6. 맵 생성기의 테스트 모드 시스템 추가
7. 랜덤 타일(청크) 패턴 생성기 시스템 추가
8. 패턴 생성할 때, 장애물/아이템별로 겹치지 않도록 기능 추가
9. 생성된 장애물/아이템에 고유 번호 저장/가져오기 기능 추가
10. 아이템 사용 시, 영구적으로 비활성화되는 기능 추가
11. 임의로 설정한 좌표에서 청크가 생성되지 않는 기능 추가
12. 스테이지별로 서로 다른 가중치를 가진 장애물/아이템의 패턴을 생성 및 활용
UI 시스템 구현
로비 화면과 스테이지 레벨을 연동하는 SceneManager를 구현했습니다.
또한, 클리어 UI와 메인 UI 기능을 추가하면서 다음 스테이지로 바로 넘어갈 수 있도록 추가했습니다.
그로 인해, 플레이하면서 확인할 수 있는 타이머, 설정, 점수 등의 UI를 구현했습니다.
04. 후기
조작감이라는 것에 몰두하다 보니 게임의 목적성을 놓친 부분이 있어 아쉬웠습니다.
목표와 재미를 한 번에 둘 다 잡기 쉽지 않은 것 같습니다.
그래도, 코드 구현 부분에서는 "어떻게 하면 더 모듈화 하고 좋은 코드를 작성할 수 있을까?" 항상 고민하면서 기능과 시스템을 구현해 테스트까지 완료할 수 있었습니다.
제출 전 날 밤에 챌린지 모드가 쉽다는 의견이 있어서 챌린지 모드를 2가지 더 추가했으나.. 제출날에는 챌린지 모드가 3개로 늘어나기만 하고, 어떠한 기능이 더 추가되지 않은 상태에서 반복만 하다 보니 회의적인 반응이 많았습니다.
챌린지 모드를 하나만 놓고 원래 버전을 제출하는 게 더 나았을 것 같기도 하네요..
재미있는 게임을 만들기는 정말 쉽지 않은 것 같네요.
읽어주셔서 감사합니다.
틀린 내용 지적은 언제나 환영입니다!
'활동 > 크래프톤 정글 게임랩' 카테고리의 다른 글
| [크래프톤 정글 게임랩] Week04 : 이펙트(FX) 학습 및 게임에 적용하기 (0) | 2025.10.09 |
|---|---|
| [크래프톤 정글 게임랩] Week03 : 게임의 핵심 피쳐와 재미 요소 파악하기 (2) | 2025.09.28 |
| [크래프톤 정글 게임랩] Week01+ : 피드백으로 게임 개선하기 (2) | 2025.09.16 |
| [크래프톤 정글 게임랩] Week01 : 첫 번째 48시간 게임잼 (2) | 2025.09.09 |
| [크래프톤 정글 게임랩] 게임랩 4기 최종 합격 후기 (1) | 2025.09.04 |