どもー 東方狼煙焔のプログラムを組んでいたら、思わぬ欠陥が生じているのにいまさら気づき あたふたしている冬月です |
なんでも オンライン対応のゲームなのにその処理を一切考慮していなく、 大本から手無しを入れているそうです、冬華です |
過去の冬月に文句言いたい。 何mこの拡張しにくいプログラム…… 必死こいてプログラム上ではネットワークでも動くように改良しましたよ。 |
そのかわり、過去のプログラムと現在のプログラムが入り混じり ブラックボックス化してしまい、自分でも何をどうしているのかわからなくなったそうです それで大丈夫なんですか? |
冬月のプログラムの仕組みから言って、画像表示とか基本的なところこそ カオスになってます。どーせ、基本的な場所だからもういじらないと思ったんですが…… 仕様追加(この場合NetWork対応)していくときにどうしても間に処理を挟むことになり、つぎはぎプログラムで対応したということなんですよね |
後、大きなところは 敵の処理をどこに負担させるかとかネットワークの仕分けについてなんですよね ここから長くなりますので「つづきから」でお願いいたします~ |
さて、今回ネットラークゲームということで いくつか普通のゲームと大きく変えなくてはいけない場所があります |
・敵の処理をどこで行うか
・最大何人のユーザーを参加させるのか
・各パソコン間での同期をどのように取るのか
オフラインゲームではまず問題にならないこの3点ですが オフラインになるととんでもなく高い壁になってしまいます |
まず、敵の処理をどこで行うのか ですが、普通のオンラインゲームならばサーバーで行えばいいので問題ないのですが、 このゲーム、モンハンやファンタシースターのような、あるPCが親になったり、ならなかったりするものだと 動的に処理を変化させなくてはいけないんですよね。 |
相互に情報を共有できるといいのですがこのゲームの場合、弾幕などの数多くの情報を保持するため すべてを共有すると、ネットワーク量がハンパないことになり、 下手したらネットワークが落ちるかもしれません。 |
初めてネットワークゲームを作るので どのデータを親に送って、親はどのデータを返せばいいのか効率のいい方法を 悪戦苦闘しながら考えています |
今のところ、各プレイヤーのコントローラーのボタン情報を親送って、敵キャラも親で処理して すべでの処理が終わったものを子に返しています 簡単に説明すると、『親になったパソコンがゲーム本体でそこから子になったパソコンにコントローラーだけが伸びている』ような感じでしょうか? |
ただ、親にすべての処理を投げているので 親となったパソコンは多少のスペックが必要かと思います といっても、最新のパソコンを持っていれば必ず動くようにはしているので下手に古いものを使っていない限り大丈夫だと思います |
次に 最大何人のユーザーを参加させるのか? ですね |
プログラム的にはとりあえずの数として100人まで同時にアクセスできるようになっていますが 正直100人も同時にアクセスすればパソコンは落ちます。 せいぜい10~15人ぐらいを考えています |
のちに、中央サーバーとかつくりそこで本当のMMOのような仕組みにできたらいいなと考えています |
最後にパソコン間の同期をどうするかなのですが、これがちょっと難解ですね 同期を取ろうとすればデータ通信量が多くなります いまの、『コントローラー情報送信法(冬月命名)』ではかなりの頻度で同期がずれてしまいます |
同期がずれるというのは、
まず、AとBというパソコンでオンラインゲームをして遊んでいたとします
AとBは同じパソコンではないので、どちらかが何らかの影響で処理落ちを起こしたとします(今はBが処理落ちを起こしたと過程)
すると、Aで操作した情報が数秒間ほどBの方では適応されなくなります。しかし、その間にもAのほうではキャラが移動していたり、敵と戦ったりしているはずです
しかし、Bではその情報が伝わっていないために、Bから見たAのキャラクターは変な方向を向いて攻撃していたり、見当違いの方向に歩いているのかもしれません
これが、同期がずれたために起きてしまう状態です。
PSPのモンハンがよくこの状態に陥った記憶があります。 ランスがチャージして特攻していけど、見当違いな方向に進んでいるとかあったりします ただ、モンハンの場合は一定間隔で座標をチェックして直すようになっているようです |
以上のようなことがありまして 悪戦苦闘しながらプログラムしています。 ここさえ乗り越えればあとは簡単なんですけどねぇ。。。 |
目標は夏までですがどうなることやら~ |