月: 2018年7月

テイルズオブデスティニー2をやった(4)

やっと着いた。
イクシフォスラー(´・ω・`)?

小屋がタダの宿屋か(・∀・)
補給部隊から道具を買える。食材屋はないのか。まあ別に食材は減ってないからいいけども。

カワンチャとか出て来た。女神転生か(´・ω・`)

ソーサラーリングで青の封印の氷を溶かす。

よくわからないが、炭を手に入れた。
訳が解らず、行ったり来たり。途中の暖炉に炭を入れたが、特に何も起きず。

封印されている場所にある石碑によると、あといくつかの物を移動させないといけないらしい(´・ω・`)メドイ

行ったり来たりしたが、移動させるブツが見つからない。戻って来た何度目かに、ようやく休める小屋に苗木があることに気づくというか、やったらめったら調べていたら有った。途中に在った植物が育ってるところに持っていけばいいのかな?

木の封印らしきものは解けたくさい。残りのブツは何処に(・ω・`≡´・ω・)?

炭が火、氷が水、苗木が木なら、後は翼か?

ずっと翼の封印の在り処が解らん(ヽ´ω`)…と彷徨っていたが、翼の封印は解けていたのか? 或いはまだなのかはともかく、取り敢えず、火の封印が解けていなかったことが、ようやく解った…

炭を置いた暖炉をソーサラーリングで撃ったら火がついて封印が解けた…確かに赤かったな、残っていたのは…

とすると翼の封印は解けていなくて、守護獣みたいなのと戦うパティーンか…( ・´ω・`) ←※そんなことはなかったw

あと少しでレベルアップしそうだったので、そこまでやってセーブして終了。レベル36になった。そろそろ中盤かな?


封印のところに行ったら、宝箱。
ファフニール(σ・∀・)σゲッツ!!

翼の封印に関しては考えるまでもないなw

ソーディアンと飛行艇じゃ、比較にならないと思うけど、これに乗るしかないなら乗るわ(´・ω・`)

英雄もいず…英雄を伴わずとかの方があってそう。

エルレインと対戦。
HP 28000くらい?
取り敢えずちまちま回復させてたら勝ったわ(・∀・) 
まぁ退却させただけみたいだけど。

なんかムービーが(´・ω・`)
フィブリル反応が発生 ←違う

あ、フィリアが生きてた(・∀・)
って何処にいたんだろう?

エルレインは飛行竜に乗って、レンズを持ってとんずらか。大した脈絡もなくソーサラースコープをもらった(・∀・)

ところで、イクシフォスラーって何で動いてるんだ? レンズ?


飛行竜にアンカー打ち込んで乗り込んだけど、イクシフォスラーに自動操縦機能がないと飛行竜ごと落っこちるんじゃないか(´・ω・`)?

なんか右の方に行ったら、体組織の壁に阻まれて進めない。
ソーサラーリングでは焼き切れない。なんか透明な奴らがついてくるのでソーサラースコープを使った後にソーサラーリングで焼くが特に変化がない。右側にいる奴が倒せないし…

一旦戻るかと移動すると敵とエンカウント。
特に気にせずにいたが、フィリアが戦闘開始時にヒールを使ったみたいだったので、なんでだろうと画面を見ると、HPが全員1になってるヽ(`Д´)ノ
あいつらメトロイドかよ(´・ω・`)

道具の補給は出来ないのかなと思って最初のところに戻ったら、イクシフォスラーで有料補給出来るらしい。

間違えてもう一つの転送陣に入って奥に行ったら、制御ルーム。あれ、制御ルームはここにあんの(´・ω・`)?

使う必要があったか解らないが、制御ルーム内でソーサラースコープを使って移動してたら、アラストルとか言う敵が来た。

よく解らないが制御装置を壊した模様。


補充して戻ったけど、まだ壁は開いていない。左右の奥にも制御装置があって、それも壊さないと駄目なのか(´・ω・`)メドイ

取り敢えず左側に行くも、消化液ダメージでまたしても瀕死状態(ヽ´ω`) さっきのところもそうだが、このパズルルームでは敵が出て来ないのだけが救いだな。

どうも体組織が繋がっている時に先に進めばいいようだが、何度も失敗して落ちる(ノ∀`) 
下手な人向けの救済機能としてか、ナナリーが代わりに操作してくれるというか、この場所をクリアしてくれた(・∀・)アリガタヤ

やっぱり制御ルームではソーサラースコープを使わないと駄目なのかな。

再び右側に行くもよく解らず(´・ω・`)
レンズなくなっても、ソーサラースコープもソーサラーリングも使えるんだなぁと使いまくっていたら、右側のマザーセルに当たった模様。ソーサラースコープを使ってる状態でマザーセルの左下から右斜め上を撃てば良いのかな?

さて、エルレインと再戦かと思ったら、まだ制御装置があんのか(ノ∀`)

何処にあるのかなと探す。


スタート地点の転送陣とセーブポイントの間にも道があることに気づく。
左の宝箱を開けたらフェイク。弱かった分、得られた宝物はアップルグミ(´・ω・`) 戦闘でゲットしたミソの方が貴重かもしれない。

右側のゲートらしきところに行っても何も起きず。ソーサラースコープを使ったら、下へ降下した。

縄橋子パズルを解き、制御装置を破壊。戻って来て補給。先に進むとガーブがおる。

ガーブと対戦かと思ったら、グラシャラボラス(´・ω・`)?
HP 80000って結構硬いな。

でも、そんなに強くなかった。あら、勝ったのはいいけど、転送陣が壊れて作動しないわ、10分のタイムリミットって(´・ω・`)メドイ

結局、さっき行った下に行かないといけないのか。補助電源装置とか避難経路、フェイクと知りつつも宝箱を開けながら逃げる。色々やりつつも、四分をちょっと切るくらいだから、結構余裕のある設定なんだな。

脱出したと思ったら、黒点に捕まった(´・ω・`)
と思ったら、リアラの力でどっかにワープしたのか。
あれ?ダイクロフト(´・ω・`)?

もしかして、スタンはエルレインにやられた…( ・´ω・`)? ←※違います

うにのトゲは刺さると痛い(´・ω・`)-18

暑い( ´・ω・`;)

取り敢えず残りの実装すべきアプリ関連の機能の設定用トグルなどを追加した。普通の人には大したことではないが、"設定画面を作成したりしてると死にたくなる病"の俺氏にとっては命に関わる難作業であった( ・´ω・`)アブナイトコロダッタ

後はその機能の実装だけなので気は楽だヽ( ・∀・)ノ
とかいいつつ地獄を見るのがいつものパティーン(´・ω・`)


ハイスコア表示

ハイスコア表示はまあ、取り敢えずこんなんでいいや的代物に(・∀・)
配色がなぁ……まあいいか。

こないだはDateTimeOffset型を使わないと駄目かなと思っていたが、よくよく読んでみると必要がないことがわかったw あれはUTCが必要な時に使うべきものか(ノ∀`)


カードの自動戻し

二枚カードをめくってマッチ時にのみ停止して画面タップされるまで表示し続けるか自動消滅するかの設定を用意していたのだけれども、NG時も停止出来るようにした。これはまあ、カード内容を覚えたい人向け……というか自分でやっていてもNG時にカード内容を読みたいなぁと思ったから、急遽追加した(ノ∀`)


ユーザー指定画像ファイルの使用

これは前々から実装を考えていたもので、以前に作っていたものの完成させられなかったAndroid用音楽プレーヤー(余裕が出来たら完成させたいが)でやろうとしていたこと。自分で良いデザインが産み出せないなら、ユーザーに丸投げすればいいじゃない的いい加減さを実現(`・ω・´)ナオジッソウハチョットメンドウダッタ

100x150の固有名を持つファイルをApplication.persistentDataPathのところにぶちこんで、このオプションをONにすると他の設定を無視してそのファイルをカード裏として読み込む。(※尚、この猫画像はGoogle+の猫サークルかなんかで拾ったものだったかしら(´・ω・`)?)

100x150ぴったりだと四角のカードになってしまい、ビジュアル的におかしくなるので実際に使用するには

に画像を貼り付けたモノを用意しないといけない。プログラム的に生成することも出来なくはない気はするが、今はそんなに余力がないのでいずれするとしよう。ついでにファイルパス指定で読み込めるようにもしたいなぁ。

以下のページを参考にしてニコイチにした。と思ったが、正確には前回参考にしたJson読み込みのコードをベースにしているのでサンコイチか(ノ∀`)
ファイルパスから画像を読み込み、Texture2Dを作って、それをSpriteにするだけ。
参考:
【Unity】pngファイルを読み込み同サイズのTexture2Dを生成する
Texture2DからSpriteを作成する


Sprite sprite = GetSpriteFromFolder(Application.persistentDataPath + "/usf01.png");

            }
            Sprite GetSpriteFromFolder(String filePath)
    {
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            using (BinaryReader br = new BinaryReader(fs))
            {
                byte[] values = br.ReadBytes((int)br.BaseStream.Length);

                Texture2D texture = new Texture2D(100, 150);
                texture.LoadImage(values);

                return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
            }
        }
    }

ユーザー指定音楽ファイルの使用

ついでに効果音も読み込めるようにした(`・ω・´)

外部からだとmp3は読み込めないのね(´・ω・`)
なんかライセンスの絡みだとかあったけど、mp3のライセンスって去年の5月くらいに消滅してるみたいなんだよね。他の違うライセンスの問題? 或るいはUnityのフリー版だけ駄目とか?

まあ何はともあれ以下のページを参考にしてwavファイルを読み込むようにした。

参考:
[Unity] Unity×音についてざっくりまとめ
Unityで外部音楽ファイルを読み込む
WWW.GetAudioClip

エディター上(Windows上?)では「file:///」じゃないと読み込みが出来ないらしいけど、Androidは「file:///」でも読み込めるので、「file:///」一本槍にしてしまっているが、いいのであろうか(´・ω・`)?

ユーザー指定の効果音ファイルがない場合はデフォルトの効果音を使いたいのでこんな形にした。

AudioClip LoadWavFile(string fileName,AudioClip defaultClip)
    {
        if (File.Exists(Application.persistentDataPath + "/" + fileName))
        {
            return GetAudioClip("file:///" + Application.persistentDataPath + "/" + fileName);
        }

        return defaultClip;
    }
    AudioClip GetAudioClip(string filePath)
    {
        using (WWW www = new WWW(filePath)) {
            while (!www.isDone) { }
            return www.GetAudioClip(false, false,AudioType.WAV);
        }       
    }

効果音系をもうちょい触って、ローカライズファイルを読み込めるようにして……あとは追加表示とゲームのギミックを二つ程追加すれば外殻は完成なんだけども、ギミック部分の実装にどれだけかかるかだなぁ……

それが終わったら、ようやくカードセットの追加にかかれるのだけれども。

テイルズオブデスティニー2をやった(3)

街を出て港に行った。何故か居たシェフにナポリタンを習う。
□ボタンと☓ボタン同時押しで会話の早送りが出来たのか…( ;・´ω・`)ゴクリッ

チェリクってカルバレイスなのか。
1で元々あった村だっけ? 

アルジャーノン号が行方不明って言うけど、乗った船、アルジャーノン号と同じじゃない(´・ω・`)?

聖地カルビオラ? 
フォルトゥナとかいうのが落ちて来たとこ?
トゥナに意味あんのかな、フォールしたトゥナ? ←※違った。幸運を意味するFortuneから来てるらしい。
流行り病も関係してんのかな。

西にあるヒートリバーを越えるとホープタウンがあるのか。

宿屋でフルーツジュースを習う。

ソーサラースコープ…なんか説明書に載ってたような…覚えてないけども(´・ω・`)

ホープタウンを目指して旅立ったが、ヒートリバーというところで橋が増水した熱湯の中に沈んでいる。原因を突き止める為に上流へ向かうことに。そう言えばデスティニーって晶霊は出て来たっけ(´・ω・`)?

熱波を避けつつ源流まで来て岩をどかす。これで一件落着かと思ったら、ヴェパールとかいう蟹みたいなモンスターが出て来て戦闘に(´・ω・`)デスヨネー

HP 32000は硬いだろヽ(`Д´)ノ
三人パーティなのに。

カイルにポイゾンチェックを装備させて、フレアマントがあったので、それをリアラに装備。火耐性があるとのことなので、火系の特技を使わせないようにして、回復介入してなんとか勝てた。オレンジグミを沢山持ってて良かったわ(´・ω・`)

倒した後に26レベルになったから、25レベルで勝てたということか。

ホープタウン着。
ロニとジューダスと合流出来る模様。食材屋にシェフ。ステーキを習う。宿屋は660ガルドΣ(゚∀゚;) 取り敢えず泊まらずに見つけたエリクシールを持って、そそくさと外に出る。

ロニ達と合流したら、ナナリーは離脱。体力等は回復した。宿屋に泊まらなくて良かった(・∀・)

おお、ここの人はジャンクランドの人か。懐かしい。

入り口の方へ戻るとナナリーがお墓に語りかけてる。ルーって弟(´・ω・`)? 
やはり弟か。

過去に戻るには大量のレンズが必要で、それらはカルビオラにあるらしいφ(・ω・` )メモメモ…

ナナリーも仲間のままか。エターニアのチャットとかと同じ扱いかな。

トラッシュマウンテンに行って山越えするのか。またアイテムの入っている箱を運ぶのか(´・ω・`)ハコヲハコブッテダジャレカ

毒ガスに触れると中身のグレードが下がるのかヽ(`Д´)ノ
二つは上手く運べたので、パラライチェックとエリクシールを(σ・∀・)σゲッツ!!

なんだこの緑の光。ガス? 衰弱食らうんか。

途中にあった赤い箱を蹴落としたのと食材やアイテムが乏しくなって来たので一旦帰ることに。

箱の中身はペルセリウムだった(・∀・)
でも過去に帰らないとウィンターズに頼めないな。まぁいずれにせよ、凄いお金と時間が必要になりそうだな。 ←※そんなことはなかったw


ホープタウンに戻って道具を補充。食材を買うまでのガルドが無かったので、ダークボトルを浴びてガルド稼ぎ。レベルもついでに1上がって30になった。

再びトラッシュマウンテン。
もう一つあった赤い箱を蹴り落とす。
今回は取り敢えず先に進む。

色パズル(´・ω・`)?
魚鍋のレシピを(σ・∀・)σゲッツ!!

RGB:135か。
あら、もう外か。意外と短いダンジョンだったのか。

聖地カルビオラ着。
あれ、随分と簡単にフォルトゥナと会えちゃった(´・ω・`) AIなのかな?

また揉め始めたよ、こいつら…(´・ω・`)
リアラが会話を打ち切って過去に転送…

あ、ヘマったわ…赤い箱を先に回収すべきだったか……いずれまた行くだろうから、いいか…(´・ω・`)

あ、ナナリーまでwww
もしかしてこっちの世界で生きている弟に会えるのかな?

ウッドロウは生きてたけど、レンズは全部やられたわ(ノ∀`)

フォルトゥナを起動する為にレンズが必要なのか?
それだとタイムバラドックスが…
平行世界の者達なのかな…

ナナリーのリアラへの慰めはちょっと長いな(´・ω・`)

うへぇ、ここでリアラ離脱かよw
そらナナリーが居ないといかんわな。

しまった、ブラックオニキスを持って行かれた(´・ω・`)

アイグレッテに一人で殴り込みかけたのかよ。高倉健かよ(´・ω・`)

あれ、よくよく考えてみると、ジューダス、普通にウッドロウの前に来てるなw

レンズ奪還の勅命状をもろた(・∀・)
まぁ、そんなことは措いておいて、ウインターズにペルセリウムを渡しに行こうっとヽ( ・∀・)ノ

ウインターズに渡したら、ロハですぐに作ってくれたけど、なんか低レベルセットその一だって(´・ω・`)リアラヨウカ

これってエターニアでのレンズみたいにアイテムと交換してくれるシステムということなのか。

ウッドロウがなんか脚をくれるのかと思ったら、天地戦争時代の遺物を取りに行くのか。デスティニーの時は飛行艇はあったっけか? 飛行竜だったっけ? まあいいや(´・ω・`)

行く方向を間違えて来た道を引き返す羽目に…
エンカウントが発生するのは構わないが、敵のレベルが低くて経験値が大して入らなくて苛つく(#^ω^)

うにのトゲは刺さると痛い(´・ω・`)-17

暑くて色々と捗らない…(ヽ'ω`)


Windows関連

Windowsの不具合絡みでなんかやったような記憶が(´・ω・`)
Microsoftのコミュニティのやり取りが珍しく役に立った(・∀・)
スタートボタンが反応せず、シャットダウンできない

デバイスキャストがコンテキスト上に出ちゃうのって結構邪魔じゃない(´・ω・`)?
Win 10編: コンテキストメニューの<デバイスキャスト>を取り除く


続・得点表示

見た目は余り進化していないが多少変化させた。少しだけ動的変化を追加しただけだが、それを実装するのに時間がかかった。やっぱりIMGUIでやるべきではないと思いました(・∀・)(小並感)


ハイスコア表示

どうせローカルレベルの話だし、要るかなー、要らないなー、でも一応有ったほうがゲームっぽいかなーということで申し訳程度のハイスコア表示をすることにした。
ここで結構ハマった(´・ω・`)

まず第一に、どの保存方法を取るかで悩む。PlayerPrefsは一番お手軽であり、申し訳程度のハイスコア表示ならこれでいいのだけれども、それだと俺氏の技術的進化が全くないなと思い違う方法を模索。 ←すぐに退化しちゃう人(´・ω・`)

ZeroFormatterとかが良いのかしらと思ったけれども、俺氏の今現在のC#の知識では理解不能なので、止めておいた(ノ∀`) 単純にライブラリとして使えばいいのだろうけれども、その前段階のセーブ/ロードの方法を知らないので、まあ今回はパス。

関係ないけれども、UniRxを公開していたグラニという会社のCTOの人が作成していたらしいが、この人はCTOを退任して、グラニはマイネットというところの傘下になったらしい。ソシャゲ等に興味がないので、どっちの会社もよく解らない(ノ∀`)
ZeroFormatter - C#の最速かつ無限大高速な .NET, .NET Core, Unity用シリアライザー

取り敢えず、以下のリンク等々を読み、JSONデータで保存することにした。
クラスを丸ごと保存するデータ管理方法【Unity】
JsonUtility
【Unity】Jsonデータをセーブ・ロードしたい!
Unityでゲームデータのセーブ・ロードを行う方法

で、まぁエディタ上では上手く保存出来ていたので、大して気にせずに他の部分のリファクタリングをしたりしていたのだが、Androidの実機でやったら上手く行かない(´・ω・`)

結論から言うとApplication.dataPathではなく、Application.persistentDataPathにファイルを保存する方向に。
そもそもapkに書き込みって出来るの(´・ω・`)?

参考:
UnityでAndroid,Windowsにファイルを書き込む際の注意点
Unityで作成したAndroidアプリでファイルをxml形式で読み書きする

試してはいないけれども、暗号化。
【Unity】AESでデータを暗号化 エントリが消えていた。


日付等

基本中の基本なんだろうけれども、忘れちゃうのでリンクしておこう。DateTimeOffsetを使ったら、何処の国でも正しい時刻を取得出来るのかな(´・ω・`)?

参考:
誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめにC#が無いので追加
String.Split メソッド (Char[])
String.Substring メソッド (Int32)
DateTimeの代わりにDateTimeOffsetを使用する
DateTimeとDateTimeOffsetの違いとは?[C#、VB]

まだ途中なのでアレだが、まあこんな感じだよね、ハイスコア表示って(´・ω・`)


まだまだやることがいっぱいあるな(ヽ'ω`)