⭐ Unreal Engine/UE Multiplayer FPS TPS + ListenServer
[UE5] 크로스헤어 Crosshair
[UE5] 크로스헤어 Crosshair
2023.10.01목차 Crosshair MainPlayerController 새 C++ 클래스 - PlayerController - MainPlayerController 생성 BP_PlayerController MainHUD 새 C++ 클래스 - HUD - MainHUD 생성 BP_MainHUD BP_MultiplayerGameMode 설정 Crosshair 방향과 Muzzle 방향 일치시키기 문제상황 문제상황Crosshair가 가르키는 방향과 Muzzle이 가르키는 방향이 다르다. FTransform MuzzleTipTransform = EquippedWeapon->GetWeaponMesh()->GetSocketTransform(FName("MuzzleFlash")..
[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체)
[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체)
2023.09.27Projectile 방식의 무기와 Hit Scan 방식의 무기는 동작 원리에 따라 크게 차이가 있다. Projectile 방식의 무기는 발사체(Projectile)를 생성하고, 이 발사체가 일정 속도로 움직이며 목표물에 도달할 때까지 시간이 필요하다. Hit Scan 방식의 무기는 "즉시적인" 충돌 감지 메커니즘을 사용한다. 목차 Component 구조 만들기 CombatComponent CombatComponent.h더보기 CombatComponent.cpp더보기 Q. UFUNCTION(Server, Reliable)void ServerFire(const FVector_NetQuantize& TraceHitTarget); 와 같이 서버에 TraceHitTarget을 보내는 이유는?..
[UE5] Net Update Frequency 수정하기
[UE5] Net Update Frequency 수정하기
2023.09.27Net Update Frequency는 네트워크 오브젝트가 얼마나 자주 업데이트되어야 하는지를 설정하는 변수다. 이 값은 초당 업데이트 수를 결정한다.예를 들어, "Net Update Frequency"가 10으로 설정된 경우, 해당 오브젝트는 초당 최대 10번까지 서버에 의해 클라이언트에게 업데이트 된다. 목차 Net Update Frequency 수정하기 Net Update Frequency는 네트워크 오브젝트가 얼마나 자주 업데이트되어야 하는지를 설정하는 변수다. 이 값은 초당 업데이트 수를 결정한다. 예를 들어, "Net Update Frequency"가 10으로 설정된 경우, 해당 오브젝트는 초당 최대 10번까지 서버에 의해 클라이언트에게 업데이트 된다. 높은 업데이트 빈도는 실시간 동기화에 도..
[UE5] 무기 줍기 - RPC 고려하기
[UE5] 무기 줍기 - RPC 고려하기
2023.09.21목차 무기 줍기 BaseCharacter BaseCharacter.h더보기#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include "BaseCharacter.generated.h"UCLASS()class MULTIPLAYER_API ABaseCharacter : public ACharacter{ GENERATED_BODY()public: ABaseCharacter(); virtual void Tick(float DeltaTime) override; virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override..
[UE5] 플레이어 Role 머리 위에 띄우기
[UE5] 플레이어 Role 머리 위에 띄우기
2023.09.18목차 플레이어 Role 머리 위에 띄우기 Travel in Multiplayer 게임에 입장한 플레이어가 Server쪽인지 Client쪽인지 구분해야 한다.코드를 구현할 때 RPC를 고려하여야 한다. OverheadWidget OverheadWidget.h더보기#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "OverheadWidget.generated.h"UCLASS()class MULTIPLAYER_API UOverheadWidget : public UUserWidget{ GENERATED_BODY()public: UPROPERTY(meta = (BindWidget)) class UTextBlock* D..
[UE] Multiplayer 11: Menu Subsystem 수정하기
[UE] Multiplayer 11: Menu Subsystem 수정하기
2023.07.17목차 Menu Subsystem 수정하기 MultiplayerSessionsSubsystem MultiplayerSessionsSubsystem.h더보기#pragma once#include "CoreMinimal.h"#include "Subsystems/GameInstanceSubsystem.h"#include "Interfaces/OnlineSessionInterface.h"#include "MultiplayerSessionsSubsystem.generated.h"//// Delcaring our own custom delegates for the Menu class to bind callbacks to//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMul..
[UE] Multiplayer 10: Lobby 레벨 기본설정 및 변경하기
[UE] Multiplayer 10: Lobby 레벨 기본설정 및 변경하기
2023.07.17목차 Multiplayer 10: Lobby 레벨 기본설정 및 변경하기 Menu Menu.h더보기#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "Interfaces/OnlineSessionInterface.h"//EOnJoinSessionCompleteResult 사용을 위한 헤더#include "Menu.generated.h"UCLASS()class MULTIPLAYERSESSIONS_API UMenu : public UUserWidget{ GENERATED_BODY()public: UFUNCTION(BlueprintCallable) void MenuSetup(int32 NumberOfPublicCon..
[UE] Multiplayer 9: 접속하는 플레이어 확인하기
[UE] Multiplayer 9: 접속하는 플레이어 확인하기
2023.07.17목차 접속하는 플레이어 확인하기 Create a Game Mode LobbyGameMode 생성 새 C++ 클래스 - Game Mode Base - LobbyGameMode 생성 LobbyGameMode.h더보기#pragma once#include "CoreMinimal.h"#include "GameFramework/GameModeBase.h"#include "LobbyGameMode.generated.h"UCLASS()class MULTIPLAYER_API ALobbyGameMode : public AGameModeBase{ GENERATED_BODY()public: virtual void PostLogin(APlayerController* NewPlayer) override; virtual ..
[UE] Multiplayer 8: Menu에서 Session 참가(Join)하기
[UE] Multiplayer 8: Menu에서 Session 참가(Join)하기
2023.07.17목차 Menu에서 Session 참가(Join)하기 MultiplayerSessionsSubsystem MultiplayerSessionsSubsystem.h더보기#pragma once#include "CoreMinimal.h"#include "Subsystems/GameInstanceSubsystem.h"#include "Interfaces/OnlineSessionInterface.h"#include "MultiplayerSessionsSubsystem.generated.h"//// Delcaring our own custom delegates for the Menu class to bind callbacks to//DECLARE_DYNAMIC_MULTICAST_DELEGATE_OnePara..
[UE] Multiplayer 7-2: Subsystem Delegate 연결하기
[UE] Multiplayer 7-2: Subsystem Delegate 연결하기
2023.07.17MultiplayerSessionsSubsystems.h에서 만든 Delegate를 Menu.h.cpp에 연결한다. 목차 Subsystem Delegate 연결하기 MultiplayerSessionsSubsytem MultiplayerSessionsSubsytem.h더보기#pragma once#include "CoreMinimal.h"#include "Subsystems/GameInstanceSubsystem.h"#include "Interfaces/OnlineSessionInterface.h"#include "MultiplayerSessionsSubsystem.generated.h"//// Delcaring our own custom delegates for the Menu class to..
[UE] Multiplayer 7-1: Session 만들기
[UE] Multiplayer 7-1: Session 만들기
2023.07.17목차 Session 만들기 IMPLEMENT CreateSession() - MultiplayerSessionsSubsystem MultiplayerSessionsSubsystem.h더보기#pragma once#include "CoreMinimal.h"#include "Subsystems/GameInstanceSubsystem.h"#include "Interfaces/OnlineSessionInterface.h"#include "MultiplayerSessionsSubsystem.generated.h"UCLASS()class MULTIPLAYERSESSIONS_API UMultiplayerSessionsSubsystem : public UGameInstanceSubsystem{ GENERATE..
[UE] Multiplayer 6: Button Callbacks 만들기, SubSystem 접근하기
[UE] Multiplayer 6: Button Callbacks 만들기, SubSystem 접근하기
2023.07.17이번 시간에는 지난 시간에 만든 Widget 버튼을 Unreal C++ 변수와 연결시켜 줄 것이다. 버튼을 누르면 함수가 실행되게 만든다. 그 후, Subsystem 기능들을 가져와 쓸 수 있도록 기본적인 세팅을 할 것이다. 목차 Button Callbacks 만들기 + SubSystem에 접근하기 Button Callback 만들기 Menu.h더보기#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "Menu.generated.h"UCLASS()class MULTIPLAYERSESSIONS_API UMenu : public UUserWidget{ GENERATED_BODY()public: UFUNCTION..