Jewel-mmo開発日記

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

るびま21号リリース

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

三周年記念です。関係者の皆様お疲れ様でした。

--

るびまにはいろいろお世話になったのにコメントを送り忘れてしまって大失敗。ごめんなさい。

2007-09-30

海外出張

今週は出張だった。PCを持っていかなかったためいろいろチェック中。

るびまが出てる。うぅコメント書くの忘れてた。 ピッケル本の読書会行きたかったな。

帰りの電車に荷物を忘れたんだけど、さきほど見つかったらしい。

2007-09-23

[イラスト]人物を描く

書くのよりも描く方が得意。 小さいころは割りと絵を描いていたのだけど、小学校の高学年以降はゲームデザインばかりに感心がゆき、ほとんど描かなくなってしまった。

小さいときにも人物は全然描いたことがなくって、人物画が苦手なんだけど、ゲーム作っているとキャラクターのラフ画とか描けるといいなとか思ったり、なんかもうちょっと絵が描けたらいいなあと。 楽器が出来たらいいなーとかと同じで結構絵が描けたらいいなと思う人も多いのでは。

とは思うものの、それなりに描けるようになるにはそれなりの修練が必要なのだろう。その過程が楽しければ続くんだろうな。とりあえず描くことの動機付けになればと思って先日描いたのをアップ。日記も手書きで絵とか図とか入れて書けると面白いんだけどな。

今回の絵はいかにもオレらしい絵で、子供と落書きするときなんかによく昔から出てくるタッチ。全身を描きたかったんだけど、うまく入らなかった。

画像の説明

2007-09-22

アニメイト行ってきた

職場の同僚と秋葉原のアニメイトへ。 すごく熱気があってちょっとびびった。 同僚がすぐ上のほうに行ってしまったため、主に1階をうろうろしてたんだけど、人通りが多くてゆっくりみてらんない。

あ、そうそう、まず、見た限りでは画材とかどこにも置いてなくって、アニメっぽい雑誌とかフィギュアとかばっかりが置かれていた。 そんな中に実写の顔写真が表紙のエッセイとか雑誌みたいのがあって、なんだろうと思って手にとってみると、声優さんみたい。雑誌の表紙に載っている声優さんたちの写真は声優さんぽい顔だったんだけど、エッセイの人はかわいかった。

そういえば最近の雑誌の表紙の綾波レイは学生時代お世話になった方が描いているらしい。おぉ。当時はアニメとか詳しくなかったので(今も詳しくないか)彼がアニメ界で活躍されている方だというのを全然知らなかった……。

2007-09-22

[開発ログ]シナリオ進行中

シナリオ担当者と地道に打ち合わせや原案作りを進めている。どうやらSFになるっぽい。オレはSFを全然知らないので、お勧めの小説を読んでちょっと勉強しようかなあとか。

ゲームデザインのアイデアと違って、シナリオとかマーケティングのアイデアはここに書きにくい。というのは、やっぱり方向性とか表現するものには裏の思惑がたくさんあって、それをオープンにしちゃうとそのものが破綻してしまったり、いやらしさがありそうだったりで。

ゲームデザイン、とくにシステムに関するところは思いつくままにここに書けるんだけどなあ。

2007-09-21

戦闘力が100になった。

戦闘力じゃなくてlivedoor Readerでのここusersが100になった。 ありがとうございます。

ちなみにwwwつきとwwwなしの2つに割れててその合計が100。 wwwつきのほうはもうなくしたいんだけど、なんとかならないのかな。

2007-09-21

同じことを何度書いてもよい

執筆中にartonさんから頂いたアドバイス。 この言葉に何度助けられたことか。

最初は同じことを意味なく繰り返しちゃいけないという先入観があったのだけど、 考えてみれば同じことを何度説明しても破綻することはないのだ。 もし無駄な繰り返しをなくそうとして、 いろいろ組み替えているとほんとに大変なことになる。 実際最初はこれでかなり苦しんだ。

繰り返しが強調になるという副作用があるかもしれないけど。

ああ、このアドバイスにほんと何度助けられたことか。 そしてきっと今後も助けられることになる思う。

2007-09-19

[Ruby]YARVの成果を実感してみる

ちまたでは「Ruby 1.9は1.8より平均5倍速い」というニュースが話題になっているようです。

ちょっと前に野球ゲームのテストプログラム(GUIとかはなくってひたすら計算するだけ)を書いたのですが、 こいつで数千試合とか数万試合をシミュレートすると それなり実行時間がかかります。 そうだYARVに行こう、じゃなくて久しぶりにYARVを使ってみようと思いました。

開発版のRuby1.9にはもう既にYARVが組み込まれています。 というわけで最新の開発版RubyをインストールすればYARVが使えるわけです。

結論

先に結論だけ先に書いてしまうと、ruby1.8.5に比べて、ちょうど2倍の速度で計算が終わるようになりました。 やっぱり5倍じゃなかったのですが、手元のスクリプトが実際に2倍の速さで動いたのにはちょっと驚きました。

具体的には、3.776秒→1.881秒です。

ruby a.rb  1.25s user 2.51s system 99% cpu 3.776 total
~/local/ruby19/bin/ruby -v a.rb  0.05s user 1.79s system 97% cpu 1.881 total

環境はcoLinux上のDebianです。 RubyのRevは13466です。

もちろん今回の結果はほんの一例であって、 たぶん検証に使うスクリプトによって結果が変わってくるのではないでしょうか。

検証に使ったプログラム

殴り書きのコードなのであまり出したくないのですが、次のような感じのものを 9 * 15000 回くらいまわしました。

while outs < 3
  batter = batters[number]
  r = batter.update
  if r == :H or r == :HR or r == :BB
    bases.unshift batter
    n = r == :HR ? 3 : 0
    n.times { bases.unshift nil }
    rbi = bases[3, 4].compact.size
    batter.result[:rbi] += rbi
    score += rbi
    bases = bases[0, 3]
  else
  # 略

1.9は仕様の変わったところがあって、1.8のコードは動かないことがありますが、 小さなソースならエラーや警告のメッセージを見ればだいたい動くように修正できると思います(一度この作業をやっておくと、将来1.9ベースに移行するときの心の準備ができるかもしれません)。 ちなみに今回検証に使ったプログラムはまったく手を入れずに動きました。

Ruby1.9のインストール手順

Rubyをソースからコンパイルしたことのない方も多いと思います。 私も数回程度しか試したことがありませんが、思ったより簡単なので、その手順を紹介します。 環境はDebianです。また既存のRubyに影響を与えないよう、ユーザーのローカル環境にインストールします。準備以降はすべてユーザー権限で実行します。

あらかじめこのあたりは入れてありました。

apt-get install gcc make libc6-dev zlib1g-dev

それからconfigureの生成にautoconfとbisonが必要なようです。

apt-get install autoconf bison

準備は以上です(もしかしたら足りなかったり、余計なものがあったりするかも)。

ここから先はすべてユーザー権限で実行します。 svnコマンドを使って最新のソースをダウンロードします。

svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby

svnが使えない場合は、公式ページより最新のtar.gzを落としてくればOKだと思います。

次にダウンロードしたrubyディレクトリに移動してautoconfを実行します。

cd ruby
autoconf

autoconfを実行するとconfigureが作成されます。

次にconfigureを実行します。このときrubyがインストールされる場所を指定します。

./configure --prefix=/home/dan/local/ruby19

上の例では/home/dan/local/ruby19にインストールされるよう指定しています。 configureを実行するとMakefileが作成されます。

あとはmakeしてインストールすれば終わりです。

make
make install

実行方法

直接パスを指定して実行します。

/home/dan/local/ruby19/bin/ruby -v
=> ruby 1.9.0 (2007-09-15 patchlevel 0) [i686-linux]

スクリプトも実行できます。

/home/dan/local/ruby19/bin/ruby a.rb
2007-09-09

バスケの練習

子供が学校のバスケの大会があるとかで、今日は2人で小学校の校庭に練習しに行ってきた。昼間の一番暑い時間に一時間近く2人でパスやらドリブルやらシュート練習やらやってきた。

で、昔、えっと20代の中盤くらいのときは運動不足のピークで、そのころはちょっと運動するとすぐにだるくなって筋肉痛とかなってたんだけど、最近はそんなことがなことに気がついた。 これは職場のメンバーとやっているフットサルの効果。 もう2年半続けていてだいぶ体力がついた。 あと思うところがあって通勤時間を利用して一日70分歩くようにしているし。

2007-09-08

[栽培日誌]台風の被害

トマトの収穫が終わっていたので、風が強かった割にはそれほど大きくなかった。最大の被害はキュウリ。もう末期だったけどあと10本くらいは収穫できそうだったのに、たぶんもうだめだ。風のせいか根元に3本ほどキュウリが落ちていたのでそれを回収しておいた。

ナスとオクラはちょっと傾いたくらい。アスパラは何本か折れたけどまあこの時期ならもう平気かな。

台風で被害が出たのは2〜3年ぶりな気がする。

2007-09-08

アマゾンで和書「Ruby」検索で4位!

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

アマゾンの和書(上の検索では「本」)を「Ruby」で検索すると、ゲーム本が純粋な4位に!じわじわ来てるのか!?

ちなみにトップ3には超有名本ばかりです。

2007-09-07

Silverlight1.0 正式版

もう10年以上の組み込みの仕事ばっかりやっているのでWebまわりの技術には疎いんだけど、たまたまSilverlightってのを知った。 マイクロソフトの開発環境はぜんぜん使ったことがなくて、あまり興味なかったんだけど、これが使いやすいものだったら.NETとか覚えたいかも。ぱっと見た感じ、こんなのがほしかったという印象。まだよくわからないけど使いやすいすばらしい技術だといいな。

2007-09-04

[Ruby]IPA未踏ソフトウェア創造事業2006年度下期千葉PM採択プロジェクト最終成果報告会

http://www.mitou-chiba.org/

今週の金曜日に開催されます。 Rubyも豪華メンバーによる発表があるようです!

2007-09-04

開発メンバー

少し前から職場に来ている契約社員の人がゲームのシナリオや設定書きに興味があるというので、個人でゲーム開発をしていることを話してみた。 すると興味を持ってくれて、ゲーム内容を説明していたんだけど、RPGであるにも関わらずWebインターフェースという部分で絶句された。 確かにこれはイメージしにくいし第一印象でマイナスになるなあと以前から心配していたところ。宣伝時にはここをうまくプラスのイメージに変えないと(マーケティング担当poqute君よろしく)。

そんなことを先週の金曜日に話していたんだけど、今日さっそく舞台設定とキャラクター案を3パタンも書いてきてくれた。どれも面白い内容だったので、向こうがこの長くて遅い開発ペースに合わせてやってくれるなら、是非一緒にゲームを作っていきたい。

あとデザイナーも探さないと。どうやって探したもんだか。

2007-09-04

売れてるのか?

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

Amazonの書籍で「Ruby」をキーワードに検索してみると、Ruby本の中ではなんと「たのしいRuby」に次いで4位(売れている順)に入っているじゃないか!一過性のものかな。

ちょくちょく順位をみてるんだけど、ずっと2000位〜60000位の間を行ったりきたりしてて、そんなに悪くない感じで売れていそうな気はする。

2007-09-03

3割打者の10年の成績をシミュレート

打率3割の打者がいたとします。 この打者は打席に立つと3割の確率でヒットを打つものとして、10年間の成績(安打数)を次のようにシミュレートします。 1シーズンの打席数は400とします。

def hit?(average)
  rand < average
end

average = 0.300
bats = 400
10.times do
  hits = 0
  bats.times { hits += 1 if hit?(average) }
  puts "#{hits}/#{bats} .#{1000 * hits / bats}"
end

このプログラムを走らせるとこんな結果が出ます。 randメソッドを使っているので結果は毎回異なります。

114/400 .285
121/400 .302
121/400 .302
112/400 .280
118/400 .295
134/400 .335
106/400 .265
115/400 .287
120/400 .300
138/400 .345

成績を詳しく見てみると、プロ5年まではおよそ3割付近の打率を安定して残しています。 プロ6年目には打率.335という好成績を記録しました。 しかし翌年は打率.265という不振に陥ります。 そしてプロ10年目にして過去最高の138安打(打率.345)というすばらしい成績を達成しました。

10年間同じまったく能力でも、これではきっと○年は好調△年はスランプなんていわれてしまいますね。

さて、話を現実に戻して実在のプロ野球選手が同じ能力でシーズンを向かえた場合、 偶然によってこんなにも成績が違ってしまうものなんでしょうか? あくまで実力にはいろんな要素が複雑に絡み合うということは別として、どうなんでしょう。 それともこのシミュレートには何か致命的な誤りがあるのかな。

2007-09-02

[PC]BGMを鳴らしたい

DebianのPCが常時稼動しているわけだから、このPCにスピーカーをつないで決まった時間にBGMを再生するとかできないかな。

スピーカーの電源が入りっぱなしになっちゃうのはしょうがないのかな。音を鳴らさなければ電力は消費しないのかな。熱が出てるかさわってみればだいたいわかるかも。

2007-09-02

kernel panic

データを取り出すためのHDDを接続してマウントして、データを取り出した後HDDを外してPCを再起動したらkernel panicとか出てあせったけど、接続を戻したりいろいろ試しながら再起動を繰り返すうちに起動できた。カーネルはいじってない。

2007-09-02

[プラポケ]ステージ0ランキング

DBからデータが取り出せたので、上位100人を発表しておきます。 2006年11月17日時点での成績です。

順位名前gradepoints勝率profile
1aku21783967.8470
2dango2120331114.7020デバッグ中に100回くらいゼラニウムちゃんが引けなかった〜
3yuki21163065.85725
4a-z0-9_-2922528.7570デバッグ中に100回くらいあざらしちゃんが引けなかった〜
5namu29228815.6510ラベンダー、嫌いなキャラじゃないけど…三日連続は哀しい(i_i)
6znz266241417.5850Stageが変わるのはいつだろう?
7moriq251241416.6000
8ddtana24918157.7202
9subaru2462064.83310
10mslcloud2361821.9470
11samuraisoul23616138.6660
12yuukyuurenya23322713.6280
13itachi21316109.64011
14kreuz2121386.68410
15xyo2825821.5430
16totoko25161212.5710
17jowcol241663.8420
18monwana241667.69519
19inoue24151411.5760
20iwadon24171313.5660
21zval22171115.5310
22rucila22171622.4351
23yhara2-215820.4280
24sim1471453.8230
25seki147181313.5800
26aqui1448101.8880
27yokonatsu14318413.5800
28maiha142201217.54012
29goburins13716912.5714
30tkskkc13513610.5650
31wkoichi133964.69234
32holysugar1331087.5880
33nabi131942.8180
34pi_1281347.6500
35poqute1152145.2850
36sio111702.77718
37sshi1101248.60047
38yowa1107411.38834
39azu219857.53330
40pinkfive186515.2850
41taruru15624.60043
42oxy13532.71427
43mr-80b1310317.37019
44sasamo1371214.33315
45ryumu129520.3103
46ericw10481.8000
47mutumin1-46317.2600
48makku039545.50041
49llat039354.42847
50mumu038587.41632
51ryuusen03811523.3237
52shachi0385830.14219
53yumioka0374512.25036
54makafusi0366315.28549
55mina0355001.0000
56marm0355001.00013
57norio0353612.20028
58padra0347319.26922
59inverse30324001.00052
60uochoco032405.4440
61hardwired031328.27235
62ryu0282201.00040
63ruby028152.33311
64kdmsnr028159.10045
65gamemaster025435.44467なんかいろんなところで h 付け忘れてるよ〜(*´∀`人)(人´∀`*)
66kan0220129.00034
67cusith021324.42849
68zeldalia0193001.00018
69skarda0193001.0007
70takaya0193001.00054
71kiri0193001.00039
72hakonootoko019305.37534
73miduno019237.22247
74kaizu0172101.00042
75tukiori0172101.0000
76solis017212.50049
77gruminia017212.50057
78xeno016201.66638
79azu016207.22251
80cmt165015121.50044
81eastogre014112.33356
82testtest014112.33344
83sabazo014115.16662
84satoshi0131018.0529
85m_seki013032.00057
86xaucia90906135.16644
87kii041101.0002
88muki03102.33318
89swd03103.2508
90yamaz03107.12552
91sakuraba03030.00054
92huyukimakoto03032.00013
93ligaty03037.00039
94ntk02027.00020
95menbo02021.00030
96gainasu02021.00059
97ppfs01012.00042
98kakutani01012.00070
99baron010112.00040
100trot_thunder01010.0000

2007-09-02

[プラポケ]データ発掘

ようやく旧HDDからデータを発掘できました。 DBをダンプしたデータが残っていて、無事パッケージデータを取り出すことができた。まだサービスは復旧していませんが、もう少ししたら成績をリセットしてステージ1を始めようと思います。

2007-09-02

[JavaScript]最近Gmailを使い始めたんだけど

職場でメールを確認できないのがあまりに不便だったので、おとといからGmailを試しているのだけど、これよくできてますね。

でGmailを見ると、JavaScript、やっぱり難しそう。ここまでのUIを作るのはかなり大変だろうなと思いました。