HexCore Village –

기간 2023.11.15 ~ 2023.11.22 (7일)
장르 C# Console Text Game
개발인원 6 명
개발환경 Window, Mac
IDE Visual Studio, Rider

팀 프로젝트 기획

프로젝트 목적

  • 콘솔 개인 프로젝트에 이어서 던전에서의 전투 시스템 구현
  • Git 을 이용한 협업 경험 향상

프로젝트 컨벤션

Git Hub

  • 🔖 양식 [적용내용] - 적용된 항목 Title
    • 어떤 문제가 발생
    • 해당 부분은 어디서 발생한 문제
    • 해당 부분을 어떻게 수정 (코드는 필요 없습니다.)
    • 자세한 내용은 주석을 이용합니다.
  • 🧾 커밋메세지 (간단하게 3개만)
    • [💫 Feature] : 신규 기능 개발
    • [🐛 BugFix] : 발생한 버그에 대한 해결
    • [🛠️ Fix] : 기능에 대한 수정
  • 🔯 Git Branch - Git Branch 생성은 [ 이름이니셜 - 기능 ] 양식으로 작성
    • 해당 브랜치는 Main 브랜치가 아닌 Develop 브랜치에 커밋
    • 커밋 이후에는 브랜치는 삭제하고 새로운 브랜치 생성
    • 커밋은 꼭 기능이 끝나면 자주 커밋하여 팀원들의 프로젝트가 최신을 유지
    • 커밋시 “어떤 Scene 커밋 하겠습니다” 라고 이야기해주세요
    • Conflict가 나면 혼자 해결 하시기 보다는 도움을 요청하세요

Code

  • 🏞️ 레이아웃 규칙
    • Console.WriteLine(“한 줄에 하나씩”);
    • string variable = “변수 선언은 한줄에”;
    • 메서드간 정의 및 속성은 빈 한줄로 잘라서 표현 ```csharp public int[] number = {2,4,5,6,7};

if (number % 2 == 0) { Consol.WriteLine(number); } ```

  • 🖋️ 주석달기
    • class, Method 상단에는 /// 를 이용한 Summary 작성
    • 해당 메서드 또는 클래스가 담당하고 있는 기능
    • 입력 값이 있다면 입력 값에 대한 내용 Input (Character character.Name)
    • 반환 값이 있다면 반환값 return (string 반환값, int 반환값)
    • 다른 팀원과 공유하는 자원의 경우 // 를 이용한 주석
    • // 주석은 한칸 띄어서 사용합니다.
  • 🖊️ 문자열 보간
    • 문자열에 변수를 담아낼때는 $”{문자열보간}을 사용합니다.”;
  • 🔍 변수 선언
    • 변수의 타입이 분명하면 해당 타입을
    • 불분명 하다면 var 선언 (반환타입이 확인이 된다면 바꿔주시기 바랍니다.)
    • 변수는 길더라도 명확하게 이해 할 수 있는 변수명을 사용해주시기 바랍니다.

프로젝트 소개

  • 내일배움개발 1조 HexaCore의 플레이어 A씨 게임 개발 도중 실행 중 버그가 발생했다.
  • 발생한 버그를 해치우며 레벨업 하여 게임을 완성하자!

Login

  • Json을 이용한 Character Data Parsing
  • 최초 케릭터 생성시 기본 Json 데이터를 생성
  • ID 만으로 조회하여 게임 로드를 가능하도록 데이터 관리
  • 아이디 입력 => 직업 선택 => 직업 보너스 배경 선택 등의 컨셉을 잡고 개발 진행

GameManager

  • Console ReadKey 입력은 예외처리에 대한 부분과 시각적인 부분에서 Arrow Function 키로 작업
  • 정적 데이터 및 구조체 클래스 등을 이용한 클래스간의 의존서을 낮춰 협업시 문제가 없도록 설계
  • Manager의 싱글톤으로 게임을 컨트롤

Character

  • ASC를 이용한 Stauts UI 표현 시도
  • 정적파일과 관리되는 아이템의 데이터를 로드하여 직렬화 및 역직렬화를 통해서 Json 객체 관리
  • 추가적인 사항들은 이후 프로젝트 진행도에 따라서 추가될 예정

Store And Inventory

  • Json 객체를 이용한 Data 처리
  • 아이템 리스트의 경우 Arrow Key 를 이용해서 스크롤 기능 구현
  • 싱글톤 으로 데이터 관리
  • 아이템 클래스의 경우 Dictionary 형식의 데이터를 ItemName을 Key로 Access

Battle

  • 턴제 방식의 배틀 시스템 구현
  • 턴 진행시 UI에 log 식의 데이터 처리

Reward

  • 전투 결과를 Bool 값으로 가져와 각 해당 조건에 따라서 보상진행
  • 기본 시스템 개발 후 기타 Reward Item의 경우 개발시 추가할 예정

Utility

Dummy Data

  • 개발시 모든 품목 및 상태를 정할 수 없기 때문에 기초적인 Dummy Data 작성
  • 케릭터 및 아이템의 기본 데이터는 Json 파일로 생성