ゲームのタスクシステム 導入編 レベル2くまー By keychan.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミング基礎I(再) 山元進.
SPA 報告
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
アルゴリズムとデータ構造 2011年6月13日
MSBuild 色々出来るよ 2011/04/02 お だ.
プログラミングIII演習 第1回目.
社会人学習講座 「Javaプログラミング概論」
AspectScope によるアスペクトとクラスのつながりの視覚化
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
C#とC++とオブジェクト指向 上甲 健史.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
Bridge Pattern
PHPの基礎と開発手法 Based on PHP5
プログラミング演習3 第2回 GUIの復習.
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
Occam言語による マルチプリエンプティブシステムの 実装と検証
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
XNA Framework 2.0 SESSION 01.
ソフトウェア工学 知能情報学部 新田直也.
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
XNA Framework 2.0 SESSION 01.
プログラミング演習3 第3回 ミニプロジェクト.
暗黙的に型付けされる構造体の Java言語への導入
シューティングゲーム.
ソフトウェア工学 知能情報学部 新田直也.
TCanvas BCB:TCanvasクラスでグラフィックを扱う。 TFormなどもプロパティとして持っている。
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Jakarta Struts (2) ソフトウェア特論 第11回.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
ゲーム開発モデルの基礎.
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
第8回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
アルゴリズムとデータ構造 2012年6月11日
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
クラスの追加 メソッドの追加 TestCaseの追加 Test Methodの追加.
図や表の作成 ここでの目標.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
How To WPF アプリケーション Part4 By 中博俊.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

ゲームのタスクシステム 導入編 レベル2くまー By keychan

アジェンダ ゲームタスクについて タスクオブジェクトの設計 タスクマネージャの設計 タスクオブジェクトの実装 最後に

ゲームタスクについて ゲームループ タスク 入力情報取得 タスク 更新処理 タスクマネージャ タスク 描画処理 タスク タスク サウンド処理

当セッションにおけるゲームタスクの位置付け ゲームタスクについて 当セッションにおけるゲームタスクの位置付け ゲーム上で変化する/させる最も単純な処理 ゲームタスクの基本的な粒度はオブジェクト単位 キャラクタ BG エフェクト などなど…

タスクオブジェクトの設計 必要なメソッド 更新処理 描画処理 上記2点があれば、最低限の動作を行うこと が可能

タスクオブジェクトの設計 abstract class Task { // タスクの実行 public abstract void execute(); // タスクの描画 public abstract void draw(); }

しかし、execute と draw のみのメソッドではいろいろ不便 タスクオブジェクトの設計 しかし、execute と draw のみのメソッドではいろいろ不便 タスクの処理順番(優先度)の決定 タスクの消滅タイミングはいつ? タスクの描画順番の決定

タスクオブジェクトの設計 優先度を表すプロパティを追加 abstract class Task { // タスクの優先度 protected float priority; public float Priority { get; set; } // タスクの実行 public abstract void execute(); // タスクの描画 public abstract void draw(); }

消滅タイミングを知らせるプロパティを追加 タスクオブジェクトの設計 消滅タイミングを知らせるプロパティを追加 abstract class Task { // タスクの優先度 protected float priority; public float Priority { get; set; } // タスクが生きているか protected bool exist; public bool Exist { get; set; } // タスクの実行 public abstract void execute(); // タスクの描画 public abstract void draw(); }

全タスクの更新が完了しないと描画順は決定しない タスクオブジェクトの設計 タスクの描画順番の決定 ゲームループ 全タスクの更新が完了しないと描画順は決定しない 入力情報取得 更新処理と描画処理の間に入れる 更新処理 描画処理 サウンド処理 更新処理優先度と描画処理優先度は 同期しない為、描画用タスク配列を用意

描画優先度を決定するためのプロパティを追加 タスクオブジェクトの設計 描画優先度を決定するためのプロパティを追加 abstract class Task { // タスクの優先度 protected float priority; public float Priority { get; set; } // タスクが生きているか protected bool exist; public bool Exist { get; set; } // タスクの描画オブジェクト protected IDrawObject drawObject; public IDrawObject DrawObject { get; } // タスクの実行 public abstract void execute(); // タスクの描画 public abstract void draw(); } Interface IDrawObject { // 描画優先度を決定するため // に必要な情報を取得する // メソッドを用意 }

タスクを管理するタスクマネージャもタスクの一つであると考える タスクマネージャの設計 タスクを管理するタスクマネージャもタスクの一つであると考える 階層構造をもつタスクを構築すればよい タスク タスク タスク タスク タスク タスクマネージャ タスク タスク タスク タスク

タスクマネージャの設計 階層構造を持てるようにプロパティを追加 abstract class Task { // 子タスクリスト protected List<Task> childTask; // タスクの優先度 protected float priority; public float Priority { get; set; } // タスクが生きているか protected bool exist; public bool Exist { get; set; } // タスクの描画オブジェクト protected IDrawObject drawObject; public IDrawObject DrawObject { get; } // タスクの実行 public abstract void execute(); // タスクの描画 public abstract void draw(); }

タスクオブジェクトの設計ができたので実装を軽くしてみます タスクオブジェクトの実装 タスクオブジェクトの設計ができたので実装を軽くしてみます シーンタスク キャラクタタスク

ゲームタスクはあらゆるジャンルのゲームで採用できるフレームワークです 最後に ゲームタスクはあらゆるジャンルのゲームで採用できるフレームワークです 当セッションではプラットフォームに依存しない極めて簡単なタスクシステムの一例をご紹介しました これが正解!というタスクシステムは当然ありません ゲームタスクの概念をご理解頂ければ幸いです