├── 01-note.md ├── 01.md ├── 03.md ├── README.md ├── memo.md ├── syllabus.md └── yoketoru ├── Build ├── Builds.data.unityweb ├── Builds.json ├── Builds.wasm.code.unityweb ├── Builds.wasm.framework.unityweb └── UnityLoader.js ├── TemplateData ├── UnityProgress.js ├── favicon.ico ├── fullscreen.png ├── progressEmpty.Dark.png ├── progressEmpty.Light.png ├── progressFull.Dark.png ├── progressFull.Light.png ├── progressLogo.Dark.png ├── progressLogo.Light.png ├── style.css └── webgl-logo.png └── index.html /01-note.md: -------------------------------------------------------------------------------- 1 | # 制作において心がけて欲しいこと 2 | 3 | [「けもフレ」制作のヤオヨロズ、今後アニメスタジオとして何を目指す? 新作「ケムリクサ」は? 福原Pインタビュー](https://www.inside-games.jp/article/2018/10/24/118247_2.html)より抜粋 4 | 5 | ――福原プロデューサーから見て、たつき監督はどんなクリエイターですか? 6 | 7 | 福原P 8 | 9 | そうですね……。音楽業界でも「天才」と呼ばれるような人たちと一緒に仕事をしてきましたが、たつき監督はまさに「天才」という言葉がふさわしいクリエイターだと思います。 10 | 11 | ――詳しく教えてください。 12 | 13 | 福原P 14 | 15 | とにかくひたすら仕事をしているんです。 **「天才」というと何も無いところからポンとアイデアが浮かぶような人を想像しがちですが、そうではなく「尋常ではない努力をしているからなんだ」** と気付かされました。 16 | 特にたつき監督は、脚本・絵コンテ・演出まで1人でやってしまうためなのか、脚本に疲れたら気分転換にモデリング、それに疲れたら今度は同人、それに疲れたら……と結局アニメしか作ってないじゃん! ってなるんです(笑)。 17 | 18 | 19 | ――アニメの息抜きにアニメを作る。それもひとつの才能とも言えますね。 20 | 21 | 福原P 22 | 23 | **才能と言ったら失礼になるぐらい努力をしています。** 24 | あと面白いのは、作品を好きになってくれる人のことを決して「ファン」と呼ばないんです。自分が楽しませるべき対象として「お客さん」と呼んでるんですよ。 25 | 自発的につくりたい作品があったときも、 **たつきくん自身の好みではなく、お客さんが好む絵を選択している。** お客さんに満足してもらうために一切妥協をしないんです。 26 | -------------------------------------------------------------------------------- /01.md: -------------------------------------------------------------------------------- 1 | # ゲームデザイン実習+ゲームプログラミング 2 | 3 | 2019年度 4 | 5 | 担当:田中 雄(たなかゆう) 6 | 7 | --- 8 | 9 | ## 1年の間に目指すこと 10 | 11 | オリジナル作品を最低でも1本公開する 12 | 13 | --- 14 | 15 | ## ゲームデザイン実習(今日) 16 | - ゲームの設計 17 | - 素材集め 18 | - 発表の技術 19 | 20 | --- 21 | 22 | ## ゲームプログラミング(金曜日) 23 | - C#の習得 24 | - Unityの習得 25 | 26 | --- 27 | 28 | ## 企業が欲しがる人材 29 | - 即戦力| 30 | ・・・では無い(そんな会社は危険)| 31 | - 技術を進んで学ぶ人| 32 | - 一緒に働きたい人 33 | 34 | --- 35 | 36 | 技術を進んで学ぶ・・・個人作品(一年生) 37 | 38 | --- 39 | 40 | 一緒に働きたい・・・卒業制作のエピソード(二年生) 41 | 42 | --- 43 | 44 | 個人作品だけでも勝負は可能 45 | (チーム制作の経験があった方が当然強い) 46 | 47 | --- 48 | 49 | ## 心がけて欲しいこと 50 | - ものを作るとは = 人に見てもらうために行う。**自己満足では無い** 51 | - 学内では良し悪しが分からず、インパクトもない 52 | - とにかく外部に発表すること 53 | - 人に会うこと。顔が繋がっている方が圧倒的に強い 54 | - 恥をかいた者、かける者が勝つ 55 | 56 | --- 57 | 58 | ## 発表について 59 | - 出来は気にしない 60 | - 学生なので悪くて当たり前。それよりも外に出る心意気の方が重要 61 | - 法律を守り、著作者の権利を尊重する 62 | 63 | --- 64 | 65 | ## 進路について 66 | - ゲーム会社に就職 67 | - 個人ゲームクリエイターとして独立 68 | - SE企業への就職 69 | - 他の役割で就職 70 | 71 | --- 72 | 73 | ## 一年の予定 74 | - 夏休みまでに 75 | - C#とUnityを一通り学習 76 | - 習作でミニゲームを作れるようにする 77 | - 夏休み 78 | - オリジナルじゃなくてよいのでミニゲームを完成 79 | - 11/8, 9 DATフェスタ 80 | - オリジナルゲームを完成 81 | - デジゲー博(当選したら) 82 | - 展示の手伝い(展示もできるかも?) 83 | - 年明けまで 84 | - 個人のオリジナルゲームを完成 85 | - 1週間ゲームジャムに参加して公開 86 | - 春休みまで 87 | - もう1作品 88 | - ゲームジャムミートアップなどへ参加 89 | -------------------------------------------------------------------------------- /03.md: -------------------------------------------------------------------------------- 1 | # 3回目 2 | - [カイシトモヤ. いちばん面白いデザインの教科書](https://www.amazon.co.jp/dp/B00KNR2K3U/ref=cm_sw_r_tw_dp_U_x_gDaUCbS96778H)p12-32より 3 | - 目的 4 | - *さまざまな形がもつ性質を知ることで、造形を行うときの軸になる*ようにしたい 5 | - デザイナーの行うべき造形とは 6 | - 意図することを 7 | - 抽象化による造形 8 | - 抽象化とは、 9 | - デザインにおける記号 10 | - 記号とは: 11 | - 代表的な記号の例: 12 | - チャールズ・サンダース・パースによる3つの記号のクラス 13 | - 1 14 | - 2 15 | - 3 16 | - 文字からの造形 17 | - モノグラム 18 | - モノグラムとは、 19 | - 点、線、面 20 | - 黄金比と白銀比 21 | - 黄金比とは 22 | - 白銀比とは 23 | - 造形と表現手法 24 | - 図と地 25 | - ゲシュタルト心理学 26 | - 人間の精神は、 27 | - プレグナンツの法則 28 | - 1 29 | - 2 30 | - 3 31 | - 4 32 | - 形と錯視 33 | - 自然に見えるようにつくるためには、 34 | - 数値だけに頼るのはNG 35 | - テクスチャー 36 | - 2次元平面を中心としたグラフィックデザインにおいて数少ない 37 | - 身体性と造形 38 | - 精度だけでは出せない魅力 39 | 40 | # 演習 41 | ## 準備 42 | - Googleにサインインしたのち、Googleドライブを開いて、新規からGoogle図形描画を選択 43 | - タイトルを「03氏名」に変更(例:03田中) 44 | - 以下の設問に従って形を描く 45 | 46 | ## 抽象化:円や四角、三角形といった図形を組み合わせてキャラクターを描いてみよう 47 | - モデルのキャラクターを自由に決めて、スクリーンショットなどを図形描画ツールに貼り付ける 48 | - 図形ツールを使って、そのキャラクターを徹底的に抽象化した形を描く(図形、色設定など自由に使ってよい) 49 | - ポイント:元のキャラクターを連想できる限界まで形を抽象化する 50 | 51 | ## 記号:スマホゲームのUIのデザインを考えてみよう 52 | - ゲーム開始を表す記号 53 | - ランキングを表す記号 54 | - タイトルに戻るを表す記号 55 | 56 | ## 点、線、面:図形と文字を組み合わせて、ゲームタイトルを作ってみよう 57 | 58 | ## 黄金比と白銀比を組み合わせて図形を考えてみる 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ゲームデザイン実習 2 | 2019年度 デジタルアーツ東京 ゲームデザイン実習用リポジトリー。 3 | 4 | ## 自習 5 | - [Udemy. ユニティちゃんが教える!初心者向けUnity講座](https://www.udemy.com/unity-chan-tutorial-01/) 6 | - [ドットインストール](https://dotinstall.com/search?q=unity&f=topbar) 7 | - https://learning.unity3d.jp/ 8 | 9 | # 講義予定 10 | - [シラバス](syllabus.md) 11 | 12 | # 学生作品、ブログ一覧 13 | - https://tanakaedu.github.io/dat-works/index.html 14 | 15 | # 参考URL 16 | - [背景を切り取る](https://www.remove.bg/) 17 | - [コガネブログ. 【Unity】GitHub で公開されていて無料で使用できるおすすめのアセットを600個紹介](http://baba-s.hatenablog.com/entry/2019/01/15/080000) 18 | - https://opengameart.org/ 19 | - http://pixelgameart.org/web/ 20 | - http://kenney.nl 21 | - [Sketchfab. 3D作品をWeb上で公開](https://sketchfab.com/) 22 | - [Turbo Squide. 3Dモデル配布・販売サイト](https://www.turbosquid.com) 23 | - [Hightend3D. 3Dモデル配布・販売サイト](https://www.highend3d.com) 24 | - [テクスチャー関連を公開している](https://www.textures.com) 25 | - [cc0textures.com. CC0のPBRテクスチャー素材集](https://cc0textures.com/home) 26 | - [3dtextures.me CC0のPBRテクスチャー素材集](https://3dtextures.me/) 27 | - [cgbookcase.com CC0のテクスチャー](https://www.cgbookcase.com/) 28 | - [講義用共有フォルダーへの接続](https://github.com/dat19/design/wiki/%E8%AC%9B%E7%BE%A9%E7%94%A8%E3%83%8D%E3%83%83%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A) 29 | 30 | 31 | # DATフェスタ作業進捗メモ 32 | - [進捗メモ](https://docs.google.com/document/d/1GFMHG6rj6f2-9--Jz8HVYilQsmuUml8x7-pcSpAhQ8w/) 33 | 34 | # プロジェクト関連 35 | - [GitHubの開発フロー](https://sketchboard.me/LBSAHzZ8ynEE) 36 | - [プロジェクトの更新手順](https://github.com/dat19/design/wiki/GreeningEx2019%E3%81%AE%E6%9B%B4%E6%96%B0%E6%89%8B%E9%A0%86) 37 | 38 | ## GreeningEx2019 39 | - [GreeningEx2019 GitHub](https://github.com/dat19/GreeningEx2019) 40 | - [GreeningEx2019 Trello](https://trello.com/b/GPOLuD8w/greening) 41 | 42 | ## HungraviyEx2019 43 | - [HungraviyEx2019 GitHub](https://github.com/dat19/HungraviyEx2019) 44 | - [HungraviyEx2019 Trello](https://trello.com/b/EMqUWKla/%E3%81%AF%E3%82%93%E3%81%90%E3%82%89%E3%81%B3%E3%81%83dat19) 45 | 46 | # 後期16回目(2/5) 47 | ## 話題 48 | - [日本ゲーム大賞 アマチュア部門](http://awards.cesa.or.jp/amateur/) 49 | - 応募期間: 3/2~5/31 50 | - [paiza就活支援金とは ](https://paiza.jp/student/advice/student_paiza_travel_expense) 51 | 52 | ## 予定 53 | - ポートフォリオの完成 54 | - 現状の確認 55 | - 夏休み課題、DATフェスタ出展作品、それ以外の作品があればそれらも含めて、ポートフォリオページに掲載する 56 | - まだURLを未報告の場合、[ここを右クリックして、新しいタブで開いて、ポートフォリオのURLを記入](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing) 57 | - 就職活動用の連絡先(メールアドレスやTwitter、Facebookなどのアカウント)を掲載しておくこと 58 | - 参考 59 | - [GreeningEx2019の紹介ページ](https://dat18.github.io/works/GreeningEx2019Exe/) 60 | - http://kuma777.itigo.jp/ 61 | - 1年生の総復習 62 | - 2時間ゲームジャム、および、日本ゲーム大賞アマチュア部門の企画検討、準備 63 | - 最低でも1か所、プログラミングについて紹介、解説できる内容を盛り込む 64 | - どういうことをやりたかったか? 65 | - どのように考えたか 66 | - プログラムコードを見せて、解説できるように 67 | - 工夫したところ、問題が残ったところ、今後調べたいことなどを述べてまとめる 68 | - 息抜き GreeningEx2019とはんぐらびぃEX2019の動作確認 69 | 70 | # 後期15回目(1/29) 71 | ## 内容 72 | - 前回のポートフォリオの復習 73 | - 夏休み課題、DATフェスタ出展作品、それ以外の作品があればそれらも含めて、ポートフォリオページに掲載する 74 | - [ここを右クリックして、新しいタブで開いて、ポートフォリオのURLを記入](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing) 75 | - 参考 [GreeningEx2019の紹介ページ](https://dat18.github.io/works/GreeningEx2019Exe/) 76 | - Greeningの動作確認 77 | - 2時間ゲームジャム、および、日本ゲーム大賞アマチュア部門の企画検討 78 | 79 | 80 | # 後期14回目(1/22) 81 | ## 作業メモ 82 | - [メモ](https://docs.google.com/document/d/1ulLt2KLXlqPHSIIKZuFN4WFPezHRxWwpjMT94TpYxDY/) 83 | 84 | ## 話題 85 | - [どうなる、2021年卒就活(5)採用スケジュール予測](https://www3.nhk.or.jp/news/special/news_seminar/syukatsu/syukatsu280/?utm_int=detail_contents_special_004) 86 | - [最高のゲームエンジンはどれか?:Unreal Engineはあなたに向いているのか?](https://jp.gamesindustry.biz/article/2001/20012002/) 87 | - [最高のゲームエンジンはどれか?:Unityはあなたに向いているのか](https://jp.gamesindustry.biz/article/2001/20012001/) 88 | - [GUNDAM GLOBAL CHALLENGE 89 | Research Open Simulator](https://gundam-challenge.com/special/opensimulator/) 90 | 91 | ## 内容 92 | - Webでポートフォリオを作成 93 | - [paiza. ITエンジニアの就活準備編2: ポートフォリオ制作](https://paiza.jp/works/career/primer/career2) 94 | - https://www.e-aidem.com/ch/jimocoro/entry/otakana01 95 | - [paiza. HTML/CSS入門編](https://paiza.jp/works/html/primer) 96 | - [paiza. ITエンジニアの就活準備編2: ポートフォリオ制作](https://paiza.jp/works/career/primer/career2) 97 | - [GitHub PagesにHTMLでユーザーページを作成する](https://docs.google.com/document/d/1Og0Oxw_tvhBET3cDLhx9p9qD6tPGaL2TyzBSZmTTsOU/) 98 | - 参考 99 | - [Chomado’s Portfolio (ちょまど)](https://chomado.com/) 100 | - http://kuma777.itigo.jp/ 101 | - https://yuutea335.hatenablog.com/ 102 | - 2時間ゲームジャム、および、日本ゲーム大賞アマチュア部門の企画検討 103 | 104 | 105 | # 後期13回目(1/15) 106 | ## 予定 107 | - Greeningの最新状況の確認 108 | - X:\2019年\ゲーム学科\Student\ゲームプログラム1年\GreeningEx2019 を開く 109 | - GreeningExeフォルダーをデスクトップなどにコピーしてから、中のGreeningEx2019.exeをダブルクリックして起動 110 | - Greening開発 111 | - 効果音の再収集 112 | - [SEのリスト](https://trello.com/c/uXcrhIHf/63-se%E5%86%8D%E5%8F%8E%E9%9B%86) 113 | - 不具合は[こちら](https://github.com/dat19/GreeningEx2019)にNew issueを作って書き込む 114 | - [スタッフクレジット表記の相談](https://docs.google.com/document/d/1PFBqRFqpQgoFrXS6HmB4NU7HENSnek2J_J0Pq97WNzE/edit?usp=sharing) 115 | - 2時間ゲームジャム、および、日本ゲーム大賞アマチュア部門の企画検討 116 | 117 | ## Greeningの目標 118 | - 1/8 システム完成予定。ステージの制作 > ほぼ完成。残りの作業やバグを洗い出す 119 | - 1/22 完成予定 120 | - 1/29 2年の卒業制作に向けた総まとめと準備 121 | - 2/5, 7で終了 122 | 123 | ## プロジェクトを丸ごと最新にする 124 | - [GitHubでフォークしたUnityプロジェクトを丸ごと最新にする](https://docs.google.com/document/d/1HlV70sEMS8G3eLAD6YMuIObY7hei7YdaXKObGV9EpYg/) 125 | - [ステージ作成](https://github.com/dat19/GreeningEx2019/blob/master/Documents/HowToEditStage.md) 126 | 127 | 128 | 129 | 130 | # 後期12回目(1/8) 131 | ## 話題 132 | - [Unity1週間ゲームジャムミートアップ](https://meetup.unity3d.jp/jp/events/1191) 133 | - 2020/1/18 12:00〜2020/1/18 16:00 134 | 135 | ## GreeningEx2019実行ファイル 136 | - X:\2019年\ゲーム学科\Student\ゲームプログラム1年\GreeningEx2019 を開く 137 | - GreeningExeフォルダーをデスクトップなどにコピーしてから、中のGreeningEx2019.exeをダブルクリックして起動 138 | 139 | ### 効果音の再収集 140 | - [SEのリスト](https://trello.com/c/uXcrhIHf/63-se%E5%86%8D%E5%8F%8E%E9%9B%86) 141 | - 不具合は[こちら](https://github.com/dat19/GreeningEx2019)にNew issueを作って書き込む 142 | - [スタッフクレジット表記の相談](https://docs.google.com/document/d/1PFBqRFqpQgoFrXS6HmB4NU7HENSnek2J_J0Pq97WNzE/edit?usp=sharing) 143 | 144 | 145 | ## 残りの期間でやりたいこと 146 | - GreeningEx2019を完成させて、2年生が制作するCDに同梱する 147 | - 今後のテーマについての調査(正月課題) 148 | - ポートフォリオWebページの作成 149 | - 1年生の総復習 150 | - 卒業制作に向けた企画会議 151 | - 2時間ゲームジャム 152 | 153 | ## 正月休み課題 ゲームデザイン実習 発表 154 | - 課題内容 155 | - 前期に学んだゲームの企画の作成方法と、後期のこれまでに体験したこと、[ゲームプログラミングの課題](https://github.com/dat19/gp1/blob/master/README.md#%E6%AD%A3%E6%9C%88%E4%BC%91%E3%81%BF%E8%AA%B2%E9%A1%8C)の調査結果を元に、ゲームやサービスの企画提案書を作成する。正月明けに、一人持ち時間10分でプレゼンする 156 | - 条件 157 | - これまで作成した企画でも、新規の企画でも構わない 158 | - Unity以外でもよいし、ゲーム以外のものでもよい 159 | - タイトル、サムネイル、画面のモックアップのスクリーンショット、作品のコアステートメント、対象としているプレイヤーや利用者、プラットフォーム、解像度、操作方法、ルール(ゲーム以外なら不要)、ゲームの導入のストーリー(あれば)、モックアップの作成に利用したアセットがあればアセットのURL 160 | - 以上を、Word、Powerpoint、Googleドキュメント、Googleスライド、なんでもよいので作成してくる 161 | - 動作する必要はない 162 | - [例](https://docs.google.com/presentation/d/1tVwSTsw2X3EIK4MDuRgiEHZn-Yux5Vbjy0RfMeZLKeo/) 163 | - 持ち時間 最大10分まで(短くても構わない) 164 | 165 | ## Greeningの目標 166 | - 1/8 システム完成予定。ステージの制作 > ほぼ完成。残りの作業やバグを洗い出す 167 | - 1/22 完成予定 168 | - 1/29 2年の卒業制作に向けた総まとめと準備 169 | - 2/5, 7で終了 170 | 171 | ### 現状確認 172 | - [前回の様子](https://github.com/dat19/design#%E5%86%85%E5%AE%B9) 173 | - 音の確認。効果音はほぼ探し直し 174 | 175 | ## ポートフォリオ作成 176 | - [paiza. ITエンジニアの就活準備編2: ポートフォリオ制作](https://paiza.jp/works/career/primer/career2) 177 | 178 | ## プロジェクトを丸ごと最新にする 179 | - [GitHubでフォークしたUnityプロジェクトを丸ごと最新にする](https://docs.google.com/document/d/1HlV70sEMS8G3eLAD6YMuIObY7hei7YdaXKObGV9EpYg/) 180 | - [ステージ作成](https://github.com/dat19/GreeningEx2019/blob/master/Documents/HowToEditStage.md) 181 | 182 | 183 | # 後期11回目(12/18) 184 | 185 | ## 内容 186 | - 残りの作業の確認(ゲームの開始からの流れに沿って確認 187 | - **MUST** 188 | - [タイトルシーン](https://trello.com/c/TWFgjZpD/33-%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90) 189 | - [ステージ選択シーン](https://trello.com/c/meYPDtE4/32-%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E9%81%B8%E6%8A%9E%E3%82%B7%E3%83%BC%E3%83%B3%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%80%81%E6%93%8D%E4%BD%9C) 190 | - ステラの操作。水まき、段差ジャンプ、落下、水落ちミス、ゴール 191 | - ステラときのこ、たんぽぽ、、つた、岩 192 | - 花の橋 193 | - ステージ作成 194 | - BGM再生 195 | - SE、声の再生 196 | - オープニング動画再生 197 | - ステージクリア時の動画差し込み 198 | - エンディング 199 | - **WANT** 200 | - ステージ開始時のアニメーション(たんぽぽの綿毛を掴んで降りてきて、着地したらゲーム開始) 201 | - [ゲーム中からステージ選択に戻る操作](https://trello.com/c/P1egXPsz/34-%E3%82%B2%E3%83%BC%E3%83%A0%E4%B8%AD%E3%81%8B%E3%82%89%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E9%81%B8%E6%8A%9E%E3%81%AB%E6%88%BB%E3%82%8B%E6%93%8D%E4%BD%9C) 202 | - 背景のスクロール 203 | - 植物を全て発芽させた時の演出 204 | - 星に触れた後のクリア演出 205 | - ステージ選択シーンに戻った時のクリア時の演出 206 | - クレジット(使用アセットリスト) 207 | - プロジェクトの更新 208 | - [プロジェクトの更新手順](https://github.com/dat19/design/wiki/GreeningEx2019%E3%81%AE%E6%9B%B4%E6%96%B0%E6%89%8B%E9%A0%86) 209 | - Systemシーンを開いて、実行して、現在の状況を確認する 210 | - 岩の修正点の確認 211 | - アニメをすると座標が動く 212 | - 親は動かさない → 岩を置く場所を変えてアニメさせると問題点が分かる 213 | - 当たり判定のサイズは変更しない 214 | - 縮小に高さが合っていない 215 | - 丸いのが地面についていない 216 | - 動きがブレる 217 | - 今日の作業 218 | - [タイトル画面のデザイン](https://trello.com/c/TWFgjZpD/) スズキ、ナミキ、ノザワ 219 | - 必要なもの 220 | - コピーライト Copyright (C) 2019-2020 DAT GreeningEx Team 221 | - バージョン Ver0.00 という文字を、タイトルの右下、或いは画面の右下。あまり目立たなくてよい 222 | - 「Push [Z] or [X] key」 → 「New Game」と「Continue」 223 | - 文字で表示 224 | - ボタンではない 225 | - 現在、選択している方の文字を明るく、そうでない方を暗くする。大きさを変えるのも良い 226 | - Font 227 | - [AR CHRISTY](https://fontzone.net/font-details/ar-christy) 228 | - PrivateResourcesフォルダーの中に、`Fonts`という名前のフォルダーを作成 229 | - 上記フォントをダウンロードして、作成したFontsフォルダー内に移動 230 | - TextMeshProのアセットを作成 231 | - 日本語は含まれないので、ASCIIで生成 232 | - [たんぽぽがプレイヤーに触れても発動するのと、発動後、水をかけると綿毛を出すのが止まるのを直す](https://trello.com/c/T8j6YzFR/) マエダ、ショウジ 233 | - +ステラの水まき 234 | - [ステージ選択画面の島が奇麗になるアニメの作成](https://trello.com/c/HTQBQdoU) コバヤシ、マチダ 235 | 236 | ## 時間が余ったら 237 | - プレイヤーの動作についての解説 238 | - ScriptableObjectとは 239 | - どうやって動いているのか 240 | - 水の処理を拡張してみる 241 | 242 | 243 | # 後期10回目(12/11) 244 | ## 話題 245 | - [Unity1週間ゲームジャムミートアップ](https://meetup.unity3d.jp/jp/events/1191) 246 | - 2020/1/18 12:00〜2020/1/18 16:00 247 | 248 | ## 作業メモ 249 | - [作業メモ](https://docs.google.com/document/d/1Grw28HblsbJ1_2ey0YdRl5NJcuvDVmYFDVVVUdByvJ0/) 250 | 251 | ## 予定 252 | - プレイヤーの作成 253 | - 棒立ち、落下、左右移動、水まき 254 | - Inputを定義する 255 | - CharacterControllerによるキャラクター制御 256 | - [グラデーションシェーダー](http://am1tanaka.hatenablog.com/entry/2019/12/09/182503) 257 | 258 | - 金曜日に割り振った作業の回収 259 | - GitHubでコミットして、Pushする 260 | - Branchメニューから、Create pull requestを選んで、dat19/masterにプルリクエストを送信 261 | - 未完成や修正点の確認と解説 262 | - 統合したものに全員で更新 263 | 264 | 265 | ## 回収項目 266 | ### 1 267 | - [ステラのアニメーション分割](https://trello.com/c/3jiB3ybI/14-%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%81%AE%E8%A8%AD%E8%A8%88%E3%81%A8%E3%82%A2%E3%83%8B%E3%83%A1%E4%BD%9C%E6%88%90) 268 | - ジャンプ: JumpStart, Jump, Fall, Landing 269 | - たんぽぽ: DandelionStart, Dandelion, DandelionEnd 270 | - 苗をもつ: NaeUp, Nae(苗の終了は、NaeUpの逆再生) 271 | - 水やり: WaterStart, Water, WaterEnd 272 | - [ツタ](https://trello.com/c/P51MFaNl/40-%E3%83%84%E3%82%BF) 273 | 274 | ### 2 275 | - [丸いの](https://trello.com/c/RJlTA9d1/46-%E4%B8%B8%E3%81%84%E3%81%AE) 276 | - [きのこ](https://trello.com/c/fag4Rxu0/43-%E3%81%8D%E3%81%AE%E3%81%93) 277 | 278 | ### 3 279 | - [花の橋](https://trello.com/c/zIMxL95K/31-%E8%8A%B1%E3%81%AE%E6%A9%8B) 280 | 281 | ### 4 282 | - [たんぽぽ](https://trello.com/c/T8j6YzFR/24-%E3%81%9F%E3%82%93%E3%81%BD%E3%81%BD) 283 | 284 | ## 今後の作業 285 | - 花のトランポリン 286 | 287 | 288 | 289 | # 後期9回目(12/4) 290 | ## 話題 291 | - [@Ryowaks. アニメーションのレイアウトの考え方のツイート](https://twitter.com/Ryowaks/status/1200317404309417984) 292 | - [tkm. 企画を元にゲームのUIを作るときの流れ](https://note.com/torinegi/n/n5beaca465b1b) 293 | 294 | ## 内容 295 | - プレイヤーのプレハブや仮ステージを追加したので、upstreamのプロジェクトを手元のプロジェクトにマージして更新する 296 | - [プロジェクトの更新手順](https://github.com/dat19/design/wiki/GreeningEx2019%E3%81%AE%E6%9B%B4%E6%96%B0%E6%89%8B%E9%A0%86) 297 | - プロジェクトを開いたら、Scenesフォルダー内のTestStageをダブルクリックして開く 298 | - 絵作り 299 | - カメラの設定 300 | - 画角(Field of View)を決める 301 | - [キヤノン写真用語集. 画角](https://ptl.imagegateway.net/contents/original/glossary/%E7%94%BB%E8%A7%92.html 302 | - [テラシュールブログ. ](http://tsubakit1.hateblo.jp/entry/2018/09/10/002907) 303 | - オブジェクトの大きさ合わせ 304 | - オブジェクトは原則として大きさ1を基準に調整 305 | - 丸いのとツタは要検討 306 | - 地面の奥行きを検討。仕掛けを通り抜けられるか? 307 | - ポストプロセッシング 308 | - [設定手順](http://am1tanaka.hatenablog.com/entry/2018/05/19/172121) 309 | - 背景の星の設定: イメージはAlpha Is Transparent / Fadeにして、AlbedoとEmitのどちらにもテクスチャー設定 310 | - ユニティちゃんシェーダー 311 | - https://docs.google.com/document/d/1lD8fsvkjBoWN72q1q5dhIJ_qMnfHOo84OrZfiRaF0hA/ 312 | 313 | ## メモ 314 | - Y9, Z-40 / RotX10 / FOV15ぐらい? 315 | - Stella 0.75? 316 | 317 | 318 | # 後期8回目(11/27) 319 | ### 話題 320 | - [ゲームクリエイターズギルド](https://game.creators-guild.com/event/gamecreatorsguildexpo2019/) 321 | - [東京工科大学所属のゲーム制作チーム](https://twitter.com/littlebokkuri) 322 | - [東京工業大学 デジタル創作同好会traP](https://trap.jp/) 323 | - [ダウンロードカードを製作するサービス conca](https://conca.cc/) 324 | - [Realtime CSG](http://www.asset-sale.net/entry/Realtime_CSG_1) 325 | 326 | ## 内容 327 | - 開発の流れ 328 | - 先週 ゲームシステムの根底の決定と実装 329 | - シーン切り替えの実装、GitHubでのリポジトリーの共有、命名規約の確認、基本解像度の決定、実装に必要な最低限の素材の用意 330 | - 今週 レイアウトを決めるための作業 331 | - 開発の舞台となるステージを作成できるようにする 332 | - ゲームの主体であるプレイヤーの開発に早期にとりかかる 333 | - 来週以降 画面の見え方を調整してレイアウトを決定したら、ゲーム全体の開発スタート 334 | - GreeningEx2019の仕様検討 335 | - [ステージエディターについて](https://github.com/dat19/GreeningEx2019/blob/master/Documents/StageEditor.md) 336 | - [プレイヤーについて](https://github.com/dat19/GreeningEx2019/blob/master/Documents/Player.md) 337 | - 以上から、オブジェクトの作り方の注意点をまとめる 338 | - [制作物リスト](https://trello.com/c/s5SmfdCS/20-%E4%BB%AE%E3%83%A2%E3%83%87%E3%83%AB%E3%80%81%E4%BB%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90) 339 | - 担当を決めて、金曜日までにチャレンジしてくる 340 | - 以降、時間があれば 341 | - [GitHubでの開発フローのおさらい](https://github.com/dat19/GreeningEx2019/blob/master/Documents/Setup.md) 342 | - フォークしたリポジトリーを削除 343 | - クローンしたフォルダーを削除 344 | - こちらを参照して、もう一度、フォーク、クローン、リソースのコピーを行う 345 | - エフェクトの設定 346 | - ポストプロセッシング 347 | - ユニティちゃんシェーダー 348 | - 作業 349 | - ステージエディター班は、まとめた内容を元に、ステージエディターを実装してみる 350 | - Player班は、資料を基に、Trelloに左右移動以降の状態遷移の条件をまとめていく 351 | - https://trello.com/b/GPOLuD8w/greening 352 | 353 | # 後期7回目(11/20) 354 | ### 話題 355 | - [ゲームクリエイターズギルド](https://game.creators-guild.com/event/gamecreatorsguildexpo2019/) 356 | - [東京工科大学所属のゲーム制作チーム](https://twitter.com/littlebokkuri) 357 | - [東京工業大学 デジタル創作同好会traP](https://trap.jp/) 358 | - [ダウンロードカードを製作するサービス conca](https://conca.cc/) 359 | - [Realtime CSG](http://www.asset-sale.net/entry/Realtime_CSG_1) 360 | 361 | ### 内容 362 | - とりまとめドキュメントを作成して提出 363 | - ゲームクリエイターズギルド出展版の相談(特にSideSlideのエフェクト辺り) 364 | - エアホッケーのカーソル対応。以下を検索して、方法を検索 365 | - Unityでマウスカーソルを非表示にする方法 366 | - マウスカーソルの座標を画面中心にロックする方法 367 | - Greeningとはんぶらびぃの企画を整理 368 | - バラバラに作業を割り振る予定なので、どちらの仕様も把握しておくこと 369 | - ファイルやフォルダーの命名規約を確認する 370 | - [はんぐらびぃの命名規約の例](https://docs.google.com/document/d/10DWSrp2QcdawOtBvM67lr8Sjv1disyUshkcp0mc_B5U/edit) 371 | - それぞれ作業を進める 372 | 373 | # 後期6回目(11/13) 374 | ## 話題 375 | - [クオリティの追求例](https://twitter.com/nal_ew/status/1191210885894639621) 376 | - [LookingGlassハッカソンの展示例](https://twitter.com/e__koma/status/1193857453223366656) 377 | - [シロフード. ◆第2回LookingGlassハッカソンについて思う事](https://sirohood.exp.jp/20191111-2959/) 378 | - [最小限の労力で最大限の効果を出す方法〜『ペルセポネ』ができるまで〜](https://madewithunity.jp/stories/persephone/) 379 | 380 | ## 内容 381 | - DATフェスタ作品のまとめ 382 | - Unityのプロジェクトと実行ファイルをチームごとにまとめて、ネットドライブの `X:\2019年\ゲーム学科\Student\ゲームプログラム1年\DATフェスタプロジェクト&実行ファイル` に提出 383 | - ゲーム名のフォルダーを作成する 384 | - 作成したゲーム名のフォルダーの中に以下をコピーする 385 | - Unityのプロジェクト 386 | - 実行ファイルをビルドしたフォルダー 387 | - 展示の時に張り出したゲーム説明のデータ 388 | - 作品講評と今後の方針 389 | - 仕上げをする作品、完了、開発中止を検討 390 | - 水曜日は、2年生作品のGreeningとはんぐらびぃを土台に企画会議を行う 391 | - 金曜日は、1コマ目はアルゴリズム。2コマ目は開発1コマ(状況に応じて割合は臨機応変に) 392 | - 自作品を仕上げるチームは、アルゴリズム以外は独自に動いてよい 393 | - 作品のまとめドキュメントを作成する 394 | - 夏休みの課題と同様に、DAT作品についてチームで1つドキュメントをまとめて、上記の提出先フォルダーに提出する 395 | - タイトル 396 | - メンバー 397 | - スクリーンショット 398 | - ゲームの簡単な紹介文(1~2行) 399 | - 操作方法 400 | - 使用アセット 401 | 402 | # 後期5回目(10/30) 403 | ## DATフェスタまでのスケジュール 404 | - 10/2, 4 405 | - 10/9, 11 406 | - 10/16, 18 407 | - 10/23, 25 408 | - **10/30, 11/1** 409 | - **11/8, 9 本番** 410 | 411 | ## 展示に必要なものを用意 412 | ### 必要なもの 413 | - Windowsビルドしたファイル一式 414 | - フルスクリーン(1920x1080ピクセル)用でビルド 415 | - a館3f-6fの共有ドライブに入れておくとよい 416 | - 遊び方パネル 417 | - A4サイズで1ページ 418 | - ゲーム名、開発メンバー、操作方法、ルール、使用アセットを分かりやすく、見栄え良く作成 419 | 420 | 421 | ### 注意事項 422 | - 展示はA602 423 | - 対応するUnityが入っていない可能性がある 424 | - 原則としてビルドしたものを展示する 425 | - 展示を開始したら手を入れられないことを想定 426 | 427 | 428 | 429 | ## 内容 430 | - 夏休み作品の提出可否の確認(unityroomに上がっていればそのまま展示で可。Winoduwsでフルスクリーンビルドが可能なら対応を検討) 431 | - コバヤシ. くまごろう 432 | - タカシマ. Slide Step 433 | - ハラダ 434 | - マエダ. NEW SUPER 435 | - 開発 436 | - [エアホッケー](https://github.com/dat19/design/wiki/AirHockey2019-10-30) 437 | - チームごとに最低要件について発表 438 | 439 | ## 発表準備 440 | - 情報を発表者のPCからアクセスできるようにしておく 441 | - 発表者のPCで、TwitCastingのデスクトップアプリをスタートメニュー > `tw`で検索して起動 442 | - 未インストールの場合、[ここ](http://twitcasting.tv/tdl_download.php)を開いて、ダウンロードして実行 > 規約を承諾してインストールする 443 | - Explorerを開いて、以下をバスにコピペして開いて、各項目を設定してください 444 | - X:\2019年\ゲーム学科\Teacher\tanaka\twitcasting.txt 445 | 446 | 447 | # 後期4回目(10/23) 448 | 449 | ## 内容 450 | - 展示できる最低要件のまとめ 451 | - 必要な素材、プログラム、作業をすべて洗い出す 452 | - 担当を決める 453 | - 開発 454 | - チームごとに最低要件について発表 455 | 456 | ## 発表準備 457 | - 情報を発表者のPCからアクセスできるようにしておく 458 | - 発表者のPCで、TwitCastingのデスクトップアプリをスタートメニュー > `tw`で検索して起動 459 | - 未インストールの場合、[ここ](http://twitcasting.tv/tdl_download.php)を開いて、ダウンロードして実行 > 規約を承諾してインストールする 460 | - Explorerを開いて、以下をバスにコピペして開いて、各項目を設定してください 461 | - X:\2019年\ゲーム学科\Teacher\tanaka\twitcasting.txt 462 | 463 | # 後期3回目(10/16) 464 | ## 話題 465 | - [2019 ハロウィンイベント結果発表](http://www.asset-sale.net/entry/Halloween2019End) 466 | - [Unity Asset Store「ハロウィンコンテスト」開催中(10月31日まで)](http://assetstore.info/asset-store-halloween-contest/) 467 | - 12/7 [【1day】Unity Engine Challenge by mixi GROUP](https://mixi.connpass.com/event/150482/) 468 | 469 | ## 内容 470 | - はんぶらびぃの改良: 距離によって、加速の仕方を変える 471 | - [金曜日の復習](https://github.com/dat19/gp1#%E5%BE%8C%E6%9C%9F1%E9%80%B1%E7%9B%AE104) 472 | - [作業メモ](https://docs.google.com/document/d/1X8rD25ABrdIkx3fgd50whMwLHDF-inGZNE1vte1tAeA/) 473 | - 順番は新しくシャッフル 474 | - VisualStudio Share Linkでコード開発 475 | - X:\2019年\ゲーム学科\Teacher\tanaka\ をエクスプローラーで開く 476 | - `hungravy-dat19-1011.zip`をコピーして、自分のPCのドキュメント > 自分のフォルダーに貼り付ける 477 | - 貼り付けた`hungravy-dat19-1011.zip`を右クリックして、*7-Zip* > *ここに展開*を選択 478 | - Unityで展開したフォルダーを開く(プロジェクト名は `hungravy-dat1910` ) 479 | - [ここを右クリック](https://docs.google.com/document/d/1c3dBetv3anGAJldW0cCL02Yp3dt-gqhRxbf526TJasA/)して、新しいタブで開く 480 | - *使い方* に従って、共有をする 481 | - DATフェスタ作品開発 482 | 483 | 484 | 485 | # 後期2回目(10/9) 486 | ## 話題 487 | - 今日中に!! [Unity AssetStoreまとめ. 【ハロウィン】バウチャー総額『250ドル+α』の山分けプレゼントイベント](http://www.asset-sale.net/entry/Halloween2019) 488 | - [gamesindustry.biz. [Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?](https://jp.gamesindustry.biz/article/1909/19093002/) 489 | 490 | 491 | 492 | ## Unityでの簡単なデータやプログラムの受け渡し方 493 | - [手順](https://docs.google.com/document/d/1y9ep9-1s_yb3Y3pKc3qiu-2UcrwJ_8vYDcszmvwVYlI/) 494 | 495 | 496 | ## 内容 497 | - はんぐらびぃの改良 498 | - はんぐらびぃの動きをみんなで作る 499 | - [金曜日の復習](https://github.com/dat19/gp1#%E5%BE%8C%E6%9C%9F1%E9%80%B1%E7%9B%AE104) 500 | - [作業メモ](https://docs.google.com/document/d/1X8rD25ABrdIkx3fgd50whMwLHDF-inGZNE1vte1tAeA/) 501 | - VisualStudio Share Linkでコード開発 502 | - X:\2019年\ゲーム学科\Teacher\tanaka\ をエクスプローラーで開く 503 | - `hungravy-dat19-1009.zip`をコピーして、自分のPCのドキュメント > 自分のフォルダーに貼り付ける 504 | - 貼り付けた`hungravy-dat19-1009.zip`を右クリックして、*7-Zip* > *ここに展開*を選択 505 | - Unityで展開したフォルダーを開く 506 | - [ここを右クリック](https://docs.google.com/document/d/1c3dBetv3anGAJldW0cCL02Yp3dt-gqhRxbf526TJasA/edit)して、新しいタブで開く 507 | - *使い方* に従って、共有をする 508 | 509 | # 後期1回目(10/2) 510 | ## 話題 511 | - [Unity道場 幕張スペシャル3 -Education編-](https://meetup.unity3d.jp/jp/events/1132)にLTで登壇してきました 512 | - [専門学校のゲームプログラマーコースにおけるUnity1週間ゲームジャムの活用事例](https://www.slideshare.net/UnityTechnologiesJapan/unity-3unity1) 513 | - [ハル研究所インターンシップ](https://www.hallab.co.jp/internship/detail/programmer.html) 514 | - [日本ゲーム大賞アマチュア部門](http://awards.cesa.or.jp/prize/amateur.html) 515 | - [日本ゲーム大賞U18部門](https://u18.awards.cesa.or.jp/news/20190915/) 516 | 517 | ## 読み物 518 | - [gamebiz.jp. 【CEDEC 2019】「エフェクトは人生だ」…『シノアリス』『戦姫絶唱シンフォギアXD』を担うポケラボ・池田氏がエフェクト制作の魅力を熱弁!](https://gamebiz.jp/?p=248246) 519 | - [Sugimoto Chizuru. ゲームの仕様書を書こう](https://www.slideshare.net/ChizuruSugimoto/) 520 | - [@odanny. 気持ちのいいジャンプを目指して](https://qiita.com/odanny/items/297f32a334c41410cc5d) 521 | - [まちるだ / MESON. UIデザイナーでもできる!はじめてのUnity UIの教科書 ](https://note.mu/mathi0829lda/n/n0cd458dc00f6) 522 | 523 | 524 | ## DATフェスタに向けた作業の目的 525 | - **チームで開発するための最適な方法を各自が考えて、実践する** 526 | - 開発するゲームのイメージの完全な共有を目指す 527 | - ルール 528 | - 世界観 529 | - 操作方法 530 | - 動き方 531 | - etc... 532 | - 他の人の作業と関わる部分について、どのようなものが出来上がり、どのように組み込むのかを打ち合わせる 533 | - 理解が追い付かないメンバーについては、理解しているメンバーが指示をして、正しい成果物が出てくるように指示する 534 | - 一番理解度の高いメンバーは作業をせず、指示に徹することも検討する 535 | - [かえるD. 初心者にありがちな、「仕事はもらったものを責任もって自分でどうにかする」だと実際はチームのボトルネックになってしまう。](https://twitter.com/kaerusanu/status/1174132639323672576) 536 | - 講義時間の最大の目的は、進捗確認と次の講義までの作業の打ち合わせ。作業は講義外に行う前提 537 | - [ネット絵学. ゲーム会社若手デザイナーへ、在学時になにやってたかのアンケート](https://twitter.com/netegaku/status/1172303452619198464) 538 | - 仕様の変更に柔軟に対応できるようにすること 539 | 540 | ## 予定 541 | - DATフェスタ作品の企画会議 542 | - [DATフェスタに向けたチーム編成検討](https://docs.google.com/document/d/10EAU8iiRUv41U8JBUBBV4Ll7xIWnNWE_iWpLp2VD04E/edit?usp=sharing) 543 | - アイディアを出して、Trelloにメモ 544 | - 実現可能性は今は考えずに、アイディアをとにかく出していく。無理そうなものは、あとで優先順位をつけて弾けばよい 545 | - 検討した内容の発表 546 | - チームと企画の正式決定 547 | 548 | ## 決めること 549 | 以下を決めて、Trelloに書く。 550 | 551 | - 対象プラットフォーム 552 | - A602のPC 553 | - WebGL 554 | - Androidタブレット(1台はある。もう1~2台増えるかも?) 555 | - ネット対応やゲームパッドなど、使いたい機能やハードウェアも提示 556 | - 解像度 557 | - PCなら1920x1080 558 | - WebGLやAndroid向けの場合は、それぞれの解像度を決める 559 | - ゲームのサムネイル(小さく手書きしたラフスケッチ) 560 | - ゲーム概要 561 | - 操作方法 562 | - ルール 563 | 564 | 565 | ## 発表準備 566 | 最後にチームごとに発表。 567 | 568 | - チームのうちの一人がTwitCastingを起動 569 | - デスクトップアプリをスタートメニュー > twitで検索して起動 570 | - 未インストールの場合、[ここ](http://twitcasting.tv/tdl_download.php)を開いて、ダウンロードして実行 > 規約を承諾してインストールする 571 | - Explorerを開いて、以下をバスにコピペして開いて、各項目を設定してください 572 | - X:\2019年\ゲーム学科\Teacher\tanaka\twitcasting.txt 573 | 574 | --- 575 | 576 | # 16回目(9/11) 577 | ## 内容 578 | - 先週の評価のGoogleスプレッドシートの共有を、「リンクを知っている全員が編集可」にしてください 579 | - 未発表者がいたら発表 580 | - 夏休み課題のまとめ 581 | - DATフェスタに向けた企画会議。とりまとめは金曜日に 582 | - チームの方針 583 | - 作品について検討開始 584 | - シナリオや音声を入れられる企画の検討 585 | 586 | ## DATフェスタ向け検討 587 | - [DATフェスタに向けたチーム編成検討](https://docs.google.com/document/d/10EAU8iiRUv41U8JBUBBV4Ll7xIWnNWE_iWpLp2VD04E/edit?usp=sharing) 588 | - 今日 589 | - チームと企画の仮決め 590 | - Trelloでチーム作成 591 | - アイディアを出して、Trelloにメモしていく 592 | - 実現可能性は今は考えずに、アイディアをとにかく出していく。無理そうなものは、あとで優先順位をつけて弾けばよい 593 | - 後期1回目 594 | - 休み中に検討した内容の発表 595 | - チームと企画の正式決定 596 | 597 | ## 発表準備 598 | - TwitCastingのデスクトップアプリをスタートメニュー > twitで検索して起動 599 | - 未インストールの場合、[ここ](http://twitcasting.tv/tdl_download.php)を開いて、ダウンロードして実行 > 規約を承諾してインストールする 600 | - Explorerを開いて、以下をバスにコピペして開いて、各項目を設定してください 601 | - X:\2019年\ゲーム学科\Teacher\tanaka\twitcasting.txt 602 | 603 | 604 | ## 夏休み課題作品のまとめドキュメントの作成と提出 605 | - Googleドキュメントに、夏休み課題の以下の項目をまとめて、[ここ](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing)にURLを提出 606 | - 作品名 607 | - スクリーンショット 608 | - ゲーム概要と操作説明 609 | - 元にした作品があれば、URLや書籍名 610 | - 使用アセットリスト(アセット名とURL) 611 | 612 | # 15回目(9/4) 613 | ## 話題 614 | - [paiza開発日誌. 【21卒】いま始めれば内定が近づく!4つの就活準備](https://paiza.hatenablog.com/entry/2019/08/27/%E3%80%9021%E5%8D%92%E3%80%91%E3%81%84%E3%81%BE%E5%A7%8B%E3%82%81%E3%82%8C%E3%81%B0%E5%86%85%E5%AE%9A%E3%81%8C%E8%BF%91%E3%81%A5%E3%81%8F%EF%BC%814%E3%81%A4%E3%81%AE%E5%B0%B1%E6%B4%BB%E6%BA%96%E5%82%99) 615 | - [ニコニコ自作ゲームフェス新人賞2020・応募要項](https://ch.nicovideo.jp/indies-game2020) 616 | - 注意。以下のようにあるので、応募するのは、好きに改変してもらって構わない作品にしてください 617 | - *本コンテストに応募することにより、当社及び当社が指定する第三者に対して、応募作品を自由に利用できる世界的、非独占的、無償、サブライセンス可能かつ譲渡可能な許諾ライセンス(ゲームの二次創作をするために必要な改変、編集等を含みます)を付与するものとします* 618 | 619 | ## 作業 620 | - 差支えなければ、1週間ゲームジャムの作品に「デジタルアーツ東京」のタグの設定を 621 | - http://twitcasting.tv/tdl_download.php を開いて、TwitCasting Desktop Liveの最新版をダウンロードして実行する 622 | 623 | 624 | ## 夏休み課題例 625 | - [よけとる2019SUMMER](https://dat19.github.io/yoketoru2019summer/) 626 | 627 | 628 | ## 夏休み課題の仕上げ 629 | - 作品の仕上げ 630 | - どのような作品かが分かるように 631 | - 完成できなかった人、完成が遠い人は、どのようなものを作ろうとしたかを発表する準備 632 | - 発表資料 633 | - パワーポイント、GitPitch、Googleスライド、Keynoteなど、ツールはなんても良い 634 | - [参考](https://twitter.com/abee2/status/1167764842817605635) 635 | 636 | # 14回目(7/24) 637 | # 夏休み中の相談先 638 | - [Unityゲーム開発者ギルド](https://scrapbox.io/unity-game-dev-guild-pr/Unity%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89) 639 | - [Unityお学びグループ](https://connect.unity.com/g/unityoxue-bigurupu?tab=discussion) 640 | - [Unityユーザー助け合い所](https://www.facebook.com/groups/unityuserj/) 641 | 642 | 643 | ## 夏休みの課題 644 | ### 前期の復習 645 | - 全ての講義について、何をやったのかを振り返り、わからなかった部分は調べたり、繰り返し取り組んで理解を深める 646 | 647 | ### 一か所以上、オリジナル要素を入れた(ミニ)ゲームを完成させる 648 | - よけとる、インターネットで見つけたチュートリアルブログ、自分で購入した書籍、学校にある書籍などに掲載されている作品を元にして、オリジナルの要素を1つ以上付け加えた作品を完成させる 649 | - 完全オリジナルでもよい 650 | - どこにオリジナル要素があるかを明確にすること 651 | - 1週間ゲームジャム参加者はその作品の一部改造でよい 652 | 653 | ## 発表方法 654 | - WebGL、PC、スマホなど、環境はなんでもよいのでビルドする 655 | - GitHub Pagesなどでゲーム紹介と配信(配布)するWebサイトを作成 656 | - 上記を一人最大10分で発表 657 | - 発表用の資料は、パワポ、GitPitch、その他プレゼンツール、あるいはGitHub Pagesのみでの発表も可能 658 | 659 | ## 発表内容は主に以下の通り 660 | - 作品を動かして簡単に紹介 661 | - 作品の概要 662 | - 操作方法 663 | - ルール(ゲームオーバー、クリア、競う要素) 664 | - 参考元のゲームの情報(書籍名、WebのURLなど) 665 | - 自分で作成した個所の明示(どのファイルの何行目から何行目か) 666 | - 利用したアセット一覧 667 | 668 | ## 予定 669 | - [paiza開発日誌. GitHubだけで超高機能なスライド資料が作れる「GitPitch」の使い方を徹底解説!](https://paiza.hatenablog.com/entry/2017/06/22/GitHub%E3%81%A0%E3%81%91%E3%81%A7%E8%B6%85%E9%AB%98%E6%A9%9F%E8%83%BD%E3%81%AA%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E8%B3%87%E6%96%99%E3%81%8C%E4%BD%9C%E3%82%8C%E3%82%8B%E3%80%8CGitPitch%E3%80%8D%E3%81%AE) 670 | - 演習:現在作成中の夏休み企画を紹介するスライドを作成する 671 | - 夏休み課題の先行開発 672 | 673 | ## 演習 674 | GitPitchを使って、夏休み課題として作成中、あるいは作成を検討している企画のスライドを作成せよ。 675 | 676 | - github.com で、演習用のリポジトリーを作成。名前は`ensyu0724`など 677 | - 手順に従って、GitPitch用のファイルを作成 678 | - 以下のスライドを作成 679 | - 作成中の作品のスクリーンショットと仮のゲームのタイトル 680 | - 以下、箇条書きでよい 681 | - 想定するプラットフォーム(WebGL or Windows or スマホ) 682 | - 標準の画面解像度 683 | - ゲームの概要 684 | - 操作方法 685 | - ルール(ゲームオーバー条件やクリア条件) 686 | - 利用アセットへのリンクリスト 687 | 688 | 以上できたら、[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing)にGitPitchへのリンクを貼り付ける。 689 | 690 | ## スクリーンショットの作成手順 691 | - Unityを実行するなどして、スクリーンショットを撮りたい画面を表示 692 | - [Alt]+[PrtSc]キーを押す 693 | - ウィンドウズメニューをクリックして、「pa」と入力すると、ペイントが検索で出てくるので起動 694 | - [Ctrl]+[V]キーで貼り付ける 695 | - 選択ツールで、切り取りたい画面の範囲を選択 696 | - トリミングボタンをクリック 697 | - [Ctrl]+[S]キーで保存ウィンドウを出して、デスクトップなどに`img.png`などの名前で保存 698 | - ensyu0724リポジトリーを開いて、Upload filesボタンをクリック 699 | - *choose your files*をクリック 700 | - デスクトップに保存した画像ファイルを選択してアップロード 701 | - ページ下の*Commit changes*ボタンをクリック 702 | 703 | 以上で、画像がGitHubのリポジトリーにアップロードされる。あとは、PITCHME.mdを開いて、画像を差し込みたい場所にマークダウンの書式で`img.png`を表示するように設定する。 704 | 705 | 706 | # 13回目(7/17) 707 | 708 | ## 話題 709 | - [Ryosuke. はじめてのチーム開発、たアケイクさんと「REC」を制作しました](https://ryo620.org/2019/07/unity1week-game-jam-6/) 710 | 711 | ## 内容 712 | - [作業手順](https://docs.google.com/document/d/1R32O134chW-wuqBovrR1xeXT0cIkpjFIcZo4Ncjtbjc/edit?usp=sharing) 713 | - [作成したページ](https://github.com/dat19/md-rensyu) 714 | - インターネットで発表する 715 | - マークダウンの練習 716 | - https://dotinstall.com/lessons/basic_markdown_v2 717 | - GitHub Pagesの利用 718 | - https://pages.github.com/ 719 | - 公開した、GitHub PagesのURLを、[ここ](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing)に貼り付け 720 | 721 | ## 演習&宿題:現在作成している個人作品用のリポジトリーを作成して、GitHub Pagesを有効にして、作品についてまとめる 722 | - 作成していなければ、作品用のリポジトリーを作成(作成済みなら次へ) 723 | - GitHub Pagesの設定をする 724 | - リポジトリーをクローンするか、更新する 725 | - README.mdに、以下の要領で紹介ページを作る 726 | - 作品名 727 | - スクリーンショット 728 | - ルール(ゲームオーバー条件、プレイヤーができること) 729 | - 操作方法 730 | - 使用アセット一覧 731 | - 著作者表示 732 | - [paiza開発日誌. GitHubだけで超高機能なスライド資料が作れる「GitPitch」の使い方を徹底解説!](https://paiza.hatenablog.com/entry/2017/06/22/GitHub%E3%81%A0%E3%81%91%E3%81%A7%E8%B6%85%E9%AB%98%E6%A9%9F%E8%83%BD%E3%81%AA%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E8%B3%87%E6%96%99%E3%81%8C%E4%BD%9C%E3%82%8C%E3%82%8B%E3%80%8CGitPitch%E3%80%8D%E3%81%AE) 733 | - [公式ドキュメント](https://gitpitch.com/docs) 734 | 735 | 736 | # 12回目(7/10) 737 | ## 話題 738 | - [ぐーるらいふ. unity1week「あつめる」 GOLD RUSHの実装について](http://ghoul-life.hatenablog.com/entry/2019/07/08/214036) 739 | - [初心者がUnityでなんかしちゃうぞBlog. WebGLで画像つきツイートをしたい!](https://unity-senpai.hatenablog.com/entry/2019/07/07/130111) 740 | - [Unityインターハイブログ](http://inter-high-blog.unity3d.jp/2019/07/08/unity1week/) 741 | 742 | ## 予定 743 | - 1週間ゲームジャム作品-モックの仕上げ、発表 744 | - [WebGLビルド手順](https://docs.google.com/document/d/11PWieJ1D7JsSghkhaKdmHpzVx6DAwXS3L4OAUTU1vNk/edit?usp=sharing) 745 | 746 | ## 発表準備 747 | - [こちら](https://docs.google.com/document/d/11rh1ojJnCJInI33XEk9xX3T_bHfKfoI_BH0foDVSGtM/edit?usp=sharing)に従ってYouTubeのライブイベントを作成して、配信の準備をする 748 | - 先週の金曜日にunityroomのURLを登録していなかったり、URLを変更していたら[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/edit?usp=sharing)に反映 749 | 750 | # 11回目(7/3) 751 | ## 話題 752 | - UnityのWebGLビルドができるようになりました!! 753 | - [デジゲー博2019](http://digigame-expo.org/) 754 | - 11/17(日) DATフェスタの次の週なので、DATフェスタの作品をそのまま展示できます 755 | - 学校は体験入学なので、出場する場合は学生主体で 756 | - [Weeyble. 1週間ゲームジャム追い込み&打ち上げ会](https://weeyble-game.connpass.com/event/136707/) 757 | 758 | ## 内容 759 | - 1週間ゲームジャム用の企画を考える / モック画面作成(8回目から移動) 760 | - [Unityでの操作、オブジェクトの作り方、動かし方、当たり判定](https://docs.google.com/document/d/11Pi1cHxEv9W4LgmaHWaMvzOstUx7Q7EToXM-wzKrGXQ/) 761 | - プレイヤーのキー操作 762 | - キャラクターの問題の起きにくい作り方 763 | - 動かし方 764 | - 当たり判定の考え方 765 | - オブジェクトの消し方 766 | - オブジェクトの生成 767 | 768 | 769 | # 10回目(6/26) 770 | 771 | ## 予定 772 | - ProBuilderで部屋や小物を作る(11回目から移動) 773 | - [ProBuilderの準備、および、樽の作り方補足](https://docs.google.com/document/d/1sL49FHekN8Qi3ePJSAliMREXiH6oe88H_BjGsL5PAcw/) 774 | - [Unity3D Japan. ProBuilderでモデリング入門](https://www.youtube.com/watch?v=IeUNvMAA84k) 775 | - 頂点カラーを使うには、ProBuilder用のシェーダーを設定する必要があるので注意! 776 | - 当たり判定をつける 777 | - Mesh Collider 778 | - 動かすときはConvexを設定(当たり判定が大雑把になる代わりに動かせるようになる) 779 | - テクスチャーを貼り付ける参考記事 780 | - http://cz-mirror.hatenablog.com/entry/2018/02/23/223650 781 | - 時間があれば、これまでの総復習 782 | - 1週間ゲームジャムを想定したモック画面作り 783 | 784 | # 9回目(6/19) 785 | 786 | ## 話題 787 | - [NVIDIA. AIによる画像生成 GauGANのデモ](https://www.nvidia.com/en-us/research/ai-playground/) 788 | - https://www.youtube.com/watch?v=p5U4NgVGAwg 789 | 790 | ## 内容 791 | ### 音の再生 792 | - BGMを2種類、効果音を3種類用意する 793 | 794 | ### 準備 795 | - プロジェクト名を`ensyu0619`、**3D**でUnityプロジェクトを作成 796 | - *Project*ウィンドウから、`Scenes`フォルダーの左の三角をクリックして開く 797 | - `SampleScene`をクリックして、`Audio`に名前を変更 798 | - ダイアログが表示されたら、*Reload*ボタンをクリック 799 | - [Ctrl]+[S]キーを押して保存 800 | - *File*メニューから*Save Project*を選択して、プロジェクトを保存 801 | - [UnityプロジェクトをGitHubに登録する手順](https://github.com/dat19/gp1/blob/master/github-unity.md)に従って、作成したプロジェクトをGitHubに登録 802 | - [こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に共有用URLを報告 803 | 804 | ### 演習 805 | - http://am1tanaka.hatenablog.com/entry/2019/06/11/230541 を参考に、BGMと効果音が3種類鳴るようにしてみる 806 | 807 | ### 参考URL 808 | - 音の切り取りなど 809 | - https://mp3cut.net/ja/ 810 | - [Unity Technologies Japan. クリックするだけで効果音を自動生成する「bfxr」](http://inter-high-blog.unity3d.jp/2017/08/09/bfxr/) 811 | - [効果音作成ツールBfxr](http://www.bfxr.net/) 812 | 813 | ### アニメーション作成 814 | - [作業手順](https://docs.google.com/document/d/1FHhysIfjtk0oBIitrfmcE7NBhBaijIVygOmLz5NjqLg/) 815 | - アニメーターを割り当てる 816 | - アニメーションクリップを作成 817 | - 場所、方向、大きさを変化させる 818 | - 状態遷移 819 | - 既存のアニメを利用する 820 | - 参考 821 | - [ひよこのたまご. 2Dアニメーションの作り方 Animation, Animator Controller【ひよこエッセンス】](https://hiyotama.hatenablog.com/entry/2015/05/06/103657) 822 | - [Unity公式Animationチュートリアル](https://unity3d.com/jp/learn/tutorials/s/animation) 823 | 824 | 825 | 826 | ## 時間が余ったら 827 | - 円や四角といったシンプルな形状を面白く見せるアニメーションを作成(10回目から移動) 828 | - アセットストア以外での便利なアセット 829 | - [コガネブログ. 【Unity】GitHub で公開されていて無料で使用できるおすすめのアセットを600個紹介](http://baba-s.hatenablog.com/entry/2019/01/15/080000) 830 | - 前回探したアセットを組み合わせて、よけとるのモック画面を作ってみる 831 | - パーティクルを設定する 832 | - BGMと効果音が鳴るようにする 833 | 834 | 835 | # 8回目(6/12) 836 | ## 前回の課題結果(出席者14名) 837 | - GitHubで提出 12名 838 | - パーフェクト 5名 839 | - 1カ所不足 1名 840 | - 2カ所不足 3名 841 | 842 | ## 前回の振り返り 843 | - 知的財産権について 844 | - 産業財産権と著作権 845 | - 著作物を使う時の注意 846 | - ゲームに使えそうなアセットを探して、URLを収集 847 | 848 | ## 話題 849 | - [7/1 0:00より、1週間ゲームジャム開催](https://unityroom.com/unity1weeks) 850 | 851 | ## 内容 852 | - パーティクルの使い方 853 | - [作業手順](https://docs.google.com/document/d/1ZoIvC78NmTwWRuBSsaTBIs_eh5e7hU1KdorHuPY8_pM/) 854 | - [パーティクルのマニュアル](https://docs.unity3d.com/ja/current/Manual/class-ParticleSystem.html) 855 | - [Unity公式パーティクル](https://assetstore.unity.com/packages/essentials/tutorial-projects/unity-particle-pack-127325) 856 | - [アセットストアのパーティクル](https://assetstore.unity.com/?category=vfx%2Fparticles&free=true&orderBy=1) 857 | 858 | 859 | # 7回目(6/5) 860 | ## 話題 861 | - [日本ゲーム大賞U18部門 予選大会 6/9](https://u18.awards.cesa.or.jp/) 862 | 863 | ## 前回の課題結果(出席者17名) 864 | - GitHubで提出 14名 865 | - パーフェクト 7名 866 | - 1カ所不足 4名 867 | - 2カ所不足 1名 868 | 869 | ## 著作権概論 870 | - https://docs.google.com/document/d/15zRG0hcf9OU3TFoJ5vZL43AGPKCqewpD7KS_QYwntaA/ 871 | 872 | ## 演習: 素材を探しと規約の確認、出典URL 873 | アプリに組み込みが可能なフリー素材をインターネットで探して、GoogleシートにURLをまとめてましょう。 874 | 875 | - 背景や地面用のアセット 876 | - プレイヤーキャラクター 877 | - 敵用のキャラクター 878 | - アイテム用のキャラクター 879 | - タイトル用フォント 880 | - 説明用フォント 881 | - BGM 882 | - 効果音 883 | 884 | ## 一枚絵を3Dに読み込む手順 885 | - 素材のjpgやpngファイルを、Projectウィンドウにドラッグ&ドロップ 886 | - HierarchyウィンドウのCreateボタンをクリックして、3D Object > Quadを選択して、四角を作成 887 | - ProjectウィンドウのCreateボタンをクリックして、Materialを作成して、BGなどの画像の名前にする 888 | - InspectorウィンドウのAlbedoの左の四角の枠に、画像ファイルをドラッグ&ドロップ 889 | - Projectウィンドウの今回の例ならBGマテリアルをドラッグして、HierarchyウィンドウのQuadにドロップ 890 | - あとは、QuadのTransformのScaleを調整して、好みのサイズにする 891 | 892 | ### ちょっと画像が白いのを直す 893 | シェーダーをライトの影響を受けないやつに変更。 894 | 895 | - Projectウィンドウからマテリアルをクリックして選択 896 | - shader欄をクリックして、Unlit > Textureに変更 897 | 898 | 以上で、ライトの影響を受けずに、テクスチャーの色がそのまま反映される。 899 | 900 | 901 | 902 | ## 提出手順 903 | - https://drive.google.com を開いて、Googleアカウントでサインイン 904 | - *新規*をクリックして、*Google スプレッドシート*をクリック 905 | - ドキュメント名を`ensyu0605`にする 906 | - 右上の*共有*をクリック 907 | - 右上の*共有可能なリンクを取得*をクリック 908 | - しばらく待つと、*リンクをコピー*ボタンが表示されるので、クリックしてコピー 909 | - [こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)の自分の行に[Ctrl]+[V]キーで貼り付け 910 | 911 | 以上準備が整ったら、各素材を探そう。 912 | 913 | - アセットストア 914 | - ユニティちゃんサイト 915 | - フォント 916 | - その他、CC0やフリー素材サイト 917 | 918 | ## 時間があまったら 919 | - 取得したアセットをUnityに組み込んで表示してみよう 920 | 921 | # 6回目(5/29) 922 | ## 前回の課題結果(出席者17名) 923 | - GitHubで提出 15名 924 | - TextMeshProを問題なく実装 6名 925 | 926 | ## 写真のデザイン 927 | - [スライド](https://am1.jp/dat/design/design6-photo.pdf) 928 | - [図](https://am1.jp/dat/design/design6-photo-fig.pdf) 929 | - Unityを使った写真的エフェクト-Post Processing Stackの利用 930 | 931 | ## 作業手順 932 | - https://docs.google.com/document/d/1MmqHpj0_ja1RLz2D5knnFMBqSDyn0INLEEM1omUhW7A/ 933 | 934 | ## 演習準備 935 | ### Unityのプロジェクト作成とGitHubへの登録 936 | - プロジェクト名を`ensyu0529`、**3D**でUnityプロジェクトを作成 937 | - [Ctrl]+[S]キーを押して保存ダイアログが開いたら以下を行う 938 | - 新しいフォルダーを作って、`Scenes`という名前にする 939 | - 作成した`Scenes`フォルダーをダブルクリックして開く 940 | - ファイル名を`pps`にして保存する 941 | - *File*メニューから*Save Project*を選択して、プロジェクトを保存 942 | - [UnityプロジェクトをGitHubに登録する手順](https://github.com/dat19/gp1/blob/master/github-unity.md)に従って、作成したプロジェクトをGitHubに登録 943 | - [こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に共有用URLを報告 944 | 945 | ## 演習 946 | - コーネルボックスを作る 947 | - [monobook.org. コーネルボックスとは](https://monobook.org/wiki/%E3%82%B3%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9) 948 | - [@thiroaki. コーネルボックスをつくってあそぼ](https://qiita.com/thiroaki/items/7a9213150b15810137f2) 949 | - SphereやPlane、ボックスなどを配置して着色 950 | - 様々なライトを試す 951 | - カメラの画角(Field of view = 視野角) 952 | - ポストプロセスによる被写界深度(ボケ)の表現、HDR(High Dynamic Range)による輝き 953 | - [PostProcessingStack v2リポジトリー](https://github.com/Unity-Technologies/PostProcessing/releases) 954 | - [設定手順](http://am1tanaka.hatenablog.com/entry/2018/05/19/172121) 955 | - できたらこちらの[手順](https://github.com/dat19/gp1/blob/master/github-unity.md#%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%82%92%E5%8F%8D%E6%98%A0%E3%81%95%E3%81%9B%E3%82%8B%E6%89%8B%E9%A0%86)を参考に、作成したプロジェクトをGitHubにプッシュする 956 | 957 | ## 時間があれば... 958 | - TextMesh Proのおさらい 959 | - ゲームっぽい画面を作ってみる 960 | 961 | ## ライティングについて参考 962 | - [Unity公式. ライティングの手法](https://docs.unity3d.com/ja/current/Manual/BestPracticeMakingBelievableVisuals3.html) 963 | - [テラシュールブログ. Lightmap](http://tsubakit1.hateblo.jp/archive/category/Lightmap) 964 | - [テラシュールブログ. 画面効果](http://tsubakit1.hateblo.jp/archive/category/%E7%94%BB%E9%9D%A2%E5%8A%B9%E6%9E%9C) 965 | 966 | # 5回目(5/22) 967 | ## 話題 968 | - [Anna Mészáros. デザイナーではない人がデザインする上で大切な4つの基本原則](https://gigazine.net/news/20190518-fundamental-design-principles/) 969 | 970 | ## 前回の課題結果(出席者16名) 971 | - GitHubで提出 14名 972 | - 画面作成 12名 973 | - ボタン実装 11名 974 | 975 | ## 文字のデザイン 976 | - [スライド](https://am1.jp/dat/design/design5-font.pdf) 977 | 978 | ## フリーフォントの探し方とUnityでの活用方法 979 | - [coliss. 2019年用、日本語のフリーフォント377種類のまとめ -商用サイトだけでなく紙や同人誌などの利用も明記](https://coliss.com/articles/freebies/japanese-free-fonts-for-2019.html) 980 | - タイトル用と本文用の2つのフォントを見つけて、リンクをメモ帳などにとっておく 981 | - [提出用URL](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/) 982 | - [@thorikawa. UnityのText Mesh Proアセットで日本語を使うときの手順](https://qiita.com/thorikawa/items/03b65b75fa9461b53efd) 983 | - [手順](https://docs.google.com/document/d/1V8witriNqNILYd5tdnEE9pnvZokuHfTY3oJEBDtgAo0/) 984 | 985 | ## 参考 986 | - [PHOTOSHOPVIP. 現役デザイナーが教える!完璧な書体を決める10個の黄金ルールまとめ](http://photoshopvip.net/105840?utm_content=bufferf79a8&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer) 987 | - [個人開発のUI設計術](https://crieit.net/posts/UI) 988 | 989 | ## 演習:タイトル画面やゲーム画面の作成 990 | 991 | 992 | # 4回目(5/15) 993 | ## 色のデザイン 994 | - [スライド](https://am1.jp/dat/design/design4-color.pdf) 995 | - [図](https://am1.jp/dat/design/design4-color-fig.pdf) 996 | 997 | ## 演習準備 998 | ### Unityのプロジェクト作成とGitHubへの登録 999 | - プロジェクト名を`ensyu0515`、**2D**でUnityプロジェクトを作成 1000 | - [Ctrl]+[S]キーを押して、新しいフォルダーを作って、`Scenes`という名前にして、そのフォルダーをダブルクリックして開く 1001 | - ファイル名を`color`にして保存する 1002 | - *File*メニューから*Save Project*を選択して、プロジェクトを保存 1003 | - [UnityプロジェクトをGitHubに登録する手順](https://github.com/dat19/gp1/blob/master/github-unity.md)に従って、作成したプロジェクトをGitHubに登録 1004 | - [こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に共有用URLを報告 1005 | 1006 | ### 背景色の設定 1007 | - *Main Camera*をクリックして選択 1008 | - *Background*の右の四角をクリック 1009 | - 黒にする 1010 | - xをクリックして、カラーウィンドウを閉じる 1011 | 1012 | ### 色見本の作成 1013 | - *Hierarchy*ウィンドウの*Create*から、*3D Object* > *Quad*を選択 1014 | - *Project*ウィンドウの*Create*をから、*Material*を作成して、Enterキーを押す 1015 | - 作成した*New Material*をドラッグして、*Quad*にドロップ 1016 | - *New Material*をクリックして選択したら、*Shader*のコンボボックスをクリックして、*Unlit* > *Color*を選択 1017 | - *Inspector*ウィンドウの*Transform*欄の*Scale*の*X*と*Y*を`5`ぐらいにして少し大きくする 1018 | 1019 | 以上で、色を直接設定できる正方形が作れる。 1020 | 1021 | ここまでできたら、一度保存をして、GitHubにコミット、プッシュしておく([手順](https://github.com/dat19/gp1/blob/master/github-unity.md#%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%82%92%E5%8F%8D%E6%98%A0%E3%81%95%E3%81%9B%E3%82%8B%E6%89%8B%E9%A0%86))。 1022 | 1023 | ## 演習1 1024 | - SpriteとMaterialを作成して、作成したマテリアルをSpriteにアタッチしておく 1025 | - RGBで色を作る 1026 | - HSVで色を作る(60ごと6分割) 1027 | - QuadとMaterialを複数作成して、それぞれ色を設定 1028 | - Main Cameraの背景色とQuadの組み合わせを色々と試してみよう 1029 | 1030 | ## UnityのUI(uGUI) 1031 | - [作業手順](https://docs.google.com/document/d/1oUDdWBGk2XUjAyt7RLHL2a1shBwrZp-ghrOb4wzGddk/) 1032 | - Canvas 1033 | - ボタンの設置 1034 | - 文字の表示 1035 | 1036 | 1037 | # 3回目(5/8) 1038 | 1039 | ## 形のデザイン 1040 | - [スライド](https://am1.jp/dat/design/design3-shape.pdf) 1041 | - 形だけで面白いものは作れる 1042 | 1043 | ## 参考作品 1044 | - [VOODOO](https://play.google.com/store/apps/developer?id=VOODOO) 1045 | - https://play.google.com/store/apps/details?id=com.neonplay.casualrollersplat2 1046 | - https://play.google.com/store/apps/details?id=com.h8games.helixjump 1047 | - https://play.google.com/store/apps/details?id=io.voodoo.paper2 1048 | - https://play.google.com/store/apps/details?id=com.bigframes.color_road 1049 | - その他 1050 | - https://play.google.com/store/apps/details?id=com.crazylabs.tricky.traps.game 1051 | - https://play.google.com/store/apps/details?id=com.azurgames.stackball 1052 | - https://play.google.com/store/apps/details?id=com.gamestart.fill 1053 | - https://play.google.com/store/apps/details?id=com.colorup.game 1054 | 1055 | ## 演習:基本図形を使ってカジュアルゲームの画面イメージを作ってみよう 1056 | - [演習手順](https://docs.google.com/document/d/1xV3s3uG9jT0wCEfQEid83Pc5nBC7pLg8HZg0V8UyJI4/) 1057 | 1058 | ### 利用するツール 1059 | - Photoshop 1060 | - Unity 1061 | 1062 | ### 抽象化:円や四角、三角形といった図形を組み合わせてキャラクターを作ってみよう 1063 | - 抽象化するキャラクターを選ぶ(ピカチュウでもアイアンマンでもなんでもよい) 1064 | - 図形ツールを使って、そのキャラクターを徹底的に抽象化した形を描く(図形、色設定など自由に使ってよい) 1065 | - ポイント:元のキャラクターを連想できる限界まで形を抽象化する 1066 | - Photoshopの画像を画面に見立てて、丁度よいサイズにキャラクターの大きさを設定する 1067 | 1068 | ### 敵や障害物、地面などを作る 1069 | - 上記のキャラクターが映えるようなその他の素材を描く 1070 | - これも基本図形で構成してみよう 1071 | 1072 | ### キーワード 1073 | - 抽象化 1074 | - 記号 1075 | - アイコン 1076 | - 対象の形を抽象化した記号 1077 | - インデックス 1078 | - 対象を連想させる記号 1079 | - シンボル 1080 | - !や?など、共通認識がある記号 1081 | - モノグラム 1082 | - 点、線、面 1083 | - 幾何学形態の利用 1084 | - 図形間の距離、大きさ 1085 | - 図形の形状、配置 1086 | - 黄金比、白銀比 1087 | - 図と地、ゲシュタルト心理学、プレグナンツの法則 1088 | - 錯視 1089 | 1090 | ### 提出 1091 | - 完成したら、GitHub Desktopでコミットして、Publishすれば提出完了 1092 | 1093 | 1094 | # 2回目(4/24) 1095 | ## 講義メモ 1096 | - [講義メモ](https://docs.google.com/document/d/1kAfX8-_TyGLNSCaSC4t5R4VafvQYte-Zx-p-pQlB-Tg/) 1097 | 1098 | ## 予定 1099 | - 前回の企画の発表と講評 1100 | - 講義:アイディアの出し方 1101 | 1102 | ## 演習A:フリーライティングをやってみよう 1103 | - Googleドキュメントを開く 1104 | - 新規でスプレッドシートを作成して、名前を`D02ブレスト:氏名`にする(例: `D02ブレスト:田中`) 1105 | - 制限時間内に思いついた単語をA列に書きつらねていく 1106 | - 指示に従って、B列に乱数を設定 1107 | - データから並び替えて、キーワードを決める 1108 | 1109 | ## 演習B:企画の作成とブラッシュアップ 1110 | - フリーライティングで決めたキーワードを取り入れた企画を考えてみよう 1111 | - 前回の企画をブラッシュアップしてみよう 1112 | 1113 | ### 手順 1114 | - Googleドライブを開いて、新しいGoogleドキュメントを作成 1115 | - [これを右クリック](https://docs.google.com/document/d/1JHDSo8WGOY3wxsX48EMjpM0b83QgABhPMkm79Z3v02c/)して、新しいタブで開く 1116 | - 開いたドキュメントを[Ctrl]+[A]キーで全部選択して、[Ctrl]+[C]キーでコピー 1117 | - 自分で作成したGoogleドキュメントに[Ctrl]+[V]キーで貼り付ける 1118 | - タイトルを`D02企画:名前`にする(例: `D02企画:田中`) 1119 | - サムネイルは、スマホで撮影したものをメールなどでPCに送るとよい(CamScannerがオススメ) 1120 | 1121 | ## 企画例 1122 | - https://docs.google.com/document/d/1b9UN7ZmZAJclmxq2OqIbZdHcjwUAEWymhrPZdBqvb4I/ 1123 | 1124 | ## 時間があれば 1125 | - Photoshopで画面作り 1126 | - ランダム順で演習結果を発表 1127 | 1128 | 1129 | # 1回目(4/17) 1130 | ## 講義メモ 1131 | - https://docs.google.com/document/d/1RgzMbtTLhVs-uPG5cSztC5-UFjKLRssgYLCLe1MtvJY/ 1132 | 1133 | ## 内容 1134 | - [ガイダンス](https://docs.google.com/presentation/d/1zaVqeDVWHGBkl5IKj1-pAHpyRRDj8gL7F2r5p9ANK7o/) 1135 | - 参考ブログ: [みたかシロフード. 第1回LookingGlassハッカソン参加・優勝](https://sirohood.exp.jp/20190408-2274/) 1136 | - [制作において心がけて欲しいこと](01-note.md) 1137 | - 環境の構築 1138 | - Gmailアドレスの取得。**学校の活動専用**のアカウントを作成する 1139 | - Gmailは、携帯番号の設定が必要です。2段階認証で必要なだけで、営業電話がかかってきたり、番号が他に漏れることはありません 1140 | - Gmail / GitHub 1141 | - Windowsの基本操作 1142 | - 作業用フォルダーの作成 1143 | - ゲームデザイン概論(1) 1144 | - ゲームの定義 [Capm Network. ゲーム理論](http://capm-network.com/?tag=%E3%82%B2%E3%83%BC%E3%83%A0%E7%90%86%E8%AB%96) 1145 | - [ゲームの定義や要素からミニゲームを考える](https://docs.google.com/presentation/d/1_psbxg6vPk21C3nAcytyVJm8QTYr-G7AV1qAtjcRclg/) 1146 | - 演習:ミニゲームを考えてみよう 1147 | - サムネイルを描く 1148 | - 操作方法:unityroomを参考に、キーやマウスなど、どうやって動かすのかを書く 1149 | - 選択肢に対応するもの 1150 | - ルール 1151 | - 何をするのか 1152 | - 何をしたらいけないのか 1153 | - 簡単な世界観など(あれば) 1154 | - **プレイヤーは、何を制限されるのか? を考えるとまとめやすい** 1155 | - 参考: https://docs.google.com/drawings/d/1mGXGcm8mcXUBmP3rqVQheMDZLl3jd86qapLr7NChwjU/ 1156 | -------------------------------------------------------------------------------- /memo.md: -------------------------------------------------------------------------------- 1 | - Googleドライブのdat/dat19/designフォルダーに、デザインの教科書のスライドがある 2 | - 必要に応じて、Googleドキュメントでメモを取りながら進める 3 | - 03.mdは草案のメモ。使わない 4 | -------------------------------------------------------------------------------- /syllabus.md: -------------------------------------------------------------------------------- 1 | # 授業の概要 2 | 3 | ## 科目基本情報 4 | - 前期16コマ。後期16コマ 5 | 6 | ## 学習目標 7 | - ゲーム開発に必要な考え方、素材の用意の仕方、法律的な知識を身につけること 8 | - インターネットで発表できるようにすること 9 | - ゲームのアイディアに繋がる技術を知ること 10 | 11 | ## 教科書 12 | - 適宜、資料を配布する 13 | 14 | ## 年間授業計画 15 | ### 前期 16 | 1. ガイダンス / ゲームの定義 / 演習:ミニゲームを考えよう 17 | 2. アイディアの出し方 / 演習:フリーライティングで企画を考えてサムネイルを描く 18 | 3. 形のデザイン / 演習:形を活かしてカジュアルゲームの画面の作成 19 | 4. 色とUIのデザイン / 演習:Unity上でモック画面の作成 20 | 5. 文字のデザイン / フリーフォントの探し方とUnityでの活用方法 / 演習:タイトル画面の作成 21 | 6. 写真のデザイン / Unityを使った写真的エフェクト / 演習:3D画面をポストプロセスで仕上げる 22 | 7. 著作権概論 / 素材を探す / 演習:モック画面と利用アセットリストの作成 23 | 8. パーティクル、音の再生(12回目から移動) / まとめと演習(9回目から移動) 24 | 9. アニメーション作成 / 演習:円や四角といったシンプルな形状を面白く見せるアニメーションを作成(10回目から移動) 25 | 10. ProBuilderを使ったステージのデザイン(11回目から移動) 26 | 11. 1週間ゲームジャム用の企画を考える / モック画面作成(8回目から移動) 27 | 12. 1週間ゲームジャム用に考えたゲーム企画のモック画面を作成して発表(9回目から移動) 28 | 13. インターネットで発表する方法 / 演習:習作をインターネットに公開する 29 | 14. 習作の仕上げと個人作品の準備 30 | 15. 夏休みの成果物の仕上げ 31 | 16. 夏休みの成果物をWebに公開 32 | 33 | ### 後期 34 | 1. ここまでの復習 / 演習:DATフェスタ企画 35 | 2. チーム開発の環境作り 36 | 3. DATフェスタ展示作品の開発 37 | 4. DATフェスタ展示作品の完成とクラス内発表 38 | 5. DATフェスタ展示作品の仕上げ 39 | 6. 1週間ゲームジャムのための準備 40 | 7. 1週間ゲームジャムの作品開発 41 | 8. 画面をきれいに見せる技術 / DATフェスタの作品と1週間ゲームジャムの作品の試遊会。改善点のリストアップ 42 | 9. 仕上げ作業 43 | 10. ポートフォリオWebページの作成(1) 44 | 11. ポートフォリオWebページの作成(2) 45 | 12. 正月休み課題の説明と準備 46 | 47 | 13. 成果の発表準備 48 | 14. コンテスト用企画会議(1) 49 | 15. コンテスト用企画会議(2) 50 | 16. 2時間ゲームジャム準備 51 | 52 | ## 授業の進め方 53 | - 1コマ目は講義。2コマ目は演習をして、講義した内容を身に着けます 54 | - 演習では班を作成して、講義の最後に演習成果の発表を行います 55 | 56 | ## 試験の実施方法 57 | - 前期試験無し。後期試験無し 58 | ※普段の提出物や発表、授業中のミニテストで評価します。試験期間での試験は実施しません 59 | 60 | ## 成績評価方法 61 | 1)出席率=50% 62 | 2)平常点=50% 63 | - 上記2つの項目をそれぞれ合計し、100点満点の成績評価を算出します 64 | - 出席率が75%以上に満たない場合は、原則として認定をしません 65 | 66 | ## 備考 67 | -------------------------------------------------------------------------------- /yoketoru/Build/Builds.data.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat19/design/e61a553687cca21642deb821a080aa7464e14e36/yoketoru/Build/Builds.data.unityweb -------------------------------------------------------------------------------- /yoketoru/Build/Builds.json: -------------------------------------------------------------------------------- 1 | { 2 | "companyName": "YuTanaka", 3 | "productName": "yoketoru2018", 4 | "dataUrl": "Builds.data.unityweb", 5 | "wasmCodeUrl": "Builds.wasm.code.unityweb", 6 | "wasmFrameworkUrl": "Builds.wasm.framework.unityweb", 7 | "TOTAL_MEMORY": 268435456, 8 | "graphicsAPI": ["WebGL 2.0", "WebGL 1.0"], 9 | "webglContextAttributes": {"preserveDrawingBuffer": false}, 10 | "splashScreenStyle": "Dark", 11 | "backgroundColor": "#231F20" 12 | } -------------------------------------------------------------------------------- /yoketoru/Build/Builds.wasm.code.unityweb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dat19/design/e61a553687cca21642deb821a080aa7464e14e36/yoketoru/Build/Builds.wasm.code.unityweb -------------------------------------------------------------------------------- /yoketoru/Build/UnityLoader.js: -------------------------------------------------------------------------------- 1 | var UnityLoader=UnityLoader||{Compression:{identity:{require:function(){return{}},decompress:function(e){return e}},gzip:{require:function(e){var t={"inflate.js":function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var r=i.inflateInit2(this.strm,t.windowBits);if(r!==l.Z_OK)throw new Error(u[r]);this.header=new f,i.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||u[r.err];return r.result}function a(e,t){return t=t||{},t.raw=!0,o(e,t)}var i=e("./zlib/inflate"),s=e("./utils/common"),d=e("./utils/strings"),l=e("./zlib/constants"),u=e("./zlib/messages"),c=e("./zlib/zstream"),f=e("./zlib/gzheader"),h=Object.prototype.toString;n.prototype.push=function(e,t){var r,n,o,a,u,c,f=this.strm,p=this.options.chunkSize,m=this.options.dictionary,w=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?l.Z_FINISH:l.Z_NO_FLUSH,"string"==typeof e?f.input=d.binstring2buf(e):"[object ArrayBuffer]"===h.call(e)?f.input=new Uint8Array(e):f.input=e,f.next_in=0,f.avail_in=f.input.length;do{if(0===f.avail_out&&(f.output=new s.Buf8(p),f.next_out=0,f.avail_out=p),r=i.inflate(f,l.Z_NO_FLUSH),r===l.Z_NEED_DICT&&m&&(c="string"==typeof m?d.string2buf(m):"[object ArrayBuffer]"===h.call(m)?new Uint8Array(m):m,r=i.inflateSetDictionary(this.strm,c)),r===l.Z_BUF_ERROR&&w===!0&&(r=l.Z_OK,w=!1),r!==l.Z_STREAM_END&&r!==l.Z_OK)return this.onEnd(r),this.ended=!0,!1;f.next_out&&(0!==f.avail_out&&r!==l.Z_STREAM_END&&(0!==f.avail_in||n!==l.Z_FINISH&&n!==l.Z_SYNC_FLUSH)||("string"===this.options.to?(o=d.utf8border(f.output,f.next_out),a=f.next_out-o,u=d.buf2string(f.output,o),f.next_out=a,f.avail_out=p-a,a&&s.arraySet(f.output,f.output,o,a,0),this.onData(u)):this.onData(s.shrinkBuf(f.output,f.next_out)))),0===f.avail_in&&0===f.avail_out&&(w=!0)}while((f.avail_in>0||0===f.avail_out)&&r!==l.Z_STREAM_END);return r===l.Z_STREAM_END&&(n=l.Z_FINISH),n===l.Z_FINISH?(r=i.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l.Z_OK):n!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),f.avail_out=0,!0)},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===l.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=n,r.inflate=o,r.inflateRaw=a,r.ungzip=o},"utils/common.js":function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,r,n,o){if(t.subarray&&e.subarray)return void e.set(t.subarray(r,r+n),o);for(var a=0;a=252?6:d>=248?5:d>=240?4:d>=224?3:d>=192?2:1;s[254]=s[254]=1,r.string2buf=function(e){var t,r,n,a,i,s=e.length,d=0;for(a=0;a>>6,t[i++]=128|63&r):r<65536?(t[i++]=224|r>>>12,t[i++]=128|r>>>6&63,t[i++]=128|63&r):(t[i++]=240|r>>>18,t[i++]=128|r>>>12&63,t[i++]=128|r>>>6&63,t[i++]=128|63&r);return t},r.buf2binstring=function(e){return n(e,e.length)},r.binstring2buf=function(e){for(var t=new o.Buf8(e.length),r=0,n=t.length;r4)l[o++]=65533,r+=i-1;else{for(a&=2===i?31:3===i?15:7;i>1&&r1?l[o++]=65533:a<65536?l[o++]=a:(a-=65536,l[o++]=55296|a>>10&1023,l[o++]=56320|1023&a)}return n(l,o)},r.utf8border=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return r<0?t:0===r?t:r+s[e[r]]>t?r:t}},"zlib/inflate.js":function(e,t,r){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function o(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new y.Buf16(320),this.work=new y.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=T,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new y.Buf32(me),t.distcode=t.distdyn=new y.Buf32(we),t.sane=1,t.back=-1,O):N}function i(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,a(e)):N}function s(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15)?N:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,i(e))):N}function d(e,t){var r,n;return e?(n=new o,e.state=n,n.window=null,r=s(e,t),r!==O&&(e.state=null),r):N}function l(e){return d(e,ye)}function u(e){if(ge){var t;for(w=new y.Buf32(512),b=new y.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(U(E,e.lens,0,288,w,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;U(k,e.lens,0,32,b,0,e.work,{bits:5}),ge=!1}e.lencode=w,e.lenbits=9,e.distcode=b,e.distbits=5}function c(e,t,r,n){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(y.arraySet(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(o=a.wsize-a.wnext,o>n&&(o=n),y.arraySet(a.window,t,r-n,o,a.wnext),n-=o,n?(y.arraySet(a.window,t,r-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=v(r.check,Le,2,0),f=0,h=0,r.mode=P;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&f)<<8)+(f>>8))%31){e.msg="incorrect header check",r.mode=fe;break}if((15&f)!==I){e.msg="unknown compression method",r.mode=fe;break}if(f>>>=4,h-=4,Ue=(15&f)+8,0===r.wbits)r.wbits=Ue;else if(Ue>r.wbits){e.msg="invalid window size",r.mode=fe;break}r.dmax=1<>8&1),512&r.flags&&(Le[0]=255&f,Le[1]=f>>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0,r.mode=D;case D:for(;h<32;){if(0===d)break e;d--,f+=o[i++]<>>8&255,Le[2]=f>>>16&255,Le[3]=f>>>24&255,r.check=v(r.check,Le,4,0)),f=0,h=0,r.mode=q;case q:for(;h<16;){if(0===d)break e;d--,f+=o[i++]<>8),512&r.flags&&(Le[0]=255&f,Le[1]=f>>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0,r.mode=F;case F:if(1024&r.flags){for(;h<16;){if(0===d)break e;d--,f+=o[i++]<>>8&255,r.check=v(r.check,Le,2,0)),f=0,h=0}else r.head&&(r.head.extra=null);r.mode=V;case V:if(1024&r.flags&&(w=r.length,w>d&&(w=d),w&&(r.head&&(Ue=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),y.arraySet(r.head.extra,o,i,w,Ue)),512&r.flags&&(r.check=v(r.check,o,w,i)),d-=w,i+=w,r.length-=w),r.length))break e;r.length=0,r.mode=Z;case Z:if(2048&r.flags){if(0===d)break e;w=0;do Ue=o[i+w++],r.head&&Ue&&r.length<65536&&(r.head.name+=String.fromCharCode(Ue));while(Ue&&w>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=j;break;case G:for(;h<32;){if(0===d)break e;d--,f+=o[i++]<>>=7&h,h-=7&h,r.mode=le;break}for(;h<3;){if(0===d)break e;d--,f+=o[i++]<>>=1,h-=1,3&f){case 0:r.mode=K;break;case 1:if(u(r),r.mode=re,t===W){f>>>=2,h-=2;break e}break;case 2:r.mode=$;break;case 3:e.msg="invalid block type",r.mode=fe}f>>>=2,h-=2;break;case K:for(f>>>=7&h,h-=7&h;h<32;){if(0===d)break e;d--,f+=o[i++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=fe;break}if(r.length=65535&f,f=0,h=0,r.mode=Q,t===W)break e;case Q:r.mode=_;case _:if(w=r.length){if(w>d&&(w=d),w>l&&(w=l),0===w)break e;y.arraySet(a,o,i,w,s),d-=w,i+=w,l-=w,s+=w,r.length-=w;break}r.mode=j;break;case $:for(;h<14;){if(0===d)break e;d--,f+=o[i++]<>>=5,h-=5,r.ndist=(31&f)+1,f>>>=5,h-=5,r.ncode=(15&f)+4,f>>>=4,h-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=fe;break}r.have=0,r.mode=ee;case ee:for(;r.have>>=3,h-=3}for(;r.have<19;)r.lens[We[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Ee={bits:r.lenbits},xe=U(x,r.lens,0,19,r.lencode,0,r.work,Ee),r.lenbits=Ee.bits,xe){e.msg="invalid code lengths set",r.mode=fe;break}r.have=0,r.mode=te;case te:for(;r.have>>24,be=Be>>>16&255,ye=65535&Be,!(we<=h);){if(0===d)break e;d--,f+=o[i++]<>>=we,h-=we,r.lens[r.have++]=ye;else{if(16===ye){for(ke=we+2;h>>=we,h-=we,0===r.have){e.msg="invalid bit length repeat",r.mode=fe;break}Ue=r.lens[r.have-1],w=3+(3&f),f>>>=2,h-=2}else if(17===ye){for(ke=we+3;h>>=we,h-=we,Ue=0,w=3+(7&f),f>>>=3,h-=3}else{for(ke=we+7;h>>=we,h-=we,Ue=0,w=11+(127&f),f>>>=7,h-=7}if(r.have+w>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=fe;break}for(;w--;)r.lens[r.have++]=Ue}}if(r.mode===fe)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=fe;break}if(r.lenbits=9,Ee={bits:r.lenbits},xe=U(E,r.lens,0,r.nlen,r.lencode,0,r.work,Ee),r.lenbits=Ee.bits,xe){e.msg="invalid literal/lengths set",r.mode=fe;break}if(r.distbits=6,r.distcode=r.distdyn,Ee={bits:r.distbits},xe=U(k,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Ee),r.distbits=Ee.bits,xe){e.msg="invalid distances set",r.mode=fe;break}if(r.mode=re,t===W)break e;case re:r.mode=ne;case ne:if(d>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=i,e.avail_in=d,r.hold=f,r.bits=h,A(e,m),s=e.next_out,a=e.output,l=e.avail_out,i=e.next_in,o=e.input,d=e.avail_in,f=r.hold,h=r.bits,r.mode===j&&(r.back=-1);break}for(r.back=0;Be=r.lencode[f&(1<>>24,be=Be>>>16&255,ye=65535&Be,!(we<=h);){if(0===d)break e;d--,f+=o[i++]<>ge)],we=Be>>>24,be=Be>>>16&255,ye=65535&Be,!(ge+we<=h);){if(0===d)break e;d--,f+=o[i++]<>>=ge,h-=ge,r.back+=ge}if(f>>>=we,h-=we,r.back+=we,r.length=ye,0===be){r.mode=de;break}if(32&be){r.back=-1,r.mode=j;break}if(64&be){e.msg="invalid literal/length code",r.mode=fe;break}r.extra=15&be,r.mode=oe;case oe:if(r.extra){for(ke=r.extra;h>>=r.extra,h-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=ae;case ae:for(;Be=r.distcode[f&(1<>>24,be=Be>>>16&255,ye=65535&Be,!(we<=h);){if(0===d)break e;d--,f+=o[i++]<>ge)],we=Be>>>24,be=Be>>>16&255,ye=65535&Be,!(ge+we<=h);){if(0===d)break e;d--,f+=o[i++]<>>=ge,h-=ge,r.back+=ge}if(f>>>=we,h-=we,r.back+=we,64&be){e.msg="invalid distance code",r.mode=fe;break}r.offset=ye,r.extra=15&be,r.mode=ie;case ie:if(r.extra){for(ke=r.extra;h>>=r.extra,h-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=fe;break}r.mode=se;case se:if(0===l)break e;if(w=m-l,r.offset>w){if(w=r.offset-w,w>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=fe;break}w>r.wnext?(w-=r.wnext,b=r.wsize-w):b=r.wnext-w,w>r.length&&(w=r.length),me=r.window}else me=a,b=s-r.offset,w=r.length;w>l&&(w=l),l-=w,r.length-=w;do a[s++]=me[b++];while(--w);0===r.length&&(r.mode=ne);break;case de:if(0===l)break e;a[s++]=r.length,l--,r.mode=ne;break;case le:if(r.wrap){for(;h<32;){if(0===d)break e;d--,f|=o[i++]<>>16&65535|0,i=0;0!==r;){i=r>2e3?2e3:r,r-=i;do o=o+t[n++]|0,a=a+o|0;while(--i);o%=65521,a%=65521}return o|a<<16|0}t.exports=n},"zlib/crc32.js":function(e,t,r){"use strict";function n(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function o(e,t,r,n){var o=a,i=n+r;e^=-1;for(var s=n;s>>8^o[255&(e^t[s])];return e^-1}var a=n();t.exports=o},"zlib/inffast.js":function(e,t,r){"use strict";var n=30,o=12;t.exports=function(e,t){var r,a,i,s,d,l,u,c,f,h,p,m,w,b,y,g,v,A,U,x,E,k,B,L,W;r=e.state,a=e.next_in,L=e.input,i=a+(e.avail_in-5),s=e.next_out,W=e.output,d=s-(t-e.avail_out),l=s+(e.avail_out-257),u=r.dmax,c=r.wsize,f=r.whave,h=r.wnext,p=r.window,m=r.hold,w=r.bits,b=r.lencode,y=r.distcode,g=(1<>>24,m>>>=U,w-=U,U=A>>>16&255,0===U)W[s++]=65535&A;else{if(!(16&U)){if(0===(64&U)){A=b[(65535&A)+(m&(1<>>=U,w-=U),w<15&&(m+=L[a++]<>>24,m>>>=U,w-=U,U=A>>>16&255,!(16&U)){if(0===(64&U)){A=y[(65535&A)+(m&(1<u){e.msg="invalid distance too far back",r.mode=n;break e}if(m>>>=U,w-=U,U=s-d,E>U){if(U=E-U,U>f&&r.sane){e.msg="invalid distance too far back",r.mode=n;break e}if(k=0,B=p,0===h){if(k+=c-U,U2;)W[s++]=B[k++],W[s++]=B[k++],W[s++]=B[k++],x-=3;x&&(W[s++]=B[k++],x>1&&(W[s++]=B[k++]))}else{k=s-E;do W[s++]=W[k++],W[s++]=W[k++],W[s++]=W[k++],x-=3;while(x>2);x&&(W[s++]=W[k++],x>1&&(W[s++]=W[k++]))}break}}break}}while(a>3,a-=x,w-=x<<3,m&=(1<=1&&0===F[N];N--);if(R>N&&(R=N),0===N)return m[w++]=20971520,m[w++]=20971520,y.bits=1,0;for(M=1;M0&&(e===s||1!==N))return-1;for(V[1]=0,O=1;Oa||e===l&&T>i)return 1;for(;;){k=O-S,b[C]E?(B=Z[Y+b[C]],L=D[q+b[C]]):(B=96,L=0),g=1<>S)+v]=k<<24|B<<16|L|0;while(0!==v);for(g=1<>=1;if(0!==g?(P&=g-1,P+=g):P=0,C++,0===--F[O]){if(O===N)break;O=t[r+b[C]]}if(O>R&&(P&U)!==A){for(0===S&&(S=R),x+=M,H=O-S,I=1<a||e===l&&T>i)return 1;A=P&U,m[A]=R<<24|H<<16|x-w|0}}return 0!==P&&(m[x+P]=O-S<<24|64<<16|0),y.bits=R,0}}};for(var r in t)t[r].folder=r.substring(0,r.lastIndexOf("/")+1);var n=function(e){var r=[];return e=e.split("/").every(function(e){return".."==e?r.pop():"."==e||""==e||r.push(e)})?r.join("/"):null,e?t[e]||t[e+".js"]||t[e+"/index.js"]:null},o=function(e,t){return e?n(e.folder+"node_modules/"+t)||o(e.parent,t):null},a=function(e,t){var r=t.match(/^\//)?null:e?t.match(/^\.\.?\//)?n(e.folder+t):o(e,t):n(t);if(!r)throw"module not found: "+t;return r.exports||(r.parent=e,r(a.bind(null,r),r,r.exports={})),r.exports};return a(null,e)},decompress:function(e){this.exports||(this.exports=this.require("inflate.js"));try{return this.exports.inflate(e)}catch(e){}},hasUnityMarker:function(e){var t=10,r="UnityWeb Compressed Content (gzip)";if(t>e.length||31!=e[0]||139!=e[1])return!1;var n=e[3];if(4&n){if(t+2>e.length)return!1;if(t+=2+e[t]+(e[t+1]<<8),t>e.length)return!1}if(8&n){for(;te.length)return!1;t++}return 16&n&&String.fromCharCode.apply(null,e.subarray(t,t+r.length+1))==r+"\0"}},brotli:{require:function(e){var t={"decompress.js":function(e,t,r){t.exports=e("./dec/decode").BrotliDecompressBuffer},"dec/bit_reader.js":function(e,t,r){function n(e){this.buf_=new Uint8Array(a),this.input_=e,this.reset()}const o=4096,a=8224,i=8191,s=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);n.READ_SIZE=o,n.IBUF_MASK=i,n.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var e=0;e<4;e++)this.val_|=this.buf_[this.pos_]<<8*e,++this.pos_;return this.bit_end_pos_>0},n.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var e=this.buf_ptr_,t=this.input_.read(this.buf_,e,o);if(t<0)throw new Error("Unexpected end of input");if(t=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&i]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},n.prototype.readBits=function(e){32-this.bit_pos_>>this.bit_pos_&s[e];return this.bit_pos_+=e,t},t.exports=n},"dec/context.js":function(e,t,r){r.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),r.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},"dec/decode.js":function(e,t,r){function n(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3),t>0?17+t:(t=e.readBits(3),t>0?8+t:17))}function o(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.readBits(t)+(1<1&&0===i)throw new Error("Invalid size byte");o.meta_block_length|=i<<8*n}}else for(n=0;n4&&0===s)throw new Error("Invalid size nibble");o.meta_block_length|=s<<4*n}return++o.meta_block_length,o.input_end||o.is_metadata||(o.is_uncompressed=e.readBits(1)),o}function s(e,t,r){var n;return r.fillBitWindow(),t+=r.val_>>>r.bit_pos_&D,n=e[t].bits-P,n>0&&(r.bit_pos_+=P,t+=e[t].value,t+=r.val_>>>r.bit_pos_&(1<0;){var c,f=0;if(n.readMoreInput(),n.fillBitWindow(),f+=n.val_>>>n.bit_pos_&31,n.bit_pos_+=l[f].bits,c=255&l[f].value,c>c);else{var h,p,m=c-14,w=0;if(c===N&&(w=a),s!==w&&(i=0,s=w),h=i,i>0&&(i-=2,i<<=m),i+=n.readBits(m)+3,p=i-h,o+p>t)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var b=0;b0;++s){var b,y=V[s],g=0;n.fillBitWindow(),g+=n.val_>>>n.bit_pos_&15, 2 | n.bit_pos_+=w[g].bits,b=w[g].value,h[y]=b,0!==b&&(p-=32>>b,++m)}if(1!==m&&0!==p)throw new Error("[ReadHuffmanCode] invalid num_codes or space");d(h,e,i,n)}if(a=L(t,r,P,i,e),0===a)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return a}function u(e,t,r){var n,o;return n=s(e,t,r),o=O.kBlockLengthPrefixCode[n].nbits,O.kBlockLengthPrefixCode[n].offset+r.readBits(o)}function c(e,t,r){var n;return e>>5]),this.htrees=new Uint32Array(t)}function m(e,t){var r,n,a,i={num_htrees:null,context_map:null},d=0;t.readMoreInput();var u=i.num_htrees=o(t)+1,c=i.context_map=new Uint8Array(e);if(u<=1)return i;for(r=t.readBits(1),r&&(d=t.readBits(4)+1),n=[],a=0;a=e)throw new Error("[DecodeContextMap] i >= context_map_size");c[a]=0,++a}else c[a]=f-d,++a}return t.readBits(1)&&h(c,e),i}function w(e,t,r,n,o,a,i){var d,l=2*r,u=r,c=s(t,r*q,i);d=0===c?o[l+(1&a[u])]:1===c?o[l+(a[u]-1&1)]+1:c-2,d>=e&&(d-=e),n[r]=d,o[l+(1&a[u])]=d,++a[u]}function b(e,t,r,n,o,a){var i,s=o+1,d=r&o,l=a.pos_&E.IBUF_MASK;if(t<8||a.bit_pos_+(t<<3)0;)a.readMoreInput(),n[d++]=a.readBits(8),d===s&&(e.write(n,s),d=0);else{if(a.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;a.bit_pos_<32;)n[d]=a.val_>>>a.bit_pos_,a.bit_pos_+=8,++d,--t;if(i=a.bit_end_pos_-a.bit_pos_>>3,l+i>E.IBUF_MASK){for(var u=E.IBUF_MASK+1-l,c=0;c=s){e.write(n,s),d-=s;for(var c=0;c=s;){if(i=s-d,a.input_.read(n,d,i)t.buffer.length){var ve=new Uint8Array(x+re);ve.set(t.buffer),t.buffer=ve}if(L=ge.input_end,J=ge.is_uncompressed,ge.is_metadata)for(y(U);re>0;--re)U.readMoreInput(),U.readBits(8);else if(0!==re)if(J)U.bit_pos_=U.bit_pos_+7&-8,b(t,re,x,h,f,U),x+=re;else{for(r=0;r<3;++r)ae[r]=o(U)+1,ae[r]>=2&&(l(ae[r]+2,v,r*q,U),l(S,A,r*q,U),ne[r]=u(A,r*q,U),se[r]=1);for(U.readMoreInput(),j=U.readBits(2),X=Z+(U.readBits(4)<0;){var xe,Ee,ke,Be,Le,We,Oe,Ce,Me,Ne,Re;for(U.readMoreInput(),0===ne[1]&&(w(ae[1],v,1,oe,ie,se,U),ne[1]=u(A,q,U),te=Y[1].htrees[oe[1]]),--ne[1],xe=s(Y[1].codes,te,U),Ee=xe>>6,Ee>=2?(Ee-=2,Oe=-1):Oe=0,ke=O.kInsertRangeLut[Ee]+(xe>>3&7),Be=O.kCopyRangeLut[Ee]+(7&xe),Le=O.kInsertLengthPrefixCode[ke].offset+U.readBits(O.kInsertLengthPrefixCode[ke].nbits),We=O.kCopyLengthPrefixCode[Be].offset+U.readBits(O.kCopyLengthPrefixCode[Be].nbits),F=h[x-1&f],V=h[x-2&f],Ne=0;Ne4?3:We-2),we=ue[me+Me],Oe=s(Y[2].codes,Y[2].htrees[we],U),Oe>=X){var He,Se,Ie;Oe-=X,Se=Oe&K,Oe>>=j,He=(Oe>>1)+1,Ie=(2+(1&Oe)<N){if(!(We>=k.minDictionaryWordLength&&We<=k.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+x+" distance: "+Ce+" len: "+We+" bytes left: "+re);var Ie=k.offsetsByLength[We],Te=Ce-N-1,Pe=k.sizeBitsByLength[We],De=(1<>Pe;if(Ie+=qe*We,!(Fe=g){t.write(h,d);for(var Ze=0;Ze0&&(P[3&D]=Ce,++D),We>re)throw new Error("Invalid backward reference. pos: "+x+" distance: "+Ce+" len: "+We+" bytes left: "+re);for(Ne=0;Ne>=1;return(e&r-1)+r}function a(e,t,r,o,a){do o-=r,e[t+o]=new n(a.bits,a.value);while(o>0)}function i(e,t,r){for(var n=1<0;--U[c])u=new n(255&c,65535&v[f++]),a(e,t+h,p,y,u),h=o(h,c);for(w=g-1,m=-1,c=r+1,p=2;c<=s;++c,p<<=1)for(;U[c]>0;--U[c])(h&w)!==m&&(t+=y,b=i(U,c,r),y=1<>r),p,y,u),h=o(h,c);return g}},"dec/prefix.js":function(e,t,r){function n(e,t){this.offset=e,this.nbits=t}r.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],r.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],r.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],r.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],r.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},"dec/streams.js":function(e,t,r){function n(e){this.buffer=e,this.pos=0}function o(e){this.buffer=e,this.pos=0}n.prototype.read=function(e,t,r){this.pos+r>this.buffer.length&&(r=this.buffer.length-this.pos);for(var n=0;nthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(e.subarray(0,t),this.pos),this.pos+=t,t},r.BrotliOutput=o},"dec/transform.js":function(e,t,r){function n(e,t,r){this.prefix=new Uint8Array(e.length),this.transform=t,this.suffix=new Uint8Array(r.length);for(var n=0;n=97&&e[t]<=122&&(e[t]^=32),1):e[t]<224?(e[t+1]^=32,2):(e[t+2]^=5,3)}var a=e("./dictionary");const i=0,s=1,d=2,l=3,u=4,c=5,f=6,h=7,p=8,m=9,w=10,b=11,y=12,g=13,v=14,A=15,U=16,x=17,E=18,k=20;var B=[new n("",i,""),new n("",i," "),new n(" ",i," "),new n("",y,""),new n("",w," "),new n("",i," the "),new n(" ",i,""),new n("s ",i," "),new n("",i," of "),new n("",w,""),new n("",i," and "),new n("",g,""),new n("",s,""),new n(", ",i," "),new n("",i,", "),new n(" ",w," "),new n("",i," in "),new n("",i," to "),new n("e ",i," "),new n("",i,'"'),new n("",i,"."),new n("",i,'">'),new n("",i,"\n"),new n("",l,""),new n("",i,"]"),new n("",i," for "),new n("",v,""),new n("",d,""),new n("",i," a "),new n("",i," that "),new n(" ",w,""),new n("",i,". "),new n(".",i,""),new n(" ",i,", "),new n("",A,""),new n("",i," with "),new n("",i,"'"),new n("",i," from "),new n("",i," by "),new n("",U,""),new n("",x,""),new n(" the ",i,""),new n("",u,""),new n("",i,". The "),new n("",b,""),new n("",i," on "),new n("",i," as "),new n("",i," is "),new n("",h,""),new n("",s,"ing "),new n("",i,"\n\t"),new n("",i,":"),new n(" ",i,". "),new n("",i,"ed "),new n("",k,""),new n("",E,""),new n("",f,""),new n("",i,"("),new n("",w,", "),new n("",p,""),new n("",i," at "),new n("",i,"ly "),new n(" the ",i," of "),new n("",c,""),new n("",m,""),new n(" ",w,", "),new n("",w,'"'),new n(".",i,"("),new n("",b," "),new n("",w,'">'),new n("",i,'="'),new n(" ",i,"."),new n(".com/",i,""),new n(" the ",i," of the "),new n("",w,"'"),new n("",i,". This "),new n("",i,","),new n(".",i," "),new n("",w,"("),new n("",w,"."),new n("",i," not "),new n(" ",i,'="'),new n("",i,"er "),new n(" ",b," "),new n("",i,"al "),new n(" ",b,""),new n("",i,"='"),new n("",b,'"'),new n("",w,". "),new n(" ",i,"("),new n("",i,"ful "),new n(" ",w,". "),new n("",i,"ive "),new n("",i,"less "),new n("",b,"'"),new n("",i,"est "),new n(" ",w,"."),new n("",b,'">'),new n(" ",i,"='"),new n("",w,","),new n("",i,"ize "),new n("",b,"."),new n("\xc2\xa0",i,""),new n(" ",i,","),new n("",w,'="'),new n("",b,'="'),new n("",i,"ous "),new n("",b,", "),new n("",w,"='"),new n(" ",w,","),new n(" ",b,'="'),new n(" ",b,", "),new n("",b,","),new n("",b,"("),new n("",b,". "),new n(" ",b,"."),new n("",b,"='"),new n(" ",b,". "),new n(" ",w,'="'),new n(" ",b,"='"),new n(" ",w,"='")];r.kTransforms=B,r.kNumTransforms=B.length,r.transformDictionaryWord=function(e,t,r,n,i){var s,d=B[i].prefix,l=B[i].suffix,u=B[i].transform,c=un&&(c=n);for(var p=0;p0;){var g=o(e,s);s+=g,n-=g}for(var v=0;v0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function o(e){return 3*e.length/4-n(e)}function a(e){var t,r,o,a,i,s,d=e.length;i=n(e),s=new c(3*d/4-i),o=i>0?d-4:d;var l=0;for(t=0,r=0;t>16&255,s[l++]=a>>8&255,s[l++]=255&a;return 2===i?(a=u[e.charCodeAt(t)]<<2|u[e.charCodeAt(t+1)]>>4,s[l++]=255&a):1===i&&(a=u[e.charCodeAt(t)]<<10|u[e.charCodeAt(t+1)]<<4|u[e.charCodeAt(t+2)]>>2,s[l++]=a>>8&255,s[l++]=255&a),s}function i(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,o=[],a=t;au?u:d+i));return 1===n?(t=e[r-1],o+=l[t>>2],o+=l[t<<4&63],o+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],o+=l[t>>10],o+=l[t>>4&63],o+=l[t<<2&63],o+="="),a.push(o),a.join("")}r.byteLength=o,r.toByteArray=a,r.fromByteArray=d;for(var l=[],u=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h>3);if(commentOffset=r+1+2+1+2+(o<<3)+7>>3,17==n||commentOffset>e.length)return!1;for(var a=n+(6+(o<<4)+(t.length-1<<6)<>>=8)if(e[i]!=(255&a))return!1;return String.fromCharCode.apply(null,e.subarray(commentOffset,commentOffset+t.length))==t}},decompress:function(e,t){var r=this.gzip.hasUnityMarker(e)?this.gzip:this.brotli.hasUnityMarker(e)?this.brotli:this.identity;if(this.serverSetupWarningEnabled&&r!=this.identity&&(console.log("You can reduce your startup time if you configure your web server to host .unityweb files using "+(r==this.gzip?"gzip":"brotli")+" compression."),this.serverSetupWarningEnabled=!1),"function"!=typeof t)return r.decompress(e);if(!r.worker){var n=URL.createObjectURL(new Blob(["this.require = ",r.require.toString(),"; this.decompress = ",r.decompress.toString(),"; this.onmessage = ",function(e){var t={id:e.data.id,decompressed:this.decompress(e.data.compressed)};postMessage(t,t.decompressed?[t.decompressed.buffer]:[])}.toString(),"; postMessage({ ready: true });"],{type:"text/javascript"}));r.worker=new Worker(n),r.worker.onmessage=function(e){return e.data.ready?void URL.revokeObjectURL(n):(this.callbacks[e.data.id](e.data.decompressed),void delete this.callbacks[e.data.id])},r.worker.callbacks={},r.worker.nextCallbackId=0}var o=r.worker.nextCallbackId++;r.worker.callbacks[o]=t,r.worker.postMessage({id:o,compressed:e},[e.buffer])},serverSetupWarningEnabled:!0},Cryptography:{crc32:function(e){var t=UnityLoader.Cryptography.crc32.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint8Array(r);var o=new e.Uint32Array(r);function a(e,t){e=e|0;t=t|0;var r=0;for(r=o[1024>>2]|0;t;e=e+1|0,t=t-1|0)r=o[(r&255^n[e])<<2>>2]^r>>>8^4278190080;o[1024>>2]=r}return{process:a}}({Uint8Array:Uint8Array,Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.crc32.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,crc32:1024,data:1028};for(var o=0;o<256;o++){for(var a=255^o,i=0;i<8;i++)a=a>>>1^(1&a?3988292384:0);t.HEAPU32[o]=a}}t.HEAPU32[t.crc32>>2]=0;for(var s=0;s>2];return new Uint8Array([l>>24,l>>16,l>>8,l])},md5:function(e){var t=UnityLoader.Cryptography.md5.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint32Array(r);function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,h=0,p=0;r=n[128]|0,o=n[129]|0,a=n[130]|0,i=n[131]|0;for(;t;e=e+64|0,t=t-1|0){s=r;d=o;l=a;u=i;for(f=0;(f|0)<512;f=f+8|0){p=n[f>>2]|0;r=r+(n[f+4>>2]|0)+(n[e+(p>>>14)>>2]|0)+((f|0)<128?i^o&(a^i):(f|0)<256?a^i&(o^a):(f|0)<384?o^a^i:a^(o|~i))|0;h=(r<<(p&31)|r>>>32-(p&31))+o|0;r=i;i=a;a=o;o=h}r=r+s|0;o=o+d|0;a=a+l|0;i=i+u|0}n[128]=r;n[129]=o;n[130]=a;n[131]=i}return{process:o}}({Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.md5.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,md5:512,data:576},t.HEAPU32.set(new Uint32Array([7,3614090360,65548,3905402710,131089,606105819,196630,3250441966,262151,4118548399,327692,1200080426,393233,2821735955,458774,4249261313,524295,1770035416,589836,2336552879,655377,4294925233,720918,2304563134,786439,1804603682,851980,4254626195,917521,2792965006,983062,1236535329,65541,4129170786,393225,3225465664,720910,643717713,20,3921069994,327685,3593408605,655369,38016083,983054,3634488961,262164,3889429448,589829,568446438,917513,3275163606,196622,4107603335,524308,1163531501,851973,2850285829,131081,4243563512,458766,1735328473,786452,2368359562,327684,4294588738,524299,2272392833,720912,1839030562,917527,4259657740,65540,2763975236,262155,1272893353,458768,4139469664,655383,3200236656,851972,681279174,11,3936430074,196624,3572445317,393239,76029189,589828,3654602809,786443,3873151461,983056,530742520,131095,3299628645,6,4096336452,458762,1126891415,917519,2878612391,327701,4237533241,786438,1700485571,196618,2399980690,655375,4293915773,65557,2240044497,524294,1873313359,983050,4264355552,393231,2734768916,851989,1309151649,262150,4149444226,720906,3174756917,131087,718787259,589845,3951481745]))}t.HEAPU32.set(new Uint32Array([1732584193,4023233417,2562383102,271733878]),t.md5>>2);for(var o=0;o>6),e.length-o<64){if(a=e.length-o,t.HEAPU8.set(e.subarray(e.length-a,e.length),t.data),o+=a,t.HEAPU8[t.data+a++]=128,a>56){for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;t.process(t.data,1),a=0}for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;for(var s=e.length,d=0,i=56;i<64;i++,d=(224&s)>>5,s/=256)t.HEAPU8[t.data+i]=((31&s)<<3)+d;t.process(t.data,1)}}return new Uint8Array(t.HEAPU8.subarray(t.md5,t.md5+16))},sha1:function(e){var t=UnityLoader.Cryptography.sha1.module;if(!t){var r=new ArrayBuffer(16777216),n=function(e,t,r){"use asm";var n=new e.Uint32Array(r);function o(e,t){e=e|0;t=t|0;var r=0,o=0,a=0,i=0,s=0,d=0,l=0,u=0,c=0,f=0,h=0,p=0;r=n[80]|0,o=n[81]|0,a=n[82]|0,i=n[83]|0,s=n[84]|0;for(;t;e=e+64|0,t=t-1|0){d=r;l=o;u=a;c=i;f=s;for(p=0;(p|0)<320;p=p+4|0,s=i,i=a,a=o<<30|o>>>2,o=r,r=h){if((p|0)<64){h=n[e+p>>2]|0;h=h<<24&4278190080|h<<8&16711680|h>>>8&65280|h>>>24&255}else{h=n[p-12>>2]^n[p-32>>2]^n[p-56>>2]^n[p-64>>2];h=h<<1|h>>>31}n[p>>2]=h;h=h+((r<<5|r>>>27)+s)+((p|0)<80?(o&a|~o&i|0)+1518500249|0:(p|0)<160?(o^a^i)+1859775393|0:(p|0)<240?(o&a|o&i|a&i)+2400959708|0:(o^a^i)+3395469782|0)|0}r=r+d|0;o=o+l|0;a=a+u|0;i=i+c|0;s=s+f|0}n[80]=r;n[81]=o;n[82]=a;n[83]=i;n[84]=s}return{process:o}}({Uint32Array:Uint32Array},null,r);t=UnityLoader.Cryptography.sha1.module={buffer:r,HEAPU8:new Uint8Array(r),HEAPU32:new Uint32Array(r),process:n.process,sha1:320,data:384}}t.HEAPU32.set(new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),t.sha1>>2);for(var o=0;o>6),e.length-o<64){if(a=e.length-o,t.HEAPU8.set(e.subarray(e.length-a,e.length),t.data),o+=a,t.HEAPU8[t.data+a++]=128,a>56){for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;t.process(t.data,1),a=0}for(var i=a;i<64;i++)t.HEAPU8[t.data+i]=0;for(var s=e.length,d=0,i=63;i>=56;i--,d=(224&s)>>5,s/=256)t.HEAPU8[t.data+i]=((31&s)<<3)+d;t.process(t.data,1)}}for(var l=new Uint8Array(20),i=0;i\\[(\\d+)\\]\\+\\d+\\))()":"((\\s*)wasm-function\\[(\\d+)\\])@(blob:.*)",blobParseRegExp:new RegExp("^(blob:.*)(:\\d+:\\d+)$"),getModule:function(e){var t=e.message.match(new RegExp(this.stackTraceFormat,"g"));for(var r in t){var n=t[r].match(new RegExp("^"+this.stackTraceFormat+"$")),o=n[7].match(this.blobParseRegExp);if(o&&UnityLoader.Blobs[o[1]]&&UnityLoader.Blobs[o[1]].Module)return UnityLoader.Blobs[o[1]].Module}},demangle:function(e,t){var r=e.message;return t?(r=r.replace(new RegExp(this.stackTraceFormat,"g"),function(e){var r=e.match(new RegExp("^"+this.stackTraceFormat+"$")),n=r[7].match(this.blobParseRegExp),o=t.demangleSymbol?t.demangleSymbol(r[4]):r[4],a=n&&UnityLoader.Blobs[n[1]]&&UnityLoader.Blobs[n[1]].url?UnityLoader.Blobs[n[1]].url:"blob";return r[1]+o+(r[2]!=o?" ["+r[2]+"]":"")+" ("+(n?a.substr(a.lastIndexOf("/")+1)+n[2]:r[7])+")"}.bind(this)),t.useWasm&&(r=r.replace(new RegExp(this.stackTraceFormatWasm,"g"),function(e){var r=e.match(new RegExp("^"+this.stackTraceFormatWasm+"$")),n=t.demangleSymbol?t.demangleSymbol(r[3]):r[3],o=r[4].match(this.blobParseRegExp),a=o&&UnityLoader.Blobs[o[1]]&&UnityLoader.Blobs[o[1]].url?UnityLoader.Blobs[o[1]].url:"blob";return(n==r[3]?r[1]:r[2]+n+" [wasm:"+r[3]+"]")+(r[4]?" ("+(o?a.substr(a.lastIndexOf("/")+1)+o[2]:r[4])+")":"")}.bind(this))),r):r},handler:function(e,t){var r=t?this.demangle(e,t):e.message;if(!(t&&t.errorhandler&&t.errorhandler(r,e.filename,e.lineno)||(console.log("Invoking error handler due to\n"+r),"function"==typeof dump&&dump("Invoking error handler due to\n"+r),r.indexOf("UnknownError")!=-1||r.indexOf("Program terminated with exit(0)")!=-1||this.didShowErrorMessage))){var r="An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:\n"+r;r.indexOf("DISABLE_EXCEPTION_CATCHING")!=-1?r="An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project WebGL player settings to be able to catch the exception or see the stack trace.":r.indexOf("Cannot enlarge memory arrays")!=-1?r="Out of memory. If you are the developer of this content, try allocating more memory to your WebGL build in the WebGL player settings.":r.indexOf("Invalid array buffer length")==-1&&r.indexOf("Invalid typed array length")==-1&&r.indexOf("out of memory")==-1&&r.indexOf("could not allocate memory")==-1||(r="The browser could not allocate enough memory for the WebGL content. If you are the developer of this content, try allocating less memory to your WebGL build in the WebGL player settings."),alert(r),this.didShowErrorMessage=!0}},popup:function(e,t,r){r=r||[{text:"OK"}];var n=document.createElement("div");n.style.cssText="position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; border: 1px solid black; padding: 5px; background: #E8E8E8";var o=document.createElement("span");o.textContent=t,n.appendChild(o),n.appendChild(document.createElement("br"));for(var a=0;a=10.1)?1:0}(),hasWasm:"object"==typeof WebAssembly&&"function"==typeof WebAssembly.validate&&"function"==typeof WebAssembly.compile}}(),compatibilityCheck:function(e,t,r){UnityLoader.SystemInfo.hasWebGL?UnityLoader.SystemInfo.mobile?e.popup("Please note that Unity WebGL is not currently supported on mobiles. Press OK if you wish to continue anyway.",[{text:"OK",callback:t}]):["Edge","Firefox","Chrome","Safari"].indexOf(UnityLoader.SystemInfo.browser)==-1?e.popup("Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.",[{text:"OK",callback:t}]):t():e.popup("Your browser does not support WebGL",[{text:"OK",callback:r}])},Blobs:{},loadCode:function(e,t,r){var n=[].slice.call(UnityLoader.Cryptography.md5(e)).map(function(e){return("0"+e.toString(16)).substr(-2)}).join(""),o=document.createElement("script"),a=URL.createObjectURL(new Blob(['UnityLoader["'+n+'"]=',e],{type:"text/javascript"}));UnityLoader.Blobs[a]=r,o.src=a,o.onload=function(){URL.revokeObjectURL(a),t(n)},document.body.appendChild(o)},allocateHeapJob:function(e,t){for(var r=e.TOTAL_STACK||5242880,n=e.TOTAL_MEMORY||(e.buffer?e.buffer.byteLength:268435456),o=65536,a=16777216,i=o;i0;c=f,f=u.indexOf("/",c)+1)e.FS_createPath(u.substring(0,c),u.substring(c,f-1),!0,!0);e.FS_createDataFile(u,null,r.subarray(s,s+d),!0,!0,!0)}e.removeRunDependency("processDataJob"),t.complete()},downloadJob:function(e,t){var r=t.parameters.objParameters?new UnityLoader.UnityCache.XMLHttpRequest(t.parameters.objParameters):new XMLHttpRequest;r.open("GET",t.parameters.url),r.responseType="arraybuffer",r.onload=function(){UnityLoader.Compression.decompress(new Uint8Array(r.response),function(e){t.complete(e)})},t.parameters.onprogress&&r.addEventListener("progress",t.parameters.onprogress),t.parameters.onload&&r.addEventListener("load",t.parameters.onload),r.send()},scheduleBuildDownloadJob:function(e,t,r){UnityLoader.Progress.update(e,t),UnityLoader.Job.schedule(e,t,[],UnityLoader.downloadJob,{url:e.resolveBuildUrl(e[r]),onprogress:function(r){UnityLoader.Progress.update(e,t,r)},onload:function(r){UnityLoader.Progress.update(e,t,r)},objParameters:e.companyName&&e.productName&&e.cacheControl&&(e.cacheControl[r]||e.cacheControl.default)?{companyName:e.companyName,productName:e.productName,cacheControl:e.cacheControl[r]||e.cacheControl.default}:null})},loadModule:function(e){if(e.useWasm=e.wasmCodeUrl&&UnityLoader.SystemInfo.hasWasm,e.useWasm)UnityLoader.initWasmCache(e,"wasmCodeUrl"),UnityLoader.scheduleBuildDownloadJob(e,"downloadWasmCode","wasmCodeUrl"),UnityLoader.Job.schedule(e,"processWasmCode",["downloadWasmCode"],UnityLoader.processWasmCodeJob),UnityLoader.scheduleBuildDownloadJob(e,"downloadWasmFramework","wasmFrameworkUrl"),UnityLoader.Job.schedule(e,"processWasmFramework",["downloadWasmFramework","processWasmCode","setupIndexedDB"],UnityLoader.processWasmFrameworkJob);else{if(!e.asmCodeUrl)throw"WebAssembly support is not detected in this browser.";UnityLoader.scheduleBuildDownloadJob(e,"downloadAsmCode","asmCodeUrl"),UnityLoader.Job.schedule(e,"processAsmCode",["downloadAsmCode"],UnityLoader.processAsmCodeJob),UnityLoader.scheduleBuildDownloadJob(e,"downloadAsmMemory","asmMemoryUrl"),UnityLoader.Job.schedule(e,"processAsmMemory",["downloadAsmMemory"],UnityLoader.processAsmMemoryJob),e.memoryInitializerRequest={addEventListener:function(t,r){e.memoryInitializerRequest.callback=r}},e.asmLibraryUrl&&(e.dynamicLibraries=[e.asmLibraryUrl].map(e.resolveBuildUrl)),UnityLoader.scheduleBuildDownloadJob(e,"downloadAsmFramework","asmFrameworkUrl"),UnityLoader.Job.schedule(e,"processAsmFramework",["downloadAsmFramework","processAsmCode","setupIndexedDB"],UnityLoader.processAsmFrameworkJob)}UnityLoader.scheduleBuildDownloadJob(e,"downloadData","dataUrl"),UnityLoader.Job.schedule(e,"setupIndexedDB",[],UnityLoader.setupIndexedDBJob),e.preRun.push(function(){e.addRunDependency("processDataJob"),UnityLoader.Job.schedule(e,"processData",["downloadData"],UnityLoader.processDataJob)})},instantiate:function(e,t,r){function n(e,r){if("string"==typeof e&&!(e=document.getElementById(e)))return!1;e.innerHTML="",e.style.border=e.style.margin=e.style.padding=0,"static"==getComputedStyle(e).getPropertyValue("position")&&(e.style.position="relative"),e.style.width=r.width||e.style.width,e.style.height=r.height||e.style.height,r.container=e;var n=r.Module;return n.canvas=document.createElement("canvas"),n.canvas.style.width="100%",n.canvas.style.height="100%",n.canvas.addEventListener("contextmenu",function(e){e.preventDefault()}),n.canvas.id="#canvas",e.appendChild(n.canvas),r.compatibilityCheck(r,function(){var t=new XMLHttpRequest;t.open("GET",r.url,!0),t.responseType="text",t.onerror=function(){n.print("Could not download "+r.url),0==document.URL.indexOf("file:")&&alert("It seems your browser does not support running Unity WebGL content from file:// urls. Please upload it to an http server, or try a different browser.")},t.onload=function(){var o=JSON.parse(t.responseText);for(var a in o)"undefined"==typeof n[a]&&(n[a]=o[a]);for(var i=!1,s=0;s=1?i=!0:n.print("Warning: Unsupported graphics API "+d)}return i?(e.style.background=n.backgroundUrl?"center/cover url('"+n.resolveBuildUrl(n.backgroundUrl)+"')":n.backgroundColor?" "+n.backgroundColor:"",r.onProgress(r,0),void UnityLoader.loadModule(n)):void r.popup("Your browser does not support any of the required graphics API for this content: "+n.graphicsAPI,[{text:"OK"}])},t.send()},function(){n.printErr("Instantiation of the '"+t+"' terminated due to the failed compatibility check.")}),!0}function o(e){return o.link=o.link||document.createElement("a"),o.link.href=e,o.link.href}var a={url:t,onProgress:UnityLoader.Progress.handler,compatibilityCheck:UnityLoader.compatibilityCheck,Module:{graphicsAPI:["WebGL 2.0","WebGL 1.0"],onAbort:function(e){throw void 0!==e?(this.print(e),this.printErr(e),e=JSON.stringify(e)):e="","abort("+e+") at "+this.stackTrace()},preRun:[],postRun:[],print:function(e){console.log(e)},printErr:function(e){console.error(e)},Jobs:{},buildDownloadProgress:{},resolveBuildUrl:function(e){return e.match(/(http|https|ftp|file):\/\//)?e:t.substring(0,t.lastIndexOf("/")+1)+e},streamingAssetsUrl:function(){return o(this.resolveBuildUrl("../StreamingAssets"))},wasmRequest:function(e,t){this.wasmCache?(this.wasmCache.request={wasmInstantiate:e,callback:t},this.wasmCache.update()):e(this.wasmBinary).then(function(e){t(e.instance)})}},SetFullscreen:function(){if(a.Module.SetFullscreen)return a.Module.SetFullscreen.apply(a.Module,arguments)},SendMessage:function(){if(a.Module.SendMessage)return a.Module.SendMessage.apply(a.Module,arguments)}};a.Module.gameInstance=a,a.popup=function(e,t){return UnityLoader.Error.popup(a,e,t)},a.Module.postRun.push(function(){a.onProgress(a,1)});for(var i in r)if("Module"==i)for(var s in r[i])a.Module[s]=r[i][s];else a[i]=r[i];return n(e,a)||document.addEventListener("DOMContentLoaded",function(){n(e,a)}),a},Utils:{assert:function(e,t){e||abort("Assertion failed: "+t)},optimizeMathFround:function(e,t){console.log("optimizing out Math.fround calls");for(var r={LOOKING_FOR_MODULE:0,SCANNING_MODULE_VARIABLES:1,SCANNING_MODULE_FUNCTIONS:2},n=["EMSCRIPTEN_START_ASM","EMSCRIPTEN_START_FUNCS","EMSCRIPTEN_END_FUNCS"],o="var",a="global.Math.fround;",i=0,s=t?r.LOOKING_FOR_MODULE:r.SCANNING_MODULE_VARIABLES,d=0,l=0;s<=r.SCANNING_MODULE_FUNCTIONS&&i 2 | 3 | 4 | 5 | 6 | Unity WebGL Player | yoketoru2018 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 |
17 |
18 | 23 |
24 | 25 | --------------------------------------------------------------------------------