팀 프로젝트 - Text RPG [스파르타 던전] 개발 이후
1. 밸런스 패치
1) 4층, 5층 던전에서 몬스터가 너무 강력함
=> 몬스터의 HP, 공격력과 방어력 모두 너프
=> 주어지는 골드 보상도 너프
2) MP 물약의 회복량이 20이고, 스킬2의 소모값이 20이기 때문에 사용감 개선을 위해
전사, 도적, 궁수의 maxMP를 10씩 늘렸다.
궁수의 경우 다른 직업보다 maxMp가 작기 때문에 보상성으로 maxHP를 5 늘렸다.
2. 만렙 이후 기능 구현
팀이 구상한 만렙은 5레벨이고, 현재 최상위 던전은 5층이다.
따라서 5레벨을 달성하고 5층 던전까지 깬 유저는 '그래서 이제 뭐 함?'상태가 된다.
5렙 이후의 방향성을 잡기 위해 [인벤토리-강화] 시스템을 추가해서
던전에서 획득한 골드를 이용해 무기와 방어구를 강화할 수 있도록 도입했다.
1) 장비 강화 시스템 도입
장비를 강화하면 공격력과 방어력이 큰 폭으로 증가한다.
강화 비용은 장비 구매가의 50% 이며, 매 구간마다 동일하다.
50% 확률로 성공하며, 25% 확률로 실패(장비 보존), 25% 확률로 실패(장비 파괴)한다.
2) 레벨링 속도 감소
레벨 또한 제한이 없어서 5레벨 이후 6레벨, 7레벨 계속해서 올라갈 수 있다.
하지만 기존에 100 내외였던 필요 경험치를 대폭 늘려서 레벨*300의 경험치가 필요하도록 세팅했다.
레벨링의 속도를 늦춰서 레벨업으로 공격력/방어력을 빠르게 올리는 것을 방지했다.
팀 프로젝트 발표회
발표를 보고 배우다.
1. 팀마다 비슷하게 겪은 어려운 점
1) 깃허브 사용 방법
2) 공용 클래스 사용, 클래스 개념 등 팀 내 동일한 이해가 필요한 부분
2. 아이디어
1) 특수기호의 색깔 표시로 장비 착용 여부를 나타냄
2) 피그마 사용으로 코드 작성 전 개념정리하기
3) HP바 MP바를 특수기호 색깔로 표시해서 더하거나 뺐을 때 이미지화할 수 있음
튜터님 피드백 모음
1. 객체 지향 프로그래밍을 처음 접한 사람들에게
개념에 대한 명확한 이해가 중요하다.
코끼리의 코와 다리를 구분할 수 있어야 코끼리 전체를 이해할 수 있다.
2. 좋은 코드 만들기
확장성이 좋은 코드 = 기능은 많은데 코드는 깔끔한
새로운 기능을 추가할 때 기존 코드를 얼마나 적게 수정하는지가 중요함. (지속가능성, 확장성)
클래스를 객체로 만들어서 관리하는 습관을 갖자.
객체지향에서 중요한 것은 객체 하나하나를 재활용하기 좋은 코드 만들기.
3. 협업할 때 중요한 것들
프로그램 cs 에 내용이 많으면 협업할 때 힘들 수 밖에 없다.
기능에 맞게 클래스를 나눠야 작업 충돌이 적어지고 여러 명이 서로 다른 클래스를 처리할 수 있다.
브랜치를 너무 많이 만들지 말자.
3. 코드 작성 팁
파일 출력이 필요한 코드의 경우 로컬에 파일이 없는 경우를 대비해 예외처리가 필요하다.
함수가 길어지면 코드가 무거워지니까 클래스로 빼서 관리하는 게 용이하다.
4. 좋은 게임 만들기
관리자 모드를 만들어서 버그 찾는 것 좋다. 실제로 현업에서도 쓰는 방식이다.
콘솔에 아스키아트 넣을거라면 콘솔창 크기를 지정해주는 것이 좋다. (잘리거나 깨질 수 있어서)
인덱스를 일치시키면 게임 완성도를 높일 수 있다. (유저가 혼란스럽지 않도록)
ex. 상점에서와 인벤토리에서의 목록이 같게 뜬다던지..
사용자관점에서 생각해보기.
<1조 발표 insight>
기획 - 깃 커밋컨벤션/코드컨벤션 설정 - 리드미 작성 - 브랜치 생성
Main 브랜치 아래에 Develop 브랜치를 만들어서 여기에 개인 브랜치를 병합하는 방법.
튜터님 피드백)
컨셉, 로딩 연출 등 아이디어가 좋았다.
UI그리는 부분(랜더링)과 데이터 적용되는 부분이 따로 잘 작동하고 있음을 느낄 수 있었다.
커밋컨벤션 중요함! = 커밋 할 때 간결한 키워드 작성 (기능 수정사항인지 새 기능 추가인지, 오타수정인지 등등)
우리 팀 피드백
1. 다이어그램으로 구조에 대한 이해를 팀원 전체가 공유하는 게 중요하다.
=> 코드 작성 전, 기능적으로 빠진 부분이 있는지 체크할 때 유용
2. 디자인적인 부분 : 통일된 게임 분위기를 가져가는 것도 중요함.
=> 얼마나 빨리 적용을 시킬 수 있을까 (UI나 디자인을 적용할 때 어떻게 해야 데이터를 빨리 적용시킬 수 있을지) 고민
3. QA (버그 찾고 해결하기)
=> 여러 사람이 해보는 게 중요 (진입점을 많이 만들어서 여러가지 방식으로 접근해야 버그를 많이 찾을 수 있기 때문에)
데이터를 여러 곳에서 참조하다보니까 => 나도 모르게 건드려진 데이터가 발생 => 예상치 못한 버그 발생
버그를 수정할 때는 진입점을 찾아서 해결하려고 하면 좋다.
코드가 깔끔하면 진입점 찾기도 수월하고 버그가 발생할 수 있는 진입점도 줄어들기 때문에 좋다.
오늘의 회고
완성할 수 있을까? 싶었던 팀 프로젝트를 이렇게 잘 마무리했다.
처음에 패기 있게 시작했다가
중간에 나만 코드작성이 느린 것 같아 (실제로 따라가기 벅찼지만) 좌절했다가
팀원들의 도움으로 다시 일어섰다가
잘 완성된 게임을 보니 뿌듯하고 감동적이었다.
게임이 잘 돌아가고, 원하는대로 작동하니까 신기했고, 더 잘 만들고 싶다는 욕심도 생겼다.
게임 개발이란 창의력도 녹아있고, 코드를 오류없이 짜기 위해 수학적/논리적인 힘도 들어있는..
재미있으면서도 어려운.. 그래서 더 숭고한 그런 일이라고 생각한다.
2주의 시간 동안 함께해준 팀원들에게 정말 감사하고,
질문할 때마다 명쾌하고 빠르게 도와주신 튜터님께도 감사하다.
21시 이후에도 남아서 개발에 대한 이야기, 스트레스 해소 등 함께 해주신 다른 동료분들께도 감사하다.
C# 문법 걸음마를 뗐으니 내일부터 다시 Unity로 돌아가 새로운 내용을 배운다.
지금까지의 노력이 좋은 양분이 되어 공부에 도움이 되었으면 좋겠다.
내일도 힘내자고~
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
객체지향 프로그래밍의 특징 (0) | 2023.11.27 |
---|---|
Material / Collider / WorldPosition (1) | 2023.11.24 |
TextRPG - Enum 활용하기 / 포션 획득 시 인벤토리에 중첩시키기 (0) | 2023.11.22 |
TextRPG - 장비 판매 시 버그 해결 (0) | 2023.11.21 |
TextRPG - Gold, Inventory 불러오기 / 좋은 개발자의 태도 (1) | 2023.11.20 |
댓글