2014年5月31日土曜日

ARFantasy制作過程50



第二章の
実機での通しテスト
各パラメータ調整は全章完了するまでは大まかで
なるべくARシナリオは変えずにアプリ側からできるようにする


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月30日金曜日

ARFantasy制作過程49(追加モンスター)



すでに作ったことのあるモデルをつなげて
テクスチャをベイクしたけど違和感がありすぎる
ライオン部分以外は全部作り直し
下半身は山羊で
一旦山羊の全身作ってから
しかしリグは流用したいのでできれば骨格は合わせる


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月29日木曜日

ARFantasy制作過程48


ボスキャラのいる砦追加
最初に作る章は第二章
第二章のマップには
村、妖精の村、風車小屋、ボスキャラの砦
を配置

かなり後付なストーリーとしては
小人の薬で妖精の村に入れ
妖精の村で手に入れた団扇で風車を動かせる
風車を動かすとリンゴがもらえ
ボスキャラにリンゴを渡すか
ボスキャラと戦うと妖精を救出できる
村には鎧と盾と槍があり拾うことができる
(鎧は6種、盾は6種、武器は10種作ったが
ローカル版ではあまり増やせない
ネット版では増やせるけど作る手間を考えると微妙か)
村では道具屋で矢や回復アイテムを買える
宿屋の店員に話しかけて金を払い鍵をもらい部屋に入りベッドに話しかけると
味方のパラメータが回復

といった感じにした

村のキャラクターは現実の時間が6時から18時までは起きていて
それ以外の時間は話しかけるまで寝ているアニメーションを再生するようにした

時刻受け渡しは
Xcode側では
NSDate *dateTime=[NSDate date];
NSDateFormatter *fmt=[[NSDateFormatter alloc]init];
[fmt setDateFormat:@"yyyMMddHHmm"];
NSArray* argText=[NSArray arrayWithObjects:[fmt stringFromDate:dateTime],nil];
のような感じで現在時刻を取得して
(そのままでGMTでなく各地域の時刻が取得できる)
D'Fusion側ではSETTIMEというコマンドを定義しておき
[mPlayer enqueCommand:@"SETTIME"args:argText]
といった感じで呼び出す

操作中のキャラクターの良心に応じて反応が変わるようにした


各キャラのセリフはD'Fusion側で決め撃たずに
Xcode側に書いておきそれを章の番号とセリフ番号で呼び出すようにした
(ARシナリオを更新しなくてもセリフの修正をできるようにするため
D'Fusion側から章番号とセリフ番号を引数にXcode側の関数を呼び出し
Xcode側から引数に応じたセリフを代入した文字列を引数にして
D'Fusion側で定義したコマンドを実行するという方法
受け渡す文字列は改行もバックスラッシュnでできる


迷い点修正点
リンゴは現在ボスキャラに会話するか
アイテムマーカーを近づけるかすると使用できる
小人の薬はアイテムマーカーを写すと現在選択中のキャラに使用される
(戦闘中に敵キャラを選択して使うと敵が一定時間小さくなる)
といったようにしたがアイテムマーカーを写すという使用方法をどう伝えるか
そもそもアイテムマーカーを写して使用するのがよいか

謎解き的な解き方をするとプレイヤーの良心がプラスされ
ボスキャラを倒してクリアーするとボスキャラの良心分だけプレイヤーの良心がマイナスされる
ようにしたが
中途半端な気もする
というかもう少しストーリー分岐とかとの関連性を一般的に取り扱いたい
戦闘や街中での行動が操作するキャラの良心を変化させ
その良心によってキャラクターの反応が変わり選択肢が変わる
といった部分を
ARとはほぼ無関係なのでやや蛇足な感じもする

キャラクター操作方法は
戦闘中はキャラクター相対座標で十字キーで前進後退左右へ旋回
マップと街では
カメラ上の十字キーのカメラの画面上に設定した中心からのずれの方向のベクトルを現実の空間上
にあるととらえたときのトラッキングオブジェクトからの座標で計算し
キャラクターはそのベクトルのマーカーの平面への射影の方向を向くようにした
つまりカメラとマーカーがどのような位置関係にあっても
現実の十字キーの方向を向くようにした
これが比較的わかりやすい操作だったが
戦闘では後ずさりしながら攻撃したり防御したりできるようにしたかったので
キャラクター相対座標での操作にしてある
しかしこの操作法の違いをどう伝えるか?
とりあえず画面上の十字キーに重ねて操作方法を図示するか


覚書
PCでは見つからず実機で見つかるタイプのバグがある
親子関係のある3Dオブジェクトで
親オブジェクトを先に削除してもPCでは動くことがありデバッグし辛い
しかし何度か同じ動作をするとPCでも落ちることがある


方針
全章共通のセーブデータを決めて
完全にバグを取り除いて
なるべくアセットの差し替えとストーリーの変更を簡単にできるように整備してから
3つコピーし
このタイプで4つの章を作る
その後
主人公が馬やドラゴンに載っているタイプの章を4章作り
その後
各キャラが一人で探索するダンジョンを4つ
これは各キャラを残したまま1章作りそれのコピーを削って
船や潜水艦や馬車や空飛ぶ船などの乗り物を操縦する章を4つ
オープニングとエンディングを作りこみ
最後に余裕があればチュートリアルモードをつける



人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月28日水曜日

ARFantasy制作過程47


団扇のようなアイテムを手に入れて
アイテムマーカーを写すとパーティクルで風が表示されて
風向きに応じて風車が回転するようにした

風車は以前別アプリ向けに作ったものを流用
風車のクラウンギアが中央のギアを回して
中央のギアが左右の石臼を回すというアニメーション

アイテムマーカーの子オブジェクトに風向きというエンティティを追加して
アイテムマーカーの中心と風向きの差のベクトルを
本体マーカーからの座標で計算して
その向きの風車小屋の羽の向きへの射影が
風車小屋のアニメーションのスピードになるように設定した

中で人が歩き回るアニメーションも追加
ストーリーの中では風車を動かすとお礼にアイテムをもらえるという風に使う

人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月27日火曜日

ARFantasy制作過程46



小人の薬を手に入れるとプレイヤーの操作するキャラが小人化し
妖精の村に入れるようになるというシーンを作成

小人化の表現は主人公のエンティティを徐々に1/6のスケールに変化させ
中心に持っていきつつ
トラッキングオブジェクト全体を徐々に6倍に拡大するというもの

一定時間たつと薬の効果が切れて
徐々に主人公は6倍になり背景は1/6になる

衝突範囲は各建物のエンティティの位置を中心にしたときの
全体の親オブジェクトであるworldというエンティティからの座標で設定している
(ここは分かりにくいやり方をしてしまった
エンティティを平行移動するときは問題ないが
拡大や回転をすると
それに合わせて衝突領域を拡大や回転させるようにはしていない


今後の修正点迷い点など
衝突判定や会話判定にはプレイヤーのエンティティからの距離を使っているので
プレイヤーのエンティティが縮小されれば自然に会話や衝突できる範囲も縮小される
通常の大きさの時はほとんど衝突なしになり衝突判定は気にならないが
村のキャラクターたちの
プレイヤーのエンティティからの距離は小さくなってしまうので
通常の大きさの時は反応しないようにする

拡大縮小中に選択中のキャラを変えるとそのキャラが拡大してしまう
これはキャラ変更をできなくするか
キャラが変更されても薬使用中のキャラに効果が出るようにするか?
後者の方がいい気もするけど
各キャラに薬使用中のプロパティを追加する必要があるがそれほどのことか
戦闘で使われる魔法効果のプロパティを流用するか
処理はほとんど重くはならないが他の章では使われない部分を追加することになる
(この辺も初めにもっと練っておくべきだった)
それと全体の拡大縮小や平行移動はどうするか
これは選択中のキャラ中心にもっていくか
そして背景の拡大縮小も各キャラの拡大縮小がされている最中だけするようにするか
それとも背景の拡大率は選択中のキャラの大きさに応じて変化するようにするか
ピンチジェスチャで変更できるというのも分かりにくいのかも
しかし操作中のキャラを見失わないことが重要か

小人の薬の使い方が分かりにくいので手に入れると自動的に使うようにもして
かつアイテムマーカーで表示される薬をキャラクターに近づけるとアニメーションが再生
されて近づけられたキャラクターに効果が表れる
という二通りの使い方をできるようにする


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月26日月曜日

ARFantasy制作過程45(背景)


扉の部分は詳細なモデルを先に作って
それを用いてテクスチャとノーマルを作成

その他の写真をもとに作った繰り返しテクスチャについては
矩形にマルチレゾリューションとディスプレイスを適用
ディスプレイスのテクスチャにそのテクスチャを適用
ディスプレイスをアプライしてスカルプト
マルチレゾリューションのプレビューを0にして
BakeFromMultiresでベイク

この部分はやや手抜き
ディスプレイスで偶然凹凸が思い通りになったけど
テクスチャは参照するだけにして初めからスカルプトした方がいいかも


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月25日日曜日

ARFantasy制作過程44(街シーン)


宿屋の店員に話しかけられてYESと答えると
鍵が借りられて
奥の部屋に入れるようになり
ベッドの前で話すボタンを押すと宿泊できる

道具屋では
買い物ができる

話すボタンを押すと
TALKというコマンドを実行するようにして
プレイヤーの付近のオブジェクトのtalkメソッドを実行
会話でプレイヤーが選択する場合はUIを変化させてYES,NOボタンの表示
グローバル変数のtalkingObjにそのオブジェクトを代入
以下話すボタンをタップしたりYES, NOボタンをタップする
たびにtalkingObjのtalkメソッドが実行される
人物に限らず背景のオブジェクトにもtalkメソッドを定義して
単なる背景の場合は揺らしたり単純なアニメーションの再生をして
効果音を鳴らすようにした

街データについては大まかには
data={{街部品1のクラス名、初期値},
{街部品2のクラス名、初期値},...
}
という形にして街データのコンストラクタで街部品(建物など)のコンストラクタを
for i,v in ipairs(data) do
   townParts[i]=v[1].new(v[2])
end
といった感じで呼び出すようにした
各街部品の部品(建物の内装、外装、扉、小物など)についても同様


覚書
3Dオブジェクトとアニメーションをメンバーに含むクラスのデストラクタでは
まず先にアニメーションをnil
次に3DオブジェクトをdeleteObject
してからnilという順番で


修正、迷い点
動きはプレイヤー相対座標で十字キーの操作にしたがこれはおそらく不採用
マップモードと同様の方がいいかも

壁越しに話せてしまう点はなんとかしたい

仲間のキャラを街ではどうするか?
操作可能にするなら意味があるようにしたいが蛇足な気もする
しかしステータスは見れた方がいい気もする
選択は可能で操作は不可能でステータスは見れるようにするか

後で修正が容易になるよう会話のセリフをアプリ側で変更できるようにした方がいいか

その他細かい3Dモデルと音声の修正
看板のテクスチャ
花壇追加
壁の変更


人気ブログランキングへ
にほんブログ村 デザインブログランキング

ARFantasy制作過程43(背景作りかけ)


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月23日金曜日

ARFantasy制作過程41(戦闘中のステータス)



マップ上の敵に近づいて
戦闘が開始されると
上部のUIに戦闘に入った敵チームのメンバーのアイコンが表示される
ステータスボタンを押してステータスモードでそれらのアイコンをタップすると
その敵キャラが滑らかにマーカーの中心に
平行移動するように戦闘中のシーン全体が平行移動する
味方のキャラを選択しても同様

以下修正点迷い点
ステータスモードでなくても選択時には選択キャラを中心に持って行った方がよいかも
そしてステータスモードのときだけ拡大もするようにして
ステータスモードが終了時には拡大だけ元に戻す
平行移動は基本的には元に戻さないで


人気ブログランキングへ
にほんブログ村 デザインブログランキング

ARFantasy制作過程40(船のシーン)




船はスマートフォンを左右へ傾けると左右へ旋回する
船の章ではマップモードと戦闘モードを分けるのをやめた
海中を泳ぐ敵キャラは一定距離近づくと敵チームのメンバーになり
追いかけてくる
ステータス画面で敵チームを選択すると
敵チームのキャラが拡大される
一定距離はなれると敵チームから外される
映像はiPadでの実機テスト
iPhone5, iPhone5Sなど1136X640ピクセルのディスプレイでは
上部のUIにプレイヤーチームと敵チームを表示した
敵キャラが敵チームのメンバーに加わると
上部のUIにその敵キャラのアイコンが表示されてそのアイコンをタップして選択できるようにした

大砲は大砲ボタンをタップしながら十字キーをドラッグして上下左右に方向を決められる
その際には大砲を操作する騎士のアニメーションのステップが一致するようにした
大砲ボタンを離すと
大砲の方向に初速度をもって放たれ
加速度計で取得した現実の重力加速度の方向に加速度を受ける

重力加速度はカメラ座標系でのベクトルで与えられるので
それをトラッキングオブジェクトの座標系から見たベクトルに変換して使用した

今後の修正、追加、迷い点など
海面の重なり修正
大砲発射時の煙などのパーティクルのエフェクト
砲弾が着水した時の音とアニメーション
パーティクルで雲があった方がいいかも
船の操作方法として碇を降ろしたり帆をたたんだりできるようにする
敵が近づいた時だけアーチャーと魔法使いと仲間のモンスターも戦闘モードに
島などに到着した時上陸できるようにするかは迷い中
敵キャラとして他の舟の追加(幽霊船、海賊船など)
空を飛ぶカモメなど追加
時間帯による変化
(時間帯によって光の強度を変えてみたがアルファの入ったオブジェクトの表示がうまくいかなくなった
海の色合いを変えるか
夕暮れはオレンジで夜は暗くで感じが出せれば)
ゲームオーバーの時のアニメーション
ダメージを受けるごとに船が段階的に壊れるようにするか
そもそも敵のダメージは各キャラに与えるか?
船にダメージを与えるか
しかし船にダメージだと回復アイテムや回復魔法との整合性がなくなる
回復するのに港で修理するようにするか?
そうすると修理のアニメーションも必要か
そもそも舟の章の目的をどうするか?
移動手段、宝探し、敵倒し、ストーリー性、
どういったゲーム性を持たせるか
操作方法はもっと現実的に風をパーティクルで表現して
その風向きと舵の向きで計算するか?
海流などに応じて波も変化させて
しかし現在でも操作し辛いことを考えると却下した方がいいかも


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月22日木曜日

ARFantasy制作過程39(追加コンテンツ)




メッシュはかなり適当
エクスポートの際に三角形分割されてしまうので四角形分割にはこだわらず
時間があれば後でスカルプト

人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月21日水曜日

ARFantasy制作過程38(街のシーン)



マップモードで
街に近づくと街モードに入る

街の定義
なるべく自由にアセットを組み合わせて街を作れるようにしたが
まだ中途半端になっている

街は建物と登場人物からなり
建物は衝突領域、外装、背景、扉、からなる

建物と登場人物のクラスを定義

衝突判定はなるべく軽くしたいのでかなり単純化し
矩形の和集合からなる衝突領域から
矩形の和集合からなる非衝突領域
を引いた形状の領域に操作するキャラクターの前方が入り込むと前進できなくなるという
ものにした

外装は屋根や壁

背景は木の骨組みや棚や窓などの内装とそのアニメーション

扉は
鍵の開いた扉に近づくと扉が開き外装が消えて中身が見える
鍵が開くと非衝突領域を追加する


建物や登場人物の名前の連想配列で各データを定義し
それらのコンストラクタに名前を渡すとそのデータでインスタンスを初期化

登場人物付近で会話ボタンをタップすると
登場人物がマーカーの中心に来るように街が滑らかに拡大と平行移動して会話が表示される
会話が終了すると一旦町の中心がマーカーの中心にきて町全体は縮小表示される
その後はピンチジェスチャーで拡大縮小も可能

会話メソッドでは基本は単にセリフを順番に表示するだけ
YES、NOボタンで対応する必要のある会話は
登場人物ごとにオーバーライドしているが
もう少しましな方法がある気もする

迷った点迷い中の点
街モード戦闘モードでは背景を固定し
十字キーで左右に回転と前進後退というキャラクターの相対座標での操作にし
キャラクターはマップモードでは背景が動き主人公は直接十字キーの方向を向くようにしたが
分かりにくい気もする
十字キーの方向を向くにしてもカメラに相対的にするべきかトラッカーに相対的にするべきか

街モードでは町の住民とも戦えるようにするかも迷った
戦うと良心パラメータが減少するようにして
しかしなんとなく却下

背景に置かれたアイテムは拾えるようにして
良心パラメータを減少させるか

宿屋は店員に話しかけると宿泊するかを訊かれてYesと答えると全員の体力回復にするか
それとも鍵を渡されて部屋の扉を開けてベッドまで行くと
ベッドで休むかというメッセージが表示されてYesと答えると全員の体力が回復にするか
前者の方がわかりやすいが
後者も大して手間はかからない上により宿泊している感じがある

背景の位置やスケールの扱いに迷った
建物データに入れた
背景の位置や大きさという背景そのもののみしかない時には意味をなさないデータは
背景を含むクラスのほうで扱いたいから
建物の一部としての背景の位置や方向や大きさは建物のデータの一部
同様に建物の位置も街のデータの一部

街は建物データと登場人物データからなり
実際の建物オブジェクトの配列は街クラスのメンバでなくグローバル変数にしてしまった
なんとなく人形劇の舞台のように
建物オブジェクトの配列は一つだけしか使わないから
それを操作するのが街データというイメージだったけど
やはり普通に実際の建物オブジェクトの配列も街クラスのメンバにした方がよかったか
街の表示メソッドで表示される直前にコンストラクタ呼び出して
表示終了したらデリートすれば
メモリは今までと大して変わらないが若干わかりやすい気もする
書き直した方がいいかも


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月9日金曜日

ARFantasy制作過程37(船の章)



150KBほどのメッシュのマップ要素を100=10X10枚配置
30体の敵キャラを配置してテスト
iPhone4Sでは加速度計の認識が低下した
iPhone5ではほぼ問題なく動作
動画はPCでのもの

チームというクラスを定義し
プレイヤーチームとエネミーチームというインスタンスを作り
プレイヤーチームには主人公、魔法使い、アーチャー、仲間モンスターをメンバーにして
敵キャラは一定距離近づくとエネミーチームのメンバーになり
UIが変更されてその敵キャラを選択できるようになり
船を追いかけて攻撃してくるようにした

一定距離離れるとエネミーチームから外されて
行動は一旦停止される

船にはアーチャーと魔法使いと仲間のモンスターを載せた
選択すれば弓矢と魔法は使える
選択しない間は自動で行動
命令に応じて敵チームを攻撃するか
何もしない

大砲の操作方法は
砲弾ボタンをタップすると砲弾を詰める3Dアニメーションが開始されて
そのまま十字キーをドラッグすると二つの軸で上下左右に回転
それに合わせて主人公の騎士が大砲を動かしているアニメーションのステップを調整して
騎士が大砲を操作しているように見せた
砲弾ボタンを離すとその角度に大砲が発射され
加速度計で測定された現実の重力加速度を受けて降下する

砲弾は5タイプ用意(属性なし、土<風<火<水)で敵の属性に応じて攻撃力が変わり
敵に当てればダメージを与えるが
クジラやペガサスを撃つと主人公の良心のパラメータが低下

以下どうするかは思案中
追加するのは
宝探し的要素か戦略的要素かストーリー的要素か


人気ブログランキングへ
にほんブログ村 デザインブログランキング



2014年5月8日木曜日

ARFantasy制作過程37(モンスター)







以前作ったライオンのメッシュを流用して各部分の大きさ調整して
テクスチャはりなおしてベイク
アニメーションも流用できるように骨格は変えず
つなぎ目を間違えていくつか残してしまったがARでは見えにくい下部分なのでとりあえずこのまま
アニメーションまでつける

人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月5日月曜日

ARFantasy制作過程36(戦闘中のステータス画面)


戦闘中にステータスボタンをタップすると
各キャラの挙動は一時停止され
選択中のキャラがトラッカーの中心に表示される
その状態で他のキャラを選択するとそのキャラが中心に表示される
もう一度ステータスボタンをタップすると戦闘が再開する

人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月4日日曜日

ARFantasy制作過程35(キャラクターの選択と弓と魔法の説明)


戦闘中にキャラクターを選択すると選択したキャラクターの上空に指カーソルが表示され
そのキャラクターを操作できる
アーチャーは六種の弓矢(通常、土、風、火、水、毒)から選択し
ボタンタップで弓をひき十字キーで上下左右に狙いを定めボタンから指を離すと射る
矢が敵に一定距離近づくと
矢が振動するアニメーションと音の再生がされ敵の矢がオブジェクトの子になり刺さったように見える

敵との属性との組み合わせによってダメージは変化
毒矢が刺さると敵は攻撃のたびに自分の攻撃力と同じだけのダメージを受けるようになる

魔法使いは20種(土、風、火、水、回復それぞれ5種
追尾攻撃、全体攻撃、毒、スピードアップ、スピードダウン、攻撃力アップ、攻撃力ダウンなど)
から選べる
魔法選択ボタンをタップすると使える魔法のボタンが表示され
魔法を選択すると魔方陣が表示され本を開く
魔法実行ボタンをタップすると呪文を唱え始め
タップした時間に応じて球体が拡大し指を離すと実行される
球体の大きさと魔法使いの魔力に応じて効果が大きくなる


人気ブログランキングへ
にほんブログ村 デザインブログランキング

ARFantasy制作過程34(マップと戦闘の命令の説明)

マップ上で敵に遭遇するとそのマップ上の地形に対応した背景での戦闘開始
戦闘では選択中でないキャラクターは主人公の命令(突撃、節約、逃げる、何もしないなど)
に応じて自動で魔法や弓や杖やナイフで攻撃したり逃げたりする


人気ブログランキングへ
にほんブログ村 デザインブログランキング

ARFantasy制作過程33(マップ上のイベントの説明)



マップ上の特定のポイントに到達すると
UIが変更されて選択肢が出る
選択肢によって戦闘が開始したりアイテムを購入したりなどができる


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2014年5月3日土曜日

ARFantasy制作過程32(ステータス画面の説明)



ステータスボタンを押すとステータス画面に遷移
ステータス画面では選択した見方のキャラクター(主人公、射手、魔法使い、仲間モンスター)が拡大表示される
主人公は
鎧、馬鎧、武器、盾の装備の変更ができる
鎧のボタンをタップすると選択可能な鎧が表示されてその中から選ぶと装備が変更される
仲間モンスターは四種類から選ぶことができる


人気ブログランキングへ
にほんブログ村 デザインブログランキング