プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース 第1回 ガイダンス みなさんに、 聞いておきたいことがあります。 どんなプログラムを 書きたいですか? そもそもプログラム、書きたいですか? どういう風に、書きたいですか? この授業の方針として… • ゲームエンジンを作れる人を育てたい。 • 何でも出来る最強エンジンではなくても、 今作ろうとしているものに対して 「一番いいプログラム」を書ける人に なってほしい。 • そのために、アクセル全開で行くことに しました。 具体的には • 基礎的なところは自学自習してくるもの と信じて、丁寧に解説しません。 • 高度な理論や概念を惜しみなく使います。 – 今までは「理解しやすさ」を考慮してセーブ していましたが、それはもうやめます。 • 表面的なところだけマネしようとすると 痛い目を見るかもしれません。 – 本質に降りようとする姿勢がないときつい。 – でもその手助けやサポートはします。 今日のお話 • • • • 2年生向けガイダンス 3年生向けガイダンス 今後のスケジュール コードレビューの進め方 2年生が今期やるべきこと • 前年度後期で作品を作ったり、 作りかけたり、挫折したりした • 今期はより効率的に、大規模な プログラムを構築する手法を学ぶ 昨年度の授業は 「出来ること重視」 • こう書けばこんなことが起きるよ~ というエサで釣った授業でした。 • しかし、それだけでは苦しくなってきたの を皆さん感じたことと思います。 • 今期からは「先を見越して地力を付ける」 ことを重視します。 – OOPと数学の話をみっちりやります。 簡易コードレビュー • すごい書き方しているコードを紹介 • 「もっと効率いい書き方あるなら先に教 えろよ!」と思ったかもしれません – 敢えて教えませんでした – 初めて学ぶことに対して最初から効率を追求 するのはナンセンスです – 教えたところで身につきません • まずは非効率的でも動くものを作り、 その上で効率化の手法を学ぶ 覚えて欲しい内容 • C++の基礎 – 配列 • teki1, teki2, teki3…とかやめましょう – 関数 • main()が7600行とか拷問です – クラス化 • 使い回し、開発の分担、あらゆる面で大活躍 – ファイル分割 • クラス化とあわせて覚えたい – 動的メモリ管理 • その場でデータを読み込んで動作させるための方法 覚えたいであろう内容 • 位置関係や向きに関する判定 – ベクトルと行列の基礎 • より高度な当たり判定 – 提供ライブラリも拡張していきたいですね • FKUTの解説と基本設計 – C++の基礎を固めた上で触れます • エフェクト – 最後の方で扱います 前期の進め方 • 配付資料による講義と課題による学習 • 学期末時点での制作物および仕様書に よる評価 – 前年度の作品を改良するもよし – 自分で小規模の実験作品を作るもよし • オブジェクト指向プログラミングの 内容と重なる部分が多々あります – 履修者はしっかりと、それ以外の人でも できるだけ選択科目としての履修を推奨 開発環境について • • • • 言語:C++ ライブラリ:FK ToolKit System 基盤API:OpenGL, OpenAL IDE(開発環境):Visual Studio 2010 その他の選択肢 • 実績あり&ノートで動かなくもない – DXライブラリ – XNA – Unity • 実績なし&ノートじゃ無理 (でもどうやらチャレンジャーなチームが?) – Unreal Engine(UDK) • チームを組んだら、 まずターゲットを明確に絞ろう 3年生が今期やるべきこと • 作ること • 他になんかある? そのためには • 仕様の確定 – GW明けに確定してないと死亡フラグ • 技術的課題の列挙、整理、クリア • 開発スケジュールの管理 – 無理はともかく、無茶はするな 外部仕様 (機能仕様書 etc) • いわゆるマニュアルに相当するもの – プログラムの知識が無い人にもわかる内容 • UI(ユーザーインターフェース)主体 – どのような画面モードがあるのか – 画面上の項目の説明、操作方法 – 画像とか載せておくと良いかも • プロデューシングの発表がベースになる – …はずだよな? 内部仕様 (詳細仕様書、設計書 etc) • プログラムの詳細設計書 – 開発者向けの内容 – 開発環境(条件)、クラス仕様、構成、 アルゴリズム等の説明 • プログラムの内部動作についてまとめる – これとソースコードがあればプログラムの 中身が全部わかる、というくらいに – 必要に応じてコンポーネント図や フローチャート等も書く 敵はどこだ!? • 内部仕様をまとめたら、解決するべき問題点 を列挙する – やればすぐ解決する問題 • すぐやっちゃいましょう – 時間をかければ解決する問題 • 早めに手を付けましょう – 時間をかけても解決しない (でも判明すれば瞬殺できる)問題 • 早めに相談しましょう – 本気でどうしようもない問題 • どうしましょう スケジューリング • 使える作業時間と、解決するべき課題の 所要時間を算出 – くれぐれも学業に支障の無いように! – 解決所要時間も甘く見積もりすぎないこと • 半月単位でやるべきことをリストアップ – 遅れが生じたり、問題が起きたら即相談 – 前倒しで予定を立てて、トラブルが起きたら リスケできる余裕を作る 前期の進め方 • 毎週の講座と設定した課題による評価 • 学期末時点での制作物および仕様書に よる評価 • 3年生チームは1回コードレビューを 受けることを強く推奨します – XNAやDXライブラリでもいいですよ コードレビューの進め方 • 事前に現時点でのプロジェクトと 内部仕様書を提出 • 3週に1回程度コードレビューの週を作り、 そこで私がずんばらりと斬ります • なるべく早い方が幸せだと思います 次回までの課題 • 2年生 – プログラミング演習の 内容を総復習 • 配列 • メソッド – 先日発表した作品の コードを読み返す • 問題点や納得いかない 点を洗い出す • リストアップしたもの を提出 • 3年生 – タスクリストの整理 • 内部仕様が綺麗にまと まってなくてもいい – 次回の授業時に提出 • 書式はテキストでも WordでもExcelでも可
© Copyright 2024 ExpyDoc