unity1week online共有会 #1 https://meetup.unity3d.jp/jp/events/1241
▼ゲームはこちらからプレイできます https://unityroom.com/games/sweet_honey_hive
unity1week online共有会 #1青木とと@lycoris102
View Slide
だれ? 2@lycoris102青木ととねんれい:30かぞく: 妻と3歳の息子・Unityアンバサダー・ゆるふわゲームクリエイター・ゆるふわイベントオーガナイザー ・Gotanda.unity ・UnityDesigner’sCafe ・unity1week Meetup
だれ? 3#unity1week でゲームを作るのも好きですhttps://unityroom.com/users/lycoris102
4「密」で作ったゲームSweet^2 Honey Hive
5今日の話アジェンダ時間があればコードの一例(状態管理)Unityで演出を作るゲームデザインと作り方10分で話せるだけ話します! (時間ない)
6今日の話アジェンダUnityで演出を作るゲームデザインと作り方時間があればコードの一例(状態管理)
7ゲームデザインと作り方やったこと好きなゲームからアイデアを組み合わせる
8ゲームデザインと作り方カタンアニマロッタシリーズハニーエイト+サイコロ2つ降る出た目から資源を獲得ルーレットを回す出た目を起点に領地を広げていく出目が当たった時の高揚感と領地が広がったときの視覚的な嬉しさが好き
9ゲームデザインと作り方このままだと運しかなくて自己統制感/意思決定がない (自分がゲームをコントロールしているような感覚がない)中間目標がなくてメリハリがなく途中でダレる脳内プレイによる課題感の洗い出し
10ゲームデザインと作り方人生ゲーム/桃鉄/じぱんぐ島 … etc から出目や盤面を操作するアイデアを追加ショップゲームをコントロールしている感覚を追加安定/チャレンジのジレンマ要素の追加
11ゲームデザインと作り方(これ何か元ネタあったっけな……)宝箱中間目標を追加しゲームの流れにメリハリを生み出す
12ゲームデザインと作り方0から面白い体験を作るのは難しいので複数のアイデアを組み合わせて課題を解消しゲームとして成立させる自分が「面白い!」と思えるものを採択することが面白さにつながる / 「パクリ」を恐れない
13ゲームデザインと作り方やったことデザインモックから作る
14ゲームデザインと作り方アイデアを決めてからイラレで作ったデザインモック(一枚絵)この時点で実際のゲーム画面に必要な情報は8割くらい揃っている
15ゲームデザインと作り方デザインモックによるデザインマター開発目指すべき絵作りの指標を定義でき後発する素材のテイストを統一出来る素材がある状態で開発に取りかかることができる(仕様としての)要素を洗い出せているので開発時のクラス設計に役立つ自分はイラレでやったが、アセットを使う場合Unity上で挙動を組み込む前にハリボテで作ることも可能
16ゲームデザインと作り方画面だけ作ってお腹いっぱいになっちゃうので注意
17今日の話アジェンダUnityで演出を作るゲームデザインと作り方時間があればコードの一例(状態管理)
18Unityで演出を作るやったこと基本Timeline 時々 DOTween
19Unityで演出を作るUnity2017で提供されたビジュアルツールTimeline
20Unityで演出を作るゲームの状態毎にTimeline / PlayableDirector を用意
21例: サイコロを振る時のTimeline「TurnDiceRoll」という状態に遷移したときに、UIを捌けさせ、ダイスを振るアニメを実行するUnityで演出を作る
22Timelineのいいところ複数のオブジェクトのアニメーションを同時に制御できるUnityで演出を作る
23TimelineのいいところAudio(効果音)の再生タイミングも合わせて制御できるUnityで演出を作る
24TimelineのいいところSignalによりTimeline中に任意のコンポーネントのメソッドを実行可能Unityで演出を作る
25ランダムで画像を差し替え、最後にはターン開始時に定義されたダイス値の画像に差し替えする例SignalReceiverでどのSignalが来たらどのメソッドを実行するかの定義Unityで演出を作る
26タイムラインの終了を通知するSignalを受けて、次の状態へ遷移するUnityで演出を作る
27Signalの詳細についてこちらのスライドでも発表してます (手前味噌)https://learning.unity3d.jp/2337/Unityで演出を作る
28Unityで演出を作るScript上で動かすTween系 (2値を補完するように動く) アセットDOTween
29今回のDOTweenの使い所数字のカウントアップhttps://qiita.com/RyotaMurohoshi/items/f7312e802f7698e42cd0▼ @RyotaMurohoshi さんが拡張を書いてくれています!Unityで演出を作る
30今回のDOTweenの使い所時間をずらしてのTimelineの連続再生マス解放/はちみつを獲得するTimelineを一定時間間隔毎に順序よく再生するUnityで演出を作る
31今日の話アジェンダUnityでの演出の作り方ゲームデザインと作り方時間があれば、どういうコードを書いているか晒します時間があればコードの一例(状態管理)
32コードの一例タイトルチュートリアル初期設定ターン開始ダイスロールはちみつ獲得マス獲得ターン終了結果発表状態管理(GameState)Enumで定義
33IGameStateHandler大まかな構造IGameStateRendererView(MonoBehaviour)IGameStateController IGameStatePresenterPresenterIGameStateUseCaseIGameStateEntityIDiceEntityIHexEntityIHoneyEntityIShopEntity…UseCaseEntity入力 描画UseCaseへの伝搬 出力するViewのマッピングビジネスロジックの実行/複数のEntityを跨ぐ処理状態の保持/更新/変更の通知IDiceUseCaseIHexUseCaseIHoneyUseCaseIShopUseCase…Enum Stuct Installer Utility<リスペクト> CAFU (CleanArchitectureForUnity): https://github.com/umm/cafu_coreコードの一例
34MonoBehaviourからのイベントを流す責務 (Timelineの終了時に値を発行)TimelineGameStateHandlerView(MonoBehaviour)イベント通知/購読の仕組みに UniRx を利用コードの一例
35ButtonGameStateHandlerView(MonoBehaviour)コードの一例MonoBehaviourからのイベントを流す責務 (ボタンが押された時に値を発行)
36Viewからのイベント通知を集約してUseCaseに流す責務GameStateControllerPresenterコードの一例View群は、Zenjectによって依存性注入されている
37通知を受けてEntityの状態変更を行ったり、Presenterに描画命令を投げたりする責務GameStateUseCaseUseCaseコードの一例EntityやPresenterは、Zenjectによって依存性注入されている
38状態の保持/変更/通知をする責務GameStateEntityEntityコードの一例
39UseCaseからの描画命令を条件を満たすView(群)に対して実行する責務GameStatePresenterPresenterコードの一例
40描画処理を行う責務 = 今回はTimelineの再生を行うTimelineGameStatePlayerView(MonoBehaviour)IGameStateRendererを実装すればTimeline以外にもState変更時に処理することが出来るコードの一例
41Zenjectを使っているInstaller経由で各クラスは初期生成されBindすることで各クラスに依存性注入されるGameInstaller予めSceneにいる View (MonoBehaviour) は ZenjectBinding を利用して Bindコードの一例
42正直ここまでやっちゃうのはゲームジャムだとやりすぎ感もあるゲームを作る上で必須な技術というわけでも無いし UniRxやZenjectも使っているので少なくとも初学者にはオススメ出来ないけど責務をきちんと分割することで(特にシミュレーションゲームのような情報を扱うゲームは)読みやすくなったり、変更しやすくなったりするので「こういう風に書いてる人もいるよ」くらいの話何か調べてみたりするきっかけになったら良いかもコードの一例
43今日の話時間があればコードの一例(状態管理)Unityで演出を作るゲームデザインと作り方断片的な話で恐縮ですが、やっていることの雰囲気が伝われば幸いです
44unity1week毎回色々な事を試せるし短い時間で自分のゲームを完成出来るし面白ゲームいっぱい遊べるしサイコー!naichiさん、いつも本当にありがとうございます!さいごに
https://fonts.google.com/specimen/Fascinateちなみにタイトルロゴのフォントは「Fascinate」
46おまけ: 大まかなスケジュール月 火 水 木 金 土 日初期設定アイデア出しデザインモックビジネスロジック(Entity/UseCase)MonoBehaviourとの繋ぎ込みコアな挙動の完成ターンサイクルショップの実装演出ブラッシュアップタイトル/チュートリアル/結果ランキング/BGM/SE合計25時間程度今回は妻から土日に作業時間をたくさんもらえたので、圧倒的に感謝……!!