ねこバタ会議

スマホアプリ制作に関するブログです。

『タップ・キングダム』(旧タイトル『タップ!タップ!ファラウェイ王国 Tap!  Tap! Faraway Kingdom』)は、ドット絵キャラの可愛いクリッカーRPGです。
現時点では日本語未対応ということもあって敬遠されたり、バランス上の問題で投げ出してしまう方が多いようなので、紹介を兼ねて簡単な解説記事を書かせていただくことにしました。
特に「英語でわけわからない」という方や、「やってみたけど、タップばかりで仲間が役立たず」という方にご覧いただければと思います。
なお、この解説はあくまでも一ファンによるものであり、公式の表現と異なったり、不正確な情報を含む可能性がありますm(_ _)m

iOS / Android版ともに日本語に対応されました。
翻訳は私が協力していますが、ゲーム内での表記と記事中の表記は異なる部分があります。

タップ・キングダムのチュートリアル画像(日本語)
タップ・キングダムのイベント画像(日本語)

image0

Tap! Tap! Faraway Kingdomってどんなゲーム?
Tap! Tap! Faraway Kingdomは、クリッカータイプのRPGです。
ひたすら敵を倒し、仲間とともにダンジョンを潜っていくゲームで、登場人物やステージ等はFaraway Kingdom(日本ではポケットキングダムとして提供されていましたが、すでにサービス終了しています)と共通のものとなっています。
システム的にはTap Titansにとても似ていますが、装備ドロップや仲間の装備チェンジ等独自要素も加えられており、プレイ時の印象はかなり異なります。
キャラクタが可愛らしく、見ているだけでも楽しめるゲームに仕上がっています。
また、このゲームはスタンドアロンで動作するので、ネットワークに繋がなくてもゲームを楽しむことができます(課金アイテムの購入や動画広告を見ることはできなくなりますが)。
image1

ストーリー
「王国の宝物(キューブ)がブラックドラゴンに盗まれて、お姫様は怒り狂ってしまいました。お姫様の命令により、ドラゴンを倒してキューブを取り戻すため、勇者がダンジョンに挑むことになったのでした」
という感じですね。
なお、英語版だとKnight(騎士)となっていますが、韓国語版では勇者となっているため、この解説でも勇者として扱います。
image2

ゲームの進め方
画面のどこかをタップすると、勇者が攻撃します。
敵を倒すと得られるお金を使ってレベルアップしたり傭兵を雇ったりしながら、より深い階層を目指します。
宝箱を落とすトレジャードワーフが出現したり、各階層のボスを倒すことで特殊効果のついた装備がドロップすることもあります。
階層が進むと敵が強くなり進軍が難しくなりますが、Withdraw(撤退)することにより、レリックや傭兵の装備をゲットしてより強い状態でやり直すことができます。
image5


勇者と装備
勇者はお金で強化することができ、一定レベルまで上げるとアクティブスキルを習得することができます。 また、各階層でボスを倒すと時々装備をドロップします。
装備にはレアリティ(エピック、レア、ノーマル)が設定されており、同レアリティのものでも効果が異なります。
また、エピックには特別な効果が設定されています。この効果は後述するレリックと同様のもので、ゲームを進める上で役に立つので、エピック装備は分解しない方がいいと思います。
なお、装備欄はスクロールできるため、12個以上所持することができます。
余った装備は分解することでお金やダイヤを手に入れることができます。

image6

基本的な効果は以下の通りです。
Mercenary DPS傭兵のDPS(秒ごとのダメージ)アップ
Tap DMGタップダメージアップ
Critical Chanceクリティカル率アップ
Critical Multiplierクリティカル時のダメージ増加量
Critical Total Gold Multiplierゴールド獲得増加量

また、様々な実績を達成することにより、DPSボーナスを獲得することができます。
アクティブスキル
勇者が使用できるアクティブスキルは6種類あります。各スキルの説明は1レベルの時のものです。

Summon Shadow影の召喚:30秒間、20回/秒で攻撃する影を召喚します
Power Boostパワー増加:30秒間、すべての傭兵のDPSを100%増加します
Point Attack集中攻撃:30秒間、勇者のクリティカル率を30%増加し、クリティカルダメージを150%増加します
Golden Timeゴールデンタイム:30秒間、モンスターを倒した時に得られるお金を500%増加します
Holy Power聖なる力:30秒間、勇者のタップダメージを100%増加します
Fast Castingファストキャスト:30秒間、すべての傭兵の攻撃速度を100%増加します

スキルは画面下部にあるボタンから使用できますが、トレジャードワーフの宝物から使用できる場合もあります。
image7

Withdraw(撤退)
勇者が500レベルに達するとWithdraw(撤退)が出来るようになります。
撤退すると最初からやり直しになる代わりに、キューブと傭兵の装備をお姫様からもらうことができます。
キューブを使いレリックを獲得することで勇者や仲間が強化され、より深い階まで潜れるようになります。

撤退時に獲得できるキューブは到達階数と、勇者・傭兵の合計レベルによって変化します。
また、キューブガーディアンから得たキューブジェム(キューブの原石)がキューブに交換されます(むしろこちらがメインの獲得方法になると思います)。

image8

・撤退によりリセットされるもの
お金、レベル、スキル、傭兵、傭兵のレベル、傭兵のスキル、ダンジョン階層

・持ち越しできるもの
装備、傭兵の装備、妖精の祝福、ダイヤ、キューブ、レリック
image16

傭兵
お金を出して傭兵を雇うことが出来ます。傭兵は一定間隔で自動的に攻撃をおこないます。
また、傭兵にはそれぞれスキルが設定されています。
勇者のスキルとは異なり、傭兵のスキルはすべてパッシブスキルで、自動的に効果を発揮します。

傭兵のスキルには以下のようなものがあります。
Soaring Strength力の高揚:その傭兵自身のDPSアップ
Moral Booster士気高揚:すべての傭兵のDPSアップ
Weapon of Justice正義の武器:タップダメージをアップ
Reinforcement援軍:すべての傭兵のDPSに応じて、タップダメージをアップ
Concentration精神集中:タップ時のクリティカル率アップ
Fancy Punto多彩な攻撃:タップ時のクリティカルダメージアップ
Indomitable Will不屈の意志:ボスに対するダメージアップ
Pick Pocketスリ:モンスターのドロップ金額アップ
Golden Chicken Sexer金の鶏の養鶏家:金の卵から得られる金額アップ

写真 2015-12-24 8 35 24

傭兵の装備
一回撤退する毎に、お姫様から傭兵の装備をもらうことができます。装備は上から順番にもらえます。
装備はそれぞれ効果が設定されており、また装備できる傭兵が決まっているため、取得した装備を別の傭兵に着けるということはできません。
また、装備一つにつきEquip Bonus(装備獲得ボーナス)が加算されDPSがアップします。傭兵一人分をコンプリートするとEquip Completion Bonus(装備コンプリートボーナス)として別途ボーナスが加算されます。
装備はコンプリート後の再コンプリート等はありません。
また、取得した装備はダイヤを使って強化することができます(+5まで)。

傭兵の装備の効果には以下のようなものがあります(装備の種類が多いため、スキル効果のみ書きます)

・すべての傭兵のDPSアップ(常時発動)

・この傭兵の攻撃時に確率で発動
すべての傭兵のDPSがアップ
モンスターに対するダメージアップ(継続)
モンスターに対して大きなダメージ(一発)
モンスター自身のHPから割合でダメージ(ボスにはダメージ半減)
すべての傭兵の攻撃時にモンスターのドロップ金額の一定割合がドロップ(緑のコイン)
タップダメージアップ
クリティカル率アップ
クリティカルダメージアップ
すべてのスキルのクール時間減少

・モンスターを倒した時に確率で発動
すべての傭兵のDPSがアップ
すべての傭兵の攻撃時にモンスターのドロップ金額の一定%がドロップ
タップダメージアップ
クリティカル率アップ
クリティカルダメージアップ
すべてのスキルのクール時間減少

image9

妖精の祝福
ボスを倒した場合、装備をドロップする以外に妖精を救出することがあります。
助け出された妖精は、傭兵の一人に祝福を授けてくれ、祝福された傭兵はDPSボーナスを獲得します。
複数回祝福を受けた場合、ボーナスの効果は加算されていきます。
image15

レリック
撤退時に獲得できるキューブを使って、レリックを購入することができます。
レリックにはレベルがありキューブを使用して強化することができます。
レリックショップの品物は一定時間経過またはダイヤを使用することで更新することができます。
レリックの購入にかかるキューブの数は、レリックを一つ買う毎に上がっていきます。
レリックは売却してキューブを再獲得することもできます(全てのキューブが戻ってくるわけではありません)。
ただし、売却した場合でも、一度上がった購入費用は下がらないのでご注意ください。

各レリックの効果は以下のとおりです。
は序盤の獲得にオススメのレリックです。

Orb of Strength力のオーブ:タップダメージアップ
Commander's Totem指揮官のトーテム:すべての傭兵のDPSアップ
Dagger of Eviscerate解体のダガー:クリティカル率アップ
Mace of Aggravation傷つけのメイス:クリティカルダメージアップ

Hand of Midasミダス王の手:モンスターのドロップ金額アップ
Lucky Golden Cross幸運の金の十字架:モンスターが10倍のお金(赤いコイン)を落とす確率が増加
Golden Employment Contract金の雇用契約書:傭兵の雇用金額の減少
Golden Salary Contract金の給与契約書:撤退時の獲得キューブ数増加(キューブジェム変換分には適用されないので注意)
Globe of Robbery強奪の手袋:キューブガーディアンから獲得できるキューブジェムの増加
Hermit's Rope隠者のロープ:キューブガーディアンの出現率アップ
Golden Goose金のガチョウ:金の卵の出現率アップ
Kitchen Knife of Greedy食いしん坊のキッチンナイフ:金の卵から獲得できるゴールドを増加
Mask of Terror恐怖の仮面:階層の敵の数を減少
Inspector's Token監査官の証:オフライン時の獲得金額をアップ
Sealed Stone of Souls魂の封印石:ボスのHPを減少
Infinite Hourglass無限の砂時計:ボス戦闘時の時間を延長

Book of Shadow影の書:Summon Shadowの効果時間延長
Book of Power力の書:Power Boostの効果時間延長
Book of Agility機敏の書:Point Attackの効果時間延長
Book of Gold金の書:Golden Timeの効果時間延長
Book of Vitality体力の書:Holy Powerの効果時間延長
Book of Speed素速さの書:Fast Castingの効果時間延長

Scroll of Shadow影の巻物:Summon Shadowのクール時間短縮
Scroll of Power力の巻物:Power Boostのクール時間短縮
Scroll of Agility機敏の巻物:Point Attackのクール時間短縮
Scroll of Gold金の巻物:Golden Timeのクール時間短縮
Scroll of Vitality体力の巻物:Holy Powerのクール時間短縮
Scroll of Speed素速さの巻物:Fast Castingのクール時間短縮

image10

ショップ
ショップではダイヤを使用してゲームをスムーズに進めるためのアイテムを購入したり、ダイヤを購入することができます。
ダイヤは課金で購入する以外にも、トレジャードワーフの宝箱(1個または動画広告で5個)、装備の分解(リサイクル)などで獲得することができます。

ショップアイテムは以下のとおりです。
Millitary Procurement軍資金:ダイヤと引き換えにゴールドを獲得
Virtual Withdrawalバーチャル撤退:最大到達階数の記録に基づいた仮の撤退をおこない、報酬(キューブと傭兵の装備)を獲得します。現在のプレイ状態(到達フロア、レベル等)はそのまま継続されます
Auto Fingerオートフィンガー:5分間、勇者が30回/秒で攻撃します。画面に指を置いている間のみ有効です。
Deadly Strike即死攻撃:戦闘相手となっているモンスターを即死させます。

序盤の攻略法(300階程度まで)
このゲームは、初回の50階以降が一番キツいと思います。
そこはひたすらタップで乗り切りましょう。
または、放置時(オフライン時)の金額が割と高めなので、しばらく放置して強化しつつスキルを使って乗り切るのもおすすめです。
装備のドロップ率が最初は低めに感じるかもしれませんが、これは数百回階を周回することを前提に作られているからですね。

100階毎にドラゴンが出現し(初回到達時のみ)、ドラゴンを倒すとエピック装備とキューブを獲得できるので、できれば100階まで進めてからWithdrawするのがいいのですが、とにかくキツいという場合は、いったん撤退してしまって強化してからやり直すのも手です。おそらく初めての撤退は80階付近で出来ると思います。
撤退する毎に傭兵の装備獲得によるDPSボーナスが入るため、最初のうちは撤退するだけでもかなり楽になります。

撤退時に最優先でとっておきたいレリックは、Commander's Totemです。
Commander's Totemはいくら強化しても、レベルアップに必要なキューブの数が変わらずに1のままなので、余ったキューブをすべてつぎ込むことで全体の攻撃力が底上げされ、格段に楽になります。
このゲームのレリックは取得するごとに次のレリックの取得価格が上がる仕組みのため、なるべく早めに取っておきたいところです。
その他のレリックは好みで取得して構いませんが、基本的に撤退して装備とレリックを取得して強化というのを繰り返す仕組みなので、キューブジェム獲得数アップとキューブガーディアン出現率アップをとっておくと楽になると思います。
image11

初回時には仲間があまり使い物にならず、勇者のタップ攻撃に頼ることになりますが、レリックを強化すると仲間の重要性が格段にアップしていきます。
image12

最後に
どちらかというと英語が分からない人のための部分が多いため、硬めの記事となってしまいました。
最初に書いた通り、この記事の内容は公式なものではなく、あくまでも一ファンの独自見解によるものです。
記事の内容にご質問がある場合は、Twitter(@nekobata_kaigi)でご連絡いただければと思います(コメントでも結構ですが、コメントは反応が遅くなります)。
とても可愛くてよく出来たゲームなので、もしこの記事で少しでも興味を持っていただいて、お楽しみいただければ幸いです(´・∀・)ノ
image14

※記事タイトルには5.2と入れていますが、5.1でも起きるようですし、そもそもUnity 5以降の問題かもわかりません。

おはようございます。

せっかくNexus 5を購入したので、Androidで快適に操作できるようにしようと思ってCanvas設定などをいじっていたら、オブジェクトをタップできないという事態に…(;´Д`)

コンソールには以下のようにInvalid AABB inAABBという、見たことがないエラーが出ています。

invalid_aabb

設定を変更する前の状態に戻してみましたが、エラーは変わらず。

色々調べてみると、どうやらUnityのバグらしく、対処方法も状況に応じて変わるようです。
Unityの再起動またはPCの再起動で直る場合もあるとのことで試してみましたが、再起動後も発生したままでした。

これは困ったと思っていたところ、以下のページがヒットしました。

Fixing Invalid AABB error : plyoung forum

書いてある内容はあまりよくわかりませんが、スクロールバーを作り直せ、みたいな感じの文が見えますね。
ということで、元々あったスクロールバーをデリートして、新しくスクロールバーをつくってアタッチし直したところ、正常に動作するようになりました。

スクロールビューを割と多く用意していたので 、全部のスクロールバーを削除して修正するのは面倒ですが、背に腹は代えられませんね(^_^;)

なお、先に書いた通り状況によって変わるので、「今回の場合は」 スクロールバーが原因となっていたものと思われます。
スクロールバーをアタッチし直せば解決するよというものではありませんで、ご注意下さいm(_ _)m 

久しぶりの更新となります。
今回はUnityで直面した問題について書いていこうと思います。

私の持っている古い端末だとLolipopもMushroomMarshmallow(完全に勘違いしてました…)も試すことができないので、OSのサポートがされているNexus 5を購入することにしました。
本日届いたため、早速動作確認をしてみました。

まず、Android 5.1で動作確認を行ったところ特に問題なく動きました。

次に、Android 6.0にアップデートして、こちらも特に問題なく起動…と思ったら、どうも様子が変です。
以下の図のように、本来は円形のマスクが設定されているのですが、マスクが効かず四角になってしまっています。

unity_mask_disable


設定やマスクの指定方法が間違っているのかと思い確認してみましたが、原因がわかりません。

そこで、以下のように新規プロジェクトにマスクするためのオブジェクトと画像だけを置いて試すことにしました。
画像はroom6のここっとダンジョン(予約受付中 iOS / Android)より。

unity_mask_editor

ビルドしてNexus 5の実機に転送してみると…

Screenshot_20151129-205429

見事にマスクが効いていません。

仕方ないので色々調べてみると、以下のトピックがヒットしました。

Unity 5 UI Mask issues Android : stack overflow

 I searched a long time for the answer to this but I fixed this problem in Unity 5 by unchecking the "Disable Depth and Stencil*" Box.

Build Settings -> Player Settings -> Resolution and Presentation -> Disable Depth and Stencil

After that you need to re-launch unity (you will not see working mask if you dont) 
ということで、Project SettingでDisabel Depth and Stencilのチェックを外せばいいようです。

unity_mask_depth
 
再度書き出して実行してみます。

Screenshot_20151129-210039
 
今度はきちんとマスクが有効になっています…!

制作中のアプリもこの通り。

Screenshot_20151129-210422


円形のマスクが有効になっていますね。

原因は私にはよくわかりませんが、5.1の時は確実に問題がなかったことが確かで、stack overflowの別のトピックでも、Nexus 5でマスクが有効にならないと報告している人がいました。
確かそのトピックではUnity 5.1.4だと問題なく動作するとかなんとか…。

端末の問題か、Android 6.0の問題か、Unityのバージョンの問題かよくわかりませんが、もしマスクが有効にならない時は一度お試しいただくといいかもしれません。
なお、2DRectMaskは問題なく動作していました。

また、今回の副産物ですが、Unityのエディタ上でメインカメラを設定し直したところ、Gameウィンドウでマスクが効かなくなる現象が発生しました。
これについてはGameタブをCloseしてから再度開いたところ、無事に反映されました。
もしかしたらUnityを再起動でもよかったのかもしれませんが(^_^;)

というわけで、現在作成中のゲームはワーズ・アンド・マジックで実現出来なかったことを全部詰め込む予定です。
面白いものになるように がんばります!

以前以下の記事を書きました。
AndroidでViewの枠線と背景色を動的に変更する 

上記記事はres/drawableに用意したborder.xmlを用いて、背景色や枠線の色を動的に変化させるというものです。
ただ、この方法だと、画面内に複数のViewがあって、それぞれを変化させたい場合には一工夫必要です。

その場合は、対象のViewのBackgroundResourceに対して、GradientDrawableを生成してセットすることで実現できます。

GradientDrawable bgShape = new GradientDrawable();
bgShape.setStroke(1, Color.parseColor("#FFFFFFFF"));
bgShape.setCornerRadius(2);
bgShape.setColor(Color.parseColor("#000000FF"));
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    targetView.setBackgroundDrawable(bgShape);
} else {
    targetView.setBackground(bgShape);
}

要はborder.xmlで定義したシェイプと同じものを動的に生成する、という感じですね。
私の場合はカスタムしたViewのメソッドとして組み込んで使用していました。

pubilc void setBorder(float width, float radius, int borderColor, int backColor){
	GradientDrawable bgShape = new GradientDrawable();
	bgShape.setStroke(width, borderColor);
	bgShape.setCornerRadius(radius);
	bgShape.setColor(backColor);
	
	if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
	    setBackgroundDrawable(bgShape);
	} else {
	    setBackground(bgShape);
	}
}

という感じですね。

なお、同様のことをiOS向けにXCodeで書く場合についても書いておきます(Objective-Cです)。

[view setBackgroundColor:[UIColor blackColor]];	// 背景色
[view.layer setBorderColor:[[UIColor whiteColor] CGColor]];	// ボーダー色
[view.layer setBorderWidth:1.0];	// 太さ
[view.layer setBorderRadius:2.0];	// 角丸

のような感じで普通に設定できると思います。
記憶が定かで無いので間違っている部分もあるかもしれませんが、Androidよりだいぶ手軽にできると思います。
なお、Swiftは全く知りませんm(__)m

以上、「続・Viewの枠線と背景色を動的に設定する Android&iOS(Objective-C)」でした。

Unity5 Personalでは、Unity4まではPro版のみ使用可能だった機能が使用できるようになっています。
今回はそれらの機能の一つ、非同期ロードを使用してシーン間のローディング画面を作りたいと思います。

例によって参考ページを挙げておきます。



ローディング中は進捗バーとテキストによって状況を表示します。
進捗バーはImage TypeをFilled、Horizontalに設定しています。
完了を待って処理をしたかったのでロード完了を待とうとしたところ、上記参考ページの二つ目に記載されているように、async.isDoneにならずに0.9までしか進まないという状態になりました。
原因はよくわかりませんが、参考ページと同じく0.9でループを抜けるという強引な解決方法をとっています(シーンのロード自体は問題なく行われます)。
よくわかりませんし、動けばいい派なのであまり気にしないことにします…(^_^;)

IEnumerator LoadScene(){

    AsyncOperation async = Application.LoadLevelAsync("Game");
    async.allowSceneActivation = false;    // シーン遷移をしない

    while (async.progress < 0.9f) {
        Debug.Log(async.progress);
        loadingText.text = (async.progress * 100).ToString("F0") + "%";
        loadingBar.fillAmount = async.progress;
        yield return new WaitForEndOfFrame();
    }

    Debug.Log("Scene Loaded");
    
    loadingText.text = "100%";
    loadingBar.fillAmount = 1;
    
    yield return new WaitForSeconds(1);
    
    async.allowSceneActivation = true;    // シーン遷移許可
    
}
 
シーンのロードが完了してから1秒後に遷移を行なっています。
動画にしてみましたが、実機ではないので読込が一瞬で終わってますね(^_^;)



スプラッシュやタイトルなどは一応完成ということで、現在の完成度は80%くらい…というところです!

↑このページのトップヘ