# ゲームノート:開発 [John Kang のノート](https://hackmd.io/@s90105JohnKang/notes-jp) --- [TOC] # カットシーン(Cutscene) >  カットシーン (cutscene) やイベントシーン(ゲーム内映画やゲーム内ムービーとも呼ばれる)は、ゲームプレイを分割するコンピュータゲームの非双方向シークエンス。このようなシーンは、キャラクター間の会話の提示、ムードの設定、プレイヤーへの報酬の付与、新しいゲームプレイ要素の導入、プレイヤーの行動の効果の提示、感情的な繋がりの形成、将来の出来事のペースの改善または予示に用いられうる。 ([Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%83%E3%83%88%E3%82%B7%E3%83%BC%E3%83%B3)) > ## [~アセットは見せ方が命~ はじめてのゲームカットシーン演出]( https://gamemakers.jp/article/2025_10_14_119835/) 3DCGクリエイターLee氏が「ゲームメーカーズ スクランブル2025」での講演 **~アセットは見せ方が命~ はじめてのゲームカットシーン演出【 #ゲームメーカーズスクランブル2025】** {%youtube Nl-coroBZ_s %} [4Gamerの講演記事]( https://www.4gamer.net/games/991/G999101/20250905018/)から抜粋: - ほとんどのプレイヤーにとっては…アセットの品質 < 画面の印象 - そもそもカットシーンって必要なんでしょうか? いきなり作ろうと決めるのではなく,本当に必要なのか,カットシーン以外の表現で実現できないか,検討することを推奨した。 - カットシーンの役割:ナビゲーション、世界観の補強、リアクション、興味の持続、広告 - シネマティック系:セリフや演技を主体とした映画のようなもので,長尺になりやすい。 - カットイン系:必殺技の固定演出(バンクとも),キャラクターの登場シーン,クリア演出といった短尺の演出を指す。講演では,このカットイン系の話がメインに取り扱われた。 - タイムラインで動画が流れてきたとして,人間の興味が持続するのは6秒程度だという。人間の集中力は想像以上に短いので,同じ情報量なら短くした方がいいという意見だ。 - レイアウト、コントラスト、カメラワーク、リアクションなど基本の手法で画作り。 (半分の講演はこれを話していた、画像と動画付きの記事を見るのを勧める。) - 「アセット」は個人/会社の資産や貴重品,価値のあるものと定義した。 「お金を適当に放置する人はいないですよね」と前置きし,「アセットも作って適当に実装するのではなくて,ちゃんと計画的に資産運用してほしい」 # コースティクス(Caustic)  Caustic、中国語「焦散」: >  曲面またはオブジェクトによって反射または屈折した光線の集まり、またはそれを別の表面に投影したときにできる独特の模様。([Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9)) >  液体の入ったグラス、反射率の高い金属などに入射した光は、複雑な反射・屈折を繰り返し、周囲の物体の表面に独特の光の模様や筋などをつくる。([CGWORLD](https://cgworld.jp/terms/%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9.html)) ![コースティクス](https://hackmd.io/_uploads/ByuVLDKr0.png) ![コースティクス](https://hackmd.io/_uploads/SJfLIPtHA.png =232x) (画像は [Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9) より引用)  水底の模様は大体テクスチャアニメションで表現できる。グラスと金属物体に動的のライティングがある場合に、フォトンマップで確実の計算が必要だ。 # FPA パカチェック  Flash & Pattern Analyzer、光過敏チェック、動画に光過敏性発作(Photosensitive epilepsy, PSE)の可能性があるかのチェックだ。日本には有名な「[ポケモン(ポリゴン)ショック](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%82%AF)」より注目された。  光過敏性発作: >  視覚に飛び込んだ光刺激に対する異常反応の症状でてんかんの一形態。光刺激に対する耐性には個人差があり、その耐性が低い人が光を見た際に脳が興奮して発作を起こすとされている。([Wikipedia](https://ja.wikipedia.org/wiki/%E5%85%89%E9%81%8E%E6%95%8F%E6%80%A7%E7%99%BA%E4%BD%9C)) >  光の明滅や揺らぎ、視覚的パターンにより身体的な異常反応が引き起こされる病気で、4000人に一人以上の割合で発症すると言われています。また、引き金となる刺激にさらされていないために発作を起こすに至っていない"潜在的な患者"は、より多く存在すると考えられています。  「光過敏性発作(PSE)」であるかどうかは発症するまでわからない。([伊藤忠ケーブルシステム株式会社](https://itochu-cable-systems.jp/products/crs/))  私が参加したコンシューマーゲームの開発も FPA があって、合格しなかったから対応も発生していた。対応は参加しなかったから、ここで調べてみた。 * 1946 年で「光刺激性てんかん」の報告が出た。 * 1952 年で「テレビてんかん」の報告が出て、続いて事例が発生している。 * 1993 年イギリスに CM で 3 名病院へ運ばれて、BBC は「ハーディング・テスト(Harding test)」のガイドラインを策定した。 * 「ハーディング・テスト」の由来はグラハム・ハーディング教授(Professor Graham Harding)、PSE に注力している研究者だ。 * 1997 年「ポケモン(ポリゴン)ショック」、651 人が病院に搬送され、そのうち 130 人以上が入院した。日本テレビ業界もガイドライン実施した。 * 番組の「テレビから十分に離れ、明るい場所で視聴する」など注意も PSE のためだ。 * FPA で使っているツールは「[Cambridge Research Systems Ltd.](https://www.hardingfpa.com/)」が開発した PSE 解析ソフト「HardingFPA」だ。その中にゲーム専用の「HardingFPA G2」もある。 ## FPA の項目  主に三つ: * 輝度点滅:フラッシュの頻度が速すぎるか、またはフラッシュの面積大きすぎるか * 赤色点滅:赤色を使うフラッシュの制限はより厳しい * 空間パターン:交互に表示されるハイコントラストの帯、面積大きすぎる  精確な定義と数値はある:[ガイドラインの違い(Ofcom , Japan NAB)](https://itochu-cable-systems.jp/esb/category/useful/cambridge-research-systems/hfpa/2023/09/6717/)(伊藤忠ケーブルシステム株式会社) ![image](https://hackmd.io/_uploads/rJ2teaAH0.png) (画像は [CGWORLD](https://cgworld.jp/interview/202112-akatsuki-itochu.html) より引用)  あくまでガイドラインだから、特にテレビ以外の業界はそこまで厳しくチェックしていない。完全に防ぐことができない。今(2024 年)でも事例が出っている:[「Dead by Daylight」で画面が点滅する問題が発生中。光過敏症発作を起こすリスクがあるため,医師への相談を推奨](https://www.4gamer.net/games/333/G033338/20240425042/)。ゲーム起動時に PSE リスクの警告が表示されるゲームもよくあって、明らかに激しいフラッシュを使っているが、それらのゲームは FPA をしたか、まだ調べるが必要だ。 > [!NOTE]参考資料 >* アカツキのパカチェック導入と HardingFPA を取り扱う伊藤忠ケーブルシステムのインタビュー:[「光点滅からユーザーを守る」。ゲーム制作におけるパカチェックの必要性](https://cgworld.jp/interview/202112-akatsuki-itochu.html)(CGWORLD) >* Xbox のオンラインの安心設定:[光敏感性発作についての警告](https://support.xbox.com/ja-JP/help/family-online-safety/online-safety/photosensitive-seizure-warning)(Xbox) >* Microsoft Game Dev Docs:[Xbox アクセシビリティ ガイドライン 118: 光過敏性](https://learn.microsoft.com/ja-jp/gaming/accessibility/xbox-accessibility-guidelines/118) (Microsoft) >* アークベルの QC クオリティーチェックサービス:[ハーディングチェック(パカパカチェック)](https://www.arkbell.co.jp/media/harding-fpa/)(アークベル株式会社) # ボックス化とボックス化解除(Boxing and Unboxing)  オブジェクト指向言語の中に、スタックを使う値型とヒープを使う参照型がある。値型から参照型に変化するときに、「ボックス化(Boxing)」という処理が行う:スタックの値をコピーしてヒープに移動して、新しい参照を作る。逆の場合は「ボックス化解除(Unboxing)」。  ボックス化は普通の型変換より重いから、できるだけ避けたいだ。例えば C# の場合だと、参照型```object```は```int```など値型にも変換できるので、なるべく明確の型を指定して、```object```で値を受け取らないようにする。  さらに C# でボックス化のときに、メモリーコピーがあるので、GC も発生する。意図ではないボックス化がしているうちに、頻繁の GC もパフォーマンスに影響する。有名な罠は```Enum```型のメソッド:```Enum.Equals()```、```Enum.HasFlag()```など。  ```Enum.Equals()```はわかりやすい、列挙型```enum```が値型だから、```object```型の引数が原因:```public override bool Equals(object obj);```。そもそも値型は```==```で比較することで済むだ。  ```Enum.HasFlag()```の場合はややこしい、```Enum```型の引数が原因:```public bool HasFlag(Enum flag);```。```Enum```自体はクラス、すなわち参照型の一種。これは値型の```enum```から参照型の```Enum```でのボックス化だ。避ける方法は地道に論理演算で判定:```(e & eF) == eF```。 ## C# 特殊な型  5 種類がある: * ```Object```全ての型の共通の最上位の基底クラス。 * ```ValueType:Object```全ての値型の共通基底クラス。 * ```Delegate:Object```全てのデリゲートの共通基底クラス。 * ```Array:Object```全ての配列の共通基底クラス。 * ```Enum:ValueType```全ての列挙型の共通基底クラス。  特殊な型の中に```ValueType```と```Enum```だけ宣言した変数が値型になる。故に自分の基底クラスに代入するのに、ボックス化が発生する。 > [!NOTE]参考資料 >* [ボックス化とボックス化解除 (C# プログラミング ガイド)](https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/boxing-and-unboxing)(Microsoft Learn) >* [ボックス化](https://ufcpp.net/study/csharp/RmBoxing.html)(\++C++; // 未確認飛行 C) >* ValueType, Enum とボックス化:[[余談] 暗黙的な派生](https://ufcpp.net/study/csharp/oop/miscimplictinherit/)(\++C++; // 未確認飛行 C) # UTF-8 > UTF-8はISO/IEC 10646 (UCS) とUnicodeで使える8ビット符号単位(1–4バイトの可変長)の文字符号化形式および文字符号化スキーム。 ([Wikipedia](https://ja.wikipedia.org/wiki/UTF-8)) 文字コードの発展史から UTF-8 を解説動画(英語): **UTF-8, Explained Simply** {%youtube vpSkBV5vydg %} ![UTF-8](https://hackmd.io/_uploads/ryAAn8bXZl.png) ![UTF-8](https://hackmd.io/_uploads/ryevAIW7Zx.png) ![UTF-8](https://hackmd.io/_uploads/BJxo6Lb7be.png) # ラグドール物理(Ragdoll physics)  Ragdoll physics、中国語「布娃娃系統」。 >  ゲームにおける、キャラクターの全身が脱力したかのような挙動を行う物理シミュレーション。ラグドール物理。  例えば、上空からの落下やキャラクターが死亡した際に用いられる。([ゲームメーカーズ](https://gamemakers.jp/glossary/ラグドール(rag-doll)/)) >  人体をラグドール、すなわちスケルタルアニメーションシステムにおけるボーンに紐付け、互いに拘束関係となり動きが制約された剛体の集合とみなす。ボーンの拘束がラグドールの関節部のモーションに影響し、ある程度リアルな人体らしさが得られる。([Wikipedia](https://ja.wikipedia.org/wiki/ラグドール物理)) > ![ラグドール物理](https://hackmd.io/_uploads/S1Bnm988R.png) (画像は [Wikipedia](https://ja.wikipedia.org/wiki/ラグドール物理) より引用) # 『ゼルダの伝説 神々のトライフォース』の時代と今(1991 - 2024)  「週刊ファミ通 2019年5月16日増刊号」の付録「VIPインタビュー再録ブック」に「WEEKLY ファミコン通信 1992年1月24日号」に掲載された「ゲームメイキング 宮本茂インタビュー ゼルダの伝説の伝説」を見た。 ![週刊ファミ通 2019年5月16日増刊号](https://hackmd.io/_uploads/SyxhePbIA.png =450x) ![WEEKLY ファミコン通信 1992年1月24日号](https://hackmd.io/_uploads/SklmJPbU0.png =220x) (画像は [駿河屋](https://www.suruga-ya.jp/) より引用) * 初代『ゼルダの伝説』になかった斜め移動を追加した。斜め攻撃もしたいがを操作が悪くなったので、代わりに回転斬りを追加した。今全方向の攻撃ができても、回転斬りもまだ消えていない。 * 引っ張るの操作は、A ボタンを押しながら十字ボタンで移動について、ちょっと複雑かなを議論した。A ボタン押すでけでもできるが、他のアクションしたいときに引っ張られないようもしたいだ。やはり複雑のほうが引っ張るの感じがるから最後に採用された。今はチュートリアルなしでも思いつく基本操作だ。 * 最初は固定な順番をしなくてもクリアできるで作ったが、クリア時間が長くなって、メッセージのバリエーションが増えすぎるなど問題があるので作らなかった。まさか 20 年後の続編『[ゼルダの伝説 神々のトライフォース2](https://www.nintendo.co.jp/3ds/bzlj/index.html)』である程度で実現された。 * カンテラで燃えた草が燃え広がるアイデアもあったが実装しなかった。『[ゼルダの伝説 ブレス オブ ザ ワイルド](https://www.nintendo.com/jp/zelda/botw/index.html)』でやっと実現した。 --- [John Kang のノート](https://hackmd.io/@s90105JohnKang/notes-jp)