Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リンクスリングスを支える技術
Search
CyberAgent SGE Engineer
July 24, 2019
Technology
0
6k
リンクスリングスを支える技術
Gotanda.unity #13 (2019/7/24)
の発表資料です
CyberAgent SGE Engineer
July 24, 2019
Tweet
Share
More Decks by CyberAgent SGE Engineer
See All by CyberAgent SGE Engineer
SREチームの立ち上げから5年間とこれから
sgeengineer
0
1.6k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
1.8k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
2.3k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
13k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
1.5k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
2.5k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
1.7k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
4.8k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
4.7k
Other Decks in Technology
See All in Technology
Postmanを使いこなす!2025年ぜひとも押さえておきたいPostmanの10の機能
nagix
2
120
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
1
240
Larkご案内資料
customercloud
PRO
0
600
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
320
組織貢献をするフリーランスエンジニアという生き方
n_takehata
1
1k
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
120
Moved to https://speakerdeck.com/toshihue/presales-engineer-career-bridging-tech-biz-ja
toshihue
2
550
日経電子版 x AIエージェントの可能性とAgentic RAGによって提案書生成を行う技術
masahiro_nishimi
1
290
現場で役立つAPIデザイン
nagix
29
10k
技術的負債解消の取り組みと専門チームのお話 #技術的負債_Findy
bengo4com
1
1.2k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
240
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
650
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Fireside Chat
paigeccino
34
3.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
A Philosophy of Restraint
colly
203
16k
Visualization
eitanlees
146
15k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
For a Future-Friendly Web
brad_frost
176
9.5k
BBQ
matthewcrist
86
9.5k
Transcript
リンクスリングスを支える技術 株式会社サムザップ 中島圭宏 Gotanda.unity #13 2019/07/24(水)
自己紹介 ・中島圭宏 ・株式会社サムザップ所属 (2016年11月中途入社) ・リンクスリングス リードクライアントエンジニア ・Unity歴9年と少し (Unity2.6.1辺りから?) ・ここ8年程はUnityでスマートフォン用ゲームの開発、それ以前はコンソール、アーケードゲームの開発
リンクスリングス ・2019/05/30(木) 正式サービス開始 ・ジャンル : わいわい陣取りアクション ・対応OS : iOS /
Android
どんなゲーム? ・4 vs 4での陣取りバトル ・3分間でたくさんのエリアを取ったチームが勝利!
今回のテーマ ・どんな思想でリンクスリングスの開発を進めていったか ・リンクスリングスで使用した技術や Asset等を一部紹介 ・主にクライアント部分に関して
開発環境 ・Unity 2018.2.21f1 ・Visual Studio (ReSharper) or Rider ・GitHubでプルリクベースでの開発
UIの要件 ・作業分担がしやすいこと ・画面編集時に実行時の最終形が確認できること ・簡単にテストができること ・etc…
UIの設計思想1 ・マルチシーン編集を使用 ・ヘッダー、フッター、メイン UI等をそれぞれ別シーンで作成し、実行時に Additiveで ロードする
UIの設計思想2 ・実際のシーンの例 ・各シーン単体で起動しても最終形を確認できる ・uGUIを使用し、基本はReactiveProperty (UniRx)とObservableのMV(R)Pパターン
Zenject ・DI(Dependency Injection)としてZenjectを使用 ・先程のパーツ毎にシーンを分けて作った UIシーンの開発に威力を発揮 ・各パーツのUIシーンを直接起動した時に、モックデータが流し込まれるようにバインディングしてある ・一々タイトル画面等から確認したい UIシーンに遷移しなくても、各シーンを直接起動すれば確認できるように 作ってあるのでUI開発のイテレーションが加速した ・↑に関してはUI以外でも効果大で、いきなりインゲームシーンを起動しても遊べるように作ってあるのでこちらも
イテレーションが加速した ・ただし毒にもなりうる…
Nested Prefabs ・Unity 2018.3でリリースされたUnity Nested Prefabではない ・機能としては同じようなもの https://assetstore.unity.com/packages/tools/utilities/nested-prefabs-lts- 2017-2018-84495 ・Unityを2018.3以降にアップデートする時には、
Unity Nested Prefabに置き 換える予定
陣取り1(等高線検出) ・グリッドを互い違いに半分ずらし、ヘックスのように扱っている ・陣地のエッジ部分を等高線のように扱い、グリッドに隣接する 6方向のグリッ ドを時計回りに探索(RadialSweepアルゴリズム)し、「等高線の情報」を作成 ・探索時に「陣地が無い方向には壁があり、陣地が有る方向には壁がない」と 言えるので、グリッドの繋がりを検出しながら、壁の有無・前後の壁情報も同 時に取得 ・探索が1周回って元のグリッドに戻ってきたら、壁に囲まれた「閉領域」である とみなし、これを等高線ノードとして保存
陣取り2(等高線の階層情報検出) ・先程のエッジの探索と同時に、グリッドと同サイズのバッファに等高線情報を書き込む ・このラベリングと等高線階層のアルゴリズムは、 Suzuki85(OpenCVのエッジ抽出処理もこれを元にしている )を 参考にしている
コネクトリンクの判定 ・1 コネクトリンク前の等高線は外周のみ ・2 緑色の•をコネクトした ・3 先程の処理によって、内側に新たな等高線ができる (赤い部分) ・元々あった等高線と、新たな等高線にコネクトした •が含まれていれば、コネクトリンクを満たしたとして、内部を
塗りつぶす
NPCの動き1 ・プレイ中にユーザーが切断されると NPCになる ・思考についてはBehavior Designerを使用 https://assetstore.unity.com/packages/tools/visual-scripting/behavior-designer-behavior-trees-for-ever yone-15277 ・Behavior Tree形式でAIが組めるアセット ・拡張性も高く使いやすかった
NPCの動き2 ・経路探索についてはNavMesh ・こちらもあまり支障なくすんなりと導入できました
マルチプレイ ・Photon Serverを使用 ・当初はPhoton Cloudを使用していたが、運用後の拡張性等を考えて Photon Serverに変更 ・リンクスリングスでのPhoton事例に関しては、CEDEC2019で、 「「リンクスリングス」でのPhoton採用事例および、Photon CTOによる最新サービスPhoton
Quantumの紹介」 と称して、弊社開発者がセッションに参加します https://cedec.cesa.or.jp/2019/session/detail/s5ce3b5ae69c98
ご清聴ありがとうございました!