SlideShare a Scribd company logo
1 of 111
Download to read offline
ゲームエンジンと
MVC
Aiming 大阪開発グループ
松田理孝
自己紹介
● 松田理孝(マツダヨシタカ)
● エンジニア
○ サーバやったりクライアントやったり
■ サポートやったりWebAPIやってたり
● いろいろやってます
● 使ったことあるゲームエンジン
○ Unity
○ Cocos2d-x
○ XNA(MonoGame)
○ Flash(ゲームエンジン?)
はじめに
● セッションの動機
○ ゲームエンジンを活用する上でMVCは必須
○ ゲーム業界ではMVCに対する理解が浅い
はじめに
● セッションの目的
○ MVCとは何かを知ってもらう
○ ゲームエンジン別に設計が変わることを知ってもらう
アジェンダ
1. MVCとは
2. そもそもなんでMVCをするのか
3. MVCの各役割
4. MVCした後にできる事、すべき事
5. ゲームエンジンとMVC
MVCとは
● MVC(Model View Controller モデル・ビュー・
コントローラ)は、ユーザーインタフェースをもつ
アプリケーションソフトウェアを実装するための
デザインパターンである。
○ Wikipediaより
お前は何を言っているんだ
MVCの前にPDS
● PDSとは
○ Presentation Domain Separation
● Presentation層
● Domain層
○ に分離して考える
PDSとは
Domain層Presentation層
● ドメイン固有言語 ● 汎用言語
ドメイン固有言語?
ドメイン固有言語とは
● ドメイン固有言語(ドメインこゆうげんご、英:
domain-specific language、DSL)とは、特定の
タスク向けに設計されたコンピュータ言語を意
味する。
お前は何を言っているんだ
ドメイン固有言語の例
● とある表現を記述する事に特化した言語
○ WEBだとHTML
○ FlashだとMXML
○ Cocos2d-xだとgui定義するlua
○ Unity
■ シーンファイル
○ 色んな所で
■ XML系(AXMLとか、XAMLとか)
■ JSONとか
○ makefile
■ makeに特化してる
PSDとは
Domain層Presentation層
● ドメイン固有言語
○ HTML
○ XML
○ JSON
● 汎用言語
汎用言語?
汎用言語
● プログラム言語、スクリプト言語
○ C
○ C++
○ Java/Scala
○ Haskell
○ C#/F#/VB
○ Python
○ ruby
○ PHP
○ JavaScript
○ ActionScript
PSDとは
Domain層Presentation層
● ドメイン固有言語
○ HTML
○ XML
○ JSON
● 汎用言語
○ C++
○ C#
○ ActionScript
分離
分離できたのは良いが
● P層だけではアプリはできない
● 同じくD層だけでもできない
○ makefileみたいなmakeのためだけに存在するドメイン
固有言語はD層なんか当然必要ないが
● ゲームクライアントのようなリッチなアプリケー
ションは
繋ぐ必要がある
その繋ぎ方が
MVCと呼ばれる
テクニック
アジェンダ
1. MVCとは
2. そもそもなんでMVCPDSをするのか
3. MVCの各役割
4. MVCした後にできる事、すべき事
5. ゲームエンジンとMVC
僕たちが基本無料でお金を稼ぐには
お金の前に時間を使って
もわらないといけない
逆に言うと、ユーザは
時間を使わないゲームに
課金はしない
時間を使ってもらうために
ユーザがストレスと感じるものは
排除(変更)する必要がある
変更しようとすると
● 2種類のバグが出る
○ ロジックのバグ
■ そもそも正常に動かなくなった
■ 正しく操作しているのに落ちた
● 頑張って直してください
● そもそも出しにくくする
○ テストするとか
○ UXのバグ
● 正常に動作はしているけども......
■ UIが使いにくくなった
■ ゲームバランスが崩壊した
■ 動作がもっさり、重い
なので
PDSをする理由
UIとロジックの疎結合を達成して、
実装やバグを分離するため。
(UIの変更ぐらいサクっとやりたい)
疎結合
● 情報システムにおいて,二つのシステムが緩や
かに結びついた状態。システムどうしが標準的
なインターフェースに基づいて接続されているた
め,一方が他方を容易に取り替えられる状態を
いう。
○ (weblioより)
つまりPDSとは
汎用型特化型
● ドメイン固有言語
○ HTML
○ XML
○ JSON
● 汎用言語
○ C++
○ C#
○ ActionScript
ここのやり取りを
標準的なインターフェイスに基づいて
接続させる
やりたいこと
GUI
CUI
struct Character
{
public int Level;
public int HP;
}
class Battle
{
void Attack()
{
character.HP = 0;
}
}
標準的な
インターフェイス
アジェンダ
1. MVCとは
2. そもそもなんでMVCPDSをするのか
3. MVCの各役割
4. MVCした後にできる事、すべき事
5. ゲームエンジンとMVC
MVCとか
Model
View
Controller
MVCはPDSだと??
Domain層
(汎用)
Presentation層
(ドメイン特化)
Model
View
Controller
 Viewってこの中でどっち?
GUI
CUI
struct Character
{
public int Level;
public int HP;
}
class Battle
{
void Attack()
{
character.HP = 0;
}
}
標準的な
インターフェイス
View
● ユーザが直接見る部分
○ HTML
○ DirectX
○ MXML
MVCとはPDS化するためのテクニック
Domain層
(汎用)
Presentation層
(ドメイン特化)
Model
View
Controller
Model
● (3Dとかのモデルではない)
● アプリケーションの処理を行う部分
○ ダメージ計算したり
○ 座標計算したり
■ Modelって名前意味不明だよね
● PDSのDomainも意味不明だよね
● ロジックとか言われてる
MVCとはPDS化するためのテクニック
Domain層
(汎用)
Presentation層
(ドメイン特化)
Model
View
Controller
Controller
コントローラー
今までの知識で
MVCを整理
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
黒い画面が
見える!
ダメージは50やで
Controllerの仕事
1. ModelとViewの橋渡し
a. ContollerはModelとViewを持っている
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
あんたらこれから
仲良しな
まだ黒いよ?
ダメージは50やで
Controllerの仕事
1. ModelとViewの橋渡し
a. ContollerはModelとViewを持っている
b. Viewが表示する内容を取得できるようにする
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
50!!
ダメージは50やで
Controllerさんに教えてもらった
Modelさんの計算結果見ちゃお
仲良し
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
まだ50だよ?
次のダメージは70やで
仲良し
Modelの値が更新!
Controllerの仕事
1. ModelとViewの橋渡し
a. ContollerはModelとViewを持っている
b. Viewが表示する内容を取得できるようにする
c. Modelの更新通知をViewに投げられるようにする
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
70だ!
次のダメージは70やで
仲良し
更新したで
見に行くわ
さて、Controllerはどっち?
Domain層
(汎用)
Presentation層
(ドメイン特化)
Model
View
Controller
そもそも分離の目的
● 汎用言語側をライブラリ化したい
● 様々なUIで同じロジックを動かしたい
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
Controllerは
Viewを知らざるを得ない
さて、Controllerはどっち?
Domain層
(汎用)
Presentation層
(ドメイン特化)
ModelView
Controller
Viewに引きづられて、
ViewとModelと繋ぐ
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
ModelもViewに引きづられて無い?
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
オブザーバパターン
更新したで
更新通知をViewに送るだけの
インターフェイス
疎結合
● 情報システムにおいて,二つのシステムが緩や
かに結びついた状態。システムどうしが標準的
なインターフェースに基づいて接続されているた
め,一方が他方を容易に取り替えられる状態を
いう。
○ (weblioより)
ダメージポップ
ユーザ
HPゲージ
ダメージ計算
オブザーバパターン
神ゲー!!
アクション
インターフェイスが一緒だから
どこがどれに通知しても良い!
レベルアップ
Viewのもう一つの役割
ユーザ
View
ユーザの見せる部分
Model
計算する部分
Controller
ずっとダメージの数字ばか
り流れてるけど、
僕も攻撃ボタン押したいな
View
● ユーザが直接見る部分
○ HTML
○ DirectX
○ MXML
● ユーザが直接入力する部分
○ ボタン
○ テキストボックス
○ タップ(クリック)
○ ドラッグ&ドロップ
ユーザ
View
入力される部分
Model
計算する部分
Controller
Controllerの仕事
1. ModelとViewの橋渡し
a. 描画部分
i. ContollerはModelとViewを持っている
ii. Viewが表示する内容を取得できるようにする
iii. Modelの更新通知をViewに投げられるようにする
b. 入力部分
i. Viewによって呼ばれたイベントと、実際に行う
Modelの処理を関連付ける
ユーザ
View
入力される部分
Model
計算する部分
Controller
そのボタン押されたら
この計算関数呼びなさい
アジェンダ
1. MVCとは
2. そもそもなんでMVCPDSをするのか
3. MVCの各役割
4. MVCした後にできる事、すべき事
5. ゲームエンジンとMVC
● ライブラリ化
MVCを理解した後にすべき事
汎用言語側
● ちゃんと動作保障できたDLL単位で分離できれ
ば、資産になる
● コードを共通化することで保守部分が減る
● 車輪の再発明も少なくなる
ライブラリ化の恩恵を
受けやすくなる
ドメイン特化言語側
● ゲームエンジンUnityを使用しないツール
○ 汎用言語側を使いまわして作成
● 運用ツールを効率よく作成
○ .NETの十八番な
■ PowerShellでさえDLL使える
● 設定ツールを共通化
○ 設定ツールが吐き出したテキストの読み書きのインター
フェイスとかスタジオ内で共通化しても良いレベル
ツール作成が楽に!
● 実はPDSはクライアント側だけで適応される概
念ではない
ライブラリ化
クライアント サーバ
サーバにおけるPDS
Domain層Presentation層
● ドメイン固有言語
○ プロトコル
● 汎用言語
View
● クライアントから受け取る部分
○ ユーザからイベントを受け取るのと一緒
● クライアントへ通知する部分
○ ユーザに見せるのと一緒
● 実はPDSはクライアント側だけで適応される概
念ではない
○ 似たような考えはサーバでも必要
○ プロトコル受け取った部分にロジックを書くのはナンセン
ス
■ もっとも、この辺は最初の設計思想などが深く絡んで
くるので、後からやりづらい部分もある
● そもそもフレームワークはこのレベルで考えてなきゃダメ
○ ツールでも使うもの多いよね
■ 確率とか調べるのツール絶対いるよね
● ガチャとかスキルとか
○ デバコマとかナンセンス
ライブラリ化
● ライブラリ化
● IDEの使用
MVCを理解した後にすべき事
● 統合開発環境
○ VisualStudio
○ XCode
○ Eclipse
■ なんかいろいろある
IDE
● MVC化はそもそも単純にファイル数が増える
○ 手間を嫌ってMVCやらない選択肢は無い
○ ファイル数増える分を吸収するためにIDEを使う
■ ここにおけるGUIの威力って実は凄い
○ IDEだとGUI作成機能だってある
■ ゲームだとゲームエンジンによっちゃうけど
● 効率よく良い物を作り上げられる
なぜIDEが必要か
● 汎用言語を最大限活用できる
○ C#なんかは言語そのものがIDEにフレンドリー
■ 入力補完
● 当然のようにエラー出ててもインテリセンス効く
● 型やスコープ、履歴から最適な候補を選んでくれる
● typoも補正してくれる
■ 自動実装系
● スマートタブ
○ メソッドの自動実装
○ クラス名から判断して自動でusing
○ インターフェイスや抽象クラスの自動実装
● スニペット
○ for/foreachは当然
○ switch(enum)で全case列挙してくれる
■ 当然break;まで
なぜIDEが必要か
● ライブラリ化
● IDEの使用
● テスト
MVCを理解した後にすべき事
● そもそもテストはテストが目的ではない
○ バグを出さないようにするのが目的
■ チーム全体でバグを出さない自信があるならテスト
は必要ない
テスト
● 単体テストしやすい環境って言うのもある
○ ただBooleanでやれば良いってモノでもない
○ 単体テスト書く時にIDEの力を借りると
■ テストファースト
● メソッド関数の自動生成機能とかある
■ テストのデバッグ
● ブレークポイント打つだけ
■ いくつか選択してテスト
● チェックリスト付けるだけ
テスト
● 他のテストとか
○ いろいろ各環境で考えなきゃいけない部分
○ コストと成果のトレードオフ
■ 自動化!自動化!
● リファクタリング
○ PDSしてるとこの辺も楽になる
○ ロジックのリファクタリングは当然
● 分離してれば各コンポーネント毎でタイマー使っ
てパフォーマンス計測もしやすくなる
テスト
● ライブラリ化
● テスト
● IDEの使用
● インターフェイスのテンプレ化
○ 開発者はとあるラインに沿って開発できるべき
■ 基本的にRailsと同じ方針
● DryとかYagniとか良いと思う
○ この辺のインターフェイス作成は経験者の仕事
■ ノウハウが活きる部分だと思う
MVCを理解した後にすべき事
● ツールの作成
○ ロジックが分離できるメリットは大きい
■ rubyでもPythonでも
■ .NETならより幅広いリッチなツールが作れる
● Unity起動せずにオンライン戦闘デバッグとかできる
○ できるだけじゃなくて、楽にツールが作れるのが大事
■ C++でもJavaでも
● ロジックなんて環境依存なもの少ないはず(だよね?)だから、コ
ンパイラ依存少ないと思う
MVCを理解した後にできる事
アジェンダ
1. MVCとは
2. そもそもなんでMVCPDSをするのか
3. MVCの各役割
4. MVCした後にできる事、すべき事
5. ゲームエンジンとMVC
● ゲームエンジンによってMVCパターンは違う
○ ドメイン固有言語が変わるのだから当然
○ というかそもそも設計方針が違う
● 今回紹介するエンジン
○ Flash
○ Unity
○ Cocos2d-x
ゲームエンジンとMVC
● やるべき事は一緒
○ PDS
■ 見た目とロジックの分離
○ すべてにおいて大事な概念
■ ViewHelper
● XAML/C#だとコードビハインド
● 汎用言語で書かれるのが普通
エンジンごとに方針は違うが
ViewHelper
テキストボックス
View ViewHelper
<GUI>
<TextBox name=”textbox1”/>
</GUI>
TextBox textbox1;
==
textbox1 = getComponent(“textbox1”);
ViewHelper
ほげふが~~
View ViewHelper
<GUI>
<TextBox name=”textbox1”/>
</GUI>
TextBox textbox1;
==
textbox1 = getComponent(“textbox1”);
==
textbox1.text = “ほげふが~~”;
ダメージポップ
ユーザ
HPゲージ
ダメージ計算
オブザーバパターン
神ゲー!!
アクション
インターフェイスが一緒だから
どこがどれに通知しても良い!
レベルアップ
ViewHelperとModel
なにもないよ
ViewHelper Model
class TextBox : IObserver
{
private TextBox textbox1;
private Character character;
public void Update()
{
textbox1.text =
“HPは” + character.CurrentHP;
}
}
class Character : Observable
{
public int CurrentHP { get; }
public void Start()
{
CurrentHP = 50;
Observable.Update();
}
}
ViewHelperとModel
なにもないよ
ViewHelper Model
class TextBox : IObserver
{
private TextBox textbox1;
private Character character;
public void Update()
{
textbox1.text =
“HPは” + character.CurrentHP;
}
}
class Character : Observable
{
public int CurrentHP { get; }
public void Start()
{
CurrentHP = 50;
Observable.Update();
}
}
標準的なインターフェイス
ViewHelperとModel
なにもないよ
ViewHelper Model
class TextBox : IObserver
{
private TextBox textbox1;
private Character character;
public void Update()
{
textbox1.text =
“HPは” + character.CurrentHP;
}
}
class Character : Observable
{
public int CurrentHP { get; }
public void Start()
{
CurrentHP = 50;
Observable.Update();
}
}更新通知
ViewHelperとModel
HPは50
ViewHelper Model
class TextBox : IObserver
{
private TextBox textbox1;
private Character character;
public void Update()
{
textbox1.text =
“HPは” + character.CurrentHP;
}
}
class Character : Observable
{
public int CurrentHP { get; }
public void Start()
{
CurrentHP = 50;
Observable.Update();
}
}
描画
● IMXMLObjectインターフェイス
○ MXMLにタグ付けできるViewHelper
○ あんまり使ってるとこ見たこと無い
■ というかMXMLのscriptに直接書く人いる
● そりゃスパゲティになる
Flash
● MonoBehaviour
○ 実際に動くモデルに付随する「ViewHelper」
■ コルーチンを使うロジックなんかにも使うけど
○ 当然ここにロジックを書くべきではない
■ 結構やっちゃいがち
● 物理エンジンとの棲み分けもあるし
■ というかサンプルが微妙い
Unity
● 自前のViewHelper
○ ViewHelperを作りやすい構造は必須
■ ただどうしてもViewの要素が多くなるとしんどい
● Flashでも変わらないけど
○ 自前で書くハードルが高い
■ というか知識が無いのにいきなり書けない
● MonoBehaviour,IMXMLObjectみたいに用意されてない
Cocos2d-x
● イマドキの開発でPDSの考え方は必須
○ みなさんP層にロジック書いてませんか?
○ どうしようもなくてstaticにしてませんか?
● IDEのサポート受けていこう
● MVCは使う環境に則った方針でやる
○ 新しいエンジン触るときはまず最適解を
■ あとから変更とか絶対無理
● 経験ある人の大仕事
○ ViewHelperを作ろう
まとめ
● 理想
○ UIデザイン
■ デザイナーがダミーデータでUI/モーションを作る
■ エンジニアが繋ぎこむ
■ 完成
● デザイナーさんの協力も必須になってくる
○ そもそも無くしたい
■ 突然ボタンが効かなくなるとか
■ 旧コンポーネントの使い勝手が悪いから新コンポー
ネントへの移行とか
● 旧コンポーネントがそもそも改修できないとか
■ 似たUIなのに挙動が違うとか
● なんで同じの数回も実装してんの?
将来的には
Let's 疎結合
おまけ
Aiming 大阪開発グループ
松田理孝
P層はプラットフォームごとに別
Domain層
(汎用)
Presentation層
(ドメイン特化)
ModelView
Controller
環境依存で共有化できない
Mvvm Cross
Model-View-ViewModel
Domain層
(汎用)
Presentation層
(ドメイン特化)
ModelView
ViewModel
View用のモデル
ViewModelとは
ViewModel
View
● 汎用言語
● 使用するModelの読み込み
● Viewに合わせて変換
○ enum Week.Sunday
■ 日本:日曜日
■ 英語:Sunday
データバインディング
Mvvm Crossとは
● Xamarin(Mono)で使われる技術
● Crossのとおり、マルチプラットフォームで
MVVMを達成しようというやつ
○ Windows(.NET)
○ MacOS X
○ Android
○ iOS
Viewは各プラットフォームに合わせる
● Windows:XAML
● Android:AXML
○ XamarinのAndroidのUIエディタ凄い良い
● iOS:StoryBoard
どこを共通化するか
ModelView ViewModel
汎用言語(C#)部分
Portable Class Library(PCL)
● PortableなDLL
● iOSやAndroidなんかでも使えることを保障
○ 自作できる
■ 自分でどの環境に対応させるか選べる
● DLLごとコピペ移動で使える
PCLで共通化
ModelView ViewModel
Portable Class Library
MvvmCross
ModelView ViewModel
Portable Class LibraryView
View
Mvvm
Cross
ViewModelも共有化できる!
ご静聴ありがとうございました

More Related Content

What's hot

What's hot (20)

ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメントヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
 
UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
 
エフェクトツール機能の実装例
エフェクトツール機能の実装例エフェクトツール機能の実装例
エフェクトツール機能の実装例
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
 
[IGF2018] UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック + INDIE GAMES FESTIVAL 2...
[IGF2018] UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック + INDIE GAMES FESTIVAL 2...[IGF2018] UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック + INDIE GAMES FESTIVAL 2...
[IGF2018] UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック + INDIE GAMES FESTIVAL 2...
 
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
UE4における大規模背景制作事例(データメンテナンス・大技設定編 )
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
 
MMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザインMMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザイン
 

Similar to ゲームエンジンとMVC

Similar to ゲームエンジンとMVC (20)

Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
 
BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法
 
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
夜子まま塾 2015年1月23日 進行用資料
夜子まま塾 2015年1月23日 進行用資料夜子まま塾 2015年1月23日 進行用資料
夜子まま塾 2015年1月23日 進行用資料
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
 
Cod2012 デバッグ講座
Cod2012 デバッグ講座Cod2012 デバッグ講座
Cod2012 デバッグ講座
 
初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2) 初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2)
 
チーム開発の要は ViewModelにある
チーム開発の要はViewModelにあるチーム開発の要はViewModelにある
チーム開発の要は ViewModelにある
 
Windows10の展開手法
Windows10の展開手法Windows10の展開手法
Windows10の展開手法
 
LT13(前半)Workshipにおけるレコメンドエンジン実装
LT13(前半)Workshipにおけるレコメンドエンジン実装LT13(前半)Workshipにおけるレコメンドエンジン実装
LT13(前半)Workshipにおけるレコメンドエンジン実装
 
マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
 
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみた
 

More from AimingStudy

3D描画基礎知識
3D描画基礎知識3D描画基礎知識
3D描画基礎知識
AimingStudy
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
AimingStudy
 
AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発
AimingStudy
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化について
AimingStudy
 
SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門
AimingStudy
 
Flashをcocos2dxで再生
Flashをcocos2dxで再生Flashをcocos2dxで再生
Flashをcocos2dxで再生
AimingStudy
 
1日で始めるglsl
1日で始めるglsl1日で始めるglsl
1日で始めるglsl
AimingStudy
 
Adobe scoutの紹介
Adobe scoutの紹介Adobe scoutの紹介
Adobe scoutの紹介
AimingStudy
 

More from AimingStudy (13)

Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
 
デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
3D描画基礎知識
3D描画基礎知識3D描画基礎知識
3D描画基礎知識
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
 
AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発
 
C++のビルド高速化について
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化について
 
SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門
 
Flashをcocos2dxで再生
Flashをcocos2dxで再生Flashをcocos2dxで再生
Flashをcocos2dxで再生
 
1日で始めるglsl
1日で始めるglsl1日で始めるglsl
1日で始めるglsl
 
Adobe scoutの紹介
Adobe scoutの紹介Adobe scoutの紹介
Adobe scoutの紹介
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

ゲームエンジンとMVC