Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2004-12-31

[日記]冬の時期

珍しく意識があるのでもう少し振り返ってみる。

---

結局今年は世間にリリースされるようなもの(仕事での話)にほとんど携わっていなかった。でも今年とあと 1 、 2 年は自分にとって冬の時期だと考えるようにしている。

とわいえ、表立った活動はしていなくても本当に何もしていなかったわけではない。例えば『るびま』にかかわれたこととかは自分にとってとても大きな意味があると思うし、 Ruby を勉強しているうちに今まで知らなかった多くのものを知るきっかけを得ることができた。すごい人も見ることができた。また、サバゲーとか今までの自分には考えられなかったものにも挑戦した。しばらくの間は今年知ったことをもっと掘り下げて根を深く伸ばすような活動を続けたい。

継続は力なりという言葉が今まで以上に身にしみた年でもあった。遅くても前進していければいい。

---

やっぱりすごい人はすごい。よく考えてる。オレはせっかちで考えが浅すぎ。すぐ結果を求めてしまうしあきやすい。一気に成果を出すことも大切だと思うけどそれだけじゃ駄目だ。来年はもっと深く深く。

2004-12-31

[Ruby]POST のときの URL クエリ

あれ、 POST のときの URL クエリって取れたのか。

まえに試してみて CGI#params に入っていなかったから、てっきり POST のときは捨てられているのかと思っていた。

なんだったか忘れたけど、取れないと勘違いして苦渋の決断をしたことがあったような。

2004-12-31

[日記][パソコン]今年覚えたこと

数年続いたデスマから脱出し、オープンソースの世界も知って、パソコン関係で新しく覚えたことがとても多かった。今年は人生のターニングポイントかもしれない。

覚えたもの・勉強したもの

  • Ruby … 多くのライブラリを知った
  • MySQL … 自分でインストールしてみたり、Windows 上で動かしたり
  • Linux
    • Gentoo … stage3 のインストールに成功
  • coLinux … 非常に便利だ
  • tDiary
  • lily
  • Hiki
  • CSS … 今となっては当たり前の知識
  • RSS
  • IRC
    • Nadoka
  • Firefox … 1.0 プレビュー版を試用してすぐに乗り換え
  • Thunderbird … 年の瀬に試用。乗り換えの予感
  • SNS(mixi)
  • オープンソース … 本を何冊か
  • Z80
  • カメラ付きケータイ
  • Metasequoia
  • Flash

はじめて名前を知ったもの

  • Python … 名前だけは以前から知っていた
    • Zope
  • Lisp
  • Haskell
  • Groovy
  • Squeak
  • Gentoo
  • KNOPPIX
  • ブログ
  • OSS
  • LL

作ったもの

今年はぜんぜん作らなかった。何にもやってない気がしたが、それでも簡単なものはいくつか作っていた。

  • Murasama … アルファテスト実施
  • Jewel-mmo … ネット越しに多人数接続のキャラ移動まで
  • などかろーぐ
  • 人狼 BBS 便利ツール
  • tMoved

パソコンとは別の遊んだものとか

  • デスノート
  • ネギま!先生
  • 人狼 BBS
  • 肉体改造 … ウェイト 8 キロアップに成功
  • サバゲー
2004-12-30

[サーバー]robita 落ちた

P4 の Gentoo マシンが落ちた。 Apache のコンパイル中にフリーズした模様。

このマシンは以前 Windows を使っていたときからしばしばフリーズしていたのでハード的な原因だろう。たしかメモリは交換したと記憶していたが……

Jewel の再インストールをする間、 robita で一時的にサービスを代行しようと思っていたが、このマシンやっぱりダメだ。

2004-12-29

[映画]ハウルの動く城

キムタクが思ったよりよかった。無難な感じ。インパクトもあまりないけど。

CM とかで声を出さなかったというのが成功していると思う。売る側の人にはこういう才能が大切と日ごろから思っているけど、自分にはできないなあ。

全体的には軽い気持ちで雰囲気を楽しむのがよいのかな、という感じ。

ただ、一部の人間の絵とかアニメーションがジブリ映画ってこんなものだっけ、と感じる部分があった。

2004-12-28

[生活]餅つき

画像の説明 画像の説明

蒸す。

画像の説明 画像の説明

オレは火の番。

画像の説明

餅つき機を使う。これを 6 回繰り返す。

2004-12-27

[Gentoo]MySQL のインストール

Ruby から使うので mysql-ruby で入れてしまう。

emerge mysql-ruby
mysql_install_db
/etc/init.d/mysql start

ひどくいい加減案気がするが、ローカルで使うものなのでとりあえず。

2004-12-26

[開発ログ]ユーザー登録復活失敗

MySQL のアクセス権限の問題だけではなかった。

登録確認時のメール送信がダメ。こっちのサーバーじゃ今までのつくりじゃうまくいかない。もとのつくりがいい加減すぎて、直す気にもならない。

新システムの導入を考えてみよう。

2004-12-26

[MySQL]アクセス元の追加

mysql -u root

select host,user,password from mysql.user;
UPDATE mysql.user SET host='???.???.ne.jp' WHERE host='???.???.225.104';
flush privileges;
2004-12-25

[パソコン]Mozilla Thunderbird 1.0日本語版を使ってみる

よい。使ってすぐよさがわかるというのがよい。

いままでベッキーを使っていたが、 Thunderbird で遊んでいるうちに、メール環境をほとんど移行してしまった。仕事用のメーラーに採用しよう。

ブラウザとメーラーがマルチプラットフォーム対応ソフトになってしまいデスクトップを Linux に移行できる日も近いのだろうかと思ってしまう。

後はエディタ。 vi も emacs も使えない筆者に乗り換えたいと思わせるエディタがあれば。

2004-12-25

[アイデア]指揮官とその他大勢

FF11 のコンクエストを一部の人が仕切り、その他大勢の人はそれに振り回される。有能な指揮官もいれば無能な指揮官もいる、のようなシステム。下っ端はひたすら愚痴を言い続けたり、全然関係なく楽しんでいたり。

上の人は辛い。毎日戦略に悩まされ続ける。でもたいていはうまくいかない。文句も言われ続ける。

2004-12-24

[日記]ラーメン

画像の説明 画像の説明

子供が寝るのを待って近所のお気に入りのラーメン屋へ。

クリスマスらーめん。

画像の説明

気がつくと今年はプレゼントがたくさん。

このほかにも DVD とかトーマスとか。ついつい買ってしまった。

2004-12-24

[日記]急いで仕事から帰ってきてデートへ

画像の説明

9 時前に仕事から帰る。急いで長女を乗せて車で出発。

  1. トイザらスでゲームのカセットを買ってあげる
  2. マクドナルドで食事。ハッピーセット
  3. お気に入りのらっぽっぽでケーキを買う
  4. コンビニでアイスクリームを買う

10 時ちょっと過ぎに帰宅。一時間強ほどか。あんまり遅いと眠くなっちゃうからね。

お目当てのたまごっちは人気らしくて売り切れ。残念。

2004-12-24

[日記]クリスマス

デートコースが決まらない。

2004-12-24

[日記]軽い腹痛

落ち着いた模様。今回は大丈夫かな。

2004-12-23

[日記]大掃除

昨日までに終わったのは

  • 換気扇
  • 風呂
  • 物置
  • 水槽
  • 買い物

あたり。

画像の説明 画像の説明

水槽に水草を入れようと思ったが、買い物に行ったら時間が遅くなってしまったのでまた今度。

魚はこのネオンテトラ 1 匹だけ。もう 3 年以上生きている。

2004-12-21

[日記]肩を痛める

昼休みのキャッチボールを初めて 3 週間。

ここ 5 日間ボールを放ることができない。先週、調子に乗ってフォーム改造&投げ込みを続けたのがいけなかった。多めに投げ込んだ次の日、痛みをおして投げ込んだら、こんなことになってしまった。

この数日は主に守備練習のみ。明日もまだ投げるには早い。金曜日まで投げなければ回復すだろうから、それまで我慢。つまりしゅびれん。

2004-12-21

[開発ログ]Rails をハック

ハックというのは嘘。 もりきゅうさんの記事 を見ながらインストールしてテストを動しただけ。

明日からチュートリアルに入りたいが、明日は仕事の日。仕事が早く片づいたらチュートリアルをやってみよう。

2004-12-21

[開発ログ]CGI::Session から Rails へ

CGI::Session を使ったユーザ登録システム、クッキーに対応した環境のみ版は完成。

ただ、気になるのは Rails 。もりきゅうさんの記事 に目を通した感じでは思ったより導入のハードルが高そうだ。

しかし、

  • Test::Unit を使ってテストを書く仕組みが用意されている
  • テンプレートエンジンとして ERB を使っている
  • MySQL ならすぐに Rails で扱える
  • 自作で何となくやってきた方や、これから新たに Web アプリケーションを……

とか書かれているので、やるしかないかなという気がする。

リリースがまた送れてしまいそうだが、急がば回れか。 Rails をハックしよう。

2004-12-20

[開発ログ] Rails はさておき CGI::Session

書きかけの CGI::Session を使ったセッション管理を捨ててしまうのは嫌なので、せめてちゃんと動くところまで実装したい。

これまでセッションというものを真面目に考えていなかったので、いまいちイメージが沸かず、実装が進まない。

まずやるべき事は、

  • クライアントがクッキーに対応しているか確認
    1. 対応:通常通り CGI::Session を使う
    2. 非対応:クッキーの代わりにクエリを使う

でいいだろうか。

面倒さを考えるとクッキー必須にしたいが、やっぱり携帯をしっかりサポートをしたいのでクッキーを使わない端末にも対応する方向で。やっぱり、よく知らないだけに後付で対応するほうが面倒なので。

ただ、実際、携帯のクッキー対応状況はどうなのだろう。

2004-12-19

[るびま]RubyOnRails を使ってみる

1 年ぶりに仕事でマスターアップして忙しかったのもあって、今頃るびまを読んでいるのだが、「RubyOnRails を使ってみる」の対象読者の、

本稿の対象読者としては、Ruby に慣れていて、これまでに cgi.rb などを使った Web アプリケーションを書いたことがあり (CGI パラメータ、それとセッションを理解されていれば問題ないでしょう)、RDBMS (MySQL, PostgreSQL ならすぐに Rails で扱えます*1) を何かひとつ扱える方を想定しています。

って、今のオレ完全にはまっとるやん。これから読もう。ていうか、読まないうちからこれを使うことになる気がしてならない。

2004-12-18

[家族]長女のダンス発表会

今日は港南区役所で発表会があった。 7 月から週一回のダンス教室に通っていた娘の初めての舞台。週一時間の練習なのでのべ 20 時間ほどしか練習していないはずだが、そうとは思えないよい内容だった。次は 2 月にパシフィコ横浜で発表会があるらしい。

2004-12-17

[るびま]Rubyist Magazine 0004号

本日リリース。

Ruby ではじめるプログラミングも 第 3 回を迎えました。よろしくお願いします。

そう言えば、今回を絵を入れてないな。

2004-12-16

[開発ログ]CGI::Session でセッション管理

CGI::Session の使い方が間違っている気がする。

今の実装だとおそらくセッションデータの中にセッション ID 入れている。これは違うような気が。

2004-12-14

[開発ログ]バグ発見

ロケーションしているのでそもそもクッキーが焼けていない。うーむ。

2004-12-14

[開発ログ]ユーザ登録修正

ruby-list で話題の CGI::Session を使ってクッキーを使ったセッション管理に改造。

  • デフォルトではクッキーにセッション ID を記録する
  • クッキーが使えない場合はクエリにセッション ID をのせて IP もチェックする

登録後、チェック用の CGI でクッキーからセッション ID 読み込んでみて、失敗した場合だけクエリにセッション ID をのせる。このチェックは自動的にロケーションするのでユーザには見えない。

登録テスト

ソース

2004-12-13

[Ruby]お気に入りのプログラミング言語 Ruby

Ruby がすごく気に入っている。

2 年ほど前に WEB ゲームを作るときに採用したのが Ruby を知るきっかけだった。それまで C( 主に C++) を直接的なゲーム開発に、 Perl を開発補助ツールの開発に使っていたので Ruby は簡単に使うことができた。このときは使うのは簡単だったが、十分に Ruby の便利さを教授できたわけではない。それでもとても開発効率の高い言語だと思った。

Ruby を使ったときの感想はとにかく「やわらかい」感じがしたこと。なんとなくこうかなと思ってコーディングするとそれが動く。シンタックスエラーなども極めて出にくい。そのとき感じたフィーリングがすごくよくて、出来ることなら今後の仕事もみんな Ruby で書きたいと思った。

Ruby は大規模プロジェクトに向かないとか、速度が必要とされるゲーム開発には向かないと思われているようだが、自分の経験上全然そんな感じはしない。数万行の規模の開発にも Ruby を使用したが、C で書く場合より不便になるような印象は何もなかった(いや、安定性だけは不安要素になったか)。速度に関してもゲームの場合は局所的なところに付加が集中するので問題を感じていてない。

もし Ruby に出会っていなければひとりで MMORPG を作ろうなどとは思わなかっただろう。

2004-12-13

[開発ログ]MMORPG を作ること

公開に向けて開発している Jewel-mmo だが、予定では遅くとも今年中にテスト公開するつもりだった。下半期から労力を費やす対象が予期せぬ方に脱線してしまい遅れている。脱線したことによっていろんなことが勉強できているからそれはいい。

遅れの問題はさておき、 MMORPG を作るというのはとても面白い。毎日どう実装するかを考えるのだが、考えても知識が足りないので新しいことも勉強する羽目になる。そして、この MMORPG 開発に必要な技術がかなり幅広くて、開発していくこと自体がとても勉強になる。

今の自分にとって MMORPG の実装はエキサイティングでさらに勉強になるという一石二鳥のプロジェクトだ。

2004-12-13

[開発ログ]ユーザー登録テスト公開

現状の登録するだけのプログラムをテスト公開。

登録テスト

ソース

セキュリティーホールを悪用する人より、問題を指摘してくれる人の方が多いことを祈りつつソースも公開。

2004-12-13

[開発ログ]教えてセッション管理

たかはしさんに指摘して頂いたようにセッション ID の正当性を IP で判断する方法はダメなようだ。

クッキーや hidden を使わないようにしたいと思ったのは次の理由から。

  • クッキーが使えない端末がある(特に携帯)
  • クッキーを嫌う人がいる
  • FORM を使わずにリンクで遷移したいので hidden が使えない
    • もしかしてそんなことない?

となると現状で思いつく解決策はこれだ。

  • デフォルトではクッキーにセッション ID を記録する
  • クッキーが使えない(使わない)場合はクエリにセッション ID をのせて IP もチェックする
    • ↑現在の実装
2004-12-13

[アイデア][Mrs]ランクに名前

ランク 1 とかランク 2 とか呼ぶよりもランク毎に名前があるといかも。

  • 地区予選
  • プロ 2 次リーグ
  • プロ 1 次リーグ
  • プレミアリーグ

とか。

2004-12-12

[開発ログ]エスケープが面倒

CGI.escapeHTML

とか

Mysql::escape_string

を毎回やるしかないのだろうか?

これだといつか必ず忘れてセキュリティーホールになってしまう。

2004-12-12

[栽培日誌]モンシロチョウの幼虫

モンシロチョウの幼虫がブロッコリーやキャベツに付くので、棒や箸で取っていたのだが、最近は素手でつかんで取れるようになった。

2004-12-10

[開発ログ]クッキーも hidden も使わないセッション管理

にした。セッション ID は URL にのせてしまう方式で。 REMOTE_ADDR のチェックを毎回行う。同一 IP からアクセスしている場合は ID が盗めてしまうので完全ではないがとりあえずはこれで。もっといい方法があれば後で変更したい。

テストが不十分だがいちおうユーザー登録は完成。

2004-12-09

[開発ログ]セッション管理

をどうするか。いままでクエリーに全部のせていたが、これだとパスワードまでリファラーとして送られてしまうのですごくまずい。

最近のケータイはみんなクッキーに対応しているのだろうか。

2004-12-08

[開発ログ]DB 初期化のユーティリティ

を作った。手動で DB を初期化したり、初期データを挿入するのは面倒なので。

コマンドひとつで、

  • create database
  • drop database
  • create table
  • 初期値の挿入

などが可能。(テーブル定義を変更しつつデータを移行する機能がまだない。)

tabel の定義や 初期値は特定の場所に簡易スクリプト的なテキストファイルを置いておくとそれが読み込まれる。

これで明日からはユーザ登録の処理に取りかかれそうだ。

2004-12-08

[開発ログ]リダイレクト

mod_ruby のときもそうでないときも同じようにリダイレクトする CGI はどう書けばいいのだろう?

ちょっと見たところ cgi.rb にはなさそうなんだけど……

2004-12-08

[開発ログ]Rubyコーディング規約

いつも気分で命名規則などを変えてしまうので、これを参考にしてみる。

2004-12-07

[開発ログ][Mrs]開発リスタート

開発再開。まずはむらさまのユーザ登録の作り直しから。 久々にプログラムを書く。 CGI の扱い方を忘れていたがすぐに勘が戻る。すこぶる快調。やっぱり Ruby はいい。すごくいい。

それと、オレ自身少しレベルアップした気がする。というか、いい加減初心者じゃなくなってきたような。

今年はたくさん勉強したなあ。

2004-12-07

[Jewel][アイデア]数日かけて準備して放出

サバゲーの面白さはいろいろあるのだが、何度か参加して気づいたこんな楽しみ方があるようだ。

オレの参加している小隊では野外戦を月 1 回程度行う。朝の 10 時過ぎから夕方まで 1 日で 10 ゲームくらいのバトルがある。サバゲー歴の長い人ほど多くの武器やその他のグッズを持っていて、毎回ゲームの度に武器を持ち替えては、今度はこれを使ってこういう戦い方をしてみようというノリで、単純な勝ち負けとは別に多彩な装備品を使うことを楽しむ。そんな遊び方をする人が多い。

中には玉を込めるのがめんどくさい割に 1 回か 2 回打つと玉が切れてしまう武器や、消耗品の特殊な装弾装置を必要とする派手な攻撃もある。

こういう遊び方を取り入れたいと以前から考えていたが、その上でいい案を思いついた。

  • 時間によってたまる何かがあり、数日間( 1 〜 5 週間 )それをためる
  • みんなで集まって放出
  • チャージの時間は上級者(大技)ほど長くなる。初心者は長時間チャージできない
2004-12-06

[Easy Rocket]Easy Rocket 構想再燃

Easy Rocket とは自作しようと思っていた Ruby でのゲーム開発を容易にするためのライブラリの名前。主にグラフィック周りを扱うもの。

結局、自作する価値が見出せなかったので頓挫していたが、先日思いついたクライアントの分離案の考察を続けているうちに、もし作るなら「Easy Rocket」の名前が使えそうだと、このお気に入りの名前を思い出した。

クライアントの分離案とは、ゲームアプリのグラフィック(各種デバイス)処理とグラフィック(各種デバイス)に依存しない処理を別プロセスに分けるという構想。グラフィック処理を行う方に「Easy Rocket」という名前を使うことができる。

グラフィック処理の方をサーバーとして、これにクライアント本体からコマンドを送信する。プロセス間通信の方法はまだ何がいいかよくわからないが、何らかの方法を使う。

分離することのメリットは、

  • ゲームのロジックに関係のない処理(各種デバイスの初期化、操作)が本体から確実に排除できる
  • 分離したものはそれぞれ別プロセスなのでそれぞれにふさわしい言語で開発できる
  • グラフィック(デバイス)を扱う方の処理はオープンソースのメリットを最大限に享受できる

プロセス間通信のコストがデメリットだが、ちょっと考えたところではこれまでに自分の作ってきたゲーム、

  • 格闘ゲーム(アクション)
  • バスケットゲーム(アクション)
  • アバター系のゲーム(ネットワーク RPG )

では現実的に思える。ただ、コマンドの命令セットは十分に検証する必要がある。不利なのはシューティングゲームなどのシビアな当たり判定を伴う大量のオブジェクトを扱うジャンルか。

分離した場合、本体は Ruby 、グラフィックサーバーは C という感じするだろうから Ruby でのグラフィックス処理に悩む必要がなくなる。

このような考えは他にもあるのだろうか。

2004-12-06

[Mrs][アイデア] グループポイント

グループポイントが増えればパラメータ修正用のポイントが増える。

それ以外にもグループランクによってアイテムが配給される、お金が配給されるなどとしても面白い。

大規模なグループほどランクが上がって修正ポイントが増えるが、お金は参加人数で山分けなどとすれば、少数精鋭グループにもメリットが出てきて面白い。

2004-12-05

[日記] 腸閉塞?

昨日会社の人に腹痛のことを話したら、その人が数年前に腸閉塞になったときの症状に似ていた。

今朝もまだ痛みが残っている。今週は仕事が忙しいので来週あたり病院に行きたい。

2004-12-04

[日記]腹痛

昨日の夜からまた腹痛。痛さは最大級。21時ころから痛みが激しくなり2時ころから少し落ち着いてきた。今朝は痛みが軽い。

2004-12-03

[日記] Web & Internet Application Day

行くことにした。

2004-12-02

[日記] 目がまわる

昨日はかなり遅くまで残業。風邪が治っていないらしく帰宅すると目がまわるのでおとなしく寝た。

2004-12-02

[日記] Web & Internet Application Day

かずひこさんの日記を見て、 Web & Internet Application Day を知る。無理してでも行きたい。

2004-12-01

[開発ログ] グラフィックライブラリ選び

rucila さんに教えて頂いた Ruby+Ruby/Gtk2+Ruby/Gtkglext を調べる前に、 ポイントをまとめておく。

  • 機能と速度と安定性
  • 機能はそれなりの 2D 表示と 3D 表示
  • 開発時の扱いやすさ
    • Ruby との連携
  • 対応プラットフォーム
    • 特に圧倒的に数の多い Windows 。 Windows のみもあり
    • 逆に Mac 、 Linux などに特化して隙間を狙うものありかも
  • 配布の容易さ
  • プレイヤーのインストールのしやすさ