1. メタバースファーマーkota
  2. UnityのPhotonを使って農業メ..
2025-10-02 11:57

UnityのPhotonを使って農業メタバースのマルチプレイを実現

今回の農業メタバースらぢお、は
マルチプレイ可能なメタバースの構築手順(同期処理編😆)
シングルプレイかマルチプレイかで労力がかなり変わってきます😅
Unityからマルチプレイを行うにはPhotonというマルチプレイ可能なプラットフォームを導入してプログラムを書いていきます。

マルチプレイでメタバース空間に表示をするには
①Photonでマスタサーバーに接続開始する処理を書く
②マスタサーバーに接続
③ゲームサーバーの作成
④ゲームサーバーに入る
⑤ユーザー生成(マスタークライアントが付与される)
⑥マスタークライアントの情報を取得
⑦マスタークライアントとNPCを同期
⑧NPC生成

ざっくり以上です笑

#Unity
#Photon
#マルチプレイ
#ゲーム
#農業メタバース
#農業
#メタバース
#農家
#ベビーリーフ
#畑
#仮想空間
#スマート農業
---
stand.fmでは、この放送にいいね・コメント・レター送信ができます。
https://stand.fm/channels/65ddcc2653b400abe2109af9

サマリー

このエピソードでは、UnityのPhotonを使用して農業メタバースのマルチプレイを実現する方法が詳しく解説されています。特に、マスターサーバーとゲームサーバーの役割、さらにはNPCの同期処理が重要なポイントとして挙げられています。

農業メタバースの基盤構築
はい、農業メタバースラジオ始まりました。メインパーソナリティのkotaです。よろしくお願いします。
今回は前回に引き続き、農業メタバースを作っているんですけど、そこの機能について紹介をしていきたいと思います。
早速なんですけど、メタバースっていうと、一つの空間にみんなでアバター同士が集まって交流っていう、そういうのをイメージするかと思うんですけど、そこの基盤を作らなきゃいけないっていうのがまずありまして、
そもそも一つの空間に複数人入るっていう時点で、マルチプレイっていう話になってくるので、そこでサーバーとか同期処理とかっていうのをしないといけないんですね。
サーバーとかっていうのは、サーバー作ってそこにアクセスをみんなですることで同じ空間に入れるっていうざっくりとした流れではあるんですけど、
そういうサーバーを一回通してやり取りをしないと、そもそも同じ空間に入って同期をすることができないっていう形になります。
同期をする時にも、それぞれ同じ空間にまず入って表示されて、攻撃とか歩くモーションとかも自分で作っているわけなんですけど、
そこのモーションとかも他人に見えるかとかどこまで表示するかとかっていうのがあったりするんですね。
攻撃、他の人が攻撃している、誰かと戦っているところとかをちゃんとモーションで攻撃、この人今攻撃したっていう動きとかも見せるのか見せないのかっていうのもあって、
見せないと相手のパソコンだったりとか画面では攻撃はしているんだけど、他の人から見ると棒立ちで突っ立っているみたいな、何しているかわからない状態があったりするので、
そこの構築というかそこまでちゃんと作らなきゃいけないっていうのが同期処理っていう形になります。
Unityを使って作っているんですけど、UnityのPhotonっていうマルチプレイ用のモジュールというかプラットフォームをUnity側に導入をして、
そこからPhotonにつなげるみたいな感じですかね。UnityからPhotonにつなげてアクセスできるようにプログラミングをして、そうすることで使用可能になるみたいな感じになります。
Photonっていうのがマニアックすぎて、ちょっとポッドキャストで検索してみたんですけど、なかったんで、かなりマニアックなのかなと思っているんですけど、
もし知っている方がいらっしゃいましたら、自分は触りたてというかまだ勉強している最中なので、こういう感じなんだみたいなぐらいのレベルでお話しすることしかできないんですけど、
もし知っている方がいたら教えてください。そんな感じで、アバターが画面に表示される瞬間に裏でめちゃくちゃPhotonに接続して、
そこからなんとかサーバーに接続して、そこからさらにゲームサーバーに入ることでやっと表示されるみたいな感じで、
見えないところのサーバーも存在して、マスターサーバーですね。最初に接続するサーバー、自分自身が表示、画像空間に表示されるために、
マスターサーバーに自分自身が裏で移動して、最初に接続をして、サーバーを作成してマッチングする用のものを作って、
その後にゲームサーバーに移動して、ゲームサーバーというのがルームとか実際にメタバス空間に表示されることそのものをゲームサーバーと言うんですけど、
ゲームサーバーイコール画像空間に表示されたよっていう意味で捉えていいと思うんですけど、マスターサーバーに入ってゲームサーバーに移動するっていう、そもそもの流れがそこなんで、
プログラミングとかでゲームサーバーに入ってからマスターサーバーにとかっていうのはそもそも概念としてはないのでエラーになっちゃったりとか、
あとはマスターサーバー、今自分がどこにいるのかっていうのはマスターサーバーに入ってからゲームサーバーに入りましょうっていう処理とかも書いたりするんですけど、
すごい関数の名前が長かったりとか、なかなか覚えられなかったりとかっていうのがあって結構苦戦はしましたね。
NPCの同期とマスタークライアント
やっと流れ的に、まずマスターサーバーに接続して、マスターサーバーに接続…じゃないな、マスターサーバーに接続開始をする処理と、接続をしますっていう処理と、
接続が完了しました、完了したからゲームサーバーに入る指定ですね、ルームを分けたりとかっていうのができるんですよね、メタバースだと、メタバースじゃなくてもできるんですけど、
ルームの指定ですかね、どのルームに入るか、このルームを分けちゃうとマルチプレイができなくなっちゃうんで、同じルームに入りますっていう指定をして、ルームを作るっていう処理をして、
ルームに入りましょうっていう処理も書いて、そうするとやっとゲームサーバーに入れるっていう、表示される、やっと表示されるっていう感じになるんですよね。
なのでそういう形で手順を踏んで、やっと表示される、ユーザーがやっと見られるっていう形に持っていくことができるので、全然全くサーバー周りは知らなかったので、すごい勉強になりました。
その次のお話にはなるんですけど、NPCとかコンピューターとかCPUとかそういうユーザーがいない、自動で動くキャラクターとか作る際にも基本的にはメインの、そこからゲームサーバーに入って、
その入った人に対してNPCを同期させるっていう処理を作らないと、NPCが今度表示されないんですよね。
なので手順としては、まず誰かがゲームサーバーに入って表示されました。
その人がアバターがポンって表示された瞬間に、その人がマスタークライアントっていう感じなんですよ。
一番ノリに、一番最初にその空間に来た人、接続した人がマスタークライアントっていう感じになるんですけど、そのマスタークライアントに沿ってNPCが生成されるっていう処理を作るっていう感じになります。
まずマスタークライアントが誰なのかとか、あとはマスタークライアントが抜けたら、NPCはそのマスタークライアントを参照して動きをつけたり、位置の調整とかをしてるので、
その人が抜けちゃったら、じゃあそのNPCはどうするのかとか、次の人にマスタークライアントを引き継ぐとかっていう処理もあるので、そういうのをしたりとか。
そうじゃないとNPCが消えちゃうんですよね。一緒に消えちゃうっていう現象が起きちゃったりとか。
そうするので、そこがめちゃくちゃ難しかったりとか、その中の処理の確認を細かくしなきゃっていう。
今マスタークライアント誰についてるのかとか、そもそも今表示されてないってことは、ゲームサーバーにいないからマスターサーバーにまだ留まってるんじゃないかとか、
そういう形で確認をしながらやっていますね。かなり面白いですけど、いろいろ学べる感じになってます。
なのでマルチプレイかシングルプレイかっていうだけで、どっちにするかっていうだけでもめちゃくちゃやることが増えたりとか減ったりとかするので、
そこの辺も承知をした上でアイデアをどんどんいただけると嬉しいのかなと思っております。
今回はちょっとサーバー周りというかマルチプレイシングルプレイについてお話をさせていただきました。
次回もまたメタバスの構築秘話みたいな感じでお話できたらなと思います。
明日ちょうど金曜日が農業メタバスラジオなので、自分のインスタのライブから配信をしたり、
あとはVketの自分の農業メタバスのところで直接農家さんが夜7時半くらいから1、2時間くらいお話をしているので、
もしよろしかったら遊びに来てください。ではまた次回もよろしくお願いします。
11:57

コメント

スクロール