Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2009-02-25

[Bilbo]Bilboをruby 1.9.1で動かす(2)

m17nに対する対応。

いままで「-Ku」オプションをつけて実行していたスクリプトには、次のような処理を追記した。

Encoding.default_external = 'UTF-8' if defined? Encoding

うしろに「if defined? Encoding」としているのは、1.8系でエラーになるのを防ぐため。

さらにrequireまたはloadされるスクリプトの中で、日本語(UTF-8)を記述してあるものには、先頭行に以下を追加した。

# -*- encoding: UTF-8 -*-

とりあえず、これで大丈夫そう。「-Ku」オプションなしで動いてる。

tDiaryから記事をインポートしたり、記事をUTF-8に変換するスクリプトもあるんだけど、この辺はまた違う対応が必要だろうから保留。

2009-02-25

Bilboをruby 1.9.1で動かす

ここ(さくらのレンタルサーバー)のデータ容量が、いつの間にか1Gから3Gに増えていたことに気づき、余裕が出来たので、Bilbo(本ブログのCGIシステム)を1.9.1で動かすことに挑戦。

結論から言うと、2箇所修正したら動くようになった。今現在、この日記はruby 1.9.1で動いている。

ruby 1.9.1-p0をインストールして、動かしてみたらerbテンプレート内の下記箇所でさっそくエラーが。

<% @entries.each do |@entry| %>
  <%= render_view(:entry) %>
<% end %>

1行目のブロック引数。うんこれは知ってた……。Bilboの実装は1行の削減に重きを置いているので、1.9系では動かなくなることを承知で、奇跡を期待しつつ書いたコードだったけど、やっぱりダメだったか。

泣く泣く次のように書き換えた。もっといい書き方があればそうしたいのだけど、それが浮かばなかったから、上記のようになっていたわけで……。

<% @entries.each do |entry| %>
  <%= @entry = entry; render_view(:entry) %>
<% end %>

2つ目の修正は以下。

<% (config[:css] or 'stylesheets/bilbo.css').to_a.each do |e| %>

Stringオブジェクトからto_aがなくなった模様。次のように書き換えた。

<% [config[:css] || 'stylesheets/bilbo.css'].flatten.each do |e| %>

もうひとつ「Hash#index」で警告が出たので、ここは「key」に書き換えようかと思ったのだけど、そうすると1.8では動かないみたい。

action = (params[:action] || params.index(nil) || 'list').to_sym

上記のindexメソッドは保留。ここはどうしたらいいんだろう。

とりあえず動いているけど、本当にこれだけでいいのか?いちおう初めから1.9を意識してコードを書いていた(2年くらい前)からそれが良かったようだ。

2009-02-06

CとRuby

仕事はいつも組み込み系だからC言語を使う。 Cはとっても好きな言語なんだけど、やっぱりRubyがないと生きていけない。 成果物が100%Cの仕事でも、CとRubyを使う時間は半々くらいになる。

C言語レベルでシーンの生成を楽にできるように、DSLぽくオブジェクト(スクリーンに登場する3Dモデルとか2D表示物)の生成を列挙できるようなAPIを用意するわけだけど、 結局そのAPIを使ったソースコードも、デザイナさんからもらうデータフォルダをRubyを使って解析してジェネレートしてしまう。

せっかく手で書いても楽なようにDSLぽくしてるのに、意味ないような、でも正しいような。

2009-02-02

ゲームとは何か

http://blog.s21g.com/articles/1264 経由で http://d.hatena.ne.jp/aureliano/20090126/1232975554

「手軽な攻略要素」かなあ。人間は本能的に攻略欲を持っている気がするんだけど、それを満たしてくれるお手軽なもの。 「人工的な攻略要素」って言ってもいいかな。