Top Banner
55

ゲームオブジェクトの管理

Jun 29, 2015

Download

Documents

Shota Homma

このスライドはピアプロ・キャラクター・ライセンスに基づいてクリプトン・フューチャー・メディア株式会社のキャラクター「初音ミク」を利用しています。
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ゲームオブジェクトの管理
Page 2: ゲームオブジェクトの管理

ゲームオブジェクトの話

本間翔太

Page 3: ゲームオブジェクトの管理

今日の目的こんな土台作りあるよ !!

独学、いつやるの?今でしょ!

部長の試行錯誤を紹介

Page 4: ゲームオブジェクトの管理

目次• 自己紹介• 時系列順に各ゲームの作り方!• 土台を作るメリット• 注意すべき所• まとめ ( 色々やってみて分かった事 )

• 本とサイトの紹介

Page 5: ゲームオブジェクトの管理

こんな人

• 萌えが好きで中二病な21歳• C++ と C# をよく使う、主にコードを書く人• ゲーム作ってる気がする• 部長• ミクちゃん天使過ぎるだろ…• ブログやってます!「マジカル

BrainOok!Misa」

Page 6: ゲームオブジェクトの管理

時系列順に各ゲームの作り方!

作った時の状況とか知識とか内部の説明良い所と悪い所学んだこと ~ 失敗と対策 ~読んだ書籍

Page 7: ゲームオブジェクトの管理

1つ目のゲーム

•学年: 2 年生•人数: 3 人•言語: C 言語

Page 8: ゲームオブジェクトの管理

1. 作った時に知ってた事• 構造体分かった気がする。• ポインタ美味しいらしい。• C 言語と C++ って何がどう違うわけ?• DirectX に初挑戦

Page 9: ゲームオブジェクトの管理

2. 内部の説明● シーン管理

グローバルの管理用変数を変更するとシーンが変更される !!

Page 10: ゲームオブジェクトの管理

2. 内部の説明● オブジェクト管理

・複数いる場合は 配列に入れる

・全てグローバル変数

Page 11: ゲームオブジェクトの管理

3. 良い所と悪い所● 良い所

•シンプルで分かりやすい。•何処からでも変数を弄れてる。

Page 12: ゲームオブジェクトの管理

3. 良い所と悪い所● 悪い所

•何処からでも変数を弄れてる。

Page 13: ゲームオブジェクトの管理

学んだこと ~ 失敗と対策 ~

• 失敗:グローバル変数ヤバイ… ( スパゲッティコード )

– 対策:良いコード書こう…そうだ C++ だ !!

• 失敗:分かりにくいコード ( スパゲッティコード )

– 対策:良いコード書こう…そうだ C++ だ !!

• 失敗:後半に制作速度が上がらなかった ( スパ(ry))

– 対策:良いコード書こう…そうだ C++ だ !!

Page 14: ゲームオブジェクトの管理

5. 読んだ書籍

• C の絵本

Page 15: ゲームオブジェクトの管理

2 つ目のゲーム

•学年: 2 年生•人数: 1 人•言語: C++

Page 16: ゲームオブジェクトの管理

1. 作った時に知ってた事• C 言語は大体分かった気がする• C++ に初挑戦• 構造体の強化版があるらしい• C++ 使えば凄い事出来るんでしょ?• 卒業生のコードを見て首を傾げてた

Page 17: ゲームオブジェクトの管理

2. 内部の説明● シーン管理

グローバルの管理用変数を変更するとシーンが変更される !!

Page 18: ゲームオブジェクトの管理

2. 内部の説明● オブジェクト管理

・複数いる場合は 配列に入れる

・クラス内部の public 変数

Page 19: ゲームオブジェクトの管理

3. 良い所と悪い所● 良い所

• C++ カッコイイ…勉強したわ…•クラス使ってるし分かりやすい

Page 20: ゲームオブジェクトの管理

3. 良い所と悪い所● 悪い所

• C++ で書いているだけでほぼ C 言語•むしろ複雑になって書く量が増えてる•手動で書かないといけない部分が多い

Page 21: ゲームオブジェクトの管理

学んだこと ~ 失敗と対策 ~

• 失敗: C++ に夢を見過ぎた。光じゃなく闇だった。– 対策: C++ とプログラムの組み方について勉強し

よう…

• 失敗: C++ の記法が分かるのとオブジェクト指向分かるのは違う– 対策: C++ とプログラムの組み方について勉強し

よう…

Page 22: ゲームオブジェクトの管理

5. 読んだ書籍

• オブジェクト指向でなぜつくるのか• やさしい C++• 憂鬱なプログラマのためのオブジェクト指向開発講座• 独習 C++• C++ の絵本

Page 23: ゲームオブジェクトの管理

3 つ目のゲーム

•学年: 3 年生•人数: 6 人•言語: C#

Page 24: ゲームオブジェクトの管理

1. 作った時に知ってた事• C++ 分かれば C# 分かる• C# とか使ったことないから一から勉強し

た• シーン管理について勉強した• オブジェクト指向について勉強した• ジェネリッククラスについて勉強した

Page 25: ゲームオブジェクトの管理

2. 内部の説明● シーン管理

シーン毎に分割する。現在のシーンだけを保持しておけばOK

Page 26: ゲームオブジェクトの管理

イメージ

Page 27: ゲームオブジェクトの管理

現在のシーン

タイトル

メインゲーム

ゲームオーバー

ゲームクリア

シーン基礎

シーン群

タイトル

メインゲーム

ゲームクリア

ゲームオーバー

更新

描画

Page 28: ゲームオブジェクトの管理

2. 内部の説明● オブジェクト管理

・一つの配列で 全オブジェクトを管理する

Page 29: ゲームオブジェクトの管理

イメージ

Page 30: ゲームオブジェクトの管理

Player Enemy Item StageObject

Slime Drakee

Coin Potion

Portal Poison

オブジェクト用配列

Object

Player

SlimeSlime DrakeeDrakee

Potion

Poison

Player : 1Slime : 3Drakee : 2Potion : 1Poison : 1

Slime

更新 描画

Page 31: ゲームオブジェクトの管理

3. 良い所と悪い所● 良い所• 追加すればなんか動く• シーン毎に区切られてるので分業が楽

Page 32: ゲームオブジェクトの管理

3. 良い所と悪い所● 悪い所

• 配列にオブジェクトを追加した段階でそのオブジェクトを要素番号から特定するのが困難

Page 33: ゲームオブジェクトの管理

学んだこと ~ 失敗と対策 ~

• 失敗:用途が曖昧なクラスを作ると、思わぬ機能が追加される– 対策:出来るだけ用途が明確なクラスを作ろう

• 失敗:ローディング中に変なことするとヤバイ– 対策:複数スレッドある場合きちんと区分けする

Page 34: ゲームオブジェクトの管理

5. 読んだ書籍

• 独習 C#• デザインパターンワークブック• ゲームプログラマになるために覚えておきたい技術

Page 35: ゲームオブジェクトの管理

4 つ目のゲーム

•学年: 4 年生•人数: 9 人•言語: C++

Page 36: ゲームオブジェクトの管理

1. 作った時に知ってた事• STL(vector,list,map,set)• Boost C++ ライブラリを少し• デザインパターンを少し

Page 37: ゲームオブジェクトの管理

2. 内部の説明● シーン管理

シーン管理は前回と同じ!

Page 38: ゲームオブジェクトの管理

2. 内部の説明● オブジェクト管理

・ノード管理始めました !!・レイヤー構造にもなった !!

Page 39: ゲームオブジェクトの管理

イメージ

Page 40: ゲームオブジェクトの管理

Root

A B

C D

E

F

H

I

J

G

K

Root.AttachObject(A);

Root.AttachObject(B);B.AttachObject(C); C.AttachObject(E);C.AttachObject(L);C.AttachObject(M);B.AttachObject(D);

Root.AttachObject(F);F.AttachObject(G);G.AttachObject(K);F.AttachObject(H);H.AttachObject(I);I.AttachObject(J);

L M

N

O

更新

Page 41: ゲームオブジェクトの管理

Player Enemy Item StageObject

Pig Drakee

Candy Potion

Gate Poison

NodeObject

Player

DrakeeRedPig

Heart

EventZone

Root

SlimePigPig

CandyCandy

追加すると勝手に更新と描画がされるRoot.AttachObject(player);Root.AttachObject(pig1);Root.AttachObject(pig2);Root.AttachObject(pig3);Root.AttachObject(candy1);Root.AttachObject(candy2);

クラス群

Page 42: ゲームオブジェクトの管理

Root

レイヤー始めました!!

GameLayerOptionLayer

PlayerSlimeSlimePig

CoinCoinCandy

Gate

更新のみ停止

MenuButton

CutScene

更新と描画を停止

シーン:  メインゲーム

Page 43: ゲームオブジェクトの管理

3. 良い所と悪い所● 良い所• 追加すればなんか動く• 停止出来る機構が最初から用意されている• アクセス違反を若干回避出来る

Page 44: ゲームオブジェクトの管理

3. 良い所と悪い所● 悪い所• 最初に理解しづらい• まだアクセス違反を回避しきれてない

Page 45: ゲームオブジェクトの管理

学んだこと ~ 失敗と対策 ~

• 失敗:当初、処理効率をあまり考えてなかった– 対策:正しく STL を選択するための知識

• 失敗:例外処理の重要性に気づいてなかった– 対策:途中から追加しだした

Page 46: ゲームオブジェクトの管理

5. 読んだ書籍

• ゲームコーディングコンプリート• Effective C++

Page 47: ゲームオブジェクトの管理

土台を作るメリット

Page 48: ゲームオブジェクトの管理

土台を作るメリット

時間の短縮が出来る! ( )※

比較的簡単にゲームが作れる! ( )※

体系化する事で、混沌が少し和らぐ ( )※

Page 49: ゲームオブジェクトの管理

注意すべき所

ゲームを作りながら土台を作って行こう

自分も使う人も勉強が必要になる

目的と期限を決めよう

Page 50: ゲームオブジェクトの管理

まとめ

Page 51: ゲームオブジェクトの管理

まとめ

独学 ( 自習 ) が必須!周りを巻き込もう!

大丈夫そうだ!勉強でかなりいけるぞ!

ゲームを作る事が最重要目的

ゲームサークル夏以降の予定

Page 52: ゲームオブジェクトの管理

本とサイトの紹介

Page 53: ゲームオブジェクトの管理

本• 2ch Books Program – http://bit.ly/138JjkW

• ゲームプログラマになる前に (ry– http://amzn.to/1dRedDt

• デザインパターンワークブック– http://amzn.to/18zGq4C

• やさしい C++– http://amzn.to/1dRfbj5

Page 54: ゲームオブジェクトの管理

サイト• ゲームつくろー!– http://bit.ly/89ondq

• 全ゲ連 - 発表資料置き場– http://p.tl/Wbzn

• Let’s Boost– http://p.tl/3hXo

Page 55: ゲームオブジェクトの管理

このスライドはピアプロ・キャラクター・ライセンスに基づいてクリプトン・フューチャー・メディア株式会社のキャラクター

「初音ミク」を利用しています。