Show page source of etc.txt(Ver0.1) #54228

Ver0.1の配布物に含まれるドキュメントのコピーです。 

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

まずは[readme.txt(Ver0.1)]をご覧ください。


----
== 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の頭で以下のようなコードを書けば、どちらにも対応は可能です。(環境を作ってないので確認はしてませんが)

{{{ code ruby
# 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?(笑」的な流れになった場合、この限りではありません。
(むしろそうなってくれるといいな・・・)


<追記>

Array#choiceは現状1.8.7にしか存在しないため、
'''ver0.2以降ではArray#sampleに統一します。''' 

----
== 文字コードについて

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までに考えます