728x90
이번 과제와 학습 정리
1. 학습 개요
- 주요 주제: 웹소켓을 활용한 실시간 데이터 통신 학습 및 싱글플레이 게임 제작.
- 목표:
- 게임 개발 과정 이해.
- 프로토콜(HTTP, TCP, WebSocket) 구분.
- 데이터 패킷 설계 능력.
- Node.js 기반 게임 서버 구축.
- 핸들러 구조로 데이터 처리.
- 활용 방안: 클라이언트-서버 패킷 설계와 Node.js 기반 실시간 게임 서버 제작 가능.
2. 과제 내용
싱글플레이 게임 과제
- 기획:
- 시간 및 스테이지별 점수 획득 구분.
- 아이템 생성 및 획득 점수 차별화.
- 기본 구조:
- 패킷 설계:
- handlerID: 요청 처리 핸들러 ID.
- userId: 유저 ID.
- clientVersion: 클라이언트 버전 정보.
- payload: JSON 형식의 요청 내용.
- 데이터 테이블 설계:
- 스테이지 정보 (ID, 점수, 초당 점수).
- 아이템 정보 및 스테이지별 아이템 분배.
- 서버 로직:
- 스테이지별 아이템 생성 및 점수 계산.
- 아이템 획득 검증 로직(어뷰징 방지).
- 배포:
- 클라우드 환경에서 서버 실행.
- 패킷 설계:
3. 필수 기능
- 스테이지 관리:
- 시간/점수를 기준으로 스테이지 구분.
- 스테이지별 점수 차별화.
- 아이템 생성 및 점수 관리:
- 스테이지별 아이템 종류 분배.
- 아이템별 획득 점수 차등.
- 아이템 생성 빈도와 검증.
- 게임 종료 점수 검증:
- 서버에서 시간 및 아이템 획득 점수 검증.
4. 도전 기능
- Broadcast 기능:
- 특정 이벤트를 모든 유저에게 전달.
- 하이스코어 관리:
- 서버에서 최고 점수 저장.
- 최고 점수 갱신 시 유저들에게 알림.
- 유저 정보 연결:
- UUID 발급 및 유저 게임 기록 연동.
- Redis 연동:
- 유저 세션과 게임 정보 저장.
5. 진행 단계
- 기획 정리:
- 스테이지 및 아이템 생성 로직.
- 데이터 테이블 초기 설계.
- 서버 로직 작성:
- Node.js 기반 서버 구축.
- 핸들러 구조를 통한 데이터 처리.
- 테스트 및 디버깅:
- 점수, 아이템 생성, 검증 기능 확인.
- 배포:
- AWS, Heroku 등 클라우드 플랫폼에 배포.
6. 평가 기준
- 코드 완성도:
- 필수 기능 완성 여부.
- 데이터 관리:
- 데이터 테이블 활용.
- 서버-클라이언트 데이터 일치.
- 도전 기능:
- Broadcast, Redis 등 고급 기능 구현.
추천 추가 학습/작업
- 패킷 설계 연습:
- 다양한 요청/응답 시나리오 정의.
- Redis 활용 능력 강화:
- 데이터 캐싱 및 실시간 게임 데이터를 저장하는 구조 연습.
- 성능 최적화:
- 다수의 연결을 처리하는 서버 구조 학습.