Unreal Engine - 데디케이티드 서버 2
·
Unreal Engine
1. 로그를 통한 흐름 분석1 - 1. 로그인 흐름 분석GameModeBase와 PlayerController에서 로그를 찍어보면 아래와 같이 정리해볼 수 있다.맨 처음 네모는 서버에서만 생성되는 GameMode 로직이다.아래 네모는 Client01번의 PlayerController가 서버에서 생성되고, Client로 복제되는 과정이다.마지막 네모는 Client02번이 생성 및 복제되는 과정이다. 1 - 2. NetConnection 관련 로그 추가NetConnection에 존재하는 ClientConnection과 ServerConnection 관련 로그를 찍어보자ClientConnection서버가 가지고 있는 Connection이므로, GameMode에서 로그를 작성해야 한다.참고)ClientConne..
Unreal Engine - Save Game
·
Unreal Engine
게임에서 맵 해금 시스템과 캐릭터 해금 시스템을 구현하고 싶어, 어떤 방식을 택할지 고민중에 있었다.처음으로 떠올린 생각은 GameInstance 였는데, 현재 구현하는 시스템이 템플릿을 이용하다보니 만들어진 GameInstance를 수정하는 것 보다 다른 것을 이용해보고 싶었다.그래서 SaveGame 이라는 시스템을 찾게 되었고, 어떤 식으로 사용했는지 정리해 볼 것이다.  1. SaveGameUSaveGame이라는 클래스를 상속받아서 클래스를 만들 수 있고, 이 시스템은 게임이 종료되더라도 유지되는 특성을 가지고 있다.각 맵에 해당하는 변수를 아래와 같이 만들었다.Level 1의 경우는 항상 열려있기 때문에 필요가 없다.#pragma once#include "CoreMinimal.h"#include ..
Unreal Engine - 야구게임(데디케이티드 서버)
·
Unreal Engine
아래 글에 이어서 진행되는 내용입니다.https://gbleem.tistory.com/140 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST 역할을 하는 서버용 컴퓨터가 존재 (클라이언트 역할도 수행)GUEST 역할을 하는 클라이언트용 컴퓨터가 존재gbleem.tistory.com 지금까지 구현된 내용한 클라이언트가 친 채팅이 다른 유저에게 보이도록 하는 기능 (Server, Client RPC)한 클라이언트가 접속하면, 다른 유저에게 접속되었다는 정보를 알려주는 기능 (Multicast RPC)클라이언트가 채팅을 할 때 몇번째 클라이언트인지 번호를 앞에 붙여 출력해주는 기능 (Property Replic..
Unreal Engine - 데디케이티드 서버 개념 및 실습
·
Unreal Engine
1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST 역할을 하는 서버용 컴퓨터가 존재 (클라이언트 역할도 수행)GUEST 역할을 하는 클라이언트용 컴퓨터가 존재데디케이티드 서버server - client 구조서버의 역할 "만을" 수행하는 것이 따로 존재하고클라이언트는 모두 클라이언트의 역할만 수행한다.언리얼에서 볼 수 있는 설정의 종류  2. 데디케이티드 서버의 동작 순서위에서 본 사진처럼 Play As Client를 선택하면, 자동으로 데디케이티드 서버 프로세스가 켜지게 된다.(server.exe 를 실행하는 방식도 있음)play를 누르게 되면 서버에서는 OpenLevel 명령어와 Listen 명령어가 실행하고 클라이언트를 기다린다.OpenLevel을 통해 Leve..
Unreal Engine - 플러그인 만들기
·
Unreal Engine
1. 플러그인 만들기편집 -> 플러그인 -> 추가 선택아래와 같은 창이 뜨게 된다.우리는 블루프린트에서 플러그인으로 만든 함수를 테스트 해보기 위해서 블루프린트 라이브러리 템플릿을 선택하여 만들 것이다. 플러그인 생성이 완료되었다면, 우리 프로젝트 폴더로 들어가 아래 세가지 폴더를 삭제 후, .uproject 파일을 우클릭해서 generate visual studio files를 해주어야 제대로 생성이 된다..vsBinariesIntermediate  2. 블루프린트 라이브러리https://dev.epicgames.com/documentation/ko-kr/unreal-engine/blueprint-function-libraries-in-unreal-engine 블루프린트 펑션 라이브러리란특정 게임플레이..
Unreal Engine - 야구 게임(리슨 서버)
·
Unreal Engine
1. 기본 로직1 - 1. 게임 시작 시레벨 BPUI를 띄워주고,UserID를 서버라면 HOST로 클라이언트라면 GUEST로 세팅해준다.PlayerControllerBeginPlay에서 아래와 같이 Widget의 이벤트 디스패처와 PlayerController를 Binding 해준다.GameModeBeginPlay에서 아래와 같이 게임에 필요한 값을 초기화 한다.난수 생성turn 과 count 초기화타이머 초기화 1 - 2. 숫자 입력 받기 숫자 입력UI에 /와 숫자를 입력한 다음 enter를 누르게 되면, UI의 SetMessagetoUserController가 call되는데 이 이벤트 디스패처는 PlayerController에 OnSendMessagetoServer와 바인딩 되어있다. 입력 처리UI ..
Unreal Engine - Standalone을 리슨 서버로 확장하기
·
Unreal Engine
1. Standalone 게임아주 간단한 게임 로직을 하나 구성했다. Goal 이라는 액터가 존재하고, 해당 액터에 플레이어가 닿으면 UserName과 WIN! 이라는 문구를 띄워주는 게임이다. 로직 설명GameMode에서 Goal Actor를 하나 Spawn 해준다.Goal 이라는 Actor에 Character가 overlap된 순간 PlayerController의 EndGame이라는 Event call해준다.GameMode의 EndGame 함수는 PlayerController를 찾아서 PlayerController의 EndGame 이벤트를 call한다.PlayerController에서는 Widget을 만들어주고 Widget의 EndGame 함수를 call해준다. 이후 add to viewport 해준..
Unreal Engine - Gameplay Framework
·
Unreal Engine
Gameplay Frameworkhttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-framework-in-unreal-engine 네트워크https://cedric-neukirchen.net/docs/multiplayer-compendium/framework-and-network/
Unreal Engine - UObject
·
Unreal Engine
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/objects-in-unreal-engine 1. UCLASS 매크로언리얼에는 게임 오브젝트를 처리하기 위한 시스템이 존재한다.언리얼엔진은 UObject에서 파생된 클래스에 UCLASS 매크로를 붙여 통해 게임 오브젝트 처리 시스템이 인식할 수 있도록 한다. 그 결과 언리얼 엔진의 GC, Reflection 등의 시스템을 사용할 수 있게 된다. 추가적으로 UObject의 함수나 변수 또한 매크로를 통해 언리얼 엔진이 인식할 수 있게 해줄 수 있다.UPROPERTY()UFUNCTION() 참고 글)https://gbleem.tistory.com/35 Unreal Property System (Refl..
Unreal Engine - 채팅 (리슨 서버)
·
Unreal Engine
1. 필요한 것1 - 1. Level과 Level BP빈 레벨이 필요빈 레벨 BP에서는 아래 두가지 동작을 하게 된다.widget BP를 Add To Viewport 하기server인지 체크 후, On Log In with ID 라는 이벤트(PlayerController가 가지고있음) 실행1 - 2. GameModeGot Message From Client 라는 이벤트를 가진다. (리플리케이트 : 서버에서 실행 / 신뢰성 true)PlayerController를 상속받아 만들어진 actor를 모두 찾은 후우리가 만든 PlayerController로 cast 후Got Broad Cast 이벤트(PlayerController가 가지고 있음)를 호출한다.1 - 3. PlayerControllerBeginPla..