第2回ふつうのHaskellプログラミング読書会に行ってきた
http://groups.google.co.jp/group/yhprogramming/web/haskell-2
事前学習不要という位置づけなので、前回のあと予習も復習も一切やらずに参加。
前回同様テーブルをみんなで囲んで3,4章を音読。
月に一度の勉強だけど着実にHaskellが身に付いてきている。
そろそろなんか書いてみたい気がしてきた。
RubyでMMORPGを作る過程を記録する日記。
第2回ふつうのHaskellプログラミング読書会に行ってきた
http://groups.google.co.jp/group/yhprogramming/web/haskell-2
事前学習不要という位置づけなので、前回のあと予習も復習も一切やらずに参加。
前回同様テーブルをみんなで囲んで3,4章を音読。
月に一度の勉強だけど着実にHaskellが身に付いてきている。
そろそろなんか書いてみたい気がしてきた。
permalinktwitterで返信する replies(0)iPhone RPG開発ログ10(ログ画面の必要性)
ダメージ値とかそういったテキストログはメイン画面に一切表示しないので、別途ログ表示用の画面を設けようと思ってる。
さしあたって戦闘後に獲得したアイテムの名前とレベルアップ時のステータス変化の表示をログ画面に任せてしまうかどうかを使うかどうかを悩んでいる。 この辺の主要な内容についてまでログ画面に任せてしまうのか、それともログはあくまでおまけという位置づけにするのか。
これはUIとゲームデザインの問題だ。 UIの問題は開発の初期に解決することが難しい。 なので、後々の変更のしやすさを含めた実装上の都合を大きな判断基準にすべきだ。
どのみちログ画面を用意するのであれば、とりあえず何でもログに書き出すという方針でいいか。 ログ画面を開くボタンをどう配置するかはログ画面の位置づけによって変わってくるが、これはすぐには決められない。 しかし、これは基本UIなので、この決断によってゲームデザインが大きく変わりうる。
と書いてみたところで、結局とりあえずどうすべきかの判断さえもつかないので、実装上の都合を最優先にする方向。
ログ画面を実装した。 テキスト表示に関しては、UIWebViewを用いれば手軽にHTMLによる多彩な表現を利用できることに気がついた。 これは楽だ。
todo
- エフォクトをログ画面でも使えるように
- モンスターのHPをプログレスバーで可視化
- ○ログ画面
- ○ログ画面についてその必要性を考える
- レベルアップ時のパラメータ表示→ログを見る
- lua => C のAPIでboolを扱えるように
- キャラクター画面
- キャラの名前変更
iPhone RPG開発ログ9(宝箱と予告のアイデア)
次は敵を倒したときの表示と操作をどうするか。 宝箱表示も考慮したい。
敵にとどめを刺したとき、その瞬間にレベルが上がるのか、ワンテンポ置いてレベルが上がるのか。 ドラクエに例えるなら「スライムをたおした!」と文字を出すと同時にレベルアップ音を鳴らすのか、それとも「スライムをたおした!」のあと一度ボタン押すとレベルアップ音が鳴るのかの違い。
宝箱の出現について。 原案には書かなかったけど、Wiz的な宝箱システムとすこぶる相性がいいことに気づいた。 古典的な宝箱システムに通過予告的な予兆システムを追加すると良いんじゃなかろうか。
宝箱専用画面を描くか。
- 宝箱クリックで「(罠の種類を)調べる」
- ときおり予告を「エフェクト」で表示
- 判明時キャラクタのカットインを表示→鑑定者を罠名と一緒に表示
- 鑑定者がアティブキャラクターとなって罠を解除する
宝箱が出現する場合と出現しない場合を実装した。画面の切り替わりのタイミングにブラックインをはさむ。
メイン画面での敵出現→戦闘突入→戦闘終了→宝箱出現→フィールドの流れがかなり完成に近づいた。
HP回復についての考察
- 応急処置 ... 戦闘中の毎ターン回復
- 治療 ... 戦闘終了時全回復
- 回復アイテム ... 常時任意キャラを回復
todo
- レベルアップ時のパラメータ表示→ログを見る
- キャラクター画面
- キャラの名前変更
iPhone RPG開発ログ8
ログが15に達するまでは淡々と開発作業を続けたい。
レベルアップを実装。 レベルアップや敵を倒したときに画面にエフェクトを出しているのだが、敵を倒すと同時にレベルアップすることがあるので、 エフェクトをキューで管理することにした。Lua側で制御すればたいしたことではない。
気がつくとLuaスクリプトのモデル部分が300行を超えている。1000行に収まるんじゃないかと思っていたけどどうかな。ここまでの感じLuaのコードはRubyの2倍くらいの長さになりそう。しかし、用途にもよるし、LuaはRubyのように汎用的には使えないのでこの比較は意味ないか。
フリーズのタイミングを延々と調整。 レベルアップエフェクトの複数回表示に対応。
次は敵を倒したときの表示と操作をどうするか。 宝箱表示が欲しい。
todo
- ○レベルアップ
- キャラクター画面
- ○性別を表すパラメータとその変数名
- キャラの名前変更
iPhone RPG開発ログ7
フィールド表示→エンカウント表示→モンスター表示→フィールド表示……
と切り替えてみたが微妙。 フリーズ演出やエフェクトを入れないといまいちだ。
ボタンを一定時間無効にするにはどうしたいいだろう。 画面の上を別の画像で覆ってしまえばいいか。
画像でスクリーンを覆ってフリーズ時間を作る作戦がうまく行った。
ところでレベルアップのタイミングはいつだろう。 このゲームは攻撃するだけで経験値がアップするので、経験値だけがレベルアップの条件なら戦闘中にレベルアップしてしまう。
todo
- ○ステータスバーを黒くする
- ○Win表示
- ○エンカウント時のフリーズ
- 性別を表すパラメータとその変数名
- ○メインパネルにキャラ以外の画像を表示
- キャラの名前変更