Skip to content

C# 콘솔로 만든 던전 게임 (UnderTale) 팀 프로젝트

Notifications You must be signed in to change notification settings

gusrb0296/ConsoleTeamProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

💡 [프로젝트 소개]

C# 콘솔로 장비를 장착하고 전투하는 게임을 만들었습니다.
가장 큰 특징은 선택지를 번호로 입력받지 않고 방향키, Enter, ESC로 조작 하는 시스템입니다.
게임 컨셉은 언더테일을 오마주하여 콘솔형태 제작하였습니다.

⏰ [개발 기간]

2023.11.15 - 2023.11.22

👥 [멤버 구성]

  • 고현규 - 역할 조율, 직업 테이블, 깃 관리, 휴식 기능, 크리율/회피율 정보, 비주얼
  • 김세진 - Scene 관리, 저장/불러오기
  • 고민수 - 전투, 레벨업, 스테이지, 던전입구, 배틀씬, 스킬
  • 우진영 - 상점, 인벤토리, 회복 아이템, 보상 기능
  • 박상원 - 장착 시스템, 직업 선택, 캐릭터 생성, 방향키 입력 조작
  • 권오태 - 치명타, 회피, HPBar, MPBar, 몬스터 종류 추가, 스킬, 배경음악

▶️ [플레이 영상]

https://www.youtube.com/watch?v=qbiHyyafG_A

⚙ [주요 기능]

1. 게임 시작 화면

시작화면 위 사진처럼 모든 화면을 보더를 넣어주어 하나의 게임 화면처럼 작성하였습니다.
또한, 해당 선택지들은 모두 키보드로 조작할 수 있습니다.
방향키와 Enter, ESC로

"새로시작"하면 기존의 데이터를 덮어써서 작성하고
"불러오기" 기능으로 세이브 데이터를 불러올 수 있습니다.


2. 캐릭터 생성

image "새로시작"을 하면 캐릭터 생성이 진행됩니다.
인트로가 진행되고, 인트로가 끝나면 캐릭터 닉네임을 받도록 합니다.

텍스트가 하나 하나 나오도록 딜레이를 주었으며
엔터를 누르면 딜레이를 0으로 만들어서 해당 줄이 바로 나오도록 합니다.


3. 직업 선택

image 테이블을 만들어서 보여주는 메서드를 작성해서 저장된 데이터를 리스트로 불러오면서
테이블을 UI처럼 보여주는 기능을 만들었습니다.


4. 메인화면

image 메인화면은 다른 씬으로 갔다가도 다시 돌아올 수 있도록 만들었습니다.
다양한 씬으로 이동할 수 있습니다.
마찬가지로 키보드로 이동할 씬의 선택지를 고를 수 있습니다.


5. 캐릭터 정보

image 상태창을 확인하면 자신의 스탯 현황을 확인할 수 있습니다.
현재 이미 장비들이 장착되어 스탯이 올라가있는 상태입니다.
따로 +로 추가된 스탯은 보이지 않고 모든 스탯이 합산된 상태로 보입니다.


6. 인벤토리

image 인벤토리도 테이블로 표시되도록 메서드를 사용하였습니다.
장착되어있는 장비는 [E] 표시가 나타나게 되었으며,
타입별로 장착할 수 있는 부위가 존재합니다.
장착 가능한 타입은 [무기, 방패, 방어구] 입니다.
소모품의 경우 개수가 나타납니다.


7. 상점

image 상점의 경우, 아이템을 판매, 구매 할 수 있습니다. 마우스 좌, 우 버튼으로 전환할 수 있도록 했습니다.
장착하고 있는 장비를 판매할 수도 있습니다. 그럴 경우, 바로 장착이 해제되며 기존보다 15% 더 싸게 판매됩니다.
보유중인 장비를 구매하려는 경우, 이미 보유중이라고 뜨며 구매할 수 없습니다.
보유 골드가 부족한 경우에도 구매할 수 없습니다.
표기된 장비 효과대로 장착시 해당 스탯이 상승하게 됩니다.


8. 장비 관리

image 장비창은 [보기모드]와 [장착모드]로 변경할 수 있습니다. 엔터로 상호작용합니다.
선택된 장비는 초록색으로 강조되며, 장착모드에서 엔터키를 누를 시 해제와 장비를 할 수 있습니다.


9. 전투

image 전투는 먼저 던전 입구에서 자신의 현 상태를 확인할 수 있습니다.
지금 해당하는 스테이지를 볼 수 있으며 던전을 입장하거나, 메인화면으로 나가는 상호작용만 가능합니다.


image 좌측에는 자신의 HP와 MP가 나타나고 그 하단에는 플레이어의 선택지가 보입니다.
그 오른쪽에는 몬스터의 이름과 체력이 나타납니다. 몬스터 수가 늘어날 수록 아래로 늘어납니다.

  • 공격 공격을 진행하면 오른쪽 "프리스크의 공격" 쪽에 자신이 해당하는 공격이 나타납니다.
  • 적 차례 공격을 마치면 바로 적 차례가 오며 모든 몬스터가 한번씩 공격합니다.
  • 전투 결과 모든 몬스터가 죽거나, 플레이어가 체력을 모두 소모하면 자동으로 10초뒤에 전투 결과 화면으로 이동 됩니다.

10. 전투 심화

image

  • 스킬 스킬 사용시 마나가 소모되며, MP바가 줄어듭니다. 광역 스킬과 단일 스킬이 존재하고 치명타가 뜨지 않습니다.
  • 치명타와 회피 일반 공격과, 몬스터가 공격하는 공격은 모두 치명타와 회피가 존재합니다. 데이터에 저장된 확률대로 적용됩니다.

11. 레벨업 기능 & 전투 보상

image 전투를 마치고 결과창에 들어오면 위와 같습니니다.
초록색의 경험치 바가 오른쪽으로 차오르면서 레벨업에 가까워집니다.
또한, 골드 획득도 획득한 수치 만큼 기존의 골드에서 쭈욱 올라갑니다.


12. 출력 레이아웃 정렬

인벤토리, 직업 출력 레이아웃을 정렬하는 기능을 만들고 둘을 통합시켰습니다
키보드로 선택지를 선택하는 기능은 이동할 수 있는 씬이나 선택지의 탬플릿을 만든 뒤
선택지가 필요한 씬에서 Option.Add로 추가하여 원하는 선택지를 넣을 수 있습니다.


13. 아이템

  • 아이템 적용 아이템 관련 클래스로 Inventory, item, ConsumeItem, Equipments 를 만들어서 관리하였습니다.
  • 장비 아이템 장비를 enum 형태로 슬롯을 만들었고, 해당 아이템을 장착하고 해제 하면서 해당 데이터를 저장하였습니다.
  • 회복 아이템 회복 아이템이 아이템을 상속받으면서 따로 분류하는게 조금 복잡한 작업이었는데, 상속이나 중복 아이템을 추가하는 작업이나 전투에서 사용하는 작업이 들어갔습니다.

14. 스테이지

던전을 클리어 할 때 마다 다음 스테이지로 올라가도록 했습니다.


15. 게임 저장 / 불러오기

시작씬에서 게임 저장 / 불러오기가 가능합니다.
SaveData.json 파일로 만들어 장비 장착이나, 보유 개수가 바뀔 때마다 저장 데이터에 넣어두었습니다. 해당 파일을 .gitignore파일에 올려두어 협업을 할 때 계속 변경되지 않도록 했습니다.


16. BGM

시작할 때, 씬이 넘어갈 때, bgm이 재생되도록 했습니다. 싱클 톤 등, 여러 복잡한 내용의 조건이 따랐었습니다.
볼륨 조절은 코드상으로 조절하여 적용하였습니다.


17. 디자인

코드 내부적으로 원하는 콘솔 라인에 문자열을 출력할 수 있는 메서드를 작성해두었습니다.
해당 메서드로 아스키코드로 만들어진 이미지들을 원하는 라인에 출력시켜 작성했습니다.


18. 재밌다


About

C# 콘솔로 만든 던전 게임 (UnderTale) 팀 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages