Category: General
Posted by: nagano
数日前チャット中に、優先順位にいついて話をしたので、こちらのほうでもまとめてみました。番号の小さい方から優先順位が高くなっています。

1.クライアントサーバー間の高速な通信を提供する
2.サービスを安定して提供する枠組みを作る
3.アプリケーションレベルのロジック・ゲームのルールを破綻させずに整合性を保つ
4.使いやすいインターフェースを提供する
5.ゲームのグラフィックやサウンドに力を入れる

だいたい平行して作業しつつも、去年までは1~2を重点的に行ってきました。
今年はやっと3にとりかかれるかなと思っています。
Category: General
Posted by: nagano
Java を使えるチャットルームを公開しました。 部屋にいる全員でプログラムを書き、その場でインタープリタを実行し、その結果を部屋の利用者に伝えることができます。

第壱開発室
※ ログ領域への出力は System.out.println() ではなくて、users.msg() を使ってください。

正確には Java ではなくて BeanShell という技術です。 BeanShell 2.0 では通常の JDK のクラスライブラリを利用できるのに加えて、クラスの定義をすることもできます。

これをオンラインのサービスとして公開するのはサーバー側のセキュリティ的に危険なんですが、その問題は SecurityManager を利用することで対応できました。 デフォルトの設定のままだと、System.exit(0) でサーバーのプロセスを終了させたり、外部コマンドを実行してサーバー上のファイルを見たり消したりできるぐらい強力です。

今の時点では、ただプログラムが動くというだけです。 現在稼動しているサーバー内のオブジェクトを参照したり、逆に自分で作ったオブジェクトを追加したりできるようなれば、いろいろと発展しそうです。
Category: General
Posted by: nagano
共有エディターを作ってます。 複数の人が同時に1つのテキストを読み書きできるものです。 最低限の機能しかないので、共有「メモ帳」ぐらいの感じでしょうか。

まだ試作段階ですが数日中にいったん公開しようと思います。

今の時点での課題は以下のとおり。

・ 編集しているテキストのサイズが大きくなると動作が重くなる。
利用者がタイプした時に、テキストの中で変化した部分を検出するアルゴリズムがシンプルで最適化されてない。

・ 同時に書き込むとタイミングによっては整合性が崩れる場合があると予想。
正しい状態を維持するためのアルゴリズムはすでに用意してあるので様子を見て実装します。

このようなテキストエディタ部屋っていうのもの1つサービスになるのかな。 一応これはチャットルームで Java を動かすための布石です。(Java でチャットルームを動かすのではなくて)
Category: General
Posted by: nagano
前回のサーバーリセットのタイミングで、新しい機能を追加したプログラムに変更しました。

サーバー側のプロトコル処理のコードを、動的にリロードする機能です。サーバープロセスをリセットせずに、プログラムの一部を交換できるようになります。

例えば、利用者がサーバーに接続しチャットをしてる一方で、管理者はプログラムの不具合を直したり、ゲームを最新版にすることができます。重要なのは、クライアントとサーバー間の接続を切らずに、プログラムがバージョンアップされるということです。

リロードできるのはまだプロトコル部分だけで、今後は、ロジック部分を含めた部屋の全体を、動的に再構築できるようにしたいと思ってます。

こういうことができるのも、サーバープログラムを Java で作っていて、Java がクラスファイルを動的にロード・アンロードできるからなんですよね。
Category: General
Posted by: nagano
ブログ始めます。

ゲームサイトの方では、ほとんど技術的な話題がないですが、こちらのブログでは技術的な話題をメインにしようと思ってます。
運営してるサイト関係だけではなく、趣味・仕事を通して知ったことも書く予定です。

いままでブログっぽいものには何回か挑戦していて、いつのまにかやめてしまってたんですが、今回のブログは長く続ける意思をはっきりさせるために、新しくレンタルサーバーを借りて、ドメイン blog.meby.net を設定して、Nucleus をインストールしてみました。