PR

【ゲーム開発報告】敵AIのネットワーク同期を実装した話

ボスAIを同期して協力プレイを実装する! ゲーム開発

敵キャラ、AIでのネットワーク同期を導入してみました。
今回はその話を中心に簡単にお伝えしたいと思います!

 

今回の報告について

表題の通りですが敵キャラのネットワーク同期を導入してみました。
その話を中心にお伝えしたいと思います。

 

動画版をこちら

こちらは以前、動画でお伝えした内容を記事でお伝えするものとなります。

「動画よりも文字の方が良い」という人もいるかも…
と記事に起こしてみました。

記事ではもう少し詳細に触れているのでご興味のある方はぜひ記事も読んでみてくださいね。

 

敵AIにネットワーク同期を入れました

敵キャラのネットワークを同期をしない場合は
個別にユーザー毎の環境でキャラクターが考えて動作してしまうんです。

ネットワーク同期をしていないと
個別の環境で動作するので別の行動をしてしまいます

 

 

各画面でAIの行動がずれてしまう

なぜズレてしまうかというと
各ローカルの乱数って言われるランダムな値であったり
意思決定する思考は各々が違う選択をしてしまうからです!

一つの画面では左側にいたり、一つの画面では右側にいたり
あべこべの状態になってしまうんです…

 

「何もない場所で剣を降っている」なんてことも

何が問題かと言うと「プレイヤーが戦っている時にみんなで結集して戦っている」ような雰囲気が出せなかったりします。

なんかプレイしてると冷めちゃいますよね…

 

モンスターハンターの場合

例えばモンスターハンターで言うところの小さいトカゲ
ランポスとか、ゲネポスはご存知ですか?

いわゆる雑魚キャラ、モブキャラと呼ばれるキャラクターです

 

モブキャラはネットワーク同期されなかった

モンハンポータブル、PSPの時代だと同期されないようになっていました。

なぜかと言うと「通信負荷が高くなりすぎてしまう」からです。

あの頃の非力な携帯機では全キャラ同期するのは
難しかったでしょうね…

 

ボス同期は「協力プレイの要」

ボスは常に一緒の場所にいたのは覚えてますでしょうか?

これはこのゲームおいて、ボスがゲームにおいて大事な場面となっているためでした。

左側で戦っていたり、右側で戦っていると
見た目の面白さが損なわれてしまいます

だから「ボスだけでもネットワーク同期」するようにしていたんです。

 

 

現在開発しているゲームにもボスの同期を実装

モンハンで紹介したボスの同期を
自分で開発しているゲームでも追加することができました!

マルチで協力プレイ…これは胸熱!

 

ほぼ同じタイミングで技を出す天狗

基本的に天狗は各ローカルでランダムに動いてはいるものの
同じ時間をとって行動を開始するようになっています。

これで台風に巻き込まれれば
みんなで「やられたー!!」なんて盛り上がること間違いなしです!

 

最低限の通信で同じ行動をする

この方法の良いところは通信量も抑えた上で同期できるので
複数のボスであったりとかある程度のキャラクター数をフォローできる点です。

大量のボスに襲われたりなど
クエストの幅は広がりますね!

 

敵AIだけ通信量が少なくできる理由

プレイヤーのようなキャラだと複雑な挙動や操作など予測できないことも多いので
毎フレーム同期するような仕組みは向いているのですが

敵やAIでは現在取り巻かれている状況がほとんど同じで
「この技を出す」などシンプルな思考となるのがほとんどです。

要するに敵などは技を出すということだけを送れば
同期できることになります。

 

敵AIをプレイヤーのように同期してしまうと…

毎秒、毎フレーム情報を送らないといけないのでサーバーの負荷、運営費も膨大になります。

さきほどお伝えしたように技術的に作れないクエストが生まれたり、その方法を選んでも良いことはないことが多かったりします。

 

 

大量の敵は通信量が心配

大量に出る敵、例えば現在ゲームにある「ちょうちん」のキャラであれば
そのようなシチュエーションは全然ありそうです。

 

ヘイトの仕組みついて

本ゲームではヘイトという仕組みと取り入れています。

「ちょうちん」は本来、正面に向かってタックルしていくキャラなので攻撃されて怒り(ヘイト)が溜まっていくとその人に対して攻撃をするような仕組みになっているのですが

そのような怒りを貯めておくシステムを「ヘイト」システムと呼んでいます。

攻撃してもこちらに反応しないと
機械的でなんだか残念ですよね…

 

ヘイト(怒り)を同期すれば同じ動作をするはず

要するにヘイト値だけ同期することによって攻撃対象
狙っている人は一緒なので同期無しでもフォローできそうだと思っています。

「〇〇」というプレイヤーを攻撃するという部分だけ
同期されるはずなので問題なし!?

一応、個別に完全に同期するなど設定できるようにはなっているので
その辺りは状況に応じて選択していこうかなとおもっています。

 

 

次バージョンでは協力プレイを入れたい!

次のバージョンアップでは

  • ボスとの対戦
  • 協力プレイ

っていうのを追加しようと思っています!

ご期待いただけたら幸いです!

 

Ver0.3「協力プレイ」がリリースされました!

フォロワーさんと一緒にプレイした動画

そしてこれがほかのプレイヤーの方とプレイした時の動画です!

一緒にプレイできて楽しかったと言ってもらえて嬉しかった…
もっと頑張ろうと思いました!

 

 

終わりに

いかがでしたでしょうか?
今回は動画で話した雑談を記事に起こしてみました。

こういった雑談からゲーム開発に関する考え方やアルゴリズムなど
有益なものや開発の情報などを今後共有していこうと思っています。

もし引き続きご興味のある方は
YouTubeのチャンネル登録などしていただけると幸いです

では記事をここで終わりです。
ここまでお読みいただきありがとうございました。

コメント

スポンサーリンク
Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました