[個人的なメモ]Jewelのこと(書きかけ)
Rubyを使ってJewelというシステムを開発しています。 Jewelとは僕個人が開発しているMMORPGのシステムです。 オープンソースのゲームシステムでほとんどをRubyで実装します。 Jewelは固有の世界観を持たないある程度汎用的なネットワークゲームシステムです。
2004年の初めから開発をスタートしました。当面は僕一人で全てのシステムを実装していくことになるでしょう。まず、WEBゲームのひとつから開発しています。今年中にいくつかのWEBゲームと基礎的なMMOサーバ/クライアントを動作させることが目標です。
Jewelシステム構成概要
僕が作りたいのはこんなものです。
- MMOサーバ
            
- MMOクライアントが接続するサーバ。数千規模の同時接続が可能
 
 - MMOクライアントアプリケーション
            
- マルチプラットフォーム対応
 
 - ユーザ登録システム
            
- CGIインターフェース
 - 携帯電話端末にも対応
 
 - WEBブラウザで遊ぶミニゲーム
            
- CGIインターフェース
 - 携帯電話端末にも対応
 
 - WEBブラウザからのワールドログインシステム
            
- CGIインターフェース
 - 携帯電話端末にも対応
 - チャットベースのコミュニケーションツール
 
 
Jewelの特徴
- オープンソースである(GPLライセンス)
 - サーバからクライアントまでRuby+Ruby拡張モジュールで実装
 - マルチプラットフォーム対応
            
- サーバもクライアントもともにマルチプラットフォーム対応
 - ※サーバはUnix系OSを推奨?
 
 - データベースにMySQLを使用
 - ユーザレベルで世界観のカスタマイズが可能(※詳細は後述する)
 - 拡張パッケージの使用で世界観を簡単に差し替え可能
 
ユーザレベルで世界観をカスタマイズ
クライアントアプリケーションのカスタマイズ
この仕組みはJewelの最大の特徴です。
ローカルマシンのファイルを編集したり差し替えたりするだけで、ゲーム世界に登場するほとんどのリソースを自由にカスタマイズできます。
具体的にカスタマイズできるのは次のものです。
- 全ての固有名詞
            
- アイテム名
 - 人物名
 - クラス名、能力名、技名、魔法名
 - 地名
 - 他全ての固有名詞
 
 - 全ての画像データ
 - 全てのサウンドデータ
            
- BGM
 - 効果音
 - ボイス
 
 - テキストデータ
            
- キャラの台詞
 - 状況説明
 
 - 変更例
            
- 「この『薬草(固有名詞)』を持っていきなされ。では十分に気をつけるのじゃ」⇒「はい、これ私の作った『手作りのお弁当』。では今日も一日お仕事がんばってね!」
 - 「○○○は『スリープ』の呪文を唱えた」⇒「○○○の『催眠』術!」
 - 「○○○は15のダメージを受けた」⇒「15キロワットのエネルギーを吸い取られた○○○であった」
 
 
例えば、ゲーム内に登場するキャラクタの顔を全て差し替えることが可能です。キャラクタの顔画像データファイル(BMPかPNG)を置き換えてしまえば、ゲーム内に登場するキャラクタの顔が変わります。そしてそのキャラクタの台詞を変えることもできます。
ただし、イベントの発生条件を変えることはできません。ワールド内に、話しかけると、毎朝薬草をくれるお爺さんがいたとします。このお爺さんの顔と台詞を変更して、かわいらしい女の子にすることはできますが、「話しかけると、毎朝回復アイテムをくれる」というイベント発生条件を変えることはできません。もちろん回復アイテム『薬草』のアイテム名を『タマゴサンド』に変えることは簡単です。
グラフィックデータやサウンドデータ(BGM、効果音、ボイス)は全て変更可能なので「中世ファンタージ」、「SFロボット物」、「学園物」等何でも表現できます。完全にユーザの自由です。
拡張パッケージの作成と配布
カスタマイズ可能なデータはひとつのディレクトリ以下にまとまっているので、そのディレクトリ以下を圧縮して固めるだけでオリジナルの拡張パッケージが完成します。そして自分が作った拡張パッケージをWEBで公開することもできますし、人の作った拡張パッケージを使用するのも簡単(ファイルをコピーするだけ)です。
※拡張パッケージを公開する場合の注意
既存のマンガ、アニメ、ゲーム等著作物のキャラクタや画像、音楽データ等を使用する場合はその著作権に十分注意してください。
Jewel作者は、Jewel及び拡張パッケージについて一切責任を負いません。
ゲーム性
プログラムの修正でゲームロジックを変更
ユーザレベルで決して変更できないのが、ゲーム性、つまりゲームのロジックです。 当然ですがユーザレベルではゲームバランスを変更することすらできません。
ゲーム性を拡張、変更するにはプログラムを書き換える必要があります。 ゲーム性の変更はできるだけ簡単できるようにシステムが設計されています。 また、このゲーム性のロジックはRubyで実装されているので、手軽に修正することが可能です。
WEBブラウザで遊ぶミニゲーム(CGIインターフェース)
- カードバトル
 - 生産ゲーム
 - 栽培ゲーム