Text Based Multi User Dungeon Game
- 윈도우 운영체제
- Redis (windows)
- 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개 이상의 클라이언트 연결을 처리할 수 있어야 한다.
- 클라이언트는 수시로 연결을 끊고 맺고를 반복하는데 이 때 서버가 죽지 않아야 한다.
- 클라이언트가 접속하는 소켓 외에 추가로 TCP 소켓을 하나 더 열고 간단한 REST API 를 제공할 수 있다.
- HTTP 메소드는 GET, POST 두 종류만 지원한다.
- move, attack, users, monsters 명령들을 GET, POST 로 대응해서 시중에 있는 REST client 를 통해 게임을 같이 플레이할 수 있다.

