Jewel-mmo開発日記 http://dgames.jp/dan RubyでMMORPGを開発しています。その開発の過程を綴った日記です。 LuaをXcodeでコンパイルしてみた http://dgames.jp/dan/permalink/20100309 LuaをXcodeでコンパイルしてみたソースファイルを突っ込んだら普通にビルドできた。クジラ飛行机さんの書いた高速スクリプト言語「Lua」を始めよう!でLuaを勉強中。iPhoneアプリの開発にLuaを使うにあたって悩んでいるのは、画像の制御をLuaでやる... <h2>LuaをXcodeでコンパイルしてみた</h2> <p>ソースファイルを突っ込んだら普通にビルドできた。</p> <p>クジラ飛行机さんの書いた<a href="http://www.hakkaku.net/articles/20081023-283">高速スクリプト言語「Lua」を始めよう!</a>でLuaを勉強中。</p> <p>iPhoneアプリの開発にLuaを使うにあたって悩んでいるのは、画像の制御をLuaでやるかどうかというところ。</p> <p>当初はモデル部分だけをLuaで実装して、UIに関する部分はCで実装しようかと考えていた。 が、やろうと思えば画像等の管理をLua側でやることも可能なわけで、その辺りの設計をどうしようかなと。</p> <p>とりあえず、UIはLuaを使わずに普通に作る形にした方が手っ取り早いのかな。Luaへの依存度を高くするのはいろいろ試してからの方がいいかもしれない。</p> 2010-03-09T00:00:00+09:00 MacBookバンドルアプリケーションのインストールメモ http://dgames.jp/dan/permalink/20100308 MacBookバンドルアプリケーションのインストールメモ先日Macのクリーンインストール後に行ったiPhotoその他アプリのインストールに関するメモ。2009年の7月にMacBookpro(Leopard)を購入し、年が明けてからSnowLeopardにア... <h2>MacBookバンドルアプリケーションのインストールメモ</h2> <p>先日Macのクリーンインストール後に行ったiPhotoその他アプリのインストールに関するメモ。</p> <p>2009年の7月にMacBook pro(Leopard)を購入し、年が明けてからSnow Leopardにアップデートした。</p> <p>その後、一度Snow Leopardのディスクでクリーンインストールを行ったのだが、なぜかiPhotoが入っていない(もしかしたら買ったときもデフォルトではインストールされていなくて、間違えてディスクから何かをインストールしてしまったことがあったのでそのとき入ったのかも)。 iPhoneで撮影した写真や動画はiPhotoで管理していたし、その他の方法でデータを管理する方法はわからない。</p> <p>MacBookの箱から購入時についてきたDVDの一枚を取り出し、それをPCに差し込むとバンドルアプリケーションのインストールメニューが開く。カスタマイズでインストールするアプリを選択できるらしい。</p> <ul> <li>CPU Help Files → 入れない</li> <li>iPhoto → 使うので入れる</li> <li>iMovie → 使うので入れる</li> <li><a href="GarageBand">GarageBand</a> → 入れる。使う予定はないけど</li> <li>iWeb → 入れない</li> <li>iDVD → 入れない。何に使うのかわからない</li> </ul> <p>インストールが完了したが、旧環境から持ってきたiPhotoのデータが開けない。 そこでソフトウェア・アップデートを実行してみる。 するとリストにiPhotoの更新があったのでアップデートを実行。アップデートが完了すると無事開けるようになった。</p> 2010-03-08T00:00:00+09:00 ブログ記事に対するコメントをtwetterで http://dgames.jp/dan/permalink/20100307 ブログ記事に対するコメントをtwetterで年末にブログシステムをcgi.rb実装からSinatra実装に移行してからこっち、コメント機能が無効になっていた。ブログに対するコメントをtwitterで受け付けると面白いんじゃないかと思っていたのでその方向で実... <h2>ブログ記事に対するコメントをtwetterで</h2> <p>年末にブログシステムを<a href="http://github.com/dan5/bilbo.cgi">cgi.rb実装</a>から<a href="http://github.com/dan5/bilbo">Sinatra実装</a>に移行してからこっち、コメント機能が無効になっていた。</p> <p>ブログに対するコメントをtwitterで受け付けると面白いんじゃないかと思っていたのでその方向で実装してみた。</p> <p>実装の作戦は以下の通り。</p> <ol> <li>新規の日記エントリを作成したらそのエントリのタイトルとパーマリンクをtwitterで通知する(日記エントリとペアになるtweetを用意しておき、そのtweetへの返信をブログ記事へのコメントと見なす)</li> <li>twitterから自分のtweetsを取得して日記エントリに対応するものをキャッシュしておく</li> <li>twitterから自分のrepliesを取得してキャッシュしておく</li> <li>2へのrepliesを日記エントリへのコメントとして日記ページに表示</li> </ol> <p>1は今のところ手動、2と3はcronで定期的にスクリプトを実行、4はブログシステムが動的に処理という形。これで少し様子を見てみようと思う。</p> <p>現状の問題点としては、コメントとしてポストされたtweetに対するrepliyを拾えていないところ。 各tweetに対する返信をたどることができれば木構造でコメント欄に表示できるんだけど、あるtweetに対する返信tweetは検索できないものと理解している(詳しくないのだけど)。</p> <p>完全にtweetを木構造でたどれるようになると、もしかしたら爆発的な数になってしまうかもしれないけど、それはそれとして。</p> 2010-03-07T00:00:00+09:00 iPhone向けRPGをLuaで http://dgames.jp/dan/permalink/20100228_2 iPhone向けRPGをLuaで今作ろうとしているiPhone向けのRPGの実装にはLuaを使いたいと思っている。去年の年末にローカルにLuaの実行環境を用意して、勉強しながらスクリプトを少し書いたのだが、その後放置したままだいぶ時間が経過してしまった。今... <h2>iPhone向けRPGをLuaで</h2> <p>今作ろうとしているiPhone向けのRPGの実装にはLuaを使いたいと思っている。</p> <p>去年の年末にローカルにLuaの実行環境を用意して、勉強しながらスクリプトを少し書いたのだが、 その後放置したままだいぶ時間が経過してしまった。</p> <p>今日ひさびさに以前書いた170行のLuaのコードを読むとぱっとみ意味がわからない。 実行するとなにやら実行エラーが出るのだが、その意味もよくわからない。</p> <p>そのコードは思ったよりLuaぽく書かれていて、当時はそれなりに調べながら努力して書いていたらしい。 すぐには思いつかないようなLuaぽい表現がいくつも使われている。</p> <p>まずはこのコードを読みながら当時のことを思い出していくとしよう。 思ったよりちゃんと実装してるし、思ったより作業は進んでいた。</p> <p>ある程度感が戻ったら次はiPhone上でLuaを走らせることに挑戦してみたい。</p> 2010-02-28T00:00:00+09:00 MacでLuaを使う http://dgames.jp/dan/permalink/20100228 MacでLuaを使うhttp://www.lua.org/上記Luaの公式サイトからLua5.1.4をダウンロード。wgethttp://www.lua.org/ftp/lua-5.1.4.tar.gzターミナルにて解凍する。tarzxvflua-5.1.... <h2>MacでLuaを使う</h2> <p><a href="http://www.lua.org/">http://www.lua.org/</a></p> <p>上記Luaの公式サイトからLua 5.1.4をダウンロード。</p> <pre>wget http://www.lua.org/ftp/lua-5.1.4.tar.gz</pre> <p>ターミナルにて解凍する。</p> <pre>tar zxvf lua-5.1.4.tar.gz</pre> <p>とりあえずユーザローカルにインストールすることにする。 解凍したあとMakefileを書き換えてインストール先を/Users/dan/localに変更する。 Makefileが簡潔に書かれているので書き換えるのが容易だ。</p> <pre>cd lua-5.1.4 vim Makefile</pre> <p>makeを引数なしで実行する次のように表示される。</p> <pre>make</pre> <p>以下表示結果。</p> <pre>Please do make PLATFORM where PLATFORM is one of these: aix ansi bsd freebsd generic linux macosx mingw posix solaris See INSTALL for complete instructions.</pre> <p>手元の環境はMacなのでmacosxを与えてmakeを実行する。</p> <pre>make macosx</pre> <p>インストール。 (デフォルトのパスにインストールするならsudoが必要。)</p> <pre>make install</pre> <p>インストール先(上の例なら/Users/dan/local/bin)にパスを通せばluaコマンドを実行できる。</p> <pre>lua -v =&gt; Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio</pre> 2010-02-28T00:00:00+09:00 日記の更新を支援する仕組み http://dgames.jp/dan/permalink/20100227 日記の更新を支援する仕組み日々取り組んでいることや考えていることをもっと日記に書きたいなと思いつつ、サーバにログインしてテキストファイルを作成するというBilbo(今使っている日記システム)のエントリ更新方法が素朴過ぎるのか、なかなか日記を更新できていない... <h2>日記の更新を支援する仕組み</h2> <p>日々取り組んでいることや考えていることをもっと日記に書きたいなと思いつつ、 サーバにログインしてテキストファイルを作成するという<a href="http://github.com/dan5/bilbo">Bilbo</a>(今使っている日記システム)のエントリ更新方法が素朴過ぎるのか、なかなか日記を更新できていない。 サーバでのエントリ直書きも悪くないのだけど、特別便利とは言えない。</p> <p>事態を改善すべく、前々から考えていた日記更新システムを作成中。</p> <p>作戦としては、まず原稿をDropboxに置き、普段使用しているすべてのPCで共有する(Dropboxに置くのは単に書きかけの原稿を複数のPCで共有したいがため)。 ひとつの原稿ファイルに複数のエントリを書けるようにする。このときエントリの単位がわかるように簡単なルールを設けておく。そしてこの原稿ファイルからエントリを切り出して、エントリデータを作成するスクリプトを作る。</p> <p>切り出されたエントリデータは、ローカルで稼働させてるBilboサーバ(要WEBrick等の動作する環境)のdraftカテゴリに放り込まれるようにしておく(実際は出力先のディレクトリをカテゴリデータディレクトリにシンボリックリンクしてるだけ)。</p> <p>ローカルでの原稿チェックはここまでで完了。 あとはローカルのエントリーデータをサーバにアップするスクリプトがあればOK。</p> <p>このような仕組みにしたい理由は、手元に複数の書きかけの日記をためておきたいから。 ひとつのエントリを一日で書き上げるのではなく、日々の細切れの時間を使って少しずつ書きたいのだ。 思いつきのアイデアをメモすることが多いが、そんなときもすぐには一本のエントリとしてまとめることはできない。原稿ファイルがひとつになっていればこういう書き方をするのに便利なんじゃないかなと。</p> <p>原稿作成からサーバにアップするまでの手順は次のようになる。</p> <ol> <li>ローカルの原稿テキストファイルを編集</li> <li>rake でローカルにエントリデータ作成</li> <li>ブラウザでローカルのデータにアクセス(draftカテゴリ記事の一覧表示)して表示確認</li> <li>rake update</li> </ol> <p>とこう書き出してみて気がついたが、手順2は不要だ。 ブラウザでdraftカテゴリを表示したときに自動的に原稿データからのエントリデータ切り出しが行われた方が良い。</p> <p>そうなると以下の手順で記事を更新できる。</p> <ol> <li>ローカルの原稿テキストファイルを編集</li> <li>ブラウザでローカルのデータにアクセス(draftカテゴリ記事の一覧表示)して表示確認</li> <li>rake update</li> </ol> <p>--</p> <p>とりあえず4手順で更新するシステムはできたのでこれで様子を見よう。</p> 2010-02-27T00:00:00+09:00 「THE 合格」バージョン1.1配信のお知らせ http://dgames.jp/dan/permalink/20100225 「THE合格」バージョン1.1配信のお知らせ先日リリースしたiPhoneアプリのバージョンアップ版がダウンロードできるようになったのでお知らせします。THE合格ver1.1(iTunesStore)今回のアップデート内容は以下の通りです。表示画像のブラッシ... <h2>「THE 合格」バージョン1.1配信のお知らせ</h2> <p>先日リリースしたiPhoneアプリのバージョンアップ版がダウンロードできるようになったのでお知らせします。</p> <ul> <li><a href="http://itunes.apple.com/jp/app/id352743051?mt=8&amp;ign-mpt=uo%3D6">THE 合格 ver1.1 (iTunes Store)</a></li> </ul> <p>今回のアップデート内容は以下の通りです。</p> <ul> <li>表示画像のブラッシュアップ</li> </ul> <p>「THE 合格」ちょっとしたアクションで画面に「合格」という文字をフラッシュさせるシンプルなiPhoneアプリです。</p> <p>アプリの内容や使い方は<a href="http://www.iphone-girl.jp/application-review/29873.html">「THE合格|合格祈願のお守りはアプリで決定!!」</a>が詳しいです。</p> <p>もう受験シーズンも大詰めですが、身近に受験生がいらっしゃいましたら祝福のネタとして使えるかも知れません。1/6の確率でサクラ咲くバージョンで画面がフラッシュするという隠し要素もあります!</p> <p>ちなみに20日に更新申請手続きをして今日(24日)に無事通過したようです。</p> 2010-02-25T00:00:00+09:00 Twitterのフォローミーバッジ http://dgames.jp/dan/permalink/20100224 Twitterのフォローミーバッジこのブログの右端にTwitterの「Followme」バッジを設置してみた。http://chalow.net/2010-02-19-3.htmlこのブログの右端にもつけてみました。HTMLの断片を貼付けるだけなので、スク... <h2>Twitterのフォローミーバッジ</h2> <blockquote><p>このブログの右端に Twitter の「Follow me」バッジを設置してみた。</p> <p><a href="http://chalow.net/2010-02-19-3.html">http://chalow.net/2010-02-19-3.html</a></p> </blockquote> <p>このブログの右端にもつけてみました。 HTMLの断片を貼付けるだけなので、スクリプトタグが使えるならすごく簡単です。</p> <ul> <li>Twitter "Follow" Badge: <a href="http://www.go2web20.net/twitterFollowBadge/">http://www.go2web20.net/twitterFollowBadge/</a></li> </ul> <p>派手なピンク色にしてみました。</p> <p>最近は<a href="http://twitter.com/dan5ya">それなりにtweetしてますよ〜</a>。</p> 2010-02-24T00:00:00+09:00 Macのセットアップ http://dgames.jp/dan/permalink/20100212 xcodeは最新版をダウンロードしてインストール済み。http://www.macports.org/からSnowLeopard用のMacPorts-1.8.2.pkgをダウンロードしてインストール。参考:http://at-aka.blogspot.co... <h2>Macのセットアップ</h2> <p>いままでずっとWindowsをメインのPCとして利用してきた訳だが、 昨年の夏に購入したMacbookが気に入ったため、本格的に作業の場をMacへ移行させている。</p> <p>日常的にWindows依存のアプリや機材を使わなければならないので、常にWindows PCは横に置き、キーボード(マウス)やターミナルやブラウザはMacのものを使う感じ。 もともとWindows上のVMにUbutuを入れて、そこに端末からログインして作業することが多かったので、それほど大きな変化ではない。</p> <p>煩わしいWindows縛りの作業が発生してしまうのは前も後も同じ。</p> <p>以下環境設定のメモ。 Macはsnow leopard、WinはWindows XP。</p> <h3>ファイル共有や基本的な設定</h3> <p>リモートログインにチェックを入れて、sshのログインを可能にした。 ここではIPでアクセス。</p> <p>ファイル共有にチェックを入れたが、WindowsのエクスプローラからMacが見えない。</p> <p>コンピュータ名をmachostnameに設定。</p> <p>やっぱりWindowsのエクスプローラからMacが見えない。</p> <p>ファイル共有のオプションでSMBを起動し、自分のアカウントにチェックを入れた。 するとエクスプローラから認証なしで接続できた。 Winから他のユーザで\\machostnameにアクセスすると認証を求められ、自分のアカウントで接続できた(メモへのメモ:要するに普通は認証が必要なんだけど、たまたま自分のアカウントでアクセスしたから認証確認なしにつながったという意味かな?)。</p> <p>SMBの上にあるAFPはよくわからないがチェックをはずしておく。</p> <p>ネットワークの設定のネットワークの種類が「自動」となっているところを「xxx」として、IPアドレス等をそちらの側に打ち直した。 さらに「詳細」を開いて、ワークグループを「xxx」に選択しておいた。 これでWindowsからみたときもxxx所属となった。</p> <h3>Synergy</h3> <p>これは大変便利。Macのキーボード(マウス)からWindowsを操作できる。 ここではMac物理的に接続したキーボードとマウスを利用することとし、それを使ってWindows PCを操作する。</p> <p>ファイル共有が出来ていることが前提という書き込みを見たけど、 用はTCP/IPで繋がっていればいいのか?</p> <h4>Mac側</h4> <p>設定ファイルは以下のようにした。</p> <pre>section: screens machostname: winhostname: end section: links machostname: left = winhostname winhostname: right = machostname end section: aliases winhostname: xx.xx.xxx.xx</pre> <p>Mac側で名前解決できるかどうかわからなかったのでIPアドレスも書いておいた。</p> <pre>sudo cp -r synergys /usr/bin/</pre> <p>以下で起動する。(まだ自動起動にしていない)</p> <pre>/usr/bin/synergys -c /etc/synergy.conf -n $(hostname -s)</pre> <h4>Windwos側</h4> <p>Windowsの方はSynergyInstaller-1.3.1a-ja.exeを落としてインストールし(これを使わないと「¥」キーが利かなかった)、clientモードで起動させた。これで同期完了。</p> <ul> <li><a href="http://wiki.nothing.sh/page/memo/Synergy">http://wiki.nothing.sh/page/memo/Synergy</a></li> </ul> <h3>Macのキー配列を入れ替える</h3> <p>Windowsでは変態設定と言われるほどにキー配列をいじっていた。 Macでもいくつかのキーを設定し直さないことにはまともにキー入力ができない。</p> <h4>KeyRemap4MacBookを導入した。</h4> <p>右commandキーをescに入れ替える設定だけデフォルトになかったので 下記を設定ファイルに追記して、手元でコンパイルし直した。</p> <pre> &lt;item&gt; &lt;name&gt;Command_R to Escape&lt;/name&gt; &lt;sysctl&gt;remap.commandR2escape&lt;/sysctl&gt; &lt;autogen&gt;--KeyToKey-- KeyCode::COMMAND_R, KeyCode::ESCAPE&lt;/autogen&gt; &lt;/item&gt;</pre> <p>その他の設定はデフォルトのもので事足りた。 Macだけならそれで良かったのだが、Windowsを操作するときに「英数/かな」だけは無反応/スペースになってしまう。</p> <p>Mac側とWin側のキーバインドをできる限り合わせておかないと混乱してしまうので以下を導入することに。</p> <h4>WindowsにCmdSpaceを入れた。</h4> <p>Windowc側でcommand+spaceで日本語/英数の切り替えが可能になった。 Mac側はデフォルトでこの操作が有効だったので一応解決。</p> <h3>ターミナルの色をTerminalColoreopardで変更する</h3> <p><a href="http://niw.at/articles/2007/11/02/TerminalColoreopard/ja">http://niw.at/articles/2007/11/02/TerminalColoreopard/ja</a></p> <p>SIMBL-0.9.7a.zipをダウンロードしてインストール(全環境に対して)。</p> <p>Snow Leopard版をダウンロードしてMacintosh HD以下の「/Library/Application Support/SIMBL/Plugins」にコピー。</p> <h3>hostsを設定</h3> <p>/etc/hostsに ローカルにあるサーバーを追記。</p> <h3>Macからローカルのsmbサーバーへの接続</h3> <p>Finderの「移動」から「サーバへ接続」を開いて下記を入力。</p> <pre>smb://hostname/</pre> <h3>MacPortを導入</h3> <p>xcodeは最新版をダウンロードしてインストール済み。</p> <p><a href="http://www.macports.org/">http://www.macports.org/</a> からSnow Leopard用のMacPorts-1.8.2.pkgをダウンロードしてインストール。</p> <ul> <li>参考: <a href="http://at-aka.blogspot.com/2009/09/macports-180.html">http://at-aka.blogspot.com/2009/09/macports-180.html</a></li> </ul> <p>.zshrcに以下を追記。</p> <pre># for Mac PATH=/opt/local/bin:/opt/local/sbin/:$PATH; export PATH MANPATH=/opt/local/man:$MANPATH; export PATH</pre> 2010-02-12T00:00:00+09:00 龍馬伝 http://dgames.jp/dan/permalink/20100110 龍馬伝昨日の再放送を録画して見た。大河ぽくない。一昨年の篤姫と同時代なのにだいぶ映像の雰囲気が違う(ほかのは見たことないんだけど)。色がやけに鮮やかで、あと土佐の風景ではやたらその辺の植物が生い茂っているイメージ。ペリーの黒船の登場シーンが大荒れの雷を航海... <h2>龍馬伝</h2> <p>昨日の再放送を録画して見た。大河ぽくない。一昨年の篤姫と同時代なのにだいぶ映像の雰囲気が違う(ほかのは見たことないんだけど)。 色がやけに鮮やかで、あと土佐の風景ではやたらその辺の植物が生い茂っているイメージ。ペリーの黒船の登場シーンが大荒れの雷を航海してて迫力があった。屋外で撮影してるとかその辺の違いなんだろうか。</p> <p>大河の前に放送していた坂の上の雲もそうなんだけど、幕末から明治にかけてのセットとか登場人物の衣装とかとういうの見ているだけで面白い。好古の騎馬隊とか真之の軍艦とか軍服とか、首相のいる部屋とか。 こういうセットや小道具は違う番組でも共有されるのだろうか。</p> <p>あとテレビでいうと去年はエリンを見たのだけど、昨日から始まった総集編がいい感じ。高い完成度の作品としてまとまりそで今後に期待。</p> 2010-01-10T00:00:00+09:00 たし算 http://dgames.jp/dan/permalink/20100108 たし算朝ご飯を食べているときに次女が九九を少し覚えた話をしていてそれに感心していたら、ユカリが宿題をちっともやらない長男(末っ子)の計算力が落ちてると……。ユ「最近ねー○○の計算力落ちてるよー」長男(ニヤニヤ)オレ「1+1は?」長男「じゅういちだったかなあ... <h2>たし算</h2> <p>朝ご飯を食べているときに次女が九九を少し覚えた話をしていてそれに感心していたら、 ユカリが宿題をちっともやらない長男(末っ子)の計算力が落ちてると……。</p> <p>ユ「最近ねー○○の計算力落ちてるよー」</p> <p>長男(ニヤニヤ)</p> <p>オレ「1 + 1 は?」</p> <p>長男「じゅういちだったかなあ?(ニヤリ)」</p> <p>オレ「100 + 100 は?」</p> <p>長男「じゅうまんひゃく!」</p> <p>オレ「じゃあ1000 + 1000 は!?」</p> <p>長男「じゅうおくせん!」</p> <p>オレ「おぉ。計算力落ちてないじゃん」</p> <p>いま書いてて気がついたけど10001000は一千万だ。 自身ありげだったからだまされた…。</p> 2010-01-08T00:00:00+09:00 打ち合わせ http://dgames.jp/dan/permalink/20100107 打ち合わせほぼ隔週でikaさんと打ち合わせ。場所はいつもの秋葉原のマック。昨日書いたレベル上げゲーネタについて→「ゴーストから始まるのがわかりにくいのでは?」申請→公開についての話→ikaさんの名義で申請する方向で申請用に新規でテスト的なアプリを作成するこ... <h2>打ち合わせ</h2> <p>ほぼ隔週で<a href="http://d.hatena.ne.jp/ikaakira/">ika</a>さんと打ち合わせ。 場所はいつもの秋葉原のマック。</p> <ul> <li>昨日書いたレベル上げゲーネタについて<ul> <li>→「ゴーストから始まるのがわかりにくいのでは?」</li> </ul></li> <li>申請→公開についての話<ul> <li>→ikaさんの名義で申請する方向で</li> </ul></li> <li>申請用に新規でテスト的なアプリを作成することの確認<ul> <li>そのネタも決定</li> </ul></li> <li>mixiアプリ<ul> <li>プラポケをmixiアプリにしては?</li> </ul></li> <li>今後の仕事の仕方とか</li> </ul> <p>1時間くらいで終えられると負担にならなくていい感じかな。</p> 2010-01-07T00:00:00+09:00 iPhoneレベル上げゲーの流れ http://dgames.jp/dan/permalink/20100106 UIデザインのラフを写真にとってアップしておく。そのうちスキャンしようと思ったままずっと放置だったので。とりあえずデジタル化しておかないとなくしてしまうから。... <h2>iPhoneレベル上げゲーの流れ</h2> <p>iPhone向けのゲームを考えてる。</p> <p>ちょっと変わったRPG。</p> <ul> <li>起動すると画面に大きなボタンがひとつあってそれを押すと経験値が上がる</li> <li>経験値がある程度たまるとレベルが上がる</li> <li>基本的に死ぬことはなくって、ボタンを押すと数値がアップすることを楽しむゲーム</li> </ul> <p>ゲームとしての魅力は理解されにくいかもしれない。 たんにボタンを押すと数字が上がるというだけなんだけど、 これが面白くって、うちの子なんかレベルアップさえ実装されていないプロトタイプで何日も遊んでた。</p> <p>いちおう職業とかの要素も入れる予定だけど、その辺はおまけで、 あくまで数字が上がるうれしさをメインにしないといけない。 この辺のさじ加減を大切にしたい。</p> <p>さて、今日悩んでいるのは、長期的なゲームの目的について。 本当にただ数字が上がるだけだと、飽きてしまうので、一応やりこみ要素は用意する。 「ボタンを押すと経験値が上がる」という基本アクションと「中長期的な目標」の2本をゲーム性の柱としてデザインを考えている。 目先のアクションと最終目標さえ決めてしまえば、あとはどうにでもデザインできる。</p> <p>この辺を考えないといけない。</p> <ul> <li>導入</li> <li>クリア条件</li> <li>クリア後の再開の状態や流れ</li> </ul> <p>まだイメージが漠然としているので、思いつくままプレー開始からゲームクリアするまでと、 さらにクリア後のゲーム再開までを想像してみよう。</p> <h3>ゲームスタートから生身の体を手に入れるまで</h3> <p>iPhoneにゲームをインストールしてアイコンをクリックするとゲームが起動する。</p> <p>起動直後の画面の真ん中に大きなボタンがある。 このボタンを押すとボタンの上にある「次のレベルまであと20」というところの数値が減っていく。 20回押せばレベルアップだ。</p> <blockquote><p>memo: ちなみに初期キャラはゴースト。体を持たない霊魂にすぎない。 HPは0で死ぬことはないが、実体を持つキャラと比べると攻撃力ははるかに弱い。 ゴーストは職業につくこともできないので、スキルを身につけることもない。</p> </blockquote> <p>クリックを続けていると、ボタンがモンスターの絵のものに変わる(一定時間フリーズしたあと敵出現)。 クリックがそのまま攻撃となるので、連打していれば敵を倒すことが出来る。 このゲームはめったなことでは敵からダメージを受けないのでただ連打していればよい。 クリックしていれば自動的に敵がエンカウントしクリックが攻撃となる。 この間、画面中央のボタンはずっと存在したままだが、ボタンの絵が切り替わってゆく。</p> <blockquote><p>memo: 最初に登場する敵は冒険者だ。 ゴーストの攻撃は特殊な念波で、人間に対しては効果抜群。 ただしゴーストの念波は人間以外の相手にはほとんど効かないので、 モンスターを倒すためには生身の体を手に入れなければならない。</p> </blockquote> <p>敵(冒険者)を倒すと、イベントアイコンが画面上に現れて常駐する。 イベントアイコンをクリックするとイベント画面が開き、冒険者に憑依することが出来る。 その冒険者が気に入らなければ、別の冒険者を倒して新しいイベントアイコンを取得すればよい。</p> <blockquote><p>memo: 最初に倒すのは人間で、人間の体を手に入れてからはモンスターを倒すことになる。 ということは最初は酒場から始まることにすればいいかな。 ちなみにゴーストや憑依システムはレムノス(開発中のMMORPG)のそれと同じ。</p> </blockquote> <blockquote><p>memo: 最初に憑依する対象の職業は必ず「戦士」である。</p> </blockquote> <h3>町の外へ</h3> <p>生身の体を手に入れると同時にイベントアイコンがひとつ増える。 これは外へ移動する「移動イベント」。 これを開いて「使用する」を押せば、町の外に移動することができる。</p> <p>移動せず、そのまま酒場で戦い続けて新しい体に乗り換える(憑依しなおす)もよし。</p> <blockquote><p>memo: パーティが全滅した場合、酒場から復活することにしようか。 酒場にいて生身の体を持っているならば、必ず移動イベントを取得できる。</p> </blockquote> <p>町の外ではモンスターが出現する。 このあたりのモンスターは弱いので、ダメージを受けることはない。 敵を倒したときは、多大な経験値が取得できる。 連打してどんどん経験値を稼ぐ。 何度かレベルアップするころには、いくつかのイベントアイコンを取得しているはずだ。</p> <blockquote><p>memo: クリック回数に応じて定期的に移動イベントが発生する。 移動イベントを使用すれば、MAPを進んでいくことができる。</p> </blockquote> <p>最初の町から遠ざかるほど敵が強くなり、それと同時に取得できる経験値もアップする。 ボタンを押せばどんどんレベルが上がる。 これがこのゲームのコンセプトだ。</p> <h3>中期的な目標〜ゴーストクエスト〜</h3> <p>ある程度クリックを重ねると特殊なイベントが発生する。 ゴーストクエストだ。</p> <p>ゴーストが敵として出現し、このゴーストを倒すことが出来れば仲間が一人増える。 仲間に出来るゴーストは7人。 仲間にしやすいもの(倒すのが容易)から、仲間になりにくいもの(強い、レア)までいろんなタイプがいる。</p> <blockquote><p>memo: 出現するゴーストはランダムだが最初は弱い者が登場する。</p> </blockquote> <p>ゴーストは通常のモンスターと違って強い。 何も考えずに挑むと勝てないことも多い。 勝てそうもない場合は、スルーして戦闘を避けることも必要だ。</p> <blockquote><p>memo: ゴーストは中ボス的な存在。 パーティのレベルに応じて、ゴーストが倒せるようになり、仲間が増えていく。 死んでしまうとLPが1ポイント減るので、全滅は出来る限り避けたほうがよい。</p> </blockquote> <h3>ラスボスを倒せばクリア</h3> <p>レベルを上げ、仲間を増やし、転職や転生を繰り返すうちに強力なパーティが出来上がる。</p> <blockquote><p>memo: 生身の体には寿命がある(LPシステム)。 寿命が尽きたら新しい体を探して憑依する(転生)。</p> </blockquote> <p>MAPもずいぶんと進んでいるはずだ。 湖を横目に迷いの森を抜け(遠回りだが安全な街道もある)、 山脈の間を縫うように進み(危険な地下の坑道もある)、 もし気が向いたのならドラゴンの住む火山を訪れたかもしれない。 そして最初の町から遠く離れた沼地と砂漠を越えることができればラスボスが登場する。</p> <h3>記録</h3> <p>クリア時に以下のデータが記録される。</p> <ul> <li>総クリック数</li> <li>経過時間</li> <li>プレー時間</li> </ul> <blockquote><p>memo: クリアまでのプレー時間は慣れた者で1〜2時間だろうか。 初プレーなら3時間半とか。</p> </blockquote> <p>ゴーストは経験したジョブに応じて若干成長し、そのパラメータは次回プレー時に引き継がれる。 憑依の時間に比例して憑依ポイントも獲得する(男女別)。</p> <h3>再開</h3> <p>ゴースト1体の状態で、 最初に戻る。 レベル等ほとんどすべての情報はリセットされる。</p> <p>2度目以降はゴーストが成長している分だけ、若干有利にゲームを進めることができる。</p> <blockquote><p>memo: ゴーストにはジョブと男女の適正が加算されていくので、 計画的に育てたほうが効率的に戦力が高まる。</p> </blockquote> <p>ゴーストの名前を変更した場合は、その名前も引き継がれる。 ただし自分以外のゴーストは、改めてゴーストクエストを経て仲間にしなければならない。</p> <h3>まとめ</h3> <p>書いているうちにあいまいなところをいくつも洗い出すことができた。</p> <p>戦闘システム、ジョブ、スキルについてはすでに細かくデザインしてあったのだけど、 こうやって頭の中でプレーしてみるところで、流れの部分での不明点や矛盾点を発見することができる。</p> <p>最近はコーディングを始める前に出来る限り頭の中でシステムを詰めちゃう。 導入からクリアに至り、2度目以降ゲームを遊ぶところまでのゲーム性やバランスを決めてしまう。 以前は、深く考えずに実装し始めてゲームを動かしてからまた考える、 なんて方法でやろうとしたこともあったんだけど、 それだとなかなかうまくいかなかった。特に静的なロジックが重要なゲーム(アクションゲームじゃないやつ)の場合はそうのかなと思う。</p> <h3>ラフ</h3> <p>UIデザインのラフを写真にとってアップしておく。 そのうちスキャンしようと思ったままずっと放置だったので。 とりあえずデジタル化しておかないとなくしてしまうから。</p> <p><img src="http://img.f.hatena.ne.jp/images/fotolife/d/dan5ya/20100106/20100106100315.jpg" alt="20100106100315.jpg"></p> 2010-01-06T00:00:00+09:00 テスト http://dgames.jp/dan/permalink/20100105 テスト書き込みテストです。... <h2>テスト</h2> <p>書き込みテストです。</p> 2010-01-05T00:00:00+09:00 2009年まとめ http://dgames.jp/dan/permalink/20091231_00 2009年まとめ今年はいろいろ新しいことに取り組んだ年だった。子供の受験と進学長男が地元サッカークラブに入部コーチとして長男のクラブに入部区リーグに出場している地元サッカーチームに参加(練習だけ)ワールドクライアント作成(JavaScript+Rails+... <h2>2009年まとめ</h2> <p>今年はいろいろ新しいことに取り組んだ年だった。</p> <ul> <li>子供の受験と進学</li> <li>長男が地元サッカークラブに入部</li> <li>コーチとして長男のクラブに入部</li> <li>区リーグに出場している地元サッカーチームに参加(練習だけ)</li> <li>ワールドクライアント作成(JavaScript + Rails + ShootingStar)</li> <li>横へなに参加</li> <li>Macbook購入(初Mac)</li> <li>iPhone購入</li> <li>iPhone開発合宿</li> <li>Lua</li> <li>Bilbo公開</li> </ul> <p>あとたいやき部に参加させてもらった。 これほどいろいろはじめた年はないんじゃないか。</p> <p>サッカー関係は非常にウェイトが大きくて、休日のほとんどは子供とともに練習に参加していた。</p> <p>プログラミング面ではJavaScritpが書けるようになったのは大きな収穫。 今年はLuaを使いたい。</p> <p>iPhone開発は来年以降もっとも力を入れたい。 ただなかなか開発の時間を作れなくて、その点で大きな課題が残っている。</p> <p>またシナリオ担当と進めているMMO開発の着地点にiPhoneを絡めることができないか思案中。 合宿は良かった(合宿でしか開発時間が取れない)。</p> <p>Ruby系のコミュニティ(勉強会やRuby会議)にほとんど参加できなくなってしまったので、 なんとかしたいけどこれは来年も難しそう・・・。</p> <p>その他とにかく家族関係のイベントや雑務が多い。これは年々多くなる一方。</p> <p>2010年もたくさんのことに追われる混沌とした年になりそう。</p> 2009-12-31T00:00:00+09:00 Advent Calendarプラグイン作ったよ! http://dgames.jp/dan/permalink/20091215_00 ところで、みんなBilboのことは知らないよね?BilboはSinatraをベースにしたシンプルなブログシステムでここのブログはBilboで動いているんだよ。今日に備えて気合入れて説明を書いておいたから興味のある人は見てね!ちなみにBilboは以下の手順で... <h2>Advent Calendarプラグイン作ったよ!</h2> <p>(<a href="http://atnd.org/events/2351">Ruby Advent Calendar jp: 2009</a>の15日目! 昨日は<a href="http://d.hatena.ne.jp/m-kawato/20091214/1260754176">id:m-kawato</a>さんでした。 明日は<a href="http://d.hatena.ne.jp/ku-ma-me/20091215">id:ku-ma-me</a>さんです。)</p> <p>Bilboのプラグインとして実装したよ。こんな感じ↓(RSSリーダからだとCSSがあたらないかも)。</p> <div class='adventcalendar'> <link href='http://dgames.jp/bilbo/stylesheets/adventcalendar/adventcalendar.css' rel='stylesheet' type='text/css' /> <div> <h2> Ruby Advent Calendar jp: 2009 </h2> <ul> <li class='opened'> <span class='day'> 1 </span> <a href="http://ujihisa.blogspot.com/2009/11/write-implementation-and-spec-on-same.html">Standards: Write Implementation and Spec on the Same File</a> </li> <li class='opened'> <span class='day'> 2 </span> <a href="http://route477.net/d/?date=20091202">Route 477 - Ruby 1.9ではハッシュをJavaScriptっぽく書けます</a> </li> <li class='opened'> <span class='day'> 3 </span> <a href="http://d.hatena.ne.jp/mrkn/20091203/ruby_self_built_on_windows">Windows で使う Ruby を自分でビルドする方法 - ドレッシングのような</a> </li> <li class='opened'> <span class='day'> 4 </span> <a href="http://d.hatena.ne.jp/authorNari/20091204/1259927618">メモリ破壊の現場を見つけるTips - I am Cruby!</a> </li> <li class='opened'> <span class='day'> 5 </span> <a href="http://jugyo.org/blog/3685">System.Exit - Growl で開発の効率をUP!</a> </li> <li class='opened'> <span class='day'> 6 </span> <a href="http://d.hatena.ne.jp/takkan_m/20091206/1260096018">Ruby1.9に対してできること - takkan_mのNo planな日常</a> </li> <li class='opened'> <span class='day'> 7 </span> <a href="http://d.hatena.ne.jp/seiunsky/20091207/1260143043">irb を快適に使うための Tips</a> </li> <li class='opened'> <span class='day'> 8 </span> <a href="http://d.hatena.ne.jp/repeatedly/20091208/1260280330">Road To RDoc - はてなかよっ!</a> </li> <li class='opened'> <span class='day'> 9 </span> <a href="http://d.hatena.ne.jp/Sixeight/20091209/1260350926">Stringクラスに関するいくつかのTIPS - チナミニ</a> </li> <li class='opened'> <span class='day'> 10 </span> <a href="http://nov.tdiary.net/20091210.html#p01">Railsで簡単にテストを増やす方法が使えなくなった件 - Nov's daily? report(2009-12-10)</a> </li> <li class='opened'> <span class='day'> 11 </span> <a href="http://d.hatena.ne.jp/ohac/20091211/1260503455">dRubyで並列処理</a> </li> <li class='opened'> <span class='day'> 12 </span> <a href="http://d.hatena.ne.jp/willnet/20091212/1260598897">controllerを少しだけスリムにするtips - おもしろWEBサービス開発日記</a> </li> <li class='opened'> <span class='day'> 13 </span> <a href="http://blog.udzura.jp/2009/12/13/switch-your-ruby-on-ubuntu910/">Ruby1.8.7、1.9.1、1.9.2preview1を簡単に切り替える@Ubuntu9.10</a> </li> <li class='opened'> <span class='day'> 14 </span> <a href="http://d.hatena.ne.jp/m-kawato/20091214/1260754176">ハッシュを構造体のように使う</a> </li> <li class='opened'> <span class='day'> 15 </span> <a href="http://dgames.jp/dan/permalink/20091215_00">Advent Calendarプラグイン作ったよ!</a> </li> <li class='opened'> <span class='day'> 16 </span> <a href="http://d.hatena.ne.jp/ku-ma-me/20091215">Ruby とすてきな難読化</a> </li> <li class='opened'> <span class='day'> 17 </span> <a href="http://www.coins.tsukuba.ac.jp/~i021179/blog/20091217#p01">1日に1つ、穴を空ける</a> </li> <li class='opened'> <span class='day'> 18 </span> <a href="http://typo.okkez.net/2009/12/18/ruby-advent-calendar-jp-2009-18th">そろそろるりまを使ってみませんか?</a> </li> <li class='opened'> <span class='day'> 19 </span> <a href="http://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1/">初めての C extension の書き方</a> </li> <li class='opened'> <span class='day'> 20 </span> <a href="http://zunda.tumblr.com/post/291596546/ruby">Rubyでデータを解析する</a> </li> <li class='opened'> <span class='day'> 21 </span> <a href="http://taka.no32.tk/diary/20091221.html#p01">Rubyを256倍わかりやすくデバッグする方法</a> </li> <li class='opened'> <span class='day'> 22 </span> <a href="http://flexfrank.net/diary/20091222.html#p01">ROMAをちょっとだけ手軽に起動する</a> </li> <li class='opened'> <span class='day'> 23 </span> <a href="http://d.hatena.ne.jp/ursm/20091223/1261575772">Haml レシピブック 11の技</a> </li> <li class='opened'> <span class='day'> 24 </span> <a href="http://shoes.shaseki.in/2009/12/ruby-facets-core/">Ruby Facets(Core)でおしゃれRuby!</a> </li> <li class='opened'> <span class='day'> 25 </span> <a href="http://d.hatena.ne.jp/technohippy/20091225#1261697062">Qu'ils mangent de la X'ruby</a> </li> </ul> </div> </div> <p><a href="/dan/adventcalendar/2009">※カレンダー単体のページはこっち</a></p> <p>このカレンダーはBilboのプラグインとして動作するんだけど、 実は純粋なSinatraスクリプトとしてもそのまま動作するようになってるよ。 <a href="http://github.com/dan5/bilbo/blob/master/plugins/testing/adventcalendar.rb">ソースはここ</a>。</p> <pre>gem install sinatra haml wget 'http://github.com/dan5/bilbo/raw/master/plugins/testing/adventcalendar.rb' ruby adventcalendar.rb</pre> <p>上記手順で動くよ。サーバーが起動したら /adventcalendar/2009 にアクセス!</p> <p>テンプレートやBilboプラグイン化のところやATNDページパースしてリンクを引っ張ってくる実装を合わせても40数行しなかくて、Sinatraどんだけっ! (Sinatraについては<a href="http://www.sinatrarb.com/intro-jp.html">公式のREADME</a>がとてもわかりやすいよ!)</p> <h3>おまけ</h3> <p>ところで、みんなBilboのことは知らないよね?</p> <p>BilboはSinatraをベースにしたシンプルなブログシステムで ここのブログはBilboで動いているんだよ。 今日に備えて気合入れて<a href="http://dgames.jp/bilbo/about">説明を書いておいた</a>から興味のある人は見てね!</p> <p>ちなみにBilboは以下の手順でインストール&amp;起動できるよ! (要gemとgit。)</p> <pre>gem install sinatra haml git clone git://github.com/dan5/bilbo.git bilbo cd bilbo ruby setup.rb boot &amp;&amp; cd boot ./server</pre> <p>Bilboユーザ募集!</p> 2009-12-15T00:00:00+09:00 記事更新テスト http://dgames.jp/dan/permalink/20091213_00 記事更新テストテスト。todopaginatelinkの移植コメントの移植RSSのリダイレクトパーマリンク時のイメージへのパス... <h2>記事更新テスト</h2> <p>テスト。</p> <p>todo</p> <ul> <li>paginatelinkの移植</li> <li>コメントの移植</li> <li>RSSのリダイレクト</li> <li>パーマリンク時のイメージへのパス</li> </ul> 2009-12-13T00:00:00+09:00 結合テスト http://dgames.jp/dan/permalink/20091208_00 カポギター元キー事前確認2時間練習マイクメトロノーム欲しい(iPhoneは録音に使うので別に必要)写真や動画をもう少し撮るいつか人前でもできるくらいに、を目標にする月1回くらいで練習。何年も継続したい... <h2>結合テスト</h2> <p>N君と初練習をやってきた。</p> <p>味の素スタジアムの横でフットサルをやったのち、 府中まで出てカラオケへ。</p> <p>屋内で手軽に音を出せる場所となると、 練習用のスタジオかカラオケくらいしか浮かばなかったので、 練習初回ということもあって今回はどこにでもあるカラオケへ。 メンバーは2人。</p> <p>ギターのキーがオリジナルに合わないというトラブルがあったが (結局チューニング方法を間違えていたらしい)、 なんとか「車輪の唄」を弾いてもらえた。 本当はもう何曲かやりたかったのだけど。 カポがなかったのも痛い。</p> <p>練習と言っても「車輪の唄」をギターで2バージョン弾いてもらって(オレは歌)、 それぞれiPhoneで録音するというのに挑戦。 iPhoneのボイスメモで録音してたんだけど、どうしても音が小さくなってしまって、 レベルを合わせるために試行錯誤を繰り返した。 マイクが心配だったけどそこそこの音質で録音できた。 外部のマイクがiPhoneに接続できればいいんだけど……。</p> <p>とりあえず、たどたどしくはあったけど、 一曲を最初から最後まで通して録音するという目標は達成できた。 録音データを聴いた上でふりかえりもやった。 個人的な反省点もたくさんでてきたので、それについてはあとで書く。</p> <p><a href="http://www.youtube.com/watch?v=bfz0mISoTP4">練習の様子(youtube)</a>。 動画はこれしか撮らなかったんだけど、まじめにやったやつも撮影しておけば良かったと反省。 このアカウントでアップするのはどうかなあ。変えるかも。</p> <p>以下ふりかえり。</p> <h3>KEEP</h3> <ul> <li>のど飴</li> <li>2.3時間はちょうど良かった</li> <li>カラオケはウォーミングアップにも使えて便利</li> <li>iPhoneは録音にも曲の確認にも便利。動画撮影までできるし</li> </ul> <h3>PROBLEM</h3> <ul> <li>録音の音割れ</li> <li>元キーチューニング</li> </ul> <h3>TRY</h3> <ul> <li>カポ</li> <li>ギター元キー事前確認</li> <li>2時間練習</li> <li>マイク</li> <li>メトロノーム欲しい(iPhoneは録音に使うので別に必要)</li> <li>写真や動画をもう少し撮る</li> <li>いつか人前でもできるくらいに、を目標にする</li> <li>月1回くらいで練習。何年も継続したい</li> </ul> 2009-12-08T00:00:00+09:00 levelup http://dgames.jp/dan/permalink/20091207_00 levelup左:マップNavBar→戻るTabBar中:メインNavBar右:ログNavBar→戻るメインにTabBarを出すか出さないかで大きく分かれる。出すメリットiPodぽい感じなので定番?トリッキーさはなくなるかも出すデメリット画面が狭くなる... <h2>levelup</h2> <ul> <li>左: マップ<ul> <li>Nav Bar →戻る</li> <li>Tab Bar</li> </ul></li> <li>中: メイン<ul> <li>Nav Bar</li> </ul></li> <li>右: ログ<ul> <li>Nav Bar →戻る</li> </ul></li> </ul> <p>メインにTab Barを出すか出さないかで大きく分かれる。</p> <ul> <li>出すメリット iPodぽい感じなので定番?トリッキーさはなくなるかも</li> <li>出すデメリット 画面が狭くなる</li> </ul> 2009-12-07T00:00:00+09:00 廃盤となったBUMP OF CHICKENの「LAMP」(未開封)が出てきた http://dgames.jp/dan/permalink/20091126_00 廃盤となったBUMPOFCHICKENの「LAMP」(未開封)が出てきたN君に廃盤になったLAMPの存在を教えてもらう。プレミアグッズらしい。それ持ってるかもと思って探してみるとやっぱり出てきた。なんと未開封!8,9年前に当時出ていたBUMPのCDを全部買... <h2>廃盤となったBUMP OF CHICKENの「LAMP」(未開封)が出てきた</h2> <p>N君に廃盤になった <a href="http://www.amazon.co.jp/o/ASIN/B00005F0EI/bilbo-22">LAMP</a> の存在を教えてもらう。 プレミアグッズらしい。</p> <p>それ持ってるかもと思って探してみるとやっぱり出てきた。</p> <p><img src="/dan/images/20091125/bump_lamp.jpg" alt="bump_lamp.jpg"></p> <p>なんと未開封!</p> <p>8,9年前に当時出ていたBUMPのCDを全部買ったような記憶があるんだけど、 これだけずっと埋もれていたらしい。 というわけで、奇跡的に新品同然の状態で残っていたのだ。</p> <p><a href="http://search3.auctions.yahoo.co.jp/jp/search?p=lamp+bump&amp;auccat=2084060020&amp;submit222=%B8%A1%BA%F7">ヤフオク</a> でも中古で定価以上の値段がついているみたい。</p> <div class="amazon"> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bilbo-22&o=9&p=8&l=as1&asins=B00005F0EI&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </div> <p>BUMPはすごく好きだけど、 オレにはコレクションの趣味はないので、 もし大切にしてくれる人がいるなら譲ります。</p> 2009-11-26T00:00:00+09:00