Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 한국산업기술대학교
- 게임공학과
- random access
- sequential
- c++
- 스마트포인터
- 멀티쓰레드
- 유니크포인터
- Unreal
- material
- MultiCore
- Atomic
- Design Pattern
- stl
- 멀티코어 프로그래밍
- observer pattern
- 멀티코어
- vector
- 복사생성자
- thread
- 옵저버 패턴
- multi-core
- Multithread
- 쓰레드
- 프레임워크
- 옵저버
- 디자인패턴
- C
- EFFECTIVE C++
- 메모리관리
Archives
- Today
- Total
태크놀로지
WAR OF NEMO - Network 3인용 2D 게임 본문
게임소개
Video : www.youtube.com/watch?v=PKQpKVNl_Ew
Git : gitlab.com/minjoooo/war_of_nemo
개발환경
- DirectX 2D
- C++
- Window Socket API
개발목적
- 3인 대전 멀티플레이 게임 개발
- 멀티쓰레드 활용 능력 배양
- 서버/클라이언트 동기화 기법 습득
개발인원
- 3인개발
담당 역할
- 클라이언트 개발
- DirectX 2D를 사용하여 프레임워크 및 컨텐츠 구현
- 클라이언트 네트워크 동기화 시스템 구현
게임방식
- 3명 플레이어들은 총알을 발사하여 상대방 플레이어를 맞춥니다.
- 총알은 벽이나 장애물에 맞으면 튕기며, 내가 발사한 총알에 내가 맞을 수 있습니다.
- 전투에서 살아남는 마지막 1인이 승리합니다.
조작법
프로젝트 분석
게임 흐름도
- Title Scene에서 IP주소 입력
- Lobby Scene에서 SPACE BAR 입력으로 READY상태로 전환.두 명 이상의 플레이어가 READY 상태 시 게임 시작
- 게임 플레이
- 게임 종료 시 Result Scene 전환 및 Lobby Scene으로 전환
게임 플로우 차트
- Client
- 클라이언트 실행 후, 서버에 connect 한다.
- 요청이 받아지면 ID를 서버로부터 받는다.
- 로비에서 준비 상태로 바꾼다.
- 게임 시작 메시지(초기화된 월드 상태)를 받는다.(게임시작)
- 키 입력 시 해당 키에 해당하는 명령 메시지를 서버에 보낸다.
- 서버에서 업데이트 된 월드 상태(플레이어, 총알의 위치 등)를 받는다. 업데이트 된 내용으로 그린다.
- 5~6을 반복하고, 게임 결과를 받으면 로비로 이동한다.
- 사용자가 접속종료 시 게임을 종료한다.
- Server
- 서버 실행 후, listen 상태에서 클라이언트의 connect 요청이 오면 accept 후 클라이언트에 ID부여, RecvThread를 만든다.
- 로비에서 2개의 클라이언트의 준비상태를 확인한다. 모두 준비상태이면 PhysicsThread를 만들고, 초기화된 월드 상태를 보낸다.
- RecvThread는 클라이언트의 메시지를 받는다. 그리고 타입을 구분하여 공유 자원에 넣는다. (로비에서의 처리는 RecvThread에서 한다.)
- PhysicsThread는 공유 자원의 값을 읽어 월드 상태를 업데이트한다. 업데이트된 월드 상태를 클라이언트에 전송한다.
- 3~4번을 반복한다. 생존자가 1명이 되면 모든 클라이언트에게 게임 결과를 보내준다.
클라이언트 UML
프로토콜
개발하면서 느낀점 & 배운점
졸업작품을 시작하기전 처음으로 제작한 네트워크 게임입니다. 졸업작품 팀원들과 함께 텀프를 진행하였기 때문에 졸업작품 개발전 경험을 쌓을 수 있었습니다. 기술적으로는 서버와 클라가 개발전 구조를 설계하고,프로토콜 회의, 동기화작업을 같이 진행하게 되었는데 이 텀프로젝트를 통해 구조는 어떤식으로 짜야하고 주의해야할점은 무엇인지를 경험으로 얻을 수 있었습니다.
※ 최초로 만든 네트워크 게임일뿐더러, 졸업작품 시작전 정말 많은 도움이 된 프로젝트라 기억에 남습니다.
'포트폴리오' 카테고리의 다른 글
메이플스토리 모작 - 2D 횡스크롤 RPG 게임 (0) | 2022.01.09 |
---|---|
EVERSPACE 모작 - 3D 비행 슈팅게임 (0) | 2021.12.28 |
METAL SLUG 모작 - 2D 아케이드 슈팅게임 (0) | 2021.12.28 |
CACHE CACHE - DirectX12 (0) | 2020.09.29 |
THE LORD OF RSP - Android 2D 게임 (0) | 2020.09.27 |