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

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 

What's hot (20)

DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 
ゲームAI入門(後半)
ゲームAI入門(後半)ゲームAI入門(後半)
ゲームAI入門(後半)
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
 
UE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフローUE4で実現できた理想のゲーム開発ワークフロー
UE4で実現できた理想のゲーム開発ワークフロー
 
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 

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

GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]GameJam攻略会議用LT[2012/12/02]
GameJam攻略会議用LT[2012/12/02]
Takuya Kato
 
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
「シリアスゲーム」でいま取り組んでいること ~地域の課題解決や教育での活用などの紹介~
kazu_1803
 
広研塾(伊達)
広研塾(伊達)広研塾(伊達)
広研塾(伊達)
Naoki Matsuda
 

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版
 

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