SlideShare a Scribd company logo
1 of 55
ゲームオブジェクトの話
本間翔太
今日の目的
こんな土台作りあるよ!!
独学、いつやるの?今でしょ!
部長の試行錯誤を紹介
目次
• 自己紹介
• 時系列順に各ゲームの作り方!
• 土台を作るメリット
• 注意すべき所
• まとめ(色々やってみて分かった事)
• 本とサイトの紹介
こんな人
• 萌えが好きで中二病な21歳
• C++とC#をよく使う、主にコードを書く人
• ゲーム作ってる気がする
• 部長
• ミクちゃん天使過ぎるだろ…
• ブログやってます!「マジカル
BrainOok!Misa」
時系列順に各ゲームの作り方!
作った時の状況とか知識と
か
内部の説明
良い所と悪い所
学んだこと ~失敗と対策~
読んだ書籍
1つ目のゲーム
• 学年:2年生
• 人数:3人
• 言語:C言語
1.作った時に知ってた事
• 構造体分かった気がする。
• ポインタ美味しいらしい。
• C言語とC++って何がどう違うわけ?
• DirectXに初挑戦
2.内部の説明
●シーン管理
グローバルの管理用変数
を変更すると
シーンが変更される!!
2.内部の説明
●オブジェクト管理
・複数いる場合は
配列に入れる
・全てグローバル変数
3.良い所と悪い所
●良い所
• シンプルで分かりやすい。
• 何処からでも変数を弄れてる。
3.良い所と悪い所
●悪い所
• 何処からでも変数を弄れてる。
学んだこと ~失敗と対策~
• 失敗:グローバル変数ヤバイ…(スパゲッティコード)
– 対策:良いコード書こう…そうだC++だ!!
• 失敗:分かりにくいコード(スパゲッティコード)
– 対策:良いコード書こう…そうだC++だ!!
• 失敗:後半に制作速度が上がらなかった(スパ(ry))
– 対策:良いコード書こう…そうだC++だ!!
5.読んだ書籍
• Cの絵本
2つ目のゲーム
• 学年:2年生
• 人数:1人
• 言語:C++
1.作った時に知ってた事
• C言語は大体分かった気がする
• C++に初挑戦
• 構造体の強化版があるらしい
• C++使えば凄い事出来るんでしょ?
• 卒業生のコードを見て首を傾げてた
2.内部の説明
●シーン管理
グローバルの管理用変数
を変更すると
シーンが変更される!!
2.内部の説明
●オブジェクト管理
・複数いる場合は
配列に入れる
・クラス内部のpublic変数
3.良い所と悪い所
●良い所
• C++カッコイイ…勉強したわ…
• クラス使ってるし分かりやすい
3.良い所と悪い所
●悪い所
• C++で書いているだけでほぼC言語
• むしろ複雑になって書く量が増えてる
• 手動で書かないといけない部分が多い
学んだこと ~失敗と対策~
• 失敗:C++に夢を見過ぎた。光じゃなく闇だっ
た。
– 対策:C++とプログラムの組み方について勉強しよ
う…
• 失敗:C++の記法が分かるのとオブジェクト指向分かるのは
違う
– 対策:C++とプログラムの組み方について勉強しよ
う…
5.読んだ書籍
• オブジェクト指向でなぜつくるのか
• やさしいC++
• 憂鬱なプログラマのためのオブジェクト指向開発講座
• 独習C++
• C++の絵本
3つ目のゲーム
• 学年:3年生
• 人数:6人
• 言語:C#
1.作った時に知ってた事
• C++分かればC#分かる
• C#とか使ったことないから一から勉強し
た
• シーン管理について勉強した
• オブジェクト指向について勉強した
• ジェネリッククラスについて勉強した
2.内部の説明
●シーン管理
シーン毎に分割す
る。
現在のシーンだけ
を保持しておけば
OK
イメージ
現在のシーン
タイト
ル
メイン
ゲーム
ゲーム
オーバー
ゲーム
クリア
シーン
基礎
シーン群
タイト
ル
メイン
ゲーム
ゲーム
クリア
ゲーム
オーバー
更新
描画
2.内部の説明
●オブジェクト管理
・一つの配列で
全オブジェクトを管理する
イメージ
Player Enemy Item
Stage
Object
Slime Drakee
Coin Potion
Portal Poison
オブジェクト用配列
Object
Player
SlimeSlime DrakeeDrakee
Potion
Poison
Player : 1
Slime : 3
Drakee : 2
Potion : 1
Poison : 1
Slime
更新 描画
3.良い所と悪い所
●良い所
• 追加すればなんか動く
• シーン毎に区切られてるので分業が楽
3.良い所と悪い所
●悪い所
• 配列にオブジェクトを追加した段階で
そのオブジェクトを要素番号から特定するのが困難
学んだこと ~失敗と対策~
• 失敗:用途が曖昧なクラスを作ると、思わぬ機能が追加さ
れる
– 対策:出来るだけ用途が明確なクラスを作ろう
• 失敗:ローディング中に変なことするとヤバ
イ
– 対策:複数スレッドある場合きちんと区分けする
5.読んだ書籍
• 独習C#
• デザインパターンワークブック
• ゲームプログラマになるために覚えておきたい技術
4つ目のゲーム
• 学年:4年生
• 人数:9人
• 言語:C++
1.作った時に知ってた事
• STL(vector,list,map,set)
• Boost C++ ライブラリを少し
• デザインパターンを少し
2.内部の説明
●シーン管理
シーン管理は前回と同じ!
2.内部の説明
●オブジェクト管理
・ノード管理始めました!!
・レイヤー構造にもなった!!
イメージ
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
更新
Player Enemy Item Stage
Object
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);
クラス群
Root
GameLayerOptionLayer
Player
SlimeSlimePig
CoinCoin
Candy
Gate
MenuButton
CutScene
シーン:
メインゲー
ム
3.良い所と悪い所
●良い所
• 追加すればなんか動く
• 停止出来る機構が最初から用意されている
• アクセス違反を若干回避出来る
3.良い所と悪い所
●悪い所
• 最初に理解しづらい
• まだアクセス違反を回避しきれてない
学んだこと ~失敗と対策~
• 失敗:当初、処理効率をあまり考えてなかっ
た
– 対策:正しくSTLを選択するための知識
• 失敗:例外処理の重要性に気づいてなかった
– 対策:途中から追加しだした
5.読んだ書籍
• ゲームコーディングコンプリート
• Effective C++
土台を作るメリット
土台を作るメリット
時間の短縮が出来る!(※)
比較的簡単にゲームが作れる!(※)
体系化する事で、混沌が少し和らぐ(※)
注意すべき所
ゲームを作りながら土台を作って行こう
自分も使う人も勉強が必要になる
目的と期限を決めよう
まとめ
まとめ
独学(自習)が必須!周りを巻き込もう!
大丈夫そうだ!勉強でかなりいけるぞ!
ゲームを作る事が最重要目的
ゲームサークル夏以降の予定
本とサイトの紹
介
本
• 2ch Books Program
– http://bit.ly/138JjkW
• ゲームプログラマになる前に(ry
– http://amzn.to/1dRedDt
• デザインパターンワークブック
– http://amzn.to/18zGq4C
• やさしいC++
– http://amzn.to/1dRfbj5
サイト
• ゲームつくろー!
– http://bit.ly/89ondq
• 全ゲ連 - 発表資料置き場
– http://p.tl/Wbzn
• Let’s Boost
– http://p.tl/3hXo
このスライドはピアプロ・キャラクター・ライセンスに基づいて
クリプトン・フューチャー・メディア株式会社のキャラクター
「初音ミク」を利用しています。

More Related Content

What's hot

Computer Basics - Basic Troubleshooting Techniques.pptx
Computer Basics - Basic Troubleshooting Techniques.pptxComputer Basics - Basic Troubleshooting Techniques.pptx
Computer Basics - Basic Troubleshooting Techniques.pptxVincentAcapen
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能MITSUNARI Shigeo
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Inc.
 
マルチシナリオの作成の基礎
マルチシナリオの作成の基礎マルチシナリオの作成の基礎
マルチシナリオの作成の基礎Hiroyuki Shimanishi
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)MITSUNARI Shigeo
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリングUnityTechnologiesJapan002
 
圏論とHaskellは仲良し
圏論とHaskellは仲良し圏論とHaskellは仲良し
圏論とHaskellは仲良しohmori
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesTokoroten Nakayama
 
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメントヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメントhistoria_Inc
 
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...MITSUNARI Shigeo
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターンTakashi Komada
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播Ruo Ando
 

What's hot (20)

Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
 
Computer Basics - Basic Troubleshooting Techniques.pptx
Computer Basics - Basic Troubleshooting Techniques.pptxComputer Basics - Basic Troubleshooting Techniques.pptx
Computer Basics - Basic Troubleshooting Techniques.pptx
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
ABC001 解説
ABC001 解説ABC001 解説
ABC001 解説
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
マルチシナリオの作成の基礎
マルチシナリオの作成の基礎マルチシナリオの作成の基礎
マルチシナリオの作成の基礎
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
Ue4 bone controller
Ue4 bone controllerUe4 bone controller
Ue4 bone controller
 
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング
【Unite Tokyo 2019】ゼロから始めるアラビア語レンダリング
 
圏論とHaskellは仲良し
圏論とHaskellは仲良し圏論とHaskellは仲良し
圏論とHaskellは仲良し
 
グレブナー基底を食べよう
グレブナー基底を食べようグレブナー基底を食べよう
グレブナー基底を食べよう
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
 
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメントヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
 
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...
Efficient Two-level Homomorphic Encryption in Prime-order Bilinear Groups and...
 
abc032
abc032abc032
abc032
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 

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

GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]Takuya Kato
 
20200906「ボードゲーム制作ノウハウ 超抜粋!」
20200906「ボードゲーム制作ノウハウ 超抜粋!」20200906「ボードゲーム制作ノウハウ 超抜粋!」
20200906「ボードゲーム制作ノウハウ 超抜粋!」Yasuhide Ishigami
 
人工無能(脳)
人工無能(脳)人工無能(脳)
人工無能(脳)Sho Ooisi
 
シス研下級生向け
シス研下級生向けシス研下級生向け
シス研下級生向けKunisada Ryouta
 
第0回プログラミング講座
第0回プログラミング講座第0回プログラミング講座
第0回プログラミング講座happo31
 
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~kazu_1803
 
広研塾(伊達)
広研塾(伊達)広研塾(伊達)
広研塾(伊達)Naoki Matsuda
 
人狼BBSにおける発話の自動分類
人狼BBSにおける発話の自動分類人狼BBSにおける発話の自動分類
人狼BBSにおける発話の自動分類Takanori Fukui
 
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライドYasuhide Ishigami
 
KLab Expert Camp 成果発表
KLab Expert Camp 成果発表KLab Expert Camp 成果発表
KLab Expert Camp 成果発表yosswi414
 
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介Ryo Yamamoto
 
ものづくり性格判断Deチームマネジメント up版
ものづくり性格判断Deチームマネジメント  up版ものづくり性格判断Deチームマネジメント  up版
ものづくり性格判断Deチームマネジメント up版Nobuhide takahata
 

Similar to ゲームオブジェクトの管理 (15)

GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]
 
東方Projectの話
東方Projectの話東方Projectの話
東方Projectの話
 
20200906「ボードゲーム制作ノウハウ 超抜粋!」
20200906「ボードゲーム制作ノウハウ 超抜粋!」20200906「ボードゲーム制作ノウハウ 超抜粋!」
20200906「ボードゲーム制作ノウハウ 超抜粋!」
 
人工無能(脳)
人工無能(脳)人工無能(脳)
人工無能(脳)
 
シス研下級生向け
シス研下級生向けシス研下級生向け
シス研下級生向け
 
第0回プログラミング講座
第0回プログラミング講座第0回プログラミング講座
第0回プログラミング講座
 
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
 
広研塾(伊達)
広研塾(伊達)広研塾(伊達)
広研塾(伊達)
 
人狼BBSにおける発話の自動分類
人狼BBSにおける発話の自動分類人狼BBSにおける発話の自動分類
人狼BBSにおける発話の自動分類
 
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド
20200124クリエイティブじゃなくても面白いゲームを作る方法_講演スライド
 
C++
C++C++
C++
 
KLab Expert Camp 成果発表
KLab Expert Camp 成果発表KLab Expert Camp 成果発表
KLab Expert Camp 成果発表
 
面白いゲームを作る方法
面白いゲームを作る方法面白いゲームを作る方法
面白いゲームを作る方法
 
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介
Unity勉強会 / ライトニングトーク - ゲーム開発書籍紹介
 
ものづくり性格判断Deチームマネジメント up版
ものづくり性格判断Deチームマネジメント  up版ものづくり性格判断Deチームマネジメント  up版
ものづくり性格判断Deチームマネジメント up版
 

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