UNITY シェーダーのmulti_compileの #ifdefに or条件を
非常に単純なのでちらっと
UNITYでシェーダーをmulti_compileで #ifdefを書きますが、例えば USE_AとUSE_Bがあり、どちらかが宣言されている場合有効にしたい
そんな時に
#if defined(_USE_A) || defined(_USE_B) ... #endif
と、C言語のように書けばOKでした
というだけの知見
色々なゲームを楽しむインプットウィーク
今の仕事
NintendoSwitch向け大きなタイトル(UNITY)
スマホタイトルのシェーダー(UNITY)
スマホタイトルのリアルタイムゲームサーバ(C++)
ゲームサーバインフラ改善(PHP)
VTuber関連3個?4個? (UNITY)
暗号化キーサーバ(Go)
色々と抱えているけど、Switchタイトルの調査でゴールデンウィークはSwitchゲームを調査です
KPTC
勝手に作りました
Keep:プレイ中ゲーム
Pause:中断しているゲーム
Try:これからプレイしたいゲーム
Clear:もうプレイしない予定
まずは体験版
今Switchでプレイしているのは、ゼルダ ブレスオブザワイルド、スプラトゥーン2(中断中)
体験版をプレイして、色々調査から
とりあえず何も考えず適当に選ぶ
LodeRunner
おなじみのロードランナー
ただ、グラフィックがマイクラ的なのはターゲットの設定がそこなんだろうか
迷宮の塔 トレジャーダンジョン
ダンジョンマスター風?を簡単にしたかんじ?
敵つよ。雰囲気はある
塊魂アンコール
XBOX時代に、ビューティフル塊魂を買い好きだった
雰囲気もいいけどゲームも楽しい、やりこみ要素も大きい
ただ、体験版でコントロール説明がなく、捜査よくわからないw
ガるメタる
JOYコンをドラムスティックのようにする音ゲー
ただし譜面通りに叩くわけではなく、自分の感性でアレンジするタイプ
パラッパラッパーとか
けっこうドラムの練習になるのでは?
太鼓の達人
音ゲーは好きなので。
予想はしていたが、SwitchのコントローラーとのUXは良さそう
2曲遊べたけど、バチを大きくふらないと反応があまりよくない?
テーブルモードだと充電しながら置けないという問題も発見w
ゲーム発展国++
ゲーム会社を経営するシミュレーションゲーム
ゲーム好き、実際にゲーム会社やってる人には内輪うけるタイトル?
スマホで先に出ているので、UI UXが違うだけか
財閥タウンズV
ゲーム発展国の会社。ゲーム発展国の方が好き
UNITY 2018.3 Timelineで遊ぶ。 任意のタイミングでカットインを実行させる
攻撃して敵が吹っ飛ぶようなのつくる
前回まで
UNITYちゃんをタイムラインで動かした
攻撃してみる
Unityちゃんのアニメーションを合成
まずUnityちゃんにクリップを追加します
とりあえず、移動後にWin00を再生させる
Clipを重ねると補完してくれます
Cubeを飛ばす
上記のモーション再生時にCubeを吹っ飛ばしてみます
CubeはAnimatorがないので、Track作成時にAnimationから作れません
直接Cubeを左側の開いたスペースにドラッグすし、Add Animation Trackを選ぶのが正解です
これで、CubeのAnimationTrackが出来ました
ポジションに注意して、録画ボタンでCubeを飛ばすアニメーションを適当にいれます
前と同じく無限クリップからAnimationClipを作成
箱が飛びました!
カメラをつける
同じようにCameraをAnimationTrackで制御します
うまく制御できてないけど動かす事はできました
任意のタイミングでのタイムライン再生
今は実行時に勝手にタイムライン再生されます
これをボタン押したときに再生させてみます
まず、PlayableDirectorの参照をとっておきます
GameObject.Findなり、Inspectorで参照設定するなり好きな方法で
そして、PlayableDirectorのPlayを呼ぶだけ。簡単
if (Input.GetKey(KeyCode.V)) { playableDirectorAttack.Play(); }
今回はVキーに割り当てたけど、ほんとこれだけで任意に再生できます
ただし、任意の位置で前に歩いて、攻撃モーションで箱が飛ぶのでまだまだ対応が必要必要です
今後調査したい
タイムライン使ってみる AnimationClip Unity2018.3
タイムラインとは
Unity2017のあたりでPreviewで入った機能
カットシーンやリアルタイムムービーシーンの再生等で使う
単純に決められたムービーの再生だけではなく、今のシーンからシームレスにオブジェクトを動かしたり可能
また、エディタ拡張でClassを派生させることで、かなりのカスタマイズが可能である
タイムラインの作り
PlayableDirectorが全体の制御を行う
TimelineAssetに全ての中身が入っている
TimelineAssetにはTimelineTrackがあり、トラック単位での制御が可能である
TimelineTrackには複数のClipを作り、実際の動作を作る
その他、Trackをグループ化するTrackGroup等がある
タイムラインの再生前にPlayableDirectorが、Clipに対してオブジェクトをバインドし、ヒエラルキーにオブジェクトをInstantiateし
時間で再生停止をコントロールする
また、 Clipを拡張するには下記の4つを作る事になる(全部が必要ではないこともある)
- Track
- Clip
- Behaviour
- Mixer
タイムライン生成
タイムラインはコンポーネントなので、何かのゲームオブジェクトを選び
Window->Sequence->Timeline でCreateする
これでTimelineAssetファイルを作成することが出来る
AnimationTrack
まずは簡単なキャラを移動させるタイムラインを作る
Timeline左側で右クリックし、AnimationTrackを作る
今回は画面上にあるUnityChanを動かしたいので、None(Animator) にヒエラルキー上のUnityChanを指定する
トラックの右側で右クリックし Add from AnimationClip をおすと、アニメーション選択画面が出るので
例えば Runのアニメーションを選択する
Clipの長さはドラッグドロップで設定できる
次はクリップの設定だ
クリップを選択してInspectorをいじる
イージングやディレイなどを設定できるが、とりあえずは Positionを動かす
Z方向に歩かせてみる
これで再生してみる
キャー 相対座標ではなく絶対座標であり 今回の例では(0,0,5)の位置にワープした・・
この座標に関しては面倒で、以前はAnimationControllerの有無で絶対座標、相対座標が変わっていたが、2018.3からは変更された
Trackを選択するとInspectorにて TrackOffsetsの項目がある
Apply Transform Offsets にすると、絶対座標(ムービー、カットシーン向け)
Apply Scene Offsetsにすると現在からの相対座標で動く
今回は攻撃のカットシーンをやってみたいので SceneOffsetsにする
移動
Z方向に少し移動させたい
通常ではTrackの赤丸の録画ボタンをおし、キーフレーム打ちたい位置にタイムラインシーケンスを設定し、UnityChanのPositionで右クリックで Add Keyframeを行い
シーケンスを動かし、動かしたい位置にUnityChanを動かし 再びKeyframeを打てばよいのだが
なんと、Humanoidはこの録画ボタンがきかず 動かせない!!
ところが、簡単なやり方がある
先ほどのAnimationTrackを右クリックし Add Override Trackを選択し、そのOverrideTrackにて上記のキーフレームを打てば
Humanoidでも移動してくれる
実行すると、現在位置から動いてくれた
無限クリップからアニメーションクリップへの変換
の通り、無限クリップから変換 クリップを右クリックして Convert to animation clipを押すだけ
UNITY StandardAssetを使う
久々にUNITYを使ったら StandardAsset周りで苦労したので
Import
昔はメニューの Assets->Importから StandardAssetをImport出来ていたが、今はメニューにない
AssetStoreから StandardAssetを検索しダウンロードして Importする
エラー
StandardAssetをImportしたらエラーが出る事がある
が、Unityを再起動すれば直る事が多いので、一度再起動する
ThirdPersonControler
ついでなのでキャラを動かしていきます
今回は適当にTerrainを置きます
StandardAssets -> Characters -> ThirdPersonCharacter -> Prefabs ->ThirdPersonControler を、シーンに置く
Cameraを ThirdPersonControlerの中に置く
実行すると、動きはぎこちないながら、WADで移動、Spaceでジャンプ、Shiftでゆっくり
歩くことが出来る
UNITYちゃんに変更
Unityちゃんをヒエラルキーに置き、そこにカメラを置く
UnityちゃんのGameObjectに各種Componentをつける
Animatorには ThirdPersonAnimatorController、unitychanAvatarを設定
カプセルコライダーとThirdPersonスクリプトを2個つける
実行すると、ぎこちない動きだが UNITYちゃんを動かす事ができる
UnityのマルチプレイヤーネットワークAPIについて
種類
UNet
UNITYの5.1から入ったおなじみのAPI
こうレイヤーのHLAPIと低レイヤー LLAPIがある
が、これは間もなく廃止予定だ
Multiplayer
次世代のネットワークAPI
だが、フォーラムによると、まだ機能的にはしょぼいらしい
2021年にはUnetよりはるかに便利になっている予定だそうだが、かなり先だ
ECSやJobSystemを使い、マルチスレッドで ある程度アンマネージドで高速実行するようだ
現在はどうやらGithubにソースがあり、それを使うようだ
github.com
Photon等のmBaaS
各社独自のサービス展開をしている
ではどうするのがいいのか?
Unetは廃止予定ではあるが、今いまは使うしかないと思う
もちろん私のような人柱は Githubから落として新機能を使ってもいい
Unetでは高レベルのHLAPIと低レベルのLLAPIがあるが、フォーラムを読んでるかぎりでは
UnetのHLAPIから New Multiplayerへの自動変換を予定しているらしい
LLAPIからの変換は困難であきらめた雰囲気がある
また、New Multiplayerは HLAPIと似たインタフェースにするっぽいので
今はUnetのHLAPIで書いておけば問題がなさそうに感じる
mBaaSを使う選択肢は当然大いにある
HLAPIであっても、かなり面倒なコードを書く必要があるが、mBaaSを使えばそれが圧倒的に楽になる
4月台湾 初日。桃園〜新店〜坪林〜羅東 1
理由
花粉症がひどいので毎年この時期は花粉疎開しています
特に去年とかひどすぎて、2月から花粉ダウンし3月案件終了し4月になり即1ヶ月台湾旅行しました
今年は花粉はかなりましなんですが、辛いことには違いなく
3月で常駐をやめ4月に台湾に飛びました
今回は9日ですが、花粉期間はずっと疎開できればいいけど、忙しいときは数日難を逃れるだけでも違うと思います
台湾にする理由ですが、安くて便が多く、いつでも思い立ったら買えるし、急に仕事で呼び出されても帰れる近さがいいです
あと、食べ物がとても美味しい。日本人向けの味になってます
その初日です
旅行先決めるまで
2月の時点で花粉を認めていたが、例年よりは軽いかな
当時、週2日常駐していたが、案件都合で契約を終了させ、4月からフリーが決まった
フリーと言っても、持ち帰りは3,4件あるから、ちょうどいいぐらいの量
実は持ち帰りであれば、室内にこもって空気清浄機回してれば生きていけるのですが
せっかく出し今年も海外に飛ぼうと色んな国を計画
今回は花粉から脱出して仕事をすることなので、仕事重要
香港(深セン)
香港エクスプレスで、まーまー悪くないフライト発見
香港は宿が悪くて高いので、そこだけ何とかすればいい街だ
特に、ブルース・リー、ジャッキー・チェン、サモ・ハン・キンポー、ユンピョウ・・ 憧れの香港スターの街だ
ご飯も美味しい(少し高いが
深センには友達がいて、いろんな会社に訪問する予定だ
だが、会社訪問を私の休みの都合で決めるのもよくなく
プレゼンするブツ作って、改めて訪問に決定し、今回の旅行はやめた
マレーシア
エアアジアがたくさん便をだしていて、ネット環境もよく、部屋も安く借りられる
また、ご飯が好みで知人もいて、将来の海外展開の候補地
今回は あまり魅力的な便がなくやめた
タイ
安くて魅力的なチケットがあった
宿は安くて良いし、食べ物うまいし、最高なんだが
ネット環境がガチャだ
バンコクにいい床やど見つけるまでは仕事怖い
インドネシア
インターネットが壊滅的に遅い
中国大陸
行ってみたい。特にお茶ツアー
計画しなきゃ
ベトナム
食べ物美味しいし仕事も繋がりあるし、今後も行くことになりそう
ただ、直前ではいい便みつけられず
台湾
すべて安心
ただし4月の1週は大型連休&5月末にもチケット取ってる
今回はどこに行く?花連前回は1泊だったからちゃんと泊まろう
結論として台湾を1〜9で抑えました
今のメイン案件が4月末にマイルストーンあるので、申し訳・・
羅東はいぜん良かった宿に直接LINEで申し込み
花連は以前の宿はネット弱かったので、Booking.comで新しい宿探した
初日
台北 桃園空港まで
朝5時半の便。2時半にチェックイン開始なので、終電で行き羽田に前泊する
3時間ほどご飯食べたり仮眠したり時間をつぶしチェックイン〜ラウンジ〜フライト
あっという間に桃園
桃園〜新店、SIMのチャージ
台湾ではけっこうWifiあるのだけど、そんなところにケチらずSIM買います
ただし、SIMは裏技?があるのでそれを利用します
とりあえず大雑把に書くと
空港では計日のSIMしか買えません。3日で1200円、30日で4000円です
使い放題なので、いっぱいパケット使う人は計日が良いですが
殆ど使わないと思うので、計量SIM つまり2GBとかの容量のものが楽です
2GBだとだいたい1200円で、有効期限は180日です
私の場合は、例えば去年は4月1〜29まで台湾にいき 500MBも使わず、8月に10日ほどで 結局700MB程度の使用量でしたが
本来であると 6000円かかる計日SIMが、計量だと1200円でまだ半分以上あまってた
今回は180日過ぎているため、前回のチャージは消えてますが、前のSIMにチャージします
細かい手順は後ほどですが、コンビニでも露天でもチャージできて便利です。しかも、アプリからチャージできるのです
パウチャーカードだとさらにお安く・・
今回はSIMがチャージから180日オーバーしてたので、店舗で一応チャージしてもらうことにしました
おそらく、パウチャーカードでもチャージ出来るのですが念の為に
桃園よりバスで新店へ行く。いやまてよw運転手w運転前に酒盛りwww
新店は昔の遠距離バスターミナルで
今は台北の市政府が中心ですが、今回行く坪林方面には、ほぼここからしかルートがないです(あるけど)
ちなみに新店は別名大坪林です。坪林とのつながり??
新店でSIMをチャージしたあとは、バスに乗り坪林です
ここは製茶ミュージアムがあります
製茶ミュージアム今日おやすみだったよ!
ってことで怒って帰ります
今夜は羅東で泊まるよていなので羅東行きのバスを探す見みあたらず
お店できいたら、常連らしいお客さんが酒盛りしてた
が、親切にバス停まで車で案内される・・飲酒だけどね
そして無事 羅東到了