Skip to content

armadimon/team15-TextRPG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

201 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TextPunk - 2025

C# 기반의 콘솔 텍스트 RPG 게임입니다.

플레이어는 맵을 탐험하며 적과 전투하거나, NPC시스템을 해킹하여 다양한 방식으로 챕터를 클리어 할 수 있습니다.

적과의 전투뿐만 아니라 퍼즐 요소가 포함되어 있어 상황에 맞게 플레이해야 합니다.


🔌랜선심오조

image

🛠️ 팀원: 안준걸(팀장), 유승민, 정하나, 한정우

📅 개발기간: 2025-02-05 ~ 2025-02-13


🔧 기술 스택

  • 언어: C#
  • 프레임워크: .NET 8.0
  • 개발 환경: Visual Studio 2022

🎮 게임 개요

🏙️ 맵 탐험과 상호작용

플레이어는 방향키를 이용해 맵을 탐험하고, 상호작용(Z 키)으로 NPC 및 시스템을 해킹할 수 있습니다.

⚔️ 전투 시스템

적과의 전투에서는 공격, 특수 공격, 방어, 아이템 사용, 전략적 후퇴 등의 선택이 가능하며, 플레이어의 레벨 및 스탯에 따라 전투 방식이 달라집니다.

🕵️ 해킹 시스템

NPC 해킹: 적의 보안 시스템을 스캔하고 이름을 밝혀 해킹을 수행합니다.

필드 오브젝트 해킹: 특정 시스템을 해킹하여 기믹을 해결할 수 있습니다.

퍼즐 요소: 제한시간 내에 암호를 해독하거나, 특정 명령어를 입력해야 하는 등 다양한 기믹이 존재합니다.


게임 구성

🏛️ 상태 패턴(State Pattern) 적용

image

상태 패턴을 활용하여 다양한 게임 상태를 손쉽게 추가할 수 있도록 설계하였습니다.

각 기능별 독립적인 상태 관리가 가능하여 개발과 유지보수가 용이합니다.


타이틀 화면

image

타이틀 화면입니다.

숫자 선택을 통해서 새로 시작하기, 이어서 하기, 종료를 진행할 수 있습니다.


새로 시작 화면

image

플레이어의 이름과 직업을 선택할 수 있습니다.

밖으로 나가면 메인 메뉴로 넘어갈 수 있습니다.


나이트 시티 입구(메인 메뉴)

image

메인 메뉴에서는 플레이어의 상태를 보거나 의뢰 수주, 챕터 선택, 인벤토리 보기, 종료를 할 수 있습니다.


상태 보기

image

플레이어의 상태를 볼 수 있습니다.

레벨업을 통해 스텟 포인트를 얻었다면 능력치 배분을 진행할 수 있습니다.


의뢰 수주

image

원하는 챕터를 선택해서 챕터의 의뢰를 받을 수 있습니다.


챕터 선택

image

원하는 챕터를 선택할 수 있습니다.

선택한 챕터의 임무 브리핑을 들을 수 있습니다.


image

방향키를 입력하여 플레이어(P)를 조작할 수 있습니다.

  • P: 플레이어 위치

  • E: 적

  • N: NPC

  • C: CCTV

  • O: 문

가까이에서 Z를 누르면 상호작용 할 수 있습니다.


맵 - 적 해킹 모드

image

Q를 누르면 해킹모드로 변경됩니다.

image

적을 해킹성공하면 이름이 모두 밝혀져 있습니다.

image

적을 해킹성공하면 적을 직접 움직일 수 있습니다. 플레이어가 갈 수 없는 길도 적을 해킹해서 갈 수 있습니다.


적과의 전투 시스템

image

적과 전투할 수 있습니다.

공격, 특수공격, 방어, 아이템, 전략적 후퇴를 선택할 수 있습니다.

🔍 자세한 설명 보기
  • 몬스터는 인터페이스와 리스트로 관리. 랜덤 함수로 수와 종류를 조절하며 몬스터는 일정 확률로 스킬을 사용합니다.
  • 플레이어의 레벨에 따라 몬스터의 스펙이 높아지는 간단한 레벨 스케일링 작업을 했습니다.
  • 치명타 확률과 회피 확률을 설정. 각 수치는 플레이어의 특정 스텟에 영향을 받습니다.
  • 인터페이스와 리스트로 관리하는 스킬. 전투 시작 때마다 조건을 만족하는 스킬이 전체 리스트에서 플레이어의 리스트로 이동합니다.
    스킬은 특정 스탯의 영향을 받으며, 적과 스킬의 타입에 따라 추가 피해가 발생합니다.
  • 전투 중 후퇴가 가능합니다. 일정 확률로 실패할 수 있으며 이는 특정 스탯의 보정을 받습니다.
  • 방어는 받는 피해를 감소시키며 MP 회복 효과를 갖습니다. 이 또한 스탯의 보정을 받습니다.

스텟 시스템

image

게임 진행 방식의 다양성과 개인 기호에 부합하기 위해 초기 생성 클래스 별로 세부 스탯을 상이하게 설정했습니다.

전투가 끝나고 획득한 경험치에 따라 레벨이 오르면 스탯을 찍을 수 있습니다. 스탯은 Str, Dex, Int로 구성되어 있으며 각 스탯은 게임의 진행에 영향을 주도록 되어있습니다.


해킹 시스템(NPC 해킹)

image

적의 보안 설명을 입력하여 적의 이름을 알아낼 수 있습니다.

image

적의 정보를 스캔하여 이름을 밝혀낸 후, 이름을 입력하여 해킹 공격을 수행하는 시스템입니다.

해킹 분위기를 살리기 위해 점진적으로 정보를 공개했습니다.

정확한 입력을 통해 상대를 무력화하는 해킹 전투 시스템입니다.

🔍 자세한 설명 보기

1) ScanEnemy (적 스캔)

  • 제한시간 내에 보안 정보를 입력하여 적의 이름을 일부 공개
  • 정보 정확도에 따라 공개되는 글자 수 증가
  • 100% 정확도 시, 전체 이름 공개
  • 기술적 구현: HashSet을 사용하여 중복 방지하며 랜덤 위치 글자 공개

2) Hack (해킹 공격)

  • 플레이어가 NPC의 이름을 입력하여 해킹 공격
  • 입력 정확도에 따라 피해량 결정
  • 100% 일치 시, NPC 무력화
  • 실패 시, NPC 반격 시스템 적용

3) DefendHack (역해킹 방어)

  • NPC가 플레이어를 역해킹하여 공격
  • 랜덤한 해킹 코드를 입력하여 방어
  • 입력 정확도에 따라 피해량 감소

4) ReadInputWithTimeout (제한시간 입력 처리)

  • 제한시간 동안 입력 가능, 시간이 줄어들수록 색상 변화
  • 제한시간 초과 시 자동 진행
  • 백스페이스 기능 추가하여 난이도 조절

해킹 시스템(필드 오브젝트 해킹)

image

필드에 존재하는 오브젝트들을 해킹하는 해킹 시스템입니다.

특별 명령어들을 통해서 기믹을 수행할 수 있습니다.

🔍 자세한 설명 보기

해킹 GUI 및 커맨드 입력 기능

  • 유저 입력을 커맨드로 변환하는 기능 구현
  • 방향키 ↑ / ↓로 이전에 입력한 커맨드를 빠르게 불러오기 가능
  • Tab 키를 눌러 커맨드를 자동 완성하는 기능 추가

CCTV 모드

image

살펴보기를 통해 다른 층을 확인할 수 있습니다.


인벤토리 보기

image

플레이어가 가지고 있는 아이템들을 볼 수 있고 사용할 수 있습니다.


인벤토리 시스템

image

아이템 종류에 상관없이 Add()와 Use() 함수를 통해 사용 가능합니다.

Item 인터페이스를 활용하여 아이템 관리, 하지만 Deserialize 시 객체 타입이 복원되지 않는 문제 발생 → 해결책으로 리플렉션을 활용하여 함수 실행 및 아이템 타입만 저장 후,Use() 시 해당 타입의 새 객체를 생성하여 기능 실행


저장/불러오기 기능

image

Serialize 가능한 class를 모두 한 번에 저장/불러오기 할 수 있습니다. 원하는 class만 지정도 가능합니다.

파라미터로 받은 타겟 class에 load한 class의 데이터를 덮어씌우기 위해 고생했고, 결국 프로퍼티를 하나하나 불러와 덮어 씌우는 식으로 해결했습니다.


탐험 메카닉

image

각각의 팀원이 챕터별로 작업하고, 스테이지도 자유롭게, 챕터에 맞는 기믹도 자유롭게 할 수 있도록 작성했습니다.

🔍 자세한 설명 보기

챕터를 설계하는 사람이 스테이지의 크기를 정하고, 스테이지 내부에 자신이 원하는 타일을 지정하여 맵을 설계할 수 있습니다.
또한, 스테이지 내에 퀘스트 아이템을 추가하여 기믹으로 활용할 수 있습니다. (예: 비밀번호 획득 등)

그러나, 파편화된 클래스들(일관성이 부족함)로 인해 구조적으로 복잡해지고,
기믹을 설정해놓은 코드에 대한 이해가 어려워 개별 챕터 작업 시 협업이 어려운 점이 있었습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages