memo 12  C++ 배터리 콜렉터 03


C++ Battery Collector: Making Your First Pickup Class | 03 | v4.9 Tutorial Series | Unreal Engine




#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"
UCLASS()
class TUTORIAL_BATTERYCOLL_API APickup : public AActor
{
       GENERATED_BODY()
       
public:       
       // Sets default values for this actor's properties
       APickup();
protected:
       // Called when the game starts or when spawned
       virtual void BeginPlay() override;
public:       
       // Called every frame
       virtual void Tick(float DeltaTime) override;
       /** Retourn the mesh for the pickup */
       FORCEINLINE class UStaticMeshComponent* GetMehs() const { return PickupMesh; }
private:
       /** Static mehs to represent the puckup in ther level */
       UPROPERTY(VisibleAnyWhere,BlueprintReadOnly,Category="Pickup",meta=(AllowPrivateAccess="true"))
       UStaticMeshComponent * PickupMesh;
};


Generated Header 







UCLASS 매크로









Tick 함수


// Sets default values
APickup::APickup()
{
       // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
       PrimaryActorTick.bCanEverTick = true;











UPROPERTY(VisibleAnyWhere,BlueprintReadOnly,Category="Pickup",meta=(AllowPrivateAccess="true"))
UStaticMeshComponent * PickupMesh;



















FORCEINLINE class UStaticMeshComponent* GetMehs() const { return PickupMesh; }





#include "Components/StaticMeshComponent.h"  ( fixed error line )

#include "Pickup.h"

// Sets default values
APickup::APickup()
{
       // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
       PrimaryActorTick.bCanEverTick = true;
       PickupMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PickupMesh"));
       RootComponent = PickupMesh;  ( fixed errorline )
}


memo 11  C++ 배터리 콜렉터 02


C++ Battery Collector: Building the Base Level | 02 | v4.9 Tutorial Series | Unreal Engine






프로젝트 간 파일 Copy - 이주 (Migrate) 기능 





이주 (Migrate) 기능은 관련 리소스를 같이 복사하는것이기 때문에  일반적인 Copy 보다 안정적이다.



프로젝트 실행시 설정된 Map 로드 방법




위와 같이변경된 내용은 DefaultEngine.ini 파일에 저장된다.









memo 10 - BluePrint 네트워크 이해 04 -  네트워크 연관성

4 - Network Relevancy




네트워크 연관성에 대한 예

상황 . 1 이벤트가 발생후 다른 플레이어가 접속시 







상황.2 큰 맵에서 보이지않는 상대의 이벤트를 발생시킬 필요는 없다.








2.1 Chest Box 구성






BP_Relevancy_Replication_None 블루프린트


아래 함수 구성

OnChestTouched
OpenChest
PlayGoldFx



2.2 Chest Box 구성



BP_Relevancy_Replication_RPC 블루 프린트 는 BP_Relevancy_Replication_None 상속 받음



녹색 라인표시 :

블루프린트 하위에서 상위에 함수를 오버라이드 해서 사용 하는 방법이다.

OnChestTouched
OpenChest
PlayGoldFx

위 3가지 함수를 오버라이드할수 있으며, 상위 부모의 함수를 호출할수 도 있다.






2.2 네트웍트 갱신 영역



위와 같은 범위 값을 어디서 얻어 오는지 찾았다.

블루프린트 디폴트에 리플리케이션 갱신 영역을 지정 하는 구간이 있다.





2.3 RepNotify  처리 부분

서버와 클라이언트에서 리플리케이션 연동을 위 RepNotify를  사용 한다.





리슨 과 클라이언트 노드 추적

우선  리슨과 클라이언트 블루프리트상에 두 노드를  추적하는 부분



추적할 리슨과 클라이언트 선택하고



 추적할 월드에 있는 블루프린트 목록을 선택한다.





- 월드에 생성된 여러 인스턴스 리스트 선택 하는 방법 참고 





+ Recent posts