일정

제목 없음

Team

🗃️ Github

https://github.com/choisooyoung-dev/d-ingco.git

📽️ 시연 영상

🗒️ 발표 자료


👣 WBS & Tasks

1. 프로젝트


2. 기획 관련 메모

3. WBS & Tasks


🏝️ Ground Rules

✏️09:00~10:00 : 알고리즘 & SQL 풀이

📖10:00~13:00 : 오전공부

🍙13:00~14:00 : 점심식사

📖14:00~18:00 : 오후공부

🍙18:00~19:00 : 저녁식사

📖19:00~21:00 : 저녁공부

📝20:30~21:00 : TIL 작성

*9시 전에 출석 완료하기!
*20분 이상 자리 비울 시 슬랙에 알리기

🚩 Goals


🕑 회의


🚦 Project Rules

Code Convention

Github Rules

KPT 회고

🌞 계획표

요일 별 상시 업무 [D-5]

📢 SA 서면피드백


4. 와이어프레임

제목 없음

5. API 명세서 (구현 기능 안에 상세 설명 추가)

API 명세서

6. ERD DIAGRAM

Untitled


7. 핸들러 구조 (클라이언트 → 서버)

handler handlerID payload 설명
waitForMatch 0 { token, monsterPath, initialTowerCoords } 서버에서 게임을 찾고 없다면 게임 생성 및 대기, gameStartHandler 호출
gameStartHandler X game 서버에서 양쪽 클라이언트에게 유저 데이터를 전송하여 게임을 시작
responseMonster 5 { uuid, monsterData: newMonster } 몬스터 생성 데이터 서버 및 상대 클라이언트에 전달
removeMonster 6 { uuid, monsterIndex } 몬스터 삭제 데이터 서버 및 상대 클라이언트에 전달
writeChat 7 { uuid, message: chatContent.value } 채팅 입력 데이터 서버 및 상대 클라이언트에 전달
userDataUpdate 10 { uuid, userGold, score } 유저 골드 및 점수 데이터 서버에 전달
levelUp 11 { uuid, monsterLevel } 유저 레벨업 데이터 서버 및 상대 클라이언트에 전달
baseAttacked 33 { uuid, attackedPower: monster.attackPower, baseHp } 유저 기지 HP 감소 데이터 서버 및 상대 클라이언트에 전달
towerRemoved 44 { uuid, towerIndex: monster.targetTowerIndex, monsterIndex } 파괴된 타워 정보, 파괴한 몬스터 index 정보 서버 및 상대 클라이언트에 전달
spawnSpecialMonster 55 { uuid, monsterType } 상대 유저의 게임에 몬스터 생성 정보 서버 및 상대 클라이언트에 전달
addTower 66 { uuid, tower, userGold } 타워 추가 정보 서버 및 상대 클라이언트에 전달
towerUpgrade 67 { uuid, towerIndex, userGold } 타워 업그레이드 정보 서버 및 상대 클라이언트에 전달
towerAttackMonster 77 { uuid, towerIndex, monsterIndex } 타워 몬스터 공격 정보 서버 및 상대 클라이언트에 전달
powerOverwhelming 88 { uuid } 무적 치트키 사용 정보 상대 클라이언트에 전달
baseOver 98 { uuid } 게임 종료 정보 서버 및 상대 클라이언트에 전달
gameEnd 99 { uuid, highScore, score } 유저 최고기록 갱신 및 세션 삭제

8. 패킷 명세서 (서버 → 클라이언트)


Packet 명 data 설명
connect_error { status: 'fail', message: '연결 실패' } 연결 실패
connection { status: 'success', message: '연결 완료' } 연결 성공
response { status: ‘?’, message: ‘?’ } response 수신
matchFound {
user: JSON.parse(user1(2)Data),
opponentUser: JSON.parse(user2(1)Data),
towerCost: game.towerCost,
monsterSpawnInterval: game.monsterSpawnInterval,
} 유저 초기 데이터, 상대 유저 초기 데이터, 게임 초기 데이터 수신
uuid { uuid: uuid } uuid 수신
chatContents { uuid: uuid, message: message } uuid 및 상대 채팅 메시지 수신
createOpponentMonster { payload: payload.monsterData } 상대 유저 몬스터 생성 데이터 수신
removeOpponentMonster { monsterIndex } 삭제된 상대 유저 몬스터 index 수신
spawnSpecialMonster { type } 상대 유저가 내 게임에 생성시킨 몬스터 type 수신
opponentBaseAttacked { opponentBaseHp: user.baseHp } 상대 유저 기지 HP 수신
opponentUserLevelUp { opponentMonsterLevel: user.monsterLevel } 증가된 상대 유저 레벨 수신
addTower { opponentTower: payload.tower } 생성된 상대 유저 타워 데이터 수신
towerAttackMonster {
towerIndex: payload.towerIndex,
monsterIndex: payload.monsterIndex
} 공격하는 상대 타워 index, 공격 받는 상대 몬스터 index 수신
towerUpgrade { towerIndex: payload.towerIndex } 업그레이드 된 상대 타워 index 수신
towerRemoved {
towerIndex: payload.towerIndex,
monsterIndex: payload.monsterIndex
} 파괴된 상대 타워 index, 파괴한 몬스터(마법사)의 index 수신
powerOverwhelming { } 패킷 자체가 정보, 상대 몬스터 무적화
gameOver { isWin: true } or { isWin: false } 승패 여부 수신