Skip to content

byungmeo/DungeonInTextOnline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 

Repository files navigation

DungeonInTextOnline

Text Based Multi User Dungeon Game

image image

실행 요구사항

  1. 윈도우 운영체제
  2. Redis (windows)
  3. hiredis

플레이 방법 (클라이언트)

move {x} {y}
→ 현재 좌표에서 (x, y) 만큼 이동한다. x, y 는 각각 3이하로 한다.

attack
→ 현재 좌표 기준 [-1, -1] ~ [1, 1] 까지 9칸 영역에 대해 슬라임들을 공격한다.

monsters
→ 몬스터들의 좌표를 나열한다.

users
→ 유저의 이름과 좌표를 나열한다.

chat {유저이름} {대화내용}
→ 주어진 유저이름의 유저에게 대화내용을 전달한다. 만일 유저가 로그인하지 않았다면 없는 유저라고 출력한다.

bot
→ Bot 모드를 활성화한다. Bot 모드에서는 위의 명령들을 client 가 1초에 한 번 임의로 골라 랜덤하게 수행하고 클라이언트 종료시 까지 유효하다.

게임 스펙

사용자 로그인 처리

  • 사용자는 최초 로그인하면 던전의 임의의 위치에 떨어진다.
  • 사용자의 정보는 Redis 에 저장된다. (hiredis 사용)
  • 사용자 정보는 연결이 끊긴 후 5분간만 redis 에 저장되고 5분 뒤에는 정보가 모두 지워진다.
  • 사용자가 마지막 연결 이후 5분 이내에 재접속을 하면 Redis 에 남아있던 정보를 복원해서 플레이 한다.
  • 플레이 중인 유저 아이디로 로그인을 하게 되면 동시 접속으로 간주하고 기존의 접속을 강제 종료한다.

사용자 데이터

  • 던전에서의 위치 [0, 0] – (30, 30) 까지의 2차원 좌표
  • 체력(hp): 기본값은 30
  • 공격력(str): 기본값은 3
  • 체력 회복 포션들: 기본 1개
  • 공격력 강화 포션들: 기본 1개

몬스터 생성

  • 1분에 한번씩 슬라임이 10 마리가 되도록 주기적으로 생성(젠, gen) 된다.
    • 기존에 5마리 있었다면 추가로 5마리 젠 된다.
    • 생성되는 위치는 랜덤이다.
    • 슬라임은 5~10 사이의 랜덤한 hp 를 부여 받는다.
    • 슬라임은 3~5 사이의 랜덤한 str 을 부여 받는다.
    • 슬라임은 랜덤하게 체력 회복 포션이나 공격력 강화 포션을 갖고 생성되며 이 포션들은 가지고만 있다가 슬라임의 체력이 0 이 되게 만든 유저가 획득한다.
  • 슬라임은 자기 좌표 기준 [-1, -1] ~ [1, 1] 까지 9칸에 있는 유저를 5초에 한 번 간격으로 공격한다.

아이템의 효과

  • 공격력 강화 포션
    • 1분 동안 공격력(str)을 +3 증가시킨다.
  • 체력 회복 포션
    • 체력(hp)을 10 회복 시킨다.

공격에 따른 데미지 계산

  • 유저와 슬라임 공통으로 데미지는 현재의 공격력(str) 수치로 한다.
  • 공격이 발생하면 전체 클라이언트에게 알림이 가게 한다. 클라이언트는 이를 화면에 노출한다.
    • 예시1: “핵노잼” 이 “슬라임” 을 공격해서 데미지 3을/를 가했습니다.
    • 예시2: “슬라임” 이 “핵노잼” 을 공격해서 데미지 2을/를 가했습니다.

유저 접속 종료 및 로그아웃 처리

  • 유저가 클라이언트를 종료하거나 네트워크가 끊기는 경우 서버는 해당 유저가 던전에서 나간 것으로 처리하고 몬스터의 공격을 받지 않게 한다.

다중 접속 처리

  • 서버는 동시에 최소 30개 이상의 클라이언트 연결을 처리할 수 있어야 한다.
  • 클라이언트는 수시로 연결을 끊고 맺고를 반복하는데 이 때 서버가 죽지 않아야 한다.

REST API 제공

  • 클라이언트가 접속하는 소켓 외에 추가로 TCP 소켓을 하나 더 열고 간단한 REST API 를 제공할 수 있다.
    • HTTP 메소드는 GET, POST 두 종류만 지원한다.
    • move, attack, users, monsters 명령들을 GET, POST 로 대응해서 시중에 있는 REST client 를 통해 게임을 같이 플레이할 수 있다.

About

Text Based Multi User Dungeon Game

Resources

Stars

Watchers

Forks

Contributors