Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

勉強会レポ : Jenkinsおじさんと仲良くなる方法

勉強会のレポート(メモ)です。
参加したのはこちら、「Jenkinsおじさんと仲良くなる方法」
会場はサポーターズさんです。

supporterzcolab.com

 

 

 

今日話すこと

CIツールを初めて使う方に。
「こんな感じで使ったらうまくいったよ」、「うまくいかなかったよ」という話をします。
具体的な使い方よりも心構えについて話します。

 

 



CIエンジニアになるとこうなる

・見た目とかどうでもよくなる
・どう手を抜くか考える
・手動で何かをするのは悪いこと、ワンボタンでできないことは悪いこと(難しい手順で何かをやるのは悪い)
・ドキュメントを読むのがうまくなる
・謎のAPIとかツールを触っていけるようになる
フルスタックエンジニア(なんでもできる人)っぽくなる

 

 

 

 

 

Jenkinsおじさんと仲良くなる方法

最初に結論から

仲良くなる方法はないです!

 

なんでないのか

・そもそも、Jenkinsはいろんな環境に依存してくる
お客様というよりも社内に影響してくる(新しいことを始める、社内の環境が変わるなど)
・Jenkinsはツールを使うツールなのでツールが壊れるとどうしようもなくなる。

 

 

 

 

 

ちょっとでも仲良くなっていく方法

まず精神論から、なかよくなるイメージ

Jenkinsおじさんはツンデレです

・ちょっと何かあるとすぐ止まる
・もしあなたがCIエンジニアの場合、Jenkinsが止まると回りからすぐに言われます
・何もしなくても使用者や環境のせいで止まります
・Jenkinsおじさんはまだ8歳なので大目に見ましょう

Jenkinsおじさんは病弱です。
いろんな理由でとまります。

 

CIは手段です、目的ではありません

また、3Dなもの・リアルタイムなものは苦手です。
ゲームでいうとレベルエディタのようなものをCIでやるのは無謀です。

できることできないことを把握しましょう。
必要ならば別の手段も考えましょう。

 

 

 

 


Jenkinsおじさんと付き合うためにどうすればいいのか

どういうアプローチが必要か、
ツールの使い方ではなく、何に使うのかという話

 

 

1.ジョブの名前と場所は大事

よくわかる名前をつけましょう。
プログラムのメソッド名よりも考えてつけましょう。
なぜなら使う人が自分だけではないからです。

簡単なドキュメントを作りましょう

これはドキュメントを作れというわけではなく、
簡単なドキュメントで十分な説明のできるジョブにしましょうという意味です。
あなたがCIエンジニアの場合、そうしないと毎回聞かれることになります。

非エンジニアが触るジョブの説明は超丁寧にしましょう

Jenkinsの取り扱い説明書のように書いてあげるのも手。
ジョブのリストはabc順なのでまとめたいものは手前に置くといいでしょう。

 

 

 


2.ジョブ自体をシンプルにしましょう

「ジョブの中身がシンプルか複雑か」ではなく、
使ってる側から見てシンプルか複雑か」です。

ジョブにパラメータをあたえることができるが、それよりもジョブをコピーして少し変えたほうがいい。
大量のパラメータがあった時に、それを全て正しく設定できる人間はいない。

パラメータがいっぱいだと、問題が起こった時にどういう状況でおこったのか把握できなくなる。

ジョブ同士の依存関係を減らしましょう

ジョブ同士の前後関係が複雑など何をやっているのかわからなくなってしまう。
何か問題が起こった時、どういうルートで起こったのかたどるのが難しくなる。
基本的にpipelineを使えば簡単に実現できると思います。

 

ヒューマンエラーをおこさないように、調べる人にとってわかりやすくしよう

 

 

 

 

3.情報はすごく大事

ログはめちゃくちゃだそう。Jenkinsは壊れるのでログは役にたちます。
ログファイルは成果物として保存することもできます。

時間も大事

タイプスタンプ機能をどのジョブにも入れましょう。時間がかかるものだと特に重要。
pipelineならstageという機能を使えばstage内でかかった時間もわかるので便利です。
あまりに時間がかかるようならタイムアウトやリトライするようにしたほうがいいかも。

Jenkinsのログも読めると便利

Javaで動いているのでJavaのログがでてきます。
ちょろっとだけ読めるようになると便利です。
生のデータはJenkinsのホームディレクトリの中にあります。

 

調査などに時間をかけたくなければログをだしましょう。

 

 

 

 

4.新しいものは正義

Pipelineを活用しましょう。最近は結構安定しています。
ループやイフを使いたい場合や最終確認ボタンみたいなのを出すことができます。

 

ただできないこともまだあります(Unityを起動するなど)
そういう場合はそこだけジョブに切り出すとかもあります。
サーバー側は全部パイプラインでいいと思います。

 

Jenkinsのバージョンも最新がいいかも
最近はおもむろにバージョンを上げても問題ないと思いますが、バックアップをとっておきましょう。


新しいほうが幸せ化かも・・・?

 

 

 

 


5.いつでもJenkinsを復元できるようにしてください

最悪、作り直さなければならないときが来ます。来ます!
いつ壊れてもすぐ復旧できるようにしましょう。

たとえばAWS上にあるのならそれをバックアップをとっておくとか。
成果物はいらない、設定だけでOK。

 

これはすごくすごく大事です。

 

 

 

 

 

 

まとめ

・CIツールは壊れるんだよねという心構えで接しましょう。
・CIは手段です。
・説明はプログラムを作るときよりもわかりやすく。
・使う側から見てジョブはシンプルにしておきましょう。
・ログや情報はとても大事。
・バックアップを絶対に取りましょう。

 

 

 

 

 

 

質問

Q.Jenkinsはよく壊れるといいましたが、Jenkinsのサーバーが壊れるのか、ジョブ単位で動かなくなるのか

A.どっちもあります、Jenkinsにくっついてるスレーブが問題の時もありますし、人為的な要因でジョブが壊れることもある、どうしようもない問題もあります。
何にせよあなたがCIエンジニアの場合、全ての状況において「Jenkinsが壊れた」という報告が飛んできます。

 


Q.Jenkinsをサービスに導入するタイミングは?

チームのスケールによります。2、3人ならいらないが、20人30人規模であるならなるべく早くやりましょう。
規模が大きければ大きいほどリターンも大きいです。
例えば全員が手動でビルドしてテストしているなら、ビルド時間は大きなロスとなってします。

 

 

 

 

 

 

 

勉強会レポ : Unity + モーションキャプチャ「Perception Neuron」ハンズオン

勉強会のレポート(メモ)です。
参加したのはこちら、「Unity + モーションキャプチャ「Perception Neuron」ハンズオン」
会場はサポーターズさんです。

supporterzcolab.com

 

f:id:Raspberly:20190419235538p:plain

 

 

 

 

 


モーションキャプチャーとは

人の動きのこと、それを取り入れること

モーションキャプチャーをする機械はたくさんあります。
身体にセンサーをつけてキャプチャするタイプ、カメラにキャプチャさせるタイプなど。

f:id:Raspberly:20190419231037j:plain

※画像のVIVEとキネクトは価格が逆です

 

今回説明するのはニューロン
磁気干渉に弱いので注意が必要です。

 

 

Neuron

お値段は24万ほど、それ以前はモーションキャプチャーをするのに数百万円必要だったが大分落ちた。


Neuron Pro

価格は45万ほど、耐磁気性能アップ。
完全無線化、バッテリー駆動化。
数時間使う場合はもうひとつ必要、つまり値段が倍。
ただし付け替え自体はすぐにできます。

 

Hi5 VR GLOBE

高精度な指トラッキングが可能。
NeuronProは指トラッキングができないので、ほぼ必須。
電池式なので長時間の使用も楽。
無線機器だが強い。
現在品切れ中。

 

 

 

 

モーションキャプチャーデータの確認

ニューロンの場合。
ニューロンでは位置データのみ記録される、それを専用のソフトウェア(Axis Neuron)で人型のモーションにし、Unityなどに取り込む。
または録画したものをfbxや他のモーションデータで出力することができる。
リアルタイム性を求めなければこっちがいい。


Unityで利用方法

Axisから出力されたFBXのRigをHumanoidに設定するだけ。
ただこの時結構メモリを食ってしまう。


注意点

そのまま使うと関節とかがおかしくなるので、差分を吸収する必要がある。
ばくすたーさんのブログをみてください。

https://www.baku-dreameater.net/archives/5741

 

 

 

 


ニューロンでできること

・リアルタイム通信でキャラを動かす
・用途はVtuberの生配信など
・FBXに書きだす場合は、部分的に修正するなどしてゲームや動画制作に


利用方法の紹介

Vtuber
・ゲームで使うモーションの作成
・3Dアニメ
・躍らせる

 

 

 

 

 

 


Vtuberの現場で使われている技術

表情をとる

・フェイストラッキング(iphone10など)
・手動の操作(表情のAnimationClipを割り当てる)

 

リップシンク

・OVRLipSync
 リップシンクライブラリ
 遅延がやや大きいのでリアルタイムには注意
・AniLipSync
 遅延改善に加えアニメに特化している

 

ボイスチェンジャー

・VT-4
PC不要なのでスマホ配信との相性がいい
遅延やノイズがないわけではない

・Voidle
最近発売したボイチェンソフト
20ドルだが7月まで960円なのでとりあえず買ってみるのもいい

 

・DynamicBone
髪や服の動きなどはこっちでやろう
ただ結構重たい 当たり判定を増やしすぎるとボトルネックになることも

 

 

シェーダー

・UTS
設定項目が多いのでこだわりを出せる。
アップデートが頻繁にされる、最近UIが整理されているので、敬遠していた人も是非。
ただ負荷が重いので使うかよく考えよう。

・MToon
バーチャルキャストが開発したトゥーンシェーダー。
負荷が軽く、設定も簡単で扱いやすい。

 

 

 

その他

・FinalIK
関節回りの制御をしてくれる

・クロマキー対応
OBSなどの外部ソフトで背景を透過できる

 

 

 

 

 


質疑応答

Q. 複数人でできるのか?

A. 5人までできる(そういう仕様)
ニューロンプロだと難しい、複数出したいなら複数パソコンが必要、チャンネルの関係で3人までなら同じ空間でできます。

 

 

 

 

 

懇親会

懇親会で体験させていただきました。

f:id:Raspberly:20190419235428j:plain

結構前ですがニューロンが主催のXRハッカソンに参加したことがあります。

jvrh2017.peatix.comこの時はViveを使うチームに入ったのでニューロンの使い心地などはわかりませんでしたが。
装着した感じはかなり軽くそこまで違和感はありませんでした。
見た目がサイボーグっぽくてかっこいい。
ただやはり値段がネックなところ・・・

 

 

勉強会レポ : Roppongi.unity #2

 

勉強会のレポート(メモ)です。
参加したのはこちら、「Roppongi.unity #2」
会場提供、懇親会支援は「メルカリ」さん。

f:id:Raspberly:20190416222136j:plain


エナジードリンクスポンサーは「KLab」さん。

f:id:Raspberly:20190416222143j:plain


撮影協力は「ユニティ・テクノロジーズ・ジャパン」です。
後日Unity Learning Materialsに登録されます。

roppongiunity.connpass.com

 

 

前回のRoppongi.unity#1はこちら!

raspberly.hateblo.jp

 

 

動画

www.youtube.com

 

 

 

 

 

 

 

 

 

LT1. Unityで暖を取る!GLSLをCg/HLSLに書き換えて楽しもう!!~GPUを使い倒してレイマーチングを部屋の壁に飾るまで~

展開が早いので動画をご覧ください。

docs.google.com

・GLSLを書き換える知見
・いまはまだきかないがいずれガンにきくようになる
・好きなエディタでやろう
・Unityでシェーダーを書くとき、個別の関数はマイクロソフトのリファレンスを読むと役に立つ。

・書き換える時のコツとして最初は小さいものがいい
・ループ変数はi以外を使いましょう(競合してしまうため)

iPhoneを水に濡らさなくてももグリッジを出せます

scrapbox.io

 

 

 

 

 

 

LT2. プランナーがUnityでスマホゲーム2本出してみた(仮)

スピード感がすごいのでぜひ動画をどうぞ

docs.google.com

出すまでになにがあったか、出してなにがあったかについて話します。

 

わからないことはググれば出てきます、これはUnityのいいところ。

チート対策はしっかりしましょう。
マクロ対策をいれましょう。プレイヤーは善意だけで遊んではくれない。

ボクーセルーとも子の方では、MagicaBoxelでボクセルを作りました。
mixamでアニメーションを用意しました。
広告はadmobでマネタイズをしました。

 

マシーナリーとも子をよろしくお願いします

 

 

 

 

 

 

LT3. ゲーム作りに助けを求めるのは間違っているだろうか

ねこわける、ねこはしるをリリースしています。


カジュアルゲーム作ってきましたが、やっぱりRPGを作りたい。
デモ用なので、サクッと作りたい人向けのtipsです。

調べるコマンド

RaicastHit2dで距離を測ってじっそうしました

会話イベント

Dungusを使用しました。

まとめ もっとこうしたいこと

ピクセルパーティクルにしたい
・ぷにこんみたいなどを使いたい
・話しかけているオブジェクトをわかるようにしたい
・スケールの大きいものはFungusでできるのか

 

ねこわける

ねこわける

  • Takehito Gondo
  • ゲーム
  • 無料
ねこはしる

ねこはしる

  • Takehito Gondo
  • ゲーム
  • 無料

あの虹色のキャラクターはカワウソだったのか・・・

 

 

 

 

 

 

LT4. Unity歴2ヶ月のド素人が塗り絵ARを作るまでのお話

話すこと

・塗り絵ARの知見
・メンタルブレイクをしない知見

この内容はQiitaの方に書いています。
OpenCVを使っています ここ最近無料になりました。

知見を紹介します
ARKit
Webカムを使って何かしたい時

Shader
Unlitシェーダーで影を出したい時、
Unityの用意している関数やパスを通すだけで簡単にできます。


Unityを楽しく学ぶ方法
一つの解 チュートリアルで学ぶ

・操作で悩まない
・ハードルが下がる(一番いいこと)
・楽しい

 

鬼門 ぼっちだと質問ができない

その解決策はUnity道場
なんでも相談所が神
安藤さんという神がいます

 

qiita.com

 

 

 

 

 

LT5. スクロール表現の為のUV to Positionのテクニック

docs.google.com
シェーダーでスクロールをしたい(スキャン的な)
ただスクロールさせると身体に沿って動かない

 

ずっと腕を上げ続けるばいいがそうはいかない。
そのため上げ続けている時の座標を使います。なのでジオメトリシェーダーでばらばらにして使います。
しかし座標をそのまま色にしているため0~1の範囲内にしないといけない。

 

floatをfixed4つに分解するテクニックがシェーダーにはある。
各成分を0~1になるように調整します。

圧縮されると長さもかわるのでそういう設定は全部切ります。

レイマーチングをしたい時は本を買ってね

booth.pm

 

 

 

 

 

LT6. GUILayoutをランタイムで使おう

20190415_GUILayoutをランタイムで使おう - Speaker Deck

GUILayoutについて

GUILayoutとEditorGUILyaoutは違います
GUILayout自体は古い時代からUIで使われています
APIが違うしnamespaceも違う

 

活用できるところ

デバッグ画面 他はあまり思いつかない
uGUIの設置が不要
buttonとかtextとか置かなくていいしイベントを紐づけなくてもいい
自動レイアウトも便利

向かないこと

メインのUIには向かない
uGUIと比べて表現が非力
GUIメインだとスクリプトが煩雑になりがち


まとめ

GUILayoutだとスクリプトだけでUIをだせるので楽
デバッグ画面を作るのが楽
Dev/Probの切り替えが楽

 

 

 

 

 

 

LT7. 分かった気になる!TimelineSignals

分かった気になる! Timeline Signals / Timeline Signals Tutorial - Speaker Deck

タイムラインについて

複数のアニメーションやサウンドを時系列にそって管理できるエディタ
2019からSignalsという機能が追加されます
これは任意のタイミングで関数を呼び出す機能

 

ここでデモシーン
動画をみてね

 

Maker/MakerReceiver

逐次Signalを増やしたくない時用にマーカーレシーバーという機能が追加されました。
通知ごとに値を制御できる機能です。

 

マーカーはエディタ上だと再生されません。ランタイム(再生時)のみです。

 

 

 

 


LT8. Unity × Docker

docs.google.com


Dockerを使ってUnityを使用できるようにする方法について話します

Unityをサーバーにアップロードして使うと規約違反です、注意しましょう。

「自動テスト、ビルド、動画を勝手に作ってくれないかな」ということをさせます。
ただ現状ハイスペックのパソコンでないと動きません。

 

 

 

 

 

 

 

 

懇親会

 

ドルフトに乗りながらの乾杯。
ちなみに後半あたりからセグウェイドリフトの体験会のようなものが開かれていました。
みなさんとても楽しそうです。私もやってみましたがとても難しい・・・

f:id:Raspberly:20190416222154j:plain

 

ピザはピザハット
ポテトとナゲットもあります。

f:id:Raspberly:20190416222157j:plain

f:id:Raspberly:20190416222203j:plain

 

 

 

f:id:Raspberly:20190416222221j:plain

f:id:Raspberly:20190416222232j:plain

f:id:Raspberly:20190416222235j:plain

 

 

 

 

 

 

 

 



宣伝

VRM勉強会

vrm.connpass.com

 

【Unity / .NET Core】 MagicOnion勉強会

connpass.com

 

【TECH×GAME COLLEGE#19】ちょっと凝ったサウンド演出の実装解説ーADX2の場合ー

techxgamecollege.connpass.com

 

インタラクティブ・ストリーミングとメディアの未来

interactive-streaming-and-the-future-of-media-genvid.peatix.com

 

Gotanda.Unity#12

4/22 12時から募集開始

 

Unity Designer's Cafe#2

絶賛登壇者募集中

 

 

八時間耐久作品制作会(仮)

atnd.org

 

マシーナリーとも子 トークショー

 

cluster.unity #2

cluster-vr-meetup.connpass.com

 

しなもく会 vol.5

synamon.connpass.com

 

 

 

他の方の感想ブログ、まとめ

cz-mirror.hatenablog.com

 

scrapbox.io

 

togetter.com

 

 

 

ととさんのLTでTimelineの話が出ていましたが、今から学びたい方はこちらがおすすめ

www.twitch.tv

 

 

 

間違っている所、消してほしいツイートなどがありましたらコメントにお願いします。

【アセット紹介】MK Glow FreeでUIやオブジェクトを光らせる【Unity】

注意: こちらのアセットはAsset Storeから削除されたようです。
新規に入手する方法はありません(有料版はそのまま存在します)
既にダウンロード済の方は引き続きご利用できます。


有料版はこちら

raspberly.hateblo.jp

 

 

 

今回はアセットの紹介をやってきます。
紹介するのはこちらMK Glow Freeです。

f:id:Raspberly:20190413014954p:plain

ゲームオブジェクトやUIをお手軽に光らせたい方必見!
マテリアルを変えるだけで簡単に光物を実現できるアセットです。

 

モバイルでも動作するようです。

Fantastic
9日前
De-Blasio-Corporation以前のバージョン 4.0.0 で
Work fine on mobile. Thanks!

 

 

 

 

 

 

サンプルの確認

サンプルシーンは5つ入っています。

f:id:Raspberly:20190413005210p:plain

 

・Cubes
発光するキューブです

f:id:Raspberly:20190413010503g:plain


Post Processingを入れるともっとGlow感がでます。
以降もPost Processingを導入していきます。

f:id:Raspberly:20190413010607g:plain

 

 

 

使い方

付属のシェーダーをマテリアルに適応するだけです。

 

まずは適当にマテリアルを作成します。

f:id:Raspberly:20190413012148p:plain

 

LWRPの場合、動くシェーダーと動かないシェーダーがあるので注意しましょう。
今回はMK/Glow/Selective/Legacy/Unlit/Textureを使います。

f:id:Raspberly:20190413012521p:plain

 

あとはこれを3Dオブジェクトに与えるだけです。

f:id:Raspberly:20190413013255p:plain

 

 

Glow Texture Powerで明るさをマテルアル単位で調整することができます。

f:id:Raspberly:20190413012830g:plain

 

 

UI編

UIもBoxの時と同じようにマテリアルを作っていきます。
使用するシェーダーはMK/Glow/Selective/UI/Defaultです。

f:id:Raspberly:20190413013908p:plain


このマテリアルをImageにつけるとGlow・・・しません。

f:id:Raspberly:20190413014314p:plain

SceneビューではGlowしていますがGameビューではGlowしていません。
実はもう一工夫必要です。

CanvasにあるRenderModeをScreenSpace-Cameraに変更し、
RenderCameraにPostProcessingをつけたMainCameraを登録します。

f:id:Raspberly:20190413014541p:plain

 

これでGameビューでもGlowするようになりました。

f:id:Raspberly:20190413014814p:plain



 

 

有償版

有償版も存在します。

f:id:Raspberly:20190413015157p:plain

 

MKグローは、アーティストに優しい機能豊富な光の明るい表面散乱をシミュレート後処理効果、。ブルーム加えて、レンズ表面、レンズフレア、グレアのようないくつかの高度にカスタマイズ可能なエクストラが利用可能です。このシェーダは、Legacy、Lightweight、およびHigh Definition Render Pipelineと互換性があります。 

 

LWRPやHDRP、VRでも全ての機能が問題なく使えるようです。
興味を持たれた方は検討してみてはいかがでしょうか。

勉強会レポ : ライブラリやフレームワークのソースコードを読んでみよう!

勉強会のレポート(メモ)です。
参加したのはこちら、「ライブラリやフレームワークソースコードを読んでみよう!」
会場はサポーターズさんです。

supporterzcolab.com

 



 

スライドはこちら

 

 


なぜ読むのか

ドキュメントでわからないことを知るため

 

 

 

読むとわかること

・細かい仕様
アーキテクチャ 設計

設計方法を学ぶことができる

・罠やバグ


こういうのを読むと

・ドキュメントでわからない情報を知れる。
ソースコードを読み解くスピードがあがる。
 副次的に他の人が書いたソースを読めるようになる。
・アウトプットにつなげることができる。

 

 

 

 

プロダクトのソースを読むのはだめなのか

プロダクトのソースからサービスやビジネスロジックを学ぶことができるが、
ライブラリやフレームワークの方がいい。
こっちは基本的にオープンソースが多い、そのため会社や所属が変わっても読める。
プロダクトの方は企業機密があったりするので、公開できるようなアウトプットがしづらい。

 

 


どうやって読んでいくのか

読む前に事前準備

・ただ読むのはつらいので目的をきめよう

 〇〇メソッドの処理について調べようなど。

 

・ドキュメントがあるなら事前に読んだ方がよい

 ドキュメントを読んでおいた方がソースを読んだ時に頭に入りやすい

 

・どんな処理になっているか自分なりに予想してからやってみる

自分だったらどういう実装をしているだろうと思うと、意外な実装を見つけた時記憶に残りやすい。

 

IDE(に準ずるもの)があるとよい (VSやRiderなど)

ソースを読むうえで便利な機能が多い、ジャンプ機能など。

 

 

 

 

 


実際に読んでいこう

読むうえで気をつけたほうがいい点

・わかったことをコメントに書きながら進めよう

混乱を防ぐため1行1行書きましょう。(疑問点など)
全てを記憶しながら書くのは難しい、なので頭は読み解くことだけに集中させましょう。

 

・実際に動かしながら読もう

正しいと思いながら読んでも、実際に動かさないと確証を得られない。

 

・過去のコミット、プルリク、イシューを読もう

なぜその処理を追加したのかを知ることができる。
ソースコードを読むだけじゃわからないところもより理解しやす。

 

 

 

 

読んだ後、どうアウトプットにつなげるか

アウトプットできる例

・ブログに書く

どんな処理なのかをまとめてブログに書く。
1メソッドまとめるだけでもいい。
メソッドの数だけブログ記事がかけるのでかぶることはほとんどない。

 

OSSに参加できる

敷居が高いと思うかもしれないが、そこまで難しくない。
「ここの処理なんでこんな風になっているのか」をイシューで聞く、
もしバグならプルリクができる。仕様でもどういう思想でそうしたのかを聞くことができる。

 

・登壇できる

ネタには困らないのでLTでバンバンできる。
もっと深堀すればロングトークもできる。

 

 

最後に

コードを読み解く力はエンジニアの基礎能力。
それを養うのに、ライブラリやフレームワークを読むのはオススメ。
読書くらいの感覚でいい。


わからないことは聞いて、わかったことはアウトプットしていって。
エンジニアとしての価値を高めていきましょう。

 

 

 

 

 

質疑応答

Q. 読むきっかけはどう決める

業務やプライベートで使うもの、よく使うメソッドが優先的にきめています。
いままで使ったことのないものよりも、イメージしやすく、モチベが出る。

 

Q. 疑問に思ったところのイシューやプルリクはどう見つける

githubの場合、blameという機能でコミットの一覧がでてきます。
「どんなのコミットをしたのか」とコメントを見ることができる。
コミットメッセージによってはタグがあり、そこからプルリクエストをみることができる。

 

Q. アウトプットする時、どの程度までまとめる

メソッド単位でやっています。メソッド内で使われているものを解説します
小分けにすることで見やすくなります。

 

 

 

 

勉強会レポ : Unity ユーザのための Git ハンズオン #1

勉強会のレポート(メモ)です。
参加したのはこちら、「Unity ユーザのための Git ハンズオン #1」
会場はユニティ・テクノロジーズ・ジャパンさんです。

meetup.unity3d.jpハッシュタグ : #Unity_Git

  

 

動画がこちらから閲覧できます。
手順や解説などはこちらでどうぞ。

www.youtube.com

 

 

有志による不定期に開催される勉強会です。
会場提供、機材、懇親会Unityさんです。
今回は強力なサポーターもいます。

f:id:Raspberly:20190405010402j:plain

 

資料はこちら。

esa-pages.io今回はGUIを使用します。

 

 

 

 

 

講師紹介

もんりぃ先生です。
ごっこランドをぜひダウンロードしてみてください。

サポーターとして「えむにわ」さん、「とりすーぷ」さん、UTJの方が支援してくれます。

 

 

 


環境構築

フォークというアプリを使って説明をしていきたいと思います。
sourcetreeのようなもの。アカウントの登録がいらないものです。
全部英語です。英語だとコマンドラインと同じ単語が使われるのでわかりやすいかと。

Fork - a fast and friendly git client for Mac and Windows

 


コマンドラインについて

レジュメの方を使ってみてください。
本格的にがっつりやりたいときはCLIがないとしんどくなってきます。
そのうち使えるようになっておくといいでしょう。

 

 

Gitとは

分散型のバージョン管理システムです。
クライアントがいろいろありますが、中身はgitを実行しているだけです。


サーバー側にリポジトリと呼ばれる場所を作り、ソースなどをまとめておきます。
使うときはこれをクローン(リポジトリをまるっとコピー)します。
これがいろんなマシンに分散されて使われます。

サーバー側でリモートリポジトリを管理するサービスもあります(githubやbitbucketなど)

 

ローカル

(クローンしたては)サーバーとおなじもの。

これをチェックアウトしてできるのが作業コピー。
作業コピーを変更したもの登録する時はステージングエリアに登録します。
するとステージングエリアにたくさん変更がたまっていきます。
これをローカルに反映させることをコミットといいます。

 

 

リビジョン

修正内容のこと、1行単位。
これを積み重ねていきます。

 

おさらい

リモート

 サーバー上にあるリポジトリ

作業コピー

 呼び方がいろいろあります
英語だとワーキングツリーがオフィシャルだと思います

ステージングエリア

 変更をいったんためておくところ。
修正内容など。リポジトリを操作する時はここを操作します。

リビジョン

 変更履歴の単位。
1つ分の変更履歴であればいいので、1つのファイルとはかぎらない。
この時40文字のハッシュが作られます。

 

 

 

 


基本

gitignoreの作成

gitignoreはgitで管理しないものの一覧です。
これはGitクライアント上で無視されます。
Unityで言うとLibraryフォルダなど無視したいものをここに記述します。

 

初期化

コマンドでいうとgit init
これでステージングエリアとローカルリポジトリの箱だけ作られました。

 

Add

ステージングエリアに管理対象として登録すること。

 

コミット

Addしたものをリポジトリに反映させること。

 

ブランチを作りましょう

ブランチとは履歴を積み上げていくときに別の歴史を作ること。
後からの機能修正ですぐに切り替えられるようになります。
こうすることで複数人で開発する時に衝突しなくなる。

 


マージ

歴史を切り替えたが、本流に合流させたい場合。
それぞれのブランチを混ぜる行為をマージといいます。

この時衝突することをコンフリクトといいます。
こういう場合、どっちを採用するかを選択します。

どっちも採用したい時は地獄です。
たとえマージに失敗しても歴史は残っているので復元は簡単にできます。

 

 

 

 

 

 

 

応用編

GitHubを使おう

GitHubとは何か
リモートリポジトリを管理してくれるサービス。
去年マイクロソフトに買収されました。

最近、プライベートリポジトリの無制限使用が無料になりました。


認証の設定

GitHubと通信するために鍵を登録する必要があります。

しかしこれだけではだめ、ローカルに溜めた変更をリモートに送る必要があります。
これをプッシュといいます。


既にGitHubで管理済みのプロジェクトの場合はクローンして使いましょう。
会社やチームに参加する場合はこっちが基本。

 

 

プルリクエス

Gitの機能ではない。GitHubが容易しているチーム開発に便利な機能。
コードレビューやCI実行ができます。
プルをしてくださいというリクエストを出すこともできます。

 

ここで時間切れ

フォークの説明はちょっと時間がなくてできませんでした。
次回もあるのでそちらを見てください。

 

 

 

 

 

 

 

懇親会

パン?の上に具材が乗った食べ物をいただきました。
とてもおいしかったです。

f:id:Raspberly:20190405010523j:plain

 

第2回目もあるそうですが内容は同じものになるようです。
今回参加できなかった方も是非どうぞ!

 

 

 

私は普段GitHubはあまり使わず、Bitbucketがメインですがリポジトリ生成時にgitignoreもついでに作れるので今回のようなやり方は初めてでした。

Unity用のgitignoreはこちらっぽい。
gitignore/Unity.gitignore at master · github/gitignore · GitHub
UnityはAssetsとProjectSettingsがあればいいというのを昔どこかで聞きましたね。



 

タイムライン

 

 

 

 

 

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。

 

HUD Navigation Systemを試してみる3 Minimap編

前回からかなり間が空きましたが、「HUD Navigation System」の続きをしていきます。

f:id:Raspberly:20181227225541p:plain

assetstore.unity.com

 

前回はこちら!

 

その1

raspberly.hateblo.jp

その2

raspberly.hateblo.jp

 

 

 

 

今回は最後にあたるMiniMapについてやっていきます。
MIniMapはRaderとは違い、地形も映るという特徴があります。

 

 

セットアップ

まずはMiniMap用のテクスチャを用意します。
UnityエディターのWindow -> Sickscore Games -> HUD Navigation System -> Utilities -> Minimap Texture Creatorを選びます。

f:id:Raspberly:20190403223205p:plain

 

するとHierarchyビューに「HNS TextureCreator」というオブジェクトが作成され、
Inspectorビューに設定画面がでてきます。
ここでは、マップの範囲、テクスチャサイズ、背景を設定することができます。

f:id:Raspberly:20190403223900p:plain

f:id:Raspberly:20190403224617p:plain


Create Textureを押すと、マップテクスチャとマッププロファイルが作成されます。
このマッププロファイルはMiniMap機能を使うのに必須です。

f:id:Raspberly:20190403224840p:plain

 

 

 

マップの表示

後は他のHUDと同じように HUD Navigation Systemに設定してあげます。
Minimap Featureにチェックを入れ、Minimap Settingsで先ほど作ったProfileにチェックを入れます。

f:id:Raspberly:20190403225543p:plain



 

 

Minimap Mode

Minimapには表示Modeが2種類用意されています。

f:id:Raspberly:20190403233457p:plain



Rotate Player

マップは動かず、プレイヤーアイコンが動く設定。

f:id:Raspberly:20190403232448g:plain

 

Rotate Minimap

プレイヤーアイコンは動かず、マップが動く設定。

f:id:Raspberly:20190403232854g:plain

 

 

Rotate Minimapの時はHUD Navigation SystemのNavigation ReferenceをControllerにしたほうがいいでしょう。

f:id:Raspberly:20190403233748p:plain

これがCameraになっていると表示される座標がおかしくなります。

f:id:Raspberly:20190403232807g:plain



 

 

Minimapの大きさ

Hierarchyビューにある、HUD Navigation Canvas -> Minima Panelで、
MinimapやMinimap MaskのRectTransformで位置や大きさを自由に変えることができます。

f:id:Raspberly:20190403234420p:plain




 

よくある注意点

Minimapに限りませんが、HUD Navigatin Systemコンポーネントの各Featureにチェックを入れないと、
そもそも動きませんので気を付けましょう。

f:id:Raspberly:20190403230154p:plain

 

 

 

MiniMapの注意点

目的地やルートがわかるなど大変便利なMiniMapですが、デメリットも抱えています。

ミニマップの存在がゲーム体験へと及ぼすデメリット…「ミニマップがゲームへの没入感を殺す」 | DAMONGE

 

要約すると、ミニマップの存在でプレイヤーは迷いや不自由なく移動をすることができるが、
同時に驚きや感動までなくなってしまう。この辺は自分の作るゲームと相談しましょう。

 

 

 

まとめ

全ての機能を網羅したわけではありませんが、これでHUD Navigation Systemの使い方がわかったと思います。
とても使いやすく、各種ナビゲーションを作れるためオープンワールドなどを作る方はぜひどうぞ!

 

 

参考

このAssetを使って開発したゲームを公開しています。
挙動などを見たいかたは遊んでみてください。

マスコット大逃走 v1.5f | フリーゲーム投稿サイト unityroom