■タイトル##
第28回
■開催日##
2016年11月5日(土) 16:00~18:00
■参加者##
17名
■活動内容(概要)##
・部員さんプレゼン「Gitでバージョン管理(ログ・リバート・リセット)」
・部員さんプレゼン「迷路生成アルゴリズムと迷路解読アルゴリズム」
・菅原プレゼン「Unityはじめるよ ~NavMesh応用~」
・雑談
■活動内容(詳細)##
【実演・プレゼン】
・部員さんプレゼン「Gitでバージョン管理(ログ・リバート・リセット)」
今回紹介したのは以下の4つ。
ログの閲覧 (log)
ファイルに対するコミット履歴を一覧表示します。
ファイルの注記 (blame)
各行のコードがどのコミットで変更されたのかを表示します。
コミットの打ち消し (revert)
あるコミットの変更を無かったことにします。
逆の変更を行うコミットにより、打ち消します。
過去の変更のリセット (reset)
任意のコミットの状態に行単位で戻します。
元に戻しても自動コミットされないため、コミットし直す必要 があります。
■補足
直前のコミットの修正(amend)との違い
直前のコミットを修正すると、歴史が変わります。
これは複数人で運用している場合に注意です。
既に公開した過去のコミットを変えてしまうと、
他の人の状態と不整合が起きてし まいます。
打ち消しの使い道
上記の通り、複数人で運用している場合は
歴史は変えてはいけません。
もし、間違えたコミットを公開してしまった場合は、
そのコミットをまるごと取り消す コミットすることで、
歴史を変えずに間違えたコミットを無かったことにします。
資料:第28回_プレゼン資料(Gitでバージョン管理~リバート編~).pdf
プロジェクト一式:GitWorld20161105.zip
** ・部員さんプレゼン「迷路生成アルゴリズムと迷路解読アルゴリズム」**
迷路生成の代表的なアルゴリズムは3つ
棒倒し法
壁伸ばし方
穴掘り法
今回は比較的簡単な棒倒し法を実装。
シンプルなアルゴリズムだがちゃんと迷路が生成された。
ただ、左上をスタート、右上をゴールとして設定すると簡単にクリアできるパターンが生まれやすい。
迷路解読の代表的なアルゴリズムは3つ
右手法(左手法)
トレモー・アルゴリズム
オーア・アルゴリズム
今回は比較的簡単かつ有名な右手法で実装。
右側の壁に手をついて、ひたすら壁沿いに進むとい方法。
シンプルなアルゴリズムな分、実装は比較的簡単だが、探索速度が遅いというデメリットもある。
資料:第28回_プレゼン資料(迷路の生成と解法アルゴリズム).pdf
・菅原プレゼン「Unityはじめるよ ~NavMesh応用~」
簡単にNPCが作れるNavMeshの応用編。
今回は、NavMeshだけでは移動不可能な段差や隙間を超えるためのOffMeshLinkと、
動く障害物NavMeshObstacleの紹介。
OffMeshLink
手動で作る方法
移動元と移動先のGameObjectを用意して、OffMeshLinkコンポーネントを追加するだけ。
自動で作る方法
Bakeの設定の、DropHeightとJumpDistanceを設定するだけ。
※自動で作る方法はなぜかうまくいかず・・・次回までの宿題
ただし、OffMeshLinkは移動が不自然という問題がある。
※スクリプトで解決可能。
NavMeshObstacle
動く障害物にNavMeshObstacleコンポーネントを追加して、適切な設定をする。
車のように常に動くものと、外的要因があって初めて動く木箱のようなものでは設定方法が違うので注意。
移動コストについて
移動可能範囲のエリアごとにコストを設定可能。
Agentは コスト×移動距離 の少ないルートを選択する。
資料:第28回_プレゼン資料(Unityはじめるよ~NavMesh応用~).pdf
プロジェクト一式:NavMeshTest(応用編)完成版.zip
**・雑談**
Qiitaのイベントの紹介
「Advent Calendar」とは、プログラミングに関する記事を12/1から12/25まで毎日みんなで投稿するイベントです。
http://qiita.com/advent-calendar/2016
LAC「すごうで2017」
ITを使って世の中を便利にしたい、自分を成長させたいと願う若い皆さんの夢の実現をお手伝いしてくれるイベント。
最高100万円まで支援してくれる。
http://www.lac.co.jp/lp/sugoude2017.html