(TIL) 2024-12-24
(TIL) 2024-12-24
타워 디펜스 개임 Handler 기획(초안)
game핸들러
게임 시작
- 게임 정보 리셋
게임 종료 (검증) [ payload: score ]
- 점수 검증
게임 저장
게임 로드
Register핸들러
로그인 시 [ payload : userId ]
이건 이전 웹소켓과 동일하게…
Hq핸들러
체력 감소 [ payload: monsterId, postion(x,y)/몬스터 고유값 <- 선택]
- 기준정보 (monsterId)
- 생존 몬스터가 맞는지 검증
- postion(x,y) 검증
- return { hqHealth : 1}
Wave핸들러
웨이브 변경 [ payload : waveId (currentWaveId), waveId (nextWaveId) ]
- 기준정보 (waveId) - 현재 웨이브
- 기준정보 (waveId) - 다음 웨이브
- 잔존 몬스터 체크 검증 : 이건 게임 룰을 어떻게 정할거냐에 따라 추가하거나 뺴거나.
Monster 핸들러
몬스터 생성 [ payload : monsterId, waveId(선택) ]
- 기준정보 (monsterId)
- 기준정보 (waveId)
- 해당 monsterId가 waveId에 소환되는 몬스터가 맞는지 검증
- return
몬스터 이동 [payload : monsterId , postion(x,y)]
- 기준정보 mosterId
- postion(x,y) 이동 전후 검증
- return { postion(x,y) }
몬스터 체력 차감 (선택)
몬스터 사망 (선택)
Tower 핸들러
타워 생성-공통 (검증) [ payload : towerId, type , position(x,y) ]
- 기준정보 (towerId)
- towerId가 생성으로 만들 수 있는 타워 인지 검증
- 타워 유형에 대한 검증
- position(x,y)에 대한 검증
- 보유 골드 검증 6 return { status : “success” , gold : 10 } <- gold는 보유 총량을 반환해도 되고 증감치를 반환해도 됨. (선택)
타워 판매 (검증) [ payload : towerId, position(x,y)]
- 기준정보 (towerId)
- position(x,y) 위치에 towerId가 존재하는지
- return { status : “success” , gold : 10 } <- gold는 보유 총량을 반환해도 되고 증감치를 반환해도 됨. (선택)
타워 승급 (검증) [ payload : towerId(currentTowerId) , towerId(nextTowerId) , position(x,y)/타워 고유값 ]
- 기준정보 (towerId) - 현재 등급 타워
- 기준정보 (towerId) - 다음 등급 타워
- 승급 시 현재타워에서 다음 타워가 맞는지 검증.
- position(x,y) 위치에 towerId가 존재하는지 검증.
- 보유골드 검증
- return { monsterHp : 1 , gold : 0} / return { monsterHp : 0 , gold : 5} <- gold는 보유 총량을 반환해도 되고 증감치를 반환해도 됨. (선택)
타워 공격 (검증) [ payload : towerId , monsterId, towerPosition(x,y)/타워 고유값 , monsterPosition(x,y)/몬스터 고유값 ]
- 기준정보 (towerId)
- 기준정보 (monsterId)
- 설치한 타워가 맞는지 검증 (위치 포함)
- 생존한 몬스터가 맞는지 검증 (위치 포함)
- 공격 사거리 검증
- 몬스터 체력 변경
- (조건). 몬스터 체력 0 이면 몬스터 처치 및 보유 골드 변경 처리
- return { monsterHp : 1 , gold : 0} / return { monsterHp : 0 , gold : 5} <- gold는 보유 총량을반환해도 되고 증감치를 반환해도 됨. (선택)
결론
프로젝트 진행 전에 어느정도 초안을 작성 해서 정리를 하다보니 확실히 개발 단계에 있어서 편했다. 물론 완벽하지는 않아 중간 중간에 수정이 되는 부분이 있긴 하지만 각 핸들러 별로 흐름을 그려 놓으니 작업 하면서 좀 더 깊은 생각을 해볼 수 가 있었던 것 같다.
This post is licensed under CC BY 4.0 by the author.