스파르타 던전 게임
- 던전을 떠나기전 마을에서 장비를 구하는 게임을 텍스트로 구현
- 상점의 아이템 중에서 나만의 장비를 구성하는 부분
- 장비는 여러개의 데이터가 함께 있는 만큼 객체나 구조체를 활용
- 관련된 여러 데이터를 다루는 부분은 Json으로 구현하기
주요기능
- 플레이어 정보(Name)이 ID로 ID별로 플레이어 능력치와 인벤토리가 구분되어 저장된다.
- 이미 있는 플레이어로 새로 시작하려고 하면 거절되고 종료된다.
- 저장되어있지 않은 플레이어로 불러오기를 하려고하면 거절되고 종료된다.
- 저장되어있는 정보로 불러오기시 기존 플레이어 정보와 인벤토리를 불러온다.
- 새로 시작할때 직업별 능력치가 달라 직업별로 능력치가 다르게 저장된다.
- 캐릭터의 정보가 표기된다. (아이템 착용시 +되어 표기됨.)
- 보유중인 아이템을 관리할 수 있다.
- 아이템 목록을 확인할 수 있고 비어있으면 인벤토리가 비어있습니다를 표기한다.
- 장착하거나 장착 해제가 가능하다.
- 소비아이템은 장착이 불가능하다고 경고하며 선택할 수 있는 창으로 돌아간다.
- 아이템을 구매하거나 판매할 수 있는 시스템이다.
- 이미 구매한 아이템은 구매가 불가능하다.
- 판매 후에는 재구매가 가능하다.
- 던전에 들어가 골드를 벌 수 있다.
- 난이도별로 레벨과 타입이 다른 몬스터들이 나오게된다.
- 체력이 0이하임에도 도전하려고하면 경고문구가 나오며 메인화면으로 돌아가게 된다.
- 도망가면 최종보상을 받을 수 없다.
- Hp와 Mp를 올리기위한 휴식 공간이다.
- Max보다 더 높게 올릴 수 없다.
- Gold가 부족할 경우 구매할 수 없다.
- 테이크아웃 기능으로 인벤토리에 담아서 소비아이템으로 사용할 수 있다.
- 퀘스트를 받고, 깨고, 보상을 받을 수 있는 시스템이다.
- 목표치에 도달시 클리어 처리가 되고 받을 수 있다.
- 현재 소지하고 있는 Gold로 배팅을 하여 돈을 벌거나 잃을 수 있는 시스템이다.
- Gold가 부족할 시 도전할 수 없다.
- 게임종료시 기존의 정보를 모두 저장하고 종료를 하게된다.
생성된 파일
내가 개발한 기능
- [필수] 던전 기능 - 던전 입장 후 몬스터와 전투 기능(몬스터 스킬 구현)
- 난이도별 몬스터 등장
- 개별 플레이어, 인벤토리 저장 기능
- 휴식 기능
- 시스템들 Json파일로 재제작(스킬, 몬스터, 직업, 상점, 인벤토리, 플레이어)
- 깃허브 관리, 리드미 작성
기능 영상
> https://www.youtube.com/watch?v=Bsqa1bmoJBY
깃허브 링크
> https://github.com/MilkyQuartz/SpartaDungeon
어려웠던 점
Json으로 연결하면서 개별 인벤토리를 구현하고자 했는데 저장시 상점에 같이 저장돼서 어려움을 겪었다.
매니저님께 여쭤보니 깊은 복사를 하면 된다고 알려주셔서 좋은 정보를 배울 수 있었다. 물론 그 방식으로 하지않고 플레이어에 인벤토리를 연결하여 인벤토리 파일에서 현재 로그인한 Player와 같은 이름의 PlayerName의 값이 존재하면 불러와라해서 불러오는 방식으로 수정했다.
또한 스킬을 연결할때 클래스안에 클래스가 리스트 형식인 내부클래스를 선언해서 Json을 읽었는데 이게 읽을때 잘 안읽어와져서 굉장히 화가났었다..... Json파일에서 중첩배열객체일 경우 다른 방식으로 선언해야하나 혼자 낑낑대다가 튜터님께 여쭤봐서 바로 해결됐다.
또 아직 내가 상속에 대해서 많이 부족한건지 팀원분이 코드가 오류가 생겨서 작동하지 않는 부분이 있다고 했는데 내가 아는 방법 하나 빼고 다른 방법으로 시도해봤지만 안되길래 그냥 기존 클래스에 자식 클래스의 내용을 넣으려고 했다. 근데 팀원분이 해결하셨다고 하셔서 방법을 보니 내가 해결하려고 했던 방법이랑 똑같아서 그래도 내가 맞는 방법으로 하려고 하긴 했구나 했다....
너무 나를 바보멍청이똥으로 생각하지말자.... 자신감을 갖자....
깃허브 데스크탑에서 내가 커밋한 히스토리를 보면
등등... 이거 외에도 많은 커밋이 있었지만... 서로 어떤 기능만 담당했다 하기엔 애매한 느낌이 있다. 서로가 서로를 도와서 오류를 고쳐줬기 때문이다.
협업에 대해서 많은걸 깨달은 프로젝트였고 깃허브는 초반에 날려먹어야 나중에 안날려먹는다고 했던 튜터님의 말씀처럼 내가 초반에 팀원꺼 하나 충돌시켜서 새로 브랜치 만들게 한거 생각하면 아주 죄송스럽지만 좋은 경험이였던 것 같다.
TIL이라기엔 프로젝트 회고인 듯 싶지만 오늘 느낀거니 제 맘대로 TIL이라고 하겠습니다^^
'Record > TIL' 카테고리의 다른 글
[Unity] Input system package 사용하기 (New Input Manager) (2) | 2024.05.09 |
---|---|
[Unity] Input.GetAxis (ps.WASD상하좌우 기본 컨트롤하기) (4) | 2024.05.08 |
[Unity] 깊은 복사와 얕은 복사 (2) | 2024.05.03 |
[Unity] ref 매개변수 한정자 (2) | 2024.05.02 |
[Unity] SelectToken/SelectTokens ? (4) | 2024.05.01 |