<목표>
- 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 게임을 만들기전에 게임 분석 및 기획을 한다.
게임 개발에 앞서 중요한 것은 컨셉과 목표라고 생각한다.
정했다면 그 다음으로는 해당 게임의 스케일을 잡아야하고, 필요한 기능들을 정리 해야한다.
로그라이크류의 게임을 생각하며 컨셉과 목표를 잡고 게임의 방향과 기능들을 정리해본다.
게임 기본 룰
- 턴제로 진행되는 방식
- 현재 상황이 저장되지 않으며, 죽으면 처음부터 다시 시작
- 상황이 랜덤하게 주어지고 자유롭게 여러 선택지를 통해 공략
필수 기능
- 플레이어 행동 패턴 및 몬스터 행동 패턴
- 전투
- 승리 및 패배
게임 흐름 정리
- 총 스테이지는 10 이며, 항상 몬스터와 전투하게 된다.
- 몬스터는 스테이지 레벨에 따라 능력치가 강화된다.
- 플레이어는 몬스터를 사냥하여 경험치를 얻고 레벨업을 통해 강화한다.
- 플레이어가 몬스터를 잡게 되면 2가지 선택지가 나오는데 현재 스테이지에 머물것인지 다음 스테이지로 이동 할 것인지 선택해야 한다.
- 승리 조건은 플레이어가 마지막 10 스테이지에 있는 몬스터를 사냥하면 승리.
패배 조건으로 총 몬스터 전투 횟수가 30회를 넘지 말 것, 플레이어가 사망하지 말 것.
전투 선택지 : 기본공격, 연속공격, 방어하기, 도망가기
레벨업 선택지 : 공격력 증가, 체력 증가, 연속공격 확률 증가, 방어확률 증가, 최대 공격력 배수 증가
클래스 설정 및 정보
- 유닛 : 현재 체력, 최대 체력, (최소,최대 공격력), 현재 공격력, 레벨
- 플레이어 : 유닛 상속, 기준 공격력, 최대 공격력 데미지 배율, 방어확률, 연속공격 확률, 도망가기 확률, 현재 경험치, 최대 경험치, 경험치 퍼센트, 현재 상태
- 몬스터 : 유닛 상속, 경험치량
- 스테이지 : 레벨, 현재 몬스터와의 전투 카운트, 최대 몬스터와의 전투 카운트
게임 완성 스크린샷
- 콘솔에서 해당 .js 파일을 실행시키고 나서 처음 화면이다. 1번을 입력하고 Enter로 이동한다.

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

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

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

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

- 몬스터의 레벨과 그에 따른 능력치, 플레이어의 능력치와 4가지 전투방식을 잘 분석하여 승리 조건에 다다르길 바랍니다!
게임 파일 깃허브 링크