--------------------------------------------------------------------------------
RDGC - Ruby(Random) Dungeon Game Core Ver0.1
    by parrot<parrot *at* users.sourceforge.jp>
    http://sourceforge.jp/projects/rdgc/
--------------------------------------------------------------------------------

【この「etc.txt」について】
----------------------------------------
このドキュメントは、使う側にとってはどうでもいい、
私的なメモ書きに近いものがまとめられています。

まずは「readme.txt」をご覧ください。


【Ver0.1リリースの意味】
----------------------------------------
そもそも、Ver0.1は正直「基盤」にはなってません。
これを使ってゲームを作っても、たぶん"RO"gue Ver0.1以上のものにはなりません。

それでもVer0.1リリースに踏み切ったのは、以下のような理由からです。

・一度開発を区切りたかった
　・設計をリファクタリングしたい
　　・それはもう、上から下まで
　・RSpecを導入したい
　　・あれを使うと世界が変わる
　・リポジトリをGitに移行したい
　　・開発者が私一人でも、大きなメリットがあるため
・「"RO"gue Ver0.1」の要求仕様は満たしており、実物がある
　・たとえ、RDGC Ver0.1がどんなにへたれな設計だったとしても
・SourceForge.JPを使っておいて、そろそろリリースがないのはまずい
　・借りたのが1月頭で、2ヶ月も初期リリースがないって・・・


【Ver 0.1の次期バージョン】
----------------------------------------
リポジトリをGitに変更し、RSpecを定義した段階で、
一度"RO"gue Ver0.1を再実装して動作を確認する予定です。

その時点のものを一度リリースするつもりですが、
それを「Ver0.1.x」と呼ぶのか、「Ver0.2-alpha」と呼ぶのかは未定です。
（おそらくは後者）


【Ruby1.9対応について】
----------------------------------------
Ver0.1ではRuby1.9系に対応していません。
理由はシンプルで、Ruby1.9系にArray#choiceが存在しないからです。

Ruby1.9系ではArray#sampleが定義されていますが、
Ruby1.8.7にArray#sampleが存在しないため、
どちらかに統一することが難しいのです。

一応、rdgc.rbの頭で以下のようなコードを書けば、どちらにも対応は可能です。
（環境を作ってないので確認はしてませんが）

# Array#choiceで統一した場合＝現仕様
if RUBY_VERSION >= '1.9.1'
  class << Array
    def choice
      self.sample
    end
  end
end

# Array#sampleで統一した場合
unless RUBY_VERSION >= '1.9.1'
  class << Array
    def sample 
      self.choice
    end
  end
end

ただ、これはどちらかというとRuby本体側で対応すべき問題と考えており、
Ruby1.9のコードが動作するというRuby1.8.8で解決すると思われます。

また、Ruby1.9系は正直初心者向けではないと思っているので、
その意味でも1.8系に合わせています。
（仕事では1.9で統一する方向で動いてますが）

以上の理由により、Ruby1.8.8がリリースされ、Array#sampleが使えるようになった時点で、
#choiceを#sampleに統一し、対応バージョンも1.8.8/1.9.1以降とします。

ただし、その前に世の中が、
「今さらRuby1.8？（笑」的な流れになった場合、この限りではありません。
（むしろそうなってくれるといいな・・・）


【文字コードについて】
----------------------------------------
DXRubyは渡された文字列をCP932(Shift_JIS)で解釈します。
よって、RDGCやその上で動くコードもCP932にすればいいのですが、
ご覧のとおり、UTF-8を使っています。
（DXRubyで描画する部分は変換メソッドを経由している）

Ruby1.9であれば、マジックコメントでソースごとに解釈されるため、
CP932とUTF-8の混在が可能なのですが、Ruby1.8系では統一が必要なため、
結果的にUTF-8で開発していただくことになります。

これが面倒ということでしたら、
CP932(Shift_JIS)版のRDGCのリリースも検討しますので、
ぜひご相談ください。

あるいは、やはりRuby1.9をターゲットに据えた方がいいのかも・・・？


【インストールについて】
----------------------------------------
現時点でのRDGCにはインストーラーがついていませんし、Gem化もしていません。
それは以下のような理由からです。

・頻繁にRDGC自体のソースを確認する必要があるため
　・仕様が完全に定まっていない
　・まともなドキュメントもない
　・今のところ、内部の動作を外部から差し替える仕組みがない
　・あったとしても、ゲームである以上、基盤そのものに手を入れたいケースがある
　　・むしろ、RDGCは踏み台であってほしい
・exe化するのに都合が悪いため
　・Gemを使っていると、Gemそのものを同梱しようとする可能性が高い
　　・試してないのでわかりませんが・・・
　　・そもそも、画像や音楽データの方が、コードよりはるかにでかい気も
　　・そう考えるとGem化してもいいのだろうか・・・
　　・Ver1.0までに考えます


