後半パート未完成(完成予定なし)【Unity】ターン制タクティクスゲーム制作 + 独創的で簡単かつ洗練されたゲームアーキテクチャの作り方。コンテンツ機能を追加しながら拡張性や再利用性などを実証中。
カリキュラムに記載されている後半パートが進行していない未完成の講義です。プロトタイプと応用部分の核心的な内容は含まれています。(詳細な事情は告知にて) ---------------------------------------- ターン制タクティクスゲームを実装する方法 Part1,2 -> 基本機能、基本戦闘ループ(骨組みに該当) 活用できるアセットが増え、アップデートしたい内容も多くなったため、 「素早いプロトタイプ作成」と考えていただければ幸いです。 これら2つのパートの内容から、アップデートされた(または予定の)内容をどのような方法で実装するのか、おおよそ推測することも可能です。 ---------------------------------------------------------- アップデート -> part 1,2で作成したものをベースに応用・拡張 cf -> 該当ジャンルのゲーム開発に役立つ内容 + α
いよいよ深化の内容に当たる項目も出てきました。
レスポンシブ状態のための設計、実装開始します。
いつ購読しても決めた順序で動作させることができるIEnumeratorイベントを利用します。
(事実前授業までやっていたことと同じですが)加えたIEnumeratorを優先順位と、カテゴリにまとめて整列してConsecutive、Parellelさせて使う方式です。
ただし、初期にイベントの購読解除パターンを適応するのに少しかかると思います。
その状態に挑戦したくないですか?彼らが実装されているなら、私はTaxticsゲームにかなりの戦略を追加することができます。
それ+あなたは今十分に似たものを実装し、追加することができますので、
システム変更?発展(一貫性のある文脈だと思います)以降は追加です。
+それがすべて続いたら、IEnumeratorイベントを他のどのプロジェクトにも適用できます。
できるようになります。
パート1,2度イベントのIEnumerator化イベントを完璧に時間制御してはいますが(購読順次)<- これも本当にいいです。しかも簡単です。
しかし、これはサブスクリプション順に依存せずに知って、あらかじめ決めておいた順番で+のようなカテゴリは同時に進行もさせ、さらに一次元上のものです!
🎯 Func優先順位システムの真の革新
📊既存システム対改善システム
💡既存システムの構造と限界
既存:購読順序依存方式
csharp
public event Func OnDamageEvent; // 구독하는 순서가 실행 순서를 결정 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 OnDamageEvent += CheckDeath; // 3번째 실행 // 실행 yield return this.ConsecutiveAll(OnDamageEvent.GetInvocationList() .Cast >() .Select(handler => handler())); 問題:
サブスクリプション順序に基づいて実行順序を決定する
コード位置または初期化順序に依存
複雑な相互作用における順序制御の難しさ
動的購読時の予測不可能な実行順序
🚀改善されたシステムの革新性
💎カスタム属性ベースの優先順位の制御
イノベーション:宣言的優先順位管理
csharp
public event Func OnDamageEvent; // 구독 순서와 무관하게 우선순위로 실행 [EventPriority(1, "Damage")] IEnumerator ProcessDamage() { } [EventPriority(3, "Death")] IEnumerator CheckDeath() { } [EventPriority(2, "Animation")] IEnumerator PlayAnimation() { } // 구독 순서가 바뀌어도 실행 순서는 항상 동일 OnDamageEvent += CheckDeath; // 늦게 구독해도 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 // 3번째 실행 🌟この革新の実際の価値
🎮複雑なゲームシナリオでの威力
シナリオ:連鎖反応のある戦い
csharp
// 기존 방식: 구독 순서에 민감 OnAttackEvent += ProcessDamage; // 먼저 구독하면 먼저 실행 OnAttackEvent += TriggerCounter; // 반격이 피해보다 늦게 처리 OnAttackEvent += CheckDeath; // 죽음 체크 OnAttackEvent += PlayAnimation; // 애니메이션 // 문제: 초기화 순서나 동적 구독에 따라 실행 순서 변경 가능改善された方法:属性による明確な順序保証
csharp
[EventPriority(1, "PreProcess")] IEnumerator CalculateDamage() { } [EventPriority(2, "Damage")] IEnumerator ApplyDamage() { } [EventPriority(2, "Counter")] // 피해와 동시에 반격 IEnumerator TriggerCounter() { } [EventPriority(3, "PostProcess")] IEnumerator CheckDeath() { } [EventPriority(4, "Visual")] IEnumerator PlayAnimation() { } // 언제 구독하든, 어떤 순서로 구독하든 실행 순서 동일💡カテゴリーベースの並列処理の革新
同じ優先順位、異なるカテゴリ=並列実行




