[過去ログ] Javaで作るスタンドアローンゲーム (484レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
348(3): 2014/11/21(金)18:48 ID:/Uy/obEw(1/2) AAS
javaでゲーム作ろうと思ってようやく一通り動くようなものができた。
といってもクリックで指定した座標に向かってキャラが歩き、接触した物体に自動的に攻撃して破壊するだけのものだが。
さて、これをオンラインにしてマルチプレイに対応しようとしたが、全く実現できずに3ヶ月。
javaは通信周りは強いと聞いていたし、楽に実装できるかと思っていたが、基本中の基本部分が全然動かない。
・非同期通信を実現しなくてはならないが、サンプルを見ながらjava.nioパッケのセレクタ、selectNowを使っているのに数回ループ後に何故かブロックされる。
・マルチキャストをしなくてはならないが、SeverSocketChannelから取得したSocketChannelをリストに保持してクライアント送信時にループで送信しているが、受信しない。
・ゲームではUDP通信が基本らしいが、画像やDBデータ、インスタンス、文字列ですら正常に送受信できない。
省4
360: 348 2014/11/24(月)01:33 ID:sj/Z1D1w(1/2) AAS
今日一日がんばってはみたがやはり実装できず。
シンプルチャットは動いたものの、画像を含めたバイナリデータのやり取りはできておらず、
何故か353で提示していただいたコード部分でOutOfMemoryErrorが発生する始末。
使わなくなった瞬間に明示的にnullを入れてみたりはしたものの、全く解決せずで、
相変わらず手に負えない感じがあります。
今度はブロッキングのマルチスレッドを試してみようとは思いますが、以前この方法を取った際、
キューの中に受け取ったメッセージを格納しておき、メインスレッドで順番に処理する、
省4
362: 348 2014/11/24(月)23:57 ID:sj/Z1D1w(2/2) AAS
ブロッキングのマルチスレッドを試していた所、
今度はループ上で2度目のObjectInputStraemのreadObjectメソッドで
StreamCorruptedException: invalid type code: ACが発生し、
シンプルチャットすら動作しなくなりました。
ObjectIOストリームを使うこと自体が間違いなのかもしれませんが、
今後サーバ側のDBに保存してある画像ファイル等をクライアント側に送信して表示することを考えると、
他にどうすべきかが判りませんが。
省2
367: 348 2014/11/26(水)18:49 ID:yQ5yK0Ih(1) AAS
>>366
添削ありがとうございます。とりあえず基本的な通信周りは動くようになりました。
エラーの原因は結局の所Streamの基本的な利用方法を理解していなかったことであり大変お恥ずかしい限りです。
受信以外に送信もスレッド化しなくてはならないとなると、1クライアント接続毎に2スレッド起動することになるのですね。
100の接続があれば200、1000の接続があれば2000も起動するということで、今後仕様に耐えられるか心配ではあります。
364の方が仰るようなバグの内包は自分はやらかしそうなので。
こういったミスがなくなるよう、通信周りで信頼性の高い実装済みのフレームワークを利用したいと切に願います。
省1
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s