Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2007-08-29

[JavaScript]JavaScriptの書籍

Javascript & Dhtml Cookbook(Danny Goodman)

本屋で軽く立ち読みをしてきたら、この本がよさそうだったんだけど、価格が高いので買わなかった。 ほしいけどなあ。どうしようかなあ。

2007-08-29

[JavaScript]MyGameで実装したぷにゃりん競争をJavaScriptに移植

画像の説明 画像の説明 画像の説明

動作サンプル

以前にJavaScriptをやろうとしたときはよくわからなかったんだけど、真面目にやれば思ったほど難しいことはなさそう。 手元のノートPCだと半透明を使うと数十倍遅くなっちゃうけど(早いマシンなら快適に動く)。 半透明以外は思ったよりもさくさく動くので驚いた。 特にメニューの背景でスクロールさせている画像のタイルパターンが、あまりにきれいにスクロールしてくれるので感動した。 こうやって描画領域を固定するとFlashみたいに見える。

JavaScriptでどんなことができるのかが大体わかった気がする。 これがフツーに移植できちゃったんだから、つまりかなりのことができそう。 HTMLベースのレイアウトのノウハウに一切とらわれないで、すべて絶対座標で画像を表示しちゃえば、普通のゲームみたいにいろんなことができる。 というかCSSは表現力が高いので思ったよりも扱いやすい。 動きが激しいのは重くなりそうだけど、でもそれも今の最新のパソコンならほとんど気にならないんじゃないかな。まあ気づくのが遅かっただけか。

技術的には次の3つを押さえればいいのかな?

  • JavaScript(の言語的な仕様)
  • HTMLとCSS
  • DHTML

よくわからなかったで既存のライブラリに頼らず自力で描画周りを制御してるけど、JavaScriptにはいろんなライブラリがあるみたい prototype.jsとか調べたほうがいいのかな?

2007-08-27

[Ruby]順序付きハッシュを使いたくなるとき

いつもRailsのViewで書きたくなる。 今はこうしているけど、

<%= [
      [:Home,  { :controller => :home }],
      [:Menu,  { :controller => :home, :action => :menu}],
      [:Login, { :controller => :account, :action => :login }],
    ].map {|name, args| link_to(name, args) }.join(' ') %>

できればこう書きたかった。

<%= {
      :Home  => { :controller => :home },
      :Menu  => { :controller => :home, :action => :menu },
      :Login => { :controller => :account, :action => :login },
    }.map {|name, args| link_to(name, args) }.join(' ') %>

ハッシュの意味がどーこーじゃなくて、ただハッシュのリテラル表記が好きなだけなのかなあ。 デザインを本格的に作りこむ段階では、こういう場所はベタに展開しちゃいそうなんだけど、開発途中のさくっとでっち上げたいときにはできるだけ楽に書きたい。

2007-08-25

[開発]パーティ編成のインターフェース

パーティ編成のインターフェースを考えているんだけど、JavaScriptを使ってマウスで配置できたほうがいいかなあと。 そろそろJavaScriptを覚えたい気もするし。 ちょうどいいのでJavaScriptを使ったのインターフェースに挑戦してみよう。

2007-08-25

[栽培日誌]2007年8月末

画像の説明 画像の説明

毎日これくらいの野菜がとれる。トマトとミニトマトはそろそろ終わりかな。キュウリは一日平均2〜3本。秋まで取れるようにまた種を撒いておかないと。

オクラは毎朝納豆に入れて食べる。

キュウリとトマト

画像の説明 画像の説明

キュウリはネットで高い位置にもっていったんだけど、これはいい。 もぎ取りやすくて見逃しにくいし、収穫量も多い気がする。 トマトは挿し木で増やしたもの。これは2段目か3段目。挿し木でこれだけの実がなるんだったらやる価値はあるな。

セロリ

画像の説明

種から育てたもの。今週2回目の移植をした。

2007-08-25

MyGameとゲームプログラミング発表資料

第18回 Ruby/Rails勉強会@関西の発表資料です。 RabbitのデータがようやくPDF化できました。 本当はslideshareにアップしたかったのですが、なぜかこのPDFをアップロードすると化けるのでPDFを直接公開します。

2007-08-23

Rabbitで出力できない件の続き

--logger-type gui

rabbit.batを見ると、

start rubyw -S rabbit --logger-type gui %*

となっているので --logger-type gui はデフォルトで有効みたい。 これを指定しなくてもrdから参照している画像がなかったりするとダイアログにそのエラーが出力されるし。

rabbit.batを使わずに実行してみる

rabbitファイルをカレントにコピーして次のように実行してみる。

ruby -S rabbit --logger-type gui -s test.rd

ちなみにtest.rdは次のような内容。

= MyGame

= AAA

= BBB

結果はすぐに終了。ダイアログは出なくて、コマンドプロンプトには次のようなログが出ている。

c:/ruby-oneclick/lib/ruby/site_ruby/1.8/rabbit/html/generator.rb:208: warning: G
Lib.win32_locale_filename_from_utf8() is deprecated. Use GLib::Win32.locale_file
name_from_utf8 instead
c:/ruby-oneclick/lib/ruby/site_ruby/1.8/rabbit/html/generator.rb:208: warning: G
Lib.win32_locale_filename_from_utf8() is deprecated. Use GLib::Win32.locale_file
name_from_utf8 instead

(略)

c:/ruby-oneclick/lib/ruby/site_ruby/1.8/rabbit/html/generator.rb:208: warning: G
Lib.win32_locale_filename_from_utf8() is deprecated. Use GLib::Win32.locale_file
name_from_utf8 instead

--

あれ、もしやと思って確認したらpngファイルが出力されている! なるほどrubywじゃなくてrubyを使えば出力されるんだ。 じゃあこのログは意味なかったか……。

--

追記:上で間違えて「start ruby…」書いていたのを「start rubyw…」に修正。

2007-08-22

進捗

  • 無線LAN開通
  • サーバーPC起動
  • ルータ設定 (←いまここ)
  • サービス公開

ADSLのモデムを交換したのだけど、交換自体はすぐに終わってて、というか妻にすべて任せていたんだけど、なぜか外からローカルマシンへのポート転送がつながらない。ルータは壊れていないっぽいんだけど。でもADSLモデムが新しくなったから何か変わったのかのと思って説明書を見ると、どうやらADSLにルータの機能がついているらしい。なんと無線LANの機能まで追加されているじゃないか。ただ色が黒から白に変わっただけじゃなかったんだな。ということに気がついたのがおとといの話。というわけで、もとのルータを外して、新しいルータを設定中なんだけど、いまだ外からつながるように出来ない。すごーく遅いけどタスクは着実に進んではいる。

Rabbit資料公開のほうは、おととい須藤さんがこの日記を捕捉してくれて、ショッカーに入れられて、MLで公開用のデータが出力できない現象が無事確認されたみたい。

2007-08-16

るびま20号リリース

http://jp.rubyist.net/magazine/?0020

関係者の皆さんお疲れ様です。

0020 号 読者プレゼントに私のRubyゲーム本が出ています。どうぞふるってご応募ください。

Rubyではじめるゲームプログラミング—人気の国産言語で、誰でも簡単にゲームが作れる! (I/O BOOKS)(山本 団)

2007-08-13

やること

  • 無線LAN環境の復旧
  • サーバーマシンの復旧
  • プレゼン資料の公開
  • * Rabbitの資料が公開できる形式に出力できない……

他にもあった気がするけど……。

2007-08-13

京都から帰ってきた

2泊して昨日の夜帰ってきた。

画像の説明

2007-08-07

ゲームのつくりかた

ゲームをつくるときの手順。

まずそのゲームをプレーした人がどう感じるのかを決める。 そのゲームをプレーしたときのプレイヤーの思考や心の動きをイメージする。 ここでどう面白いのかを決める。どう面白いか(何を感じるか)をイメージするだけで、具体的に何が面白いのか(何がそう感じさせるのか)はまだわからない。 このときに重要なのは相手に何を感じさせたいのかをはっきりと自分が認識すること。自分が表現したいことの本質を自分の中から探し当てなければならない。 この段階ではできるだけ大きく風呂敷を広げる。ただしいろいろなことをやるのではなく、明確な芯を通すことが大切。

次に、表現したいものを相手に伝えるために必要な要素をつくる。 つまり具体的な成果物をつくる段階。具体的にいろんな要素を決めて一貫性を通してゆく。具体化すればするほど、どんどん当初のイメージが小さくなってきて悲しくなるけど、すべてをまとめあげなければならない。ここでは実際にものをつくって、それがプレイヤーに与える印象をひたすら自分の頭の中で想像し、自分の表現したいものが最も伝わるであろう状態に調整する。またはつくり直す。想像して想像して、もう何が正しくて正しくないのかわからなくなって、意識がモウロウとする。そんな中で、なんとか自分がこれだと思えるところに落とす。結局他人がどう感じるのかなんてわからないのだけど、ここでの苦労は経験的にはかなり報われるこになる。

真面目にやるととってもしんどいので、ものが完成したときは自分自身を大きく切り取って(削り取って)それを世にリリースする感覚。大きく切り取ったときほど、つまり自分のつくりたいものを明確に認識できて、それをやりきれたときほど、ものを生み出したという気持ちが強くなる。

いつもこんな感じでやるわけだけど、この手順や方法は、本を書くときもプレゼン資料を作るときも同じだ。

2007-08-07

Ruby/Rails勉強会@関西-18

Ruby/Rails勉強会@関西-18 でセッションをやらせていただくことになりました。

この手の発表は初めてなので、どうなってしまうのか楽しみです。 プレゼン資料を作るのも初めてなので勝手がわからず勘でやっております。

内容はMyGameを使ったゲームプログラミングをRuby初心者に紹介します。 Rubyに慣れた人が5分で理解出来ることを50分かけてじっくり説明します。

2007-08-06

[アイデア]プレイヤーがつくる能力現実案

そのままやるとすぐにバランスが崩壊する穴が出来そうなので、現実的な運用案を考えてみる。

一定期間(1ステージ)にそのレアアイテムは3つワールドに出現する。そのアイテムを手に入れた3人は自分の好きな能力を作る権利を得て、それは実際に実装される(もちろん出来る限りバランスを考慮して実装)。

とあるプレイヤーのために実装された新能力は、次ステージ(次々でもよい)で一般プレイヤーが入手できるスキルカードとなる。

ステージが進むごとに過去のスキルカードのバランスを見直して、バランスを狂わせるものは廃止する。または効力を調整する。

ここまで制限をかければ現実的。

2007-08-06

[アイデア]キャラクターの能力を自分で考える

プレイヤーが自分で特殊能力を考えてそれをゲームマスターに伝えると、それが実際に実装されてゲーム内で使える自分だけの能力になるというのはどうか。

以下メモ。

  • 100種類の機能を作るとしたら、1日1実装のペースで100日か
  • でもたぶん能力がかぶってくるだろうな
  • プレイヤーの発想しだいだな
    • アイデア
    • 整合性(矛盾がない、破綻していない、有限の効力)
    • バランス感覚
    • 簡単に作れそうだと実装が進みやすい?
  • 実装の手間の問題
    • 実装されるとは限らない(当然だけど)
    • そのやり取り事態がゲーム。ハンター×ハンターの能力と制約の正当性
    • レアアイテムがあると出来る
  • 他人にはその能力は非公開
    • ばれたら新しい技を作るとか
  • ソースで伝える。パッチ
  • ひとり一回だけ?アイテムの回数だけ?
  • やっぱLLなんだからこういうのやりたい
2007-08-01

Rabbitに挑戦

プレゼンの準備をしているのだけどはじめてRabbitを使ってみた。Windowsで動かしてみたけどとりあえず動いた。

2007-08-01

自宅ネット環境復旧作業

無線LANがダメ。ノートPCからアクセスポイントにはつながるんだけど、うーんなんだろ。サーバー用のLANケーブルをノートに挿してしのいでる。サーバーが復旧しないとRailsの開発ができない。