ネトゲver13

投稿日: 更新日:

グラフと、ログインウィンドウにバージョンを表示するようにしました。
ちなみに、このグラフもmmo!が元ネタだったりします^^;
 

また、サーバーとクライアントの安定のために色々しました。
サーバーは、クライアント1人に付き、スレッドを3つ作成します。
1つは、通信の入力用スレッド、2つ目は、通信の出力用スレッド、3つめは総まとめのスレッドです。
そのため、スレッドを意識したプログラミングをしなくてはいけないのですが、
スレッドに関しては、全くの未熟で、当初何度もフリーズしました。
(というかMessageEvent、MessageListenerとか使えばよかったですね。知りませんでした。無知は罪ですよ。)

最初やっちゃったのは、synchronizedをどこもかしくも適当につける。
これ、多分やっちゃいけないんですよね。いや、目的があるならいいのですが、
なんか複数のスレッドがアクセスする可能性があるからと、つけまくりました。
結果、デッドロックが起こりました^^
今は、適当にへらして、また負荷テストしてる途中です。

ver12のときに、複数の人が同時に落ちると、止まるという現象がおきたのですが、
これもsynchronizedが多分原因でした。
それは、「落ちると、終了処理して、自分が存在するクライアントに、自分を消去するように通信する」というもの。
これが原因で、1人が落ちて終了処理しているのに、ここにまた、自分を消去するようにって命令出すもんだから。
はい。あと、keep alive問題というもの。落ちてるのに、JavaのSocketがエラーを発見できずに、
落ちているクライアントに対して、通信をしようとするから、そこでまたストップ。
一応、いろいろやってみたのですが、直ってたらいいですね。

まあとにかく、内面的な機能更新が多いです。
敵とか、レベルとか、チームとか、冒険とか、まだそういうゲーム性なものがないので、やっていてもつまらないですね。
何か、増えれば楽しそうなのですが。サーバーの安定化と常時起動化が先決ですね。

このページでテストできます。

おもいきって、重要そうなとこもsynchronized外したら、同時切断もフリーズせずにうまくいくようになった。カオス。
これでプログラムっていいのだろうか。心配になってくる。

広告

コメントをどうぞ(承認された後に公開されます。メールアドレスの記入は自由ですが、記入した場合でも一般公開されることはありません)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中