More actions
imported>makerdark98 No edit summary |
(Repair batch-0005 pages from live compare) |
||
| (2 intermediate revisions by one other user not shown) | |||
| Line 2: | Line 2: | ||
* Unreal 프로젝트 진행시 어떤걸 고려해야하는지 알려주는 세션 | * Unreal 프로젝트 진행시 어떤걸 고려해야하는지 알려주는 세션 | ||
* 실습을 하는 세션은 아님 | * 실습을 하는 세션은 아님 | ||
* 다양한 언어를 지원 | * 언리얼은 다양한 언어를 지원 | ||
==== 진행 ==== | ==== 진행 ==== | ||
| Line 44: | Line 44: | ||
=== PlayerState === | === PlayerState === | ||
* 공백이 부족해서 적지 못했습니다. 갸르르 | |||
=== Q&A === | ==== Q&A ==== | ||
* 관제탑 모형이라 보면 된다. | * 관제탑 모형이라 보면 된다. | ||
* 클라이언트 끼리는 데이터 공유가 불가능 | * 클라이언트 끼리는 데이터 공유가 불가능 | ||
| Line 51: | Line 51: | ||
* 보통 FPS에서 총을 발사했을 때 물체에 닫기 전에 이미 연산을 끝내는 방식으로 연산. | * 보통 FPS에서 총을 발사했을 때 물체에 닫기 전에 이미 연산을 끝내는 방식으로 연산. | ||
* 맵(레벨)은 서버와 모든 클라이언트에 존재. | * 맵(레벨)은 서버와 모든 클라이언트에 존재. | ||
== 예시 == | === 예시 === | ||
* 게임 중간에 플레이어가 나갔다면? | * 게임 중간에 플레이어가 나갔다면? | ||
** playerCharacter에서 메뉴 생성 | ** playerCharacter에서 메뉴 생성 | ||
| Line 66: | Line 66: | ||
* 성능보장 | * 성능보장 | ||
==== 정리 ==== | |||
* 솔직히 이해하기 힘들 것 같습니다 | |||
* 시험공부 때문에 만들면서 좀 까먹.. | |||
* 나름 관심 있는 사람들에게 도움이 되었다 생각합니다 | |||
** 일단 한글문서가 별로 없고 | |||
** 대부분의 튜토리얼이 이런 부분을 다루지는 않습니다. | |||
* 나중에 시작하기 앞서 이런 내용이 있었다는 것을 기억해주시면 감사하겠습니다. | |||
Latest revision as of 00:44, 27 March 2026
Intro
- Unreal 프로젝트 진행시 어떤걸 고려해야하는지 알려주는 세션
- 실습을 하는 세션은 아님
- 언리얼은 다양한 언어를 지원
진행
언리얼 장점
- 다양한 기능 지원
- 꾸준한 관리
- 잘 정리된 문서
- 많은 튜토리얼
언리얼 단점
- 기능 제공을 위한 구조 강요
- 오픈 소스이나 오픈되지 못한 사용자
- 유니티에 비해서 사용자들이 프로젝트나 강의를 오픈하는 편이 아님
- 얕은 수준의 예시 프로젝트
- 무거운 에디터
본론
- 언리얼에서 제공하는 멀티플레이 게임 제작시 기본제공 기능에 대해서 Araboja
GameInstance
- 서버에만 존재
- 게임 플레이에 필요한 오브젝트 등
- 플레이어 정보
- 매 턴마다 변경되는 정보를 각 객체에 전달
GameMode
- 서버에만 존재
- 게임을 진행하는 객체
- 등등
GameState
- 서버와모든 클라이언트에 존재
PlayerCharacter
- 서버와 클라이언트 모두 소유
- 데이터는 서버와 해당 클라이언트만 공유 중
- 플레이어가 실질적으로 조작하는 케릭터
- 플레이어와의 모든 상호작용이 구현
PlayerController
- 서버와 1명의 클라이언트가 소유
- 플레이어 한 명을 나타냄
- 서버에서 클라이언트 조작시 이 객체를 사용
PlayerState
- 공백이 부족해서 적지 못했습니다. 갸르르
Q&A
- 관제탑 모형이라 보면 된다.
- 클라이언트 끼리는 데이터 공유가 불가능
- 케릭터의 행동들이 서버에 동기화 되기 때문에 딜레이 발생
- 보통 FPS에서 총을 발사했을 때 물체에 닫기 전에 이미 연산을 끝내는 방식으로 연산.
- 맵(레벨)은 서버와 모든 클라이언트에 존재.
예시
- 게임 중간에 플레이어가 나갔다면?
- playerCharacter에서 메뉴 생성
- Exit버튼을 누르면 Gamemode에서 해당 character가 나갔다고 처리
- 개발자 재량에 따라 Controller를 제거할 수도 State를 제거할 수도 있다
- GameInstance에서 RegisteringPlayer를 제거
구조의 장점
- 한 번 익숙해지면 이후 크게 변화x
- 사용자의 무단 정보 수정에 영향 없음
- 서비스 확장에 용이
- 대신 개발비용이 많이 듬
- 재생산성과 유지보수의 용이함을 강제
- 성능보장
정리
- 솔직히 이해하기 힘들 것 같습니다
- 시험공부 때문에 만들면서 좀 까먹..
- 나름 관심 있는 사람들에게 도움이 되었다 생각합니다
- 일단 한글문서가 별로 없고
- 대부분의 튜토리얼이 이런 부분을 다루지는 않습니다.
- 나중에 시작하기 앞서 이런 내용이 있었다는 것을 기억해주시면 감사하겠습니다.