본문 바로가기
대학생활/수업

게임네트워크프로그래밍 11주차 - 키 입력 동기화 게임 실습

by se.jeon 2023. 5. 22.
728x90
반응형

지난 주 시간 복습

객체 직렬화/ 역직렬화

키 입력 동기화 게임 만들기

키 입력 동기 구조, 상태 관리

키 입력 지연

키 입력 지연을 고려한 송수신과 상태 전환

정보가 버퍼에 저장된 상태

- 자신의 키 입력 정보를 송신

- 상대의 키 입력 정보를 수신

- 지연된 분량만큼 정보를 송수신하지 않은 상태

상태를 고려한 상태 전환

- 송수신하지 않은 상태

- 정보의 동기화 대기 상태

- 정보가 동기화된 상태

어떤 식으로 구현할지 고민 해 보아야 한다.

 

네트워크 게임 제작 실습

네트워크 통신을 위한 파트너 지정

플레이어 고양이를 움직여서 화살을 피하는 게임 : 서버를 경유한 게임 플레이 (예제)

2주간 실습 진행.

플레이어 고양이를 움직여서 과일을 얻는 게임 : 서버를 경유한 게임 플레이

 

두 번째 실습의 주요 목표

- 첫 번째 실습 게임보다 한 단계 더 복잡한(간단한) 네트워크 게임 제작

- 첫 번째 실습 게임과 달리 일회성이 아닌 게임 플레이 내내 네트워크 활용

- 스레드의 사용 가능성 탐색은 권고 사항이지만 자유

- 유니티 기반 게임 제작에서의 네트워크 응용 연습 확대

- 가능할 경우 유니티 기반 게임 제작에서의 네트워크 스레드 활용 도전

 

[1단계] 네트워크 게임 구조 생각하기

- 목표 : 클라이언트 입력이 아닌 서버를 경유한 입력을 통해 플레이 실현

- 네트워크 토폴로지 : cs 구조 활용

- 네트워크 프로토콜 : 게임의 특성과 최대한 간단한 구현을 위해 UDP 활용
  기본적으로 TCP로는 속도를 따라가기 힘들다.

- 유니티 기능의 활용 : 2D 유니티 게임을 바탕으로 네트워크 기능 추가

- 네트워크 프로그래밍 작성 : 서버는 데디케이티드 서버, 클라이언트는 유니티 게임

- 실제 코딩 : UDP, 서버 재사용

   계속 재전송하는 에코 서버 예제 진행

 

유니티 기반 간단한 게임 설계하기

1. 화면에 놓일 오브젝트를 모두 나열하기

2. 오브젝트를 움직일 수 있는 컨트롤러 스크립트 정하기

3. 오브젝트를 자동으로 생성할 수 있도록 제너레이터 스크립트 정하기

4. UI 갱신을 위한 감독 스크립트 준비하기

5. 스크립트를 만드는 흐름 고려하기 *네트워크 스크립트 추가 해 보기

 

[2단계] 간단한 유니티 게임 만들기

프로젝트와 씬 만들기

게임 제목 : CatControl

- 2D 게임으로 제작

- GameScene로 제작

프로젝트에 리소스 추가

 

프리팹과 아웃렛

프리팹

- 유니티의 가장 강력한 특징 중 하나

- 유니티에서 인스턴스를 만드는 일종의 설계도 역할

아웃렛

- 스크립트 내의 변수에 오브젝트 실체를 연결하는 간단한 방법

- 아웃렛은 "콘센트에서 플러그를 꽂는 구멍"을 의미

- public 접근 수식자 사용이 관건

- 기획자들과의 작업을 효율적으로 하는 가장 강력한 기술이므로 잘 설명 해 주어야 한다.

 

728x90
반응형