【UE5】プロパティのレプリケーション

今一度、ちゃんとお勉強しないと、どうにもなりそうもない。

基本的にレプリケーションはActorクラスのプロパティのやり取りになるっぽい。まあそう書いてあるわけだが、まだUE5で何も作っていない間にドキュメントを一読した時は、なかなかイメージが湧かなかった。ドキュメントの量が多すぎて、いちいちしっかり考えながら読んでいなかった、というのもある。

で、サーバーからクライアント方向に送られる。クライアントからサーバーに送る場合は別のやり方(RPC)になる。

信頼性は高い方だが、常に確実に全てのプロパティ値が送られるわけではない。あるプロパティ値が100→200→300と急激に変化していった場合に200は飛ばされるかもしれない。

ドキュメントに下記されていたので試しに実際にAActorを見てみた。

レプリケーション用のプロパティを設定
プロパティのレプリケーションにはいくつかの設定が必要です。 プロパティを定義したアクタクラスのヘッダに、 UPROPERTY 宣言へのパラメータの 1 つとして replicated キーワードがあることを確認してください。

class ENGINE_API AActor : public UObject
{
  UPROPERTY( replicated )
  AActor * Owner;
};

少し書き方が変わっていた。

UPROPERTY(ReplicatedUsing=OnRep_Owner)
TObjectPtr<AActor> Owner;

こうやってバージョンアップしてきたわけだ。素晴らしすぎる。
ともかくこれでAActorのOwner、つまりAActorのインスタンスそのものがレプリケートされるわけだ。← 訂正)たぶん違う。参照のレプリケーションとなるらしい。
なんか凄すぎ。こんなプログラミング方法で自動的にサーバー→クライアントが実現できるようになる、というか、プログラミング言語というかマクロと言えばいいのか、よく分からないが、それを作っちゃって、こうやりゃ実現できるよって提供できるのが凄すぎ。天才だろう。Epic Gamesが作ったと言っても、最初に作った人、中心人物が誰なのか?ってwikiで調べてみた。

このティム・スウィーニーさんという人らしい。

ZZTに続いて、スウィーニーは次回作『Jill of the Jungle』に取り組み始めたが、一人で完成させるにはスキルが不足していることがわかった。彼は4人のチームを結成し、1992年半ばまでにゲームを完成させた[5]。開発を続けるために、スウィーニーはEpic MegaGamesのビジネスパートナーを探し、最終的にid Softwareを解雇されたばかりのマーク・レインに行きついた。

超天才というよりも努力した人だったわけか。まあ超天才だって努力は必要だろうけど。随分話が逸れてしまったので、今回はここまで。

この記事が気に入ったらサポートをしてみませんか?