커버 이미지
게임 WebGL 링크 : 바로가기
Apk 다운로드 링크 : 다운로드
프로젝트 소개
캐릭터, 장비, 전투 모든 것이 운으로 결정되는 이곳에서 당신의 운을 시험해보세요
슬롯머신 방식의 전투에서 잭팟을 터트려 시원한 액션으로 적을 처치하세요
길드를 통해 명예 레벨을 올려 더 높은 등급의 캐릭터, 장비를 뽑으며 더 강해져보세요
프로젝트 개요 및 목표
간단한 조작과 최소한의 전략 요소로 누구나 쉽게 플레이 할 수 있는 접근성 높은 게임
뽑기 방식의 파밍과 슬롯 머신 방식으 ㅣ전투로 운적 요소의 재미를 극대화한 게임
기술적인 도전 과제
•
FSM
턴제 전투 방식에 액션 쿨타임을 추가하여 쿨타임의 회복 순서로 유닛들의 행동 턴이 진행되도록 기획하였고, 해당 전투 기능을 구현하기 위해 FSM을 활용하였습니다.
FSM 사용한 이유는, FSM은 단 하나의 상태만을 가지고 상태를 기준으로 동작을 수행하기 때문에 순서대로 유닛의 동작을 수행하는 턴제 전투 방식에 사용하기에 적합하다고 판단했습니다.
•
오브젝트 풀
전투중 재사용 가능성이 있는 오브젝트들은 모두 오브젝트 풀을 활용하여 메모리 사용량을 줄였습니다. 사용중인 오브젝트의 수가 정해진 사이즈를 초과할 경우, 추가적으로 오브젝트를 생산하여 오브젝트 풀에 추가하는 방식으로 제한적인 오브젝트 사용개수의 단점을 해결했습니다.
•
Excel2Json
게임 내 데이터(캐릭터, 장비, 몬스터 등)를 Excel로 정리한 후 Excel2Json을 이용하여 Json파일로 만들어서 게임 내 적용
•
동적 스크롤 인벤토리 구현
시각적으로는 인벤토리 칸이 가득 찬 것처럼 보이지만 아이템을 추가 획득하면 그에 맞게 칸과 스크롤이 늘어납니다. 캐릭터 선택창, 장비 인벤토리, 소비 인벤토리 등에 적용되어 있습니다.
캐릭터 선택창에 보유한 캐릭터 수 만큼 캐릭터 슬롯 Prefab을 생성하여 동적으로 관리
슬롯의 넓이도 보유한 캐릭터에 맞게 동적으로 수치를 조절
•
SRPG식 이동 구현
처음에는 가장 보편적으로 사용하는 A* 알고리즘을 적용할 생각이었으나 직접 게임에 적용해보니 본 게임과는 적절하지 않은 방법이라고 판단했습니다. 그래서 본 게임에서 가장 적절한 이동 방식은 SRPG식 이동 진행 방식이라 생각하여 직접 알고리즘을 조사하고 구현하여 적용했습니다.
0. 기본 필드의 상태
1. 현재 Player에 해당하는 Tile부터 Movable 리스트에 넣는다. 이때, 이동 코스트는 0이다.
2. Movable 리스트 안의 Tile 수만큼 각 Tile의 상하좌우로 조사하여 이동 가능한 타일을 Movable 리스트에 넣고 상태를 변환한다.
3. 2번 과정을 PlayerTurnIndex 만큼 반복하면 플레이어가 이동 가능한 범위를 나타낼 수 있다. 여기서 이동을 하면 Player TunIndex에 Cost를 빼서 해당 값이 0이 아니라면 턴을 유지하고 0이 되면 턴을 넘긴다.
4. 이동 간으한 empty 상태의 Tile에서만 이동 반경을 넓히고 상호 작용이 가능한 Town, Monster, Chest나 이동 불가능한 Wall Tile과 마주할 경우에는 상태 변경만 하고 이동 반경을 넓히지 않으면 완성
적용 사진
•
던전 내 랜덤 맵 생성
랜덤 맵 생성 알고리즘은 굉장히 많은 종류가 있었짐나 절차적 맵 생성과 같은 방식을 이용하면 외길이 많이 등장할 것으로 예상되었습니다. 오브젝트로 길이 막히면 이동이 번거로워지므로 유저가 불쾌한 경험을 할 것이고, 맵에 외길이 많을수록 플레이어는 맵이 단조롭다고 생각하게 될 것이라 여겨 좁은 길목을 최소한으로 만드는 방향으로 랜덤 맵 생성 알고리즘을 생각했습니다. 그 결과, 구역을 정하여 특정 타일 패턴을 배치하는 방법을 구현하여 적용했습니다.
1. 던전에서 랜덤으로 맵을 생성하기 위해 구역을 나눈다.
2. 맵의 패턴을 미리 정해놓은 후 랜덤으로 해당 구역에 타일이 생성되도록 한다.
3. 랜덤으로 맵을 생성한 후 캐릭터, 몬스터, 상자와 같은 오브젝트를 배치한다.
사용된 기술 스택
GitHub를 이용하여 팀원들끼리 진행 상황을 공유하며 협업했습니다.
Excel과 Excel2Json을 이용하여 게임 데이터를 Json파일의 형태로 관리했습니다.
PowerPoint로 이미지 자료를 사용해서 작업 내용을 공유하거나 앞으로 해야할 작업에 대한 회의를 진행했습니다.
클라이언트 구조
•
Scene 구성
•
Manager 구성
사용자 개선 사항
•
유저 테스트 버전 배포 및 구글폼 설문 조사를 통해 버그, 개선 사항에 대한 데이터 수집
•
수집한 데이터를 정리 및 우선순위를 정하여 팀원들끼리 작업 진행
프로젝트 결과 및 성과
팀원 구성 및 연락처
운빨망겜 해보시조 (13조)
리더 - 김동환 - litmu@naver.com
부리더 - 조민상 - alstkd654@gmail.com
팀원 - 박소이 - hyunbean67@gmail.com