良い情報を発信していきたいので、寄付頂ければ幸いです

BTC 13JpgsF3n6K2WhjEeUuUUqS7V71gWdFx56
BCH 18q6rfi9ynyTgynrB8tJ2eSDLPQM32RZk5
ETH 0x00afa2f16a062450ebedb7e3cabe79cc7801a231
NEM NAJOM3CD26UI3CF4LUCWLN2QJEHGFFJZ7AHLRAOQ
Shield SbrJFMavwAx2y6S7kLnxZLDgqrgjBYMVU4
MONA MPpuEnmqDYBCxSZyG5cBDt6UWtXczmRmkn

作っているOSSメモ - 旅行しながら働く ムラサメ研究所社長ブログ

gRPCの勉強

gRPCとは

HTTPによるREST APIみたいなものですが、RESTではなく RPCである事など違いがあります
REST APIと比較すると

  • 仕様が柔軟である
  • ヘッダが小さくオーバーヘッドが少ない
  • HTTP2に対応しており、非同期通信が効果的に行える
  • protoファイルを作成し、プロトコルレイヤーを分離できる

などの優れた特徴をもっています
今後gRPCを使った開発が増えてくるんじゃないかな

大切な事はだいたい公式が教えてくれる

https://grpc.io/docs/guides/

公式のガイドに全部書いてあるけど、英語が読めないので・・
私の場合はサンプルコード見るのがはやい!

https://github.com/grpc/grpc-go/tree/master/examples

しかも、サンプル用にプロトコルやシンプルなサーバクライアント
認証用のトーク
など全部用意されているので
コード確認がすぐに出来るすぐれもの!

テストコード

下記にテストコードをかいていく
github.com

Golang再び

Golangの仕事再び
不満点はいっぱいあるけど、今の主流言語のひとつであることは間違いない Golang
仕事の内容は詳しくは書けないが、暗号化とセキュリティが重要な巨大基盤
OpenStackで作ったインフラ上で動かす

前のプロジェクトでGolandを購入したので、Golandを使うことにした
今回はいいデスクトップPCを買ったので、Windowsメインで開発を行うが
1年前とはちがい、今のところGolangWindowsで出来なかった問題が解決した

Goのバージョンアップ

インストールしていたGoが古いので最新に上げた
というのも、下記のGomodulesを使う必要があるので、必須であった
Chocolatey を使えば管理が楽そうだが、今回は普通にインストールをした
単純にインストーラー起動してうわがきすればよい

ちなみに Chocolatey使ったインストールは下記に

qiita.com

go modules

Go11にExperimentalで入った機能のようだ
Go11では機能をONにするために環境変数必要だが、Go12では不要

qiita.com

いままでのGoで不満だった、GOROOT以下にソースファイルを置く必要があったやつ
ライブラリのバージョン依存の解決のために venderディレクトリ使ってほげほげ してた
そういった問題を解決してくれるものだ
設定ファイルに モジュールのパスをエイリアス指定したりできる
ローカルパッケージの名前解決にも使える
おそらく go modulesを使えば、私のGoに対するイライラの少しが解決する

Goland設定

Lintなどを設定する

qiita.com

ここを見ればすぐに出来た。みなさんの知識ありがたい

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

勝手に作りました

trello.com

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を重ねると補完してくれます

f:id:murasame-labo:20190419053127p:plain

Cubeを飛ばす

上記のモーション再生時にCubeを吹っ飛ばしてみます
CubeはAnimatorがないので、Track作成時にAnimationから作れません
直接Cubeを左側の開いたスペースにドラッグすし、Add Animation Trackを選ぶのが正解です
これで、CubeのAnimationTrackが出来ました
ポジションに注意して、録画ボタンでCubeを飛ばすアニメーションを適当にいれます

f:id:murasame-labo:20190419053427p:plain

前と同じく無限クリップからAnimationClipを作成

f:id:murasame-labo:20190419053505p:plain

f:id:murasame-labo:20190419053615p:plain

箱が飛びました!

カメラをつける

同じようにCameraをAnimationTrackで制御します

f:id:murasame-labo:20190419060407p:plain

f:id:murasame-labo:20190419060422p:plain

うまく制御できてないけど動かす事はできました

任意のタイミングでのタイムライン再生

今は実行時に勝手にタイムライン再生されます
これをボタン押したときに再生させてみます

まず、PlayableDirectorの参照をとっておきます
GameObject.Findなり、Inspectorで参照設定するなり好きな方法で
そして、PlayableDirectorのPlayを呼ぶだけ。簡単

            if (Input.GetKey(KeyCode.V))
            {
                playableDirectorAttack.Play();
            }

今回はVキーに割り当てたけど、ほんとこれだけで任意に再生できます
ただし、任意の位置で前に歩いて、攻撃モーションで箱が飛ぶのでまだまだ対応が必要必要です

今後調査したい

  • Raycast等で攻撃可能かの判定
  • 攻撃対象を複数おき、動的に切り替える
  • カットシーン開始時に敵はこちらを向く
  • カットシーンがぴったり敵の前に移動するよう調整する
  • カットシーン開始時に敵はこちらを向く
  • QTE(Quick Time Event )で他のタイムラインへつなぐ
  • QTEでタイムライン内で分岐
  • AvaterMaskで合成する
  • 武器やモーションが違うカットインを分岐させる

タイムライン使ってみる 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の長さはドラッグドロップで設定できる

f:id:murasame-labo:20190419032059p:plain

次はクリップの設定だ
クリップを選択してInspectorをいじる
イージングやディレイなどを設定できるが、とりあえずは Positionを動かす
Z方向に歩かせてみる

f:id:murasame-labo:20190419032553p:plain

これで再生してみる

f:id:murasame-labo:20190419032645p:plain

キャー 相対座標ではなく絶対座標であり 今回の例では(0,0,5)の位置にワープした・・

tsubakit1.hateblo.jp

この座標に関しては面倒で、以前はAnimationControllerの有無で絶対座標、相対座標が変わっていたが、2018.3からは変更された

Trackを選択するとInspectorにて TrackOffsetsの項目がある
f:id:murasame-labo:20190419041742p:plain
Apply Transform Offsets にすると、絶対座標(ムービー、カットシーン向け)
Apply Scene Offsetsにすると現在からの相対座標で動く
今回は攻撃のカットシーンをやってみたいので SceneOffsetsにする

移動

Z方向に少し移動させたい
通常ではTrackの赤丸の録画ボタンをおし、キーフレーム打ちたい位置にタイムラインシーケンスを設定し、UnityChanのPositionで右クリックで Add Keyframeを行い
シーケンスを動かし、動かしたい位置にUnityChanを動かし 再びKeyframeを打てばよいのだが
なんと、Humanoidはこの録画ボタンがきかず 動かせない!!
ところが、簡単なやり方がある

先ほどのAnimationTrackを右クリックし Add Override Trackを選択し、そのOverrideTrackにて上記のキーフレームを打てば
Humanoidでも移動してくれる

f:id:murasame-labo:20190419041813p:plain
f:id:murasame-labo:20190419041822p:plain

実行すると、現在位置から動いてくれた

f:id:murasame-labo:20190419041930p:plain

無限クリップからアニメーションクリップへの変換

docs.unity3d.com

の通り、無限クリップから変換 クリップを右クリックして Convert to animation clipを押すだけ

f:id:murasame-labo:20190419042303p:plain

UNITY StandardAssetを使う

久々にUNITYを使ったら StandardAsset周りで苦労したので

Import

昔はメニューの Assets->Importから StandardAssetをImport出来ていたが、今はメニューにない
AssetStoreから StandardAssetを検索しダウンロードして Importする

エラー

StandardAssetをImportしたらエラーが出る事がある
が、Unityを再起動すれば直る事が多いので、一度再起動する

ThirdPersonControler

ついでなのでキャラを動かしていきます
今回は適当にTerrainを置きます
StandardAssets -> Characters -> ThirdPersonCharacter -> Prefabs ->ThirdPersonControler を、シーンに置く
Cameraを ThirdPersonControlerの中に置く

f:id:murasame-labo:20190418233354p:plain

実行すると、動きはぎこちないながら、WADで移動、Spaceでジャンプ、Shiftでゆっくり
歩くことが出来る

f:id:murasame-labo:20190418233504p:plain

UNITYちゃんに変更

Unityちゃんをヒエラルキーに置き、そこにカメラを置く

f:id:murasame-labo:20190419010524p:plain

UnityちゃんのGameObjectに各種Componentをつける
Animatorには ThirdPersonAnimatorController、unitychanAvatarを設定
カプセルコライダーとThirdPersonスクリプトを2個つける

f:id:murasame-labo:20190419010845p:plain

実行すると、ぎこちない動きだが UNITYちゃんを動かす事ができる

f:id:murasame-labo:20190419010946p:plain