본문 바로가기

공부

(83)
[Study] Part 3 - 커넥션과 오너십 (3/15) 정리커넥션과 오너십네트웍 멀티플레이어 게임에서 진행되는 초기화 과정의 학습언리얼 엔진에서 네트웍 데이터가 로우레벨에서 전달되는 과정의 이해커넥션을 담당하는 액터의 오너십을 필요성과 이를 설정하는 방법의 이해  원격 액터의 초기화 과정  // GameModeBase에 있는 로그인 관련 함수들// PreLogin : 클라이언트의 접속 요청을 처리하는 함수void AABGameMode::PreLogin(const FString& Options, const FString& Address, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage){ AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("========================..
[Study] Part 3 - 게임 모드와 로그인 (2/15) 정리게임 모드와 로그인게임 모드와 플레이어 컨트롤러를 활용한 로그인 플로우의 이해네트워크 모드의 확인네트웍 멀티플레이어용 로그 매크로 제작게임 플레이 시작 과정의 이해   Listen Server의 경우 네트워크 부하가 많은 게임에는 적합하지 않고, 소규모 플레이어 그룹간의 캐주얼한 협동 및 경쟁 멀티플레이어에는 유리하다.게임 사본이 있으면 누구나 같은 컴퓨터에서 Listen Server를 시작하고 플레이할 수 있고, 서버를 시작하거나 참여할 서버를 검색할 수 있다. 별도로 구현해줘야 함Dedicated Server의 경우 비주얼이 존재하지않는 서버를 돌리기 위한 서버. 대규모 멀티플레이에 적합하다. 로컬 플레이어가 없음별도의 서버를 돌리기 위한 설비 및 비용이 발생멀티 플레이어 게임으로 만드는 모든 로..
[Study] Part 3 - 언리얼 네트웍 멀티플레이어 프레임웍 개요 (1/15) 정리언리얼 네트웍 멀티플레이어 프레임웍 개요예제 프로젝트의 기본 설정클라이언트-서버 모델의 이해언리얼 네트웍 멀티플레이어 프레임웍을 구성하는 주요 개념의 이해앞으로 보강해야 할 기능의 확인 Allow late joining 옵션을 켜준다.서버로 동작한 이후에 Add another client를 통해 클라이언트를 추가할 수 있다. Always On Top 옵션을 켜주면 Add another client를 할 때 항상 최상위 윈도우로 생성되며 보기 쉽게 셋팅할 수 있다. 네트워크 멀티플레이어 프레임웍네트워크 멀티플레이어 게임에서 언리얼 엔진은 클라이언트-서버 모델을 사용네트워크에 있는 한 대의 컴퓨터가 서버 역할을 하며 멀티플레이어 게임 세션을 호스팅, 다른 모든 플레이어의 컴퓨터는 클라이언트로 서버에 연결..
[Study] Part 2 - 게임의 완성 (15/15) 15강 게임의 완성정리게임 제작의 완성게임 모드를 활용한 게임 규칙의 완성전용 이벤트 함수를 활용한 블루프린트와의 연동게임 데이터의 저장 방식의 이해게임의 최종 빌드게임 모드멀티플레이를 포함해 게임에서 유일하게 존재하는 게임의 심판 오브젝트최상단에서 게임의 진행을 관리하며, 게임 판정에 관련된 중요한 행동을 주관하는데 적합함다양한 게임 규칙을 적용할 수 있도록 핵심 기능과 분리해 설계하는 것이 바람직함게임의 상태와 플레이어의 상태를 별도로 저장할 수 있는 프레임웍을 제공함하나의 운동장에서 발야구, 축구, 야구등을 할 수 있도록 게임을 관장하는 규칙을 관리하는 부분이라고 이해하면 편하다. 그렇기 때문에 핵심 기능과는 분리해서 설계!  #pragma once#include "CoreMinimal.h"#inc..
[Study] Part 2 - 게임플로우 다듬기 (14/15) 정리게임플로우의 마무리죽는 상태에 대한 플레이어와 NPC의 설정전체 게임 구성 요소의 이해캐릭터 데이터 조정과 다양한 아이템 설정 및 구현  세 개의 레이어를 기준으로 게임을 구성하는 다양한 기능의 구현효과적으로 관리하기 위해 정한 규칙상위 레이어에 있는 객체들은 하위 레이어에 있는 객체들을 자유롭게 참조 가능하위 레이어에 있는 객체들은 상위 레이어에 있는 객체들을 참고하기 위해서는 인터페이스를 거치도록 설정게임 플로우를 위해 보강할 내용죽었을 때의 NPC와 플레이어의 처리이동 속도의 적용포션/스크롤 아이템의 추가 구현과 캐릭터의 적용스탯 기능 및 UI의 기능의 보강 죽었을 때의 NPC와 플레이어의 처리// 죽었을 때void AABCharacterNonPlayer::SetDead(){ Super::Set..
[Study] Part 2 - 헤드업디스플레이의 구현 (13/15) 정리헤드업디스플레이의 구현플레이어 컨트롤러에서 헤드업디스플레이의 생성과 표시컴포넌트, 액터, 위젯의 초기화 프로세스의 이해언리얼 리플렉션을 활용한 UI 데이터의 유연한 연동 헤드업디스플레이의 생성 과정헤드업디스플레이(HUD)는 플레이어 컨트롤러(Playercontroller)에 의해 제작되고 관리되는 UI 객체 0HUD의 구현은 위젯을 생성하고 이를 플레이어 뷰포트에 띄우는 과정으로 생성된다.이렇게 만들어진 위젯은 자신을 소유한 플레이어 컨트롤러에 접근할 수 있다. HUD로 사용할 유저위젯 블루프린트를 만들어준다.기존에 만들어 준 WBP_HpBar를 Canvas Panel에 셋팅해주고, 이 위젯을 관리할 C++ 클래스를 만들어 준다. (UserWidget 클래스 생성)이후, 방금 만든 유저위젯 블루프린트..
[Study] Part 2 - 행동 트리 모델의 구현 (12/15) 정리행동 트리 모델의 구현블랙보드의 설정내비게이션 메시의 설정인터페이스를 활용한 AI와 캐릭터 간의 분리 설계일반 테스크와 지연 테스크의 제작과 활용서비스와 데코레이터의 제작과 활용   각각의 행동 및 액션을 언리얼 엔진에서는 테스크(Task)라고 한다.이 것을 구현하기 위해서는 이동할 목적지에 대한 데이터를 어딘가에 저장을 해둬야 하는데, 이 것을 위해 언리얼 엔진은 블랙보드라는 것을 제공하고 있다.   동적으로 계속해서 생성되는 맵을 가졌기 때문에 Navigation Mesh에 대한 속성을 편집해줄 필요가 있다.기본적으로 Navigation Mesh는 Runtime Generation이 Static으로 설정되어 있는데, 이를 Dynamic으로 변경해준다.새롭게 생성되는 섹션에 대해서도 NaviMesh..
[Study] Part 2 - 행동 트리 모델의 이해 (11/15) 정리행동 트리 모델의 이해행동 트리 모델이 가지는 장점행동 트리 모델의 구성 요소와 설계 방법언리얼 엔진의 행동트리를 구동시키기 위한 기본 설정행동 트리(Behavior Tree)우선순위와 트리 구조를 사용해 인공지능을 설계하는 기법행동 트리 모델의 장점FSM이 가지고 있던 문제를 해결하는 새로운 게임 인공지능 모델의 수립행동 트리 모델의 장점모듈화가 잘 되어 있어 확장이 자유롭다트리를 기반으로 계층화가 잘 되어 있어, 복잡한 인공지능 모델을 쉽게 설계 가능다이어그램으로 인공지능 모델을 효과적으로 표현다양한 상황에 손쉽게 제어 가능행동 트리 모델의 구성 요소트리에서 항상 왼쪽에 있는 노드에 우선 순위를 부여시작 상태를 설정할 필요 없이 왼쪽에서부터 깊이 우선 탐색행동을 중심으로 설계단, 부모 노드에서 다..