プロフィール

JaJa

JaJa
ツイニ スマートフォンヲ テニイレタゾ~! ('▽'ノ

...Now Developing
→ちょっと大きいサイズ
ブログ内検索
リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012/04/30▼実践的なプログラムテスト

プログラムの勉強が一区切りしたところで、ちょっと実践的なテストをしておきたいと思いました。
でないと、せっかく書いた仕様書も、絵に描いた餅状態になってしまうので。
あとは、勉強したことを忘れてしまわないうちに、おさらいの意味も込めて。('-';

これまでにWindowsPhoneで基本的な機能(グラフィックを表示したり、操作周りを整備したり)をテストしてきたのですが、今回はこれらを使って、さらに習得したゲームプログラム技法に則って、「操作することで画面が変化する」というゲームの基本的な仕組みをテストしてみようと思います。

今回のテストで作るものは、基本的なメニューシステムです。
実際に今回のゲームに組み込むかどうかは別にして、メニュー画面が作れればそのほかのゲーム部分も、ここで作ったプログラムパーツの組み合わせやちょっとした拡張で作っていけるんじゃないかなーと思ったり。
それくらいメニュー画面には、夢と希望……じゃなくて、ゲームを組み立てる色々な要素が詰まってると思うのです。
甘いかな?……まあいいや、やってみよう!('▽'ノ

とりあえず、以下の手順でメニューシステムを作っていこうかと。

・1.画面フローの設計

・2.画面デザインの設計

・3.画面フローの実装

・4.アセットの組み込み

・5.画面デザインの実装

といった流れです。

今日は手順1の画面フローの設計を行いました。
画面フローは、「どんな操作をすると、画面がどういうふうに変化するか」を仕様書の形にしたものです。
自分の場合は、画面を四角、操作は画面と画面を繋ぐ矢印を使って、流れ図のように描いています。
リヴィエラの頃はWordやPageMakerなどで作ってたりしたのですが、ユグドラ以降はDynamicDrawというCADにも使えるドローイングソフトを使っています。
このソフトは抜群に使いやすくて、画面フローの設計作業には手放せないツールになっています。作者様には感謝感謝です!('▽'ノ

今回のメニューでは、以下の操作をフローに盛り込んでみます。
・リストを選択できる。
・リストを上下にスクロールできる。
・選択中のリストについて、情報を出したり消したりできる。
・選択中のリストに対して、コマンドを実行できる。

スクロールはドラッグでも、フリックでもできるようにしてみたいと思います。スマホっぽい!
情報を出したり消したり……は、ゲーム上のイメージでは、選択中のユニットの詳細ステータスを表示させたり、消したりみたいな感じかな。
コマンドを実行……は、ゲーム上のイメージでは、選択中のユニットを出撃させる、選択中のアイテムを購入する的な感じ。

本当に基本的なメニューですが、だいたい20画面状態くらいのフローになりました。

画面フロー自体の記述方法については、「もっと効率よく、もっと分かりやすくできないものかなー」と、いまだに試行錯誤しています。
改善の名のもとに、毎回、記述ルールがちょっとずつ見直してたり。。。
大学でオートマトンの講義中にヒントを見つけて以来、ずっとこの書式を続けているのですが……もっと決定打となる記述法を見つけたいところ!('□'ノ

20120430.jpg
▲色々試行錯誤して、現在の記述ルールver。TとかFってのはタッチやフリックの略号です。助詞も省いて、なるべく短いテキストに。
スポンサーサイト

2012/04/29▼プログラムの勉強

仕様書が全体の半分くらい書き上がった感じなので、この仕様内容をゲームとして実現するための準備も進めないといけません。
まあ、つまりはプログラムのお勉強なんだけど……('-';

個別のプログラム技法(?)……例えば、文字列の表示の方法だったり、png画像の表示の方法だったり、BGMの鳴らし方だったりってのは、マイクロソフトが提供してくれてるマニュアルを読んだりすれば、それなりに分かったりもします。

ですが、「ゲームをプログラムするっていっても、どこから手をつけたら良いか分からん!」とか、「どういった構成(作り方)でプログラムを組めば、ゲーム然とした動作のものになるのか?」といった、“そもそも”の部分がよく分からない自分みたいなのは、まあ勉強するしかないと!
スタートからゴールまでの道筋が分からないと、走るのをいくら頑張ってもゴールに辿り着けないので。。。

そんな感じで、これまで日々ちょこちょこと読み進めてた本があるのですが、今日まる一日(正確には日を跨いだけど)かけて一気に読み終えました。
これまでの読書ペースだと、先に仕様書作業が終わってしまいそうな感じだったので……('-';

読んでいたのは、ゲームプログラマになる前に覚えておきたい技術という本です。
や、別に職業ゲームプログラマーを目指している訳ではないのですが、趣味でゲームを作ろうとする場合でも「とっかかり」や「全体像」といった、まず知りたい部分が順を追って書いてあるので、「ゲームを作りたいけど、さてどうやって?」みたいな企画寄りな人間については、ありがたい一冊です!
いまさら紹介するまでもない名著ですね。

セガの新人教育カリキュラムが元になった内容らしく、分かりやすく、なじみやすい書き口で書いてあるので、技術書のわりには、読み物としてもすら~と読んでいけました。
800ページ超とボリュームは結構あるけど。('△';

自分の場合、ある程度分からない箇所があっても、そのまま全てを通して読むことを心がけました。
以下の2点を自分の中で、何とかしておきたかったからです。
・全体のプログラム制作作業の流れを掴みたい。
・分かるところと分からないところをはっきりしておきたい。
 (何が分かっていないのかを把握しておきたい)

分からないところは、必要になったときに調べれば良いと思うので、基本ほったらかしです。('-';
プログラムの勉強は大切だけど(でも、なるべく勉強はしたくないので;)、自分のゲームに必要な部分だけなんとかしようという受験勉強スタンスで。
だって、勉強に時間かけてたら、ゲーム作る時間がなくなるし!('△'ノ(言い訳)

20120429.jpg
▲「人間はできることは必ずやる生き物である。やってほしくないことをやらせないためには、出来なくしてしまうのが一番早い。」とか、いちいち文章が面白い。

2012/04/28▼仕様書の作成の続き

今日はゲームの華、戦闘部分の仕様作成です。
戦闘部分は色々決めなくてはいけないことがたくさんあって大変ですが、とてもウキウキする作業でもあります!('▽'*
そんなわけで、今日は至福の一日でした。

今日書き終えたのは、以下の項目。
・バトルの概要
・バトルの進行
・バトルでプレイヤーができること
・攻撃
・敵の攻撃

攻撃に関しては……例えば、ボスの必殺攻撃など、個別に仕様を決めなければならない部分が残っていたりします。
これらは例外処理としてひとまとめにして、データ作成のタイミングで併せて作業しようかなと。

そのほうが、「こいつはパラメータ的には弱っちいけど、代わりにこんなエグイ必殺技を持ってることにしよ!」とか、一緒に効率良く考えられそうだと思ったからです。
まあ、こんな感じで好き勝手に進められるのが、個人制作の楽しい所ですね('▽'ノ

20120428.jpg
▲戦闘部分は計算式や判定フローなども多く、見づらくなりがち……見易い書き方をいっそう意識しないと。

2012/04/27▼仕様書の作成開始

今日から仕様書の各項目の中身を考え、書いていく作業です。
すでに全体の項目出しを終えているので、やりやすい所から書いていけばOKなんだけど、基本的には上から書いていって、考えに行き詰ったら書きやすい項目まで飛ばすという作戦。

そんなわけで、ただひたすらモリモリ考えて、ゴリゴリ書く作業に終始。
一人でゲームを作る場合にも仕様書は大切な備忘録となるので、頭の中にあって分かっていることでも、面倒だけど……なるべく全部書き出すようにします。

今日は以下の部分について、仕様の作成を行いました。('▽'
・ゲーム開始
・ゲームの流れ
・ワールドマップ
・出撃オーダー選択

明日はバトル部分に入ります。

20120427.jpg
▲ひたすらテキストエディタに向かって作業! 作業!

2012/04/26▼フリック処理を追加

仕様書の項目出しを一通り終えたところで、必要そうな画面やシステムがもわ~んと頭の中に浮かんできました。
その中の1つに、ユニット出撃順序編成画面なるものがあります。
手持ちのユニットの出撃順序を決める画面なのですが、ユニットが増えるとおそらく1画面では表示しきれなくて、ユニットのリストをスクロールさせる必要が出てきます。
このスクロールの実現方法についてふと考えてみたのでした。
・従来のゲーム機だと方向ボタンを押したり、押しっぱなしにしてスクロールさせる。
・PCだとスクロールバーをドラッグしたり、その上下をクリックしてスクロールさせる。

じゃあ、WindowsPhoneではどうするのか……ということなんだけど、どこか(場所失念;)で見かけたガイドラインのドキュメントには、従来のようなスクロールバーでの操作ではなく、パンやフリックの使用を推奨すると書かれていました。
必須事項ではないみたいで、スクロールバーの操作だと小さなパッチパネル上では使いにくいから、スマホっぽくパンやフリックを使って実装してね~的なニュアンスだった気がします。
自分も当初はスクロールバーをドラッグして操作することを考えていたのですが、これに従ってフリック処理を実装することにしました。

さて、フリック処理では、フリックの強さ(速さ)みたいなのを表すパラメータが必要になるのですが、まずこれが具体的になんの値なのかさっぱり分かりませんでした。('-';
色々調べた結果、ここによると、どうやら1秒間あたりの移動ピクセル量で表されていることが分かりました!
んで、早速フリック処理を作り始めたのですが、この値(内部処理的にはDelta値というらしい)をうまく計測することができず……。
少しの間、格闘してみたりしてたのですが、結局Delta値に関してはReadGesture関数を使って取得することにしました。
この値がうまく取れないと、フリック操作を適切に処理することができないので。

そんな感じで、フリック処理を操作周りに追加するの完了。

20120426.jpg
▲コードオブプリンセスについてきたミニアルバム。ゲームは未だプレイできていないけど、曲は結構好き!('▽'

2012/04/25▼仕様の項目出し

ここ数日は操作周りの変更にかかりっきりでしたが、今日から企画作業の再開です。

前回はゲームのアイディアから基本システムを組み立てるとこまでやったので、それらを実際のゲームとして実現するための仕様書作りに入ろうかと。
まあ、一人で制作するぶんには仕様書なんか無くてもOKだったりするのだけど、時間が経つと忘れたり、思い違いで作ってしまったりする危険もあるので、ドキュメントで残しておいたほうが吉。
実際に仕様書を書く作業を行うことで、ゲーム全体を改めて見渡せるので、いろいろメリットもあると思うし。
急がば回れってことで!('▽'ノ

自分の場合、仕様書作成のはじめに、仕様の項目出しというのをやります。
仕様書にどんな事を書くかをリスト状に書き出していく作業で、仕様書作成の準備となるものです。
なんでもない単純作業のようですが、ゲーム全体を考えながら出さないといけないので、かなり集中力の必要な作業だったりします。
絵を描くときのラフ描きみたいなものかなあ。

項目自体はもちろん、あとから追加したり、削除したり、変更したりできるし、実際にしたりもするけど……「ここに書かれていないことはゲームに入らないぞ!」という気持ちで、抜けなく書き出すつもりでリストアップします。
ゲーム全体を俯瞰するように考えないとできない作業なので大変ですが、逆に言うと、このリストアップ作業が終わると、自分の頭の中ではゲーム全体がかなり把握できている状態に!('▽'=3
なので、たかが項目出しですが、それなりに気合いを入れてやらないといけません。

ちなみに、ここでリストアップした項目は、そのまま仕様書内の見出しとして使います。('-'ノ
仕様書作成にはViVi(ver.2のほう)というテキストエディタを使っているのですが、リストアップした項目はアウトライン解析&表示機能というのを活用して、見出しとして機能するようにしています。便利!

20120425.jpg
▲項目がツリー状に構成され、展開したり、折り畳んだりできます。項目をダブルクリックすると、その部分にジャンプしてくれたりもするよ。

2012/04/24▼操作周りはひと区切り

ピンチ操作の実装を行いました。
2箇所のタッチを使ったジェスチャなので少し面倒でしたが、なんとか。
ピンチの処理については、こことか参考になりました!

フリック操作の実装は今回見送り。
今回のゲームではたぶん使わないので……必要になったら、そのときに作ろうかと思います('-'ノ

ロジック的には4箇所のタッチが並列的に処理できるようにしてあるのですが、どうも、3箇所以上同時にタッチしている状態で操作を続けていると、突然、全てのタッチが開放されたとみなされてしまう現象が発生する謎のバグがWindowsPhoneのシステム側にあるっぽい(?)感じです。
(内部処理的には、全てのTouchLocationState値にReleasedが返ってきてしまうというもの)

テストプレイしていて、デバッグ表示を追っていても、なんか時々おかしい挙動があるなあー……とは思ってたのですが。。。
海外のフォーラムにもそれっぽい事を言っているような記事があったり。
まあ、2箇所までのタッチ操作では発生しないので、普通にシングルタッチで遊んだり、ゲーム機のコントローラのように持って2本の親指で操作するようなゲームだったら、この事象は回避できそうです。

そんなわけで、操作周りはひと区切りにしようかと。
予想より手間取りすぎた!('△';

20120424.jpg
▲相変わらず面白味に欠けるスナップですが、ご容赦をば。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。