Javascript Console Game - 001

변우영·2024년 8월 22일

Javascript

목록 보기
6/7
post-thumbnail

<목표>

  • Javascript로 Roguelike Console Game 만들기

개발 환경 셋팅하기

  • 프로젝트를 시작하면 터미널에 npm init -y 을 입력하면 package.json 파일을 생성해준다.
    생성된 파일 내용은 아래와 같다.
{
  "name": "my-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
  • 패키지 하단에"type": "module"을 추가한다면
    기존에 사용해야 했던 require 또는 module.exports 대신 import 와 export로 대체 할 수 있다.
// 기존
const fs = require('fs');
module.exports = { myFunction };

// 변경 후
import fs from 'fs';
export function myFunction() { ... }
  • 라이브러리를 추가 한다.
    라이브러리를 통해 자주 사용하는 코드를 가져 올 수 있고, 개발 속도 향상에 도움 되는 기능들을 제공 받을 수 있다.
npm install chalk figlet readline-sync
npm install -D prettier // 개발상황에서만 쓰이는 라이브러리 (-D 옵션)

 Prettier

일관된 코드 스타일을 자동으로 적용하여 작성합니다.
설정에 따라 코드를 깔끔하게 정렬하여 가독성과 유지보수를 향상시킵니다.
업계 경력자분이 추천해주신 라이브러리이다.
  • prettier 라이브러리 설정을 위해 .prettierrc 파일을 최상위 폴더에 생성한다.
    사람마다 편한 셋팅이 있지만 경력자분의 셋팅을 따르도록 했다.
{
  "singleQuote": true,
  "semi": true,
  "useTabs": false,
  "tabWidth": 2,
  "trailingComma": "all",
  "printWidth": 100,
  "arrowParens": "always",
  "orderedImports": true,
  "bracketSpacing": true,
  "jsxBracketSameLine": false
}
  • 이제 console에 Roguelike 게임을 만들기전에 게임 분석 및 기획을 한다.

게임 개발에 앞서 중요한 것은 컨셉목표라고 생각한다.
정했다면 그 다음으로는 해당 게임의 스케일을 잡아야하고, 필요한 기능들을 정리 해야한다.

로그라이크류의 게임을 생각하며 컨셉과 목표를 잡고 게임의 방향과 기능들을 정리해본다.


게임 기본 룰

  1. 턴제로 진행되는 방식
  2. 현재 상황이 저장되지 않으며, 죽으면 처음부터 다시 시작
  3. 상황이 랜덤하게 주어지고 자유롭게 여러 선택지를 통해 공략

필수 기능

  1. 플레이어 행동 패턴 및 몬스터 행동 패턴
  2. 전투
  3. 승리 및 패배

게임 흐름 정리

  • 필수 기능에 따른 게임 흐름을 정해보았다.
  1. 총 스테이지는 10 이며, 항상 몬스터와 전투하게 된다.
  2. 몬스터는 스테이지 레벨에 따라 능력치가 강화된다.
  3. 플레이어는 몬스터를 사냥하여 경험치를 얻고 레벨업을 통해 강화한다.
  4. 플레이어가 몬스터를 잡게 되면 2가지 선택지가 나오는데 현재 스테이지에 머물것인지 다음 스테이지로 이동 할 것인지 선택해야 한다.
  5. 승리 조건은 플레이어가 마지막 10 스테이지에 있는 몬스터를 사냥하면 승리.
    패배 조건으로 총 몬스터 전투 횟수가 30회를 넘지 말 것, 플레이어가 사망하지 말 것.

전투 선택지 : 기본공격, 연속공격, 방어하기, 도망가기
레벨업 선택지 : 공격력 증가, 체력 증가, 연속공격 확률 증가, 방어확률 증가, 최대 공격력 배수 증가


클래스 설정 및 정보

  1. 유닛 : 현재 체력, 최대 체력, (최소,최대 공격력), 현재 공격력, 레벨
  2. 플레이어 : 유닛 상속, 기준 공격력, 최대 공격력 데미지 배율, 방어확률, 연속공격 확률, 도망가기 확률, 현재 경험치, 최대 경험치, 경험치 퍼센트, 현재 상태
  3. 몬스터 : 유닛 상속, 경험치량
  4. 스테이지 : 레벨, 현재 몬스터와의 전투 카운트, 최대 몬스터와의 전투 카운트

게임 완성 스크린샷

  • 콘솔에서 해당 .js 파일을 실행시키고 나서 처음 화면이다. 1번을 입력하고 Enter로 이동한다.

  • 디스플레이 요소는 필요한 정보를 기준으로 알아 볼 수 있도록 제작했다.
    여러가지 선택지가 있는데 기본 공격 선택시, 연속 공격 선택시 상황이다.

  • [] 안에 지난 턴을 확인 할 수 있다. 기본적으로 플레이어 행동 이후 몬스터가 행동한다.

  • 연속 공격, 방어태세, 도망가기는 확률적인 요소이기때문에 실패시 몬스터에게 피해만 입게 된다.
    몬스터를 사냥하게 되면 경험치를 획득하고, 2가지 선택요소를 통해 전략적으로 플레이 가능하다.

  • 다음 스테이지 이동을 선택했다. Stage 밑에 Limited 카운트 곧 몬스터와 전투 횟수를 확인 할 수 있다. 몬스터를 사냥하고 많은 경험치를 얻게 되면 순식간에 많이 레벨업 할 수 있다.
    레벨업을 통해 플레이어를 강화하여 전략적으로 공략 할 수 있다.

정리

  • 몬스터레벨과 그에 따른 능력치, 플레이어능력치4가지 전투방식을 잘 분석하여 승리 조건에 다다르길 바랍니다!

게임 파일 깃허브 링크

profile
개발자로 한걸음!

0개의 댓글