강의

멘토링

커뮤니티

Game Dev

/

Game Programming

後半パート未完成(完成予定なし)【Unity】ターン制タクティクスゲーム制作 + 独創的で簡単かつ洗練されたゲームアーキテクチャの作り方。コンテンツ機能を追加しながら拡張性や再利用性などを実証中。

カリキュラムに記載されている後半パートが進行していない未完成の講義です。プロトタイプと応用部分の核心的な内容は含まれています。(詳細な事情は告知にて) ---------------------------------------- ターン制タクティクスゲームを実装する方法 Part1,2 -> 基本機能、基本戦闘ループ(骨組みに該当) 活用できるアセットが増え、アップデートしたい内容も多くなったため、 「素早いプロトタイプ作成」と考えていただければ幸いです。 これら2つのパートの内容から、アップデートされた(または予定の)内容をどのような方法で実装するのか、おおよそ推測することも可能です。 ---------------------------------------------------------- アップデート -> part 1,2で作成したものをベースに応用・拡張 cf -> 該当ジャンルのゲーム開発に役立つ内容 + α

難易度 中級以上

受講期間 無制限

  • nyangzzalholder
C#
C#
Unity
Unity
Architecture
Architecture
C#
C#
Unity
Unity
Architecture
Architecture
nyangzzalholder님의 프로필 이미지

修正済み

いよいよ深化の内容に当たる項目も出てきました。

レスポンシブ状態のための設計、実装開始します。

いつ購読しても決めた順序で動作させることができる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() { } // 언제 구독하든, 어떤 순서로 구독하든 실행 순서 동일

💡カテゴリーベースの並列処理の革新

同じ優先順位、異なるカテゴリ=並列実行

コメント