75
これから始める ゲームプログラミング

これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

  • Upload
    lamnhu

  • View
    255

  • Download
    0

Embed Size (px)

Citation preview

Page 1: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

これから始めるゲームプログラミング

Page 2: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

講演の流れ

• 入門サイト、入門書、ツールなどを紹介していきます。

• この資料はWeb上に上がってますので、特に

メモを取らずともいいです。家に帰って後で参考にしたり、後で本を買おうと思ったときなどに参考にして下さい。

Page 3: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

プラットフォームの選択

Page 4: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

環境は色々ですが・・・

• iPhone, Androidのようなスマートフォン

– 実機での開発や、作ったアプリの公開が有料

• Flashゲームのような、ブラウザ上で動くゲーム

– 学生はFlexBuilderという開発環境が無料で使えたはず

• ノベルゲーム

– 吉里吉里やNScripter等、簡単に作るための環境があるので積極的に利用すべき

• Hot Soup Processor(HSP)– 初心者向けらしいけど使ったことないのでよく知りません

Page 5: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

今回はWindows + DirectX9 に絞ります

• ゲームプログラミングの資料が最も多い

• 多くのWindowsマシンで動作する

• 開発環境を無料で揃えられる

Page 6: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectXって?

• パソコン向けのゲームを作る場合、DirectX, OpenGLなどのマルチメディアAPI群を利用するのが一般的

• 簡単にいうと、絵を表示したり音を鳴らしたりするためには、これらを使ってプログラムを書かなきゃダメってこと

Page 7: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX9以外の環境はないの?

• OpenGL–家庭用ゲーム機や、iPhone,Androidなどのスマートフォンで利用されている

–資料が少なすぎるので、初心者がいきなり触るには厳しい

Page 8: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX9以外の環境はないの?

• OpenGL–家庭用ゲーム機や、iPhone,Androidなどのスマートフォンで利用されている

–資料が少なすぎるので、初心者がいきなり触るには厳しい

Page 9: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX9以外の環境はないの?

• DirectX10以降

–Windows Vista 以降じゃないと動かない

–作ったゲームは、XP以前のユーザーは遊べない。

–資料も少なく、手探りで覚えていくことになる

• XNA –Windowsと、XBox360の両方で動くゲームが作れる

– これも資料が少ない。

–売れないから入門書も少ないので、少ないWeb上の記事に頼らざるを得ない。

Page 10: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

開発環境を整える

Page 11: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

この2つをインストールすればOK

• Visual Studio 2010 Express– http://www.microsoft.com/japan/msdn/vstudio/express/

–プログラムを書くためのソフトウェア(無料)

– このソフト上でプログラムを書いていく

– Visual C++ 2010 をとりあえずインストールしよう

• DirectX SDK– http://msdn.microsoft.com/ja‐jp/directx/aa937788.aspx– DirectX を利用したプログラムを書くために必要

Page 12: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

プログラミング入門

Page 13: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

プログラミング入門

• まずは、プログラミングを覚えましょう

• ゲームプログラミングでは、C言語かC++を利用するのが一般的です。

• 多くのゲームプログラミング解説書は、C++の基本だけは分かっているという前提で書いてあります。

Page 14: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

まずはC言語から

• いきなりC++はキツいので、まずはC言語から始めるといいと思います

– C言語は分かりやすい解説書が豊富

– C言語に関してはWebサイトで勉強するより本を買った方が早い

– 「猫でもできるプログラミング」などのサイトが、2chでよくおすすめされているが、ぶっちゃけあのサイト分かりづらい

Page 15: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

C言語おすすめ書籍

• 入門書はホントに色々あるので、立ち読んでみて自分に合っていると思ったものを

– 「独習C」のような教科書的な本は時間の無駄

–丁寧に説明している本をサクっと読んで覚えよう

Page 16: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

C言語おすすめ書籍

• やさしいC• C言語ポインタ完全制覇

• 自分の場合は、この2冊をサクっと読んで覚えた

Page 17: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

C++

• C++は覚えることがかなり多い言語なので、いきなりやると結構辛い

• Javaなどでオブジェクト指向の経験がある人なら、C++をスムーズに理解できる?

• 割と分かりやすいWebサイトがあるので、Webサイトだけで勉強してもいいかも

Page 18: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

C++おすすめサイト

• Programing Place Old– http://www.geocities.jp/ky_webid/index_old.html– C++の分かりやすい解説サイト

–特にSTL関係が分かりやすい

• ロベールのC++教室

– http://www7b.biglobe.ne.jp/~robe/–本にもなった、定番の入門サイト

Page 19: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

C++おすすめ書籍

• C++クラスと継承完全制覇

• ロベールのC++入門講座

Page 20: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

Java

• Javaについても一応触れておく

• Javaの方がC++よりシンプルな言語なので、Javaでオブジェクト指向という概念を理解しておくとC++の理解がスムーズに行くかも

Page 21: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おすすめ書籍

• Javaの定番入門書

Java言語プログラミングレッスン(上)(下)

Page 22: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

デザインパターン

• デザインパターンとは、プログラミングで良く使われる手法をパターン化したもの。

• 知ってて損ではないので、デザインパターンを覚えつつオブジェクト指向への理解を深めると一石二鳥

• ある程度プログラミング知識がついたと思ったらチャレンジしてみては

Page 23: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おすすめ書籍

• Head First デザインパターン– デザインパターンがどんなものか感覚的に理解できる

– ちょっと値段が高い(¥4830)• Java言語で学ぶデザインパターン入門– デザインパターンをしっかり覚えるならこっち

Page 24: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX9でゲームを作る

一番簡単な方法

Page 25: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリを利用する

Page 26: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリとは?

• DirectXを利用する際の複雑な手続きをまとめて、簡単なプログラムで使えるようにしたもの

– http://homepage2.nifty.com/natupaji/DxLib/

Page 27: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX9でデバイスを初期化してウインドウを表示するコード

WNDCLASSEX wc={sizeof(WNDCLASSEX), CS_CLASSDC,   DummyWndProc,   0L, 0L,    hinst,  icon,         LoadCursor(NULL, IDC_ARROW),  NULL,               NULL,            WindowName.c_str(),      NULL                

};RegisterClassEx(&wc);

// ウィンドウの作成

Longstyle=WS_CAPTION|WS_VISIBLE|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;

RECT r={0, 0, config.WindowWidth, config.WindowHeight};AdjustWindowRect(&r, style, false);HWnd=CreateWindow(WindowName.c_str(), WindowName.c_str(), style, (ScreenWidth‐Width)/2, (ScreenHeight‐Height)/2,r.right‐r.left, r.bottom‐r.top, GetDesktopWindow(), NULL, wc.hInstance, NULL);

// D3Dデバイスの作成

DepthStencilFormat = config.is32BitDepth ? D3DFMT_D24S8 : D3DFMT_D16;

WindowStyle=GetWindowLong(hwnd, GWL_STYLE);int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);

// Direct3Dデバイスの作成

pD3D=Direct3DCreate9(D3D_SDK_VERSION);if(pD3D == NULL)return;

if(!ResetDevice()){SAFE_RELEASE(pDevice)SAFE_RELEASE(pD3D)

}

SetWindowLong(HWnd, GWL_STYLE, WindowStyle);

RECT r={0, 0, Width, Height};AdjustWindowRect(&r, WindowStyle, GetMenu(HWnd)!=NULL);

SetWindowPos(HWnd, HWND_NOTOPMOST,PrevX, PrevY,r.right‐r.left, r.bottom‐r.top, SWP_SHOWWINDOW);

//  デバイスのプレゼンテーションパラメータを設定

D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp, sizeof(d3dpp));d3dpp.hDeviceWindow=HWnd;d3dpp.BackBufferCount = BackBufferCount;d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;d3dpp.MultiSampleQuality = 0;d3dpp.BackBufferWidth=Width;d3dpp.BackBufferHeight=Height;d3dpp.Windowed = true;d3dpp.FullScreen_RefreshRateInHz=isFullScreen?RefreshRate:0;d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;d3dpp.Flags |= D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;d3dpp.BackBufferFormat=mode.Format;

d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_ONE;d3dpp.EnableAutoDepthStencil=TRUE;d3dpp.AutoDepthStencilFormat=DepthStencilFormat;

//  デバイスの作成

if (!pDevice) {if (FAILED(pD3D‐>CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, HWnd,D3DCREATE_MIXED_VERTEXPROCESSING,&d3dpp, &pDevice)))

{}}

// DirectInputインタフェースの作成

DI=NULL;if (FAILED(DirectInput8Create(

GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&DI, NULL))

){return;

}

// キーボードデバイスの取得と初期化

Keyboard=NULL;if (FAILED(DI‐>CreateDevice(

GUID_SysKeyboard, &Keyboard, NULL)) ||FAILED(Keyboard‐>SetDataFormat(&c_dfDIKeyboard)) ||

FAILED(Keyboard‐>SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE))

){FreeResources();return;

}

// ジョイスティックデバイスの取得と初期化

if (FAILED(DI‐>EnumDevices(DI8DEVCLASS_GAMECTRL, EnumJoysticksCallbackWrapper, this, DIEDFL_ATTACHEDONLY))

){FreeResources();return;

}

for (int i=0, n=JoySticks.size(); i<n; ++i){if (FAILED(JoySticks[i]‐>SetDataFormat(

&c_dfDIJoystick2)) ||FAILED(JoySticks[i]‐>SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE)) ||

FAILED(JoySticks[i]‐>EnumObjects(EnumObjectsCallbackWrapper, JoySticks[i], DIDFT_ALL))

){FreeResources();return;

}}

// マウスデバイスの取得と初期化

Mouse=NULL;

if (FAILED(DI‐>CreateDevice(GUID_SysMouse, &Mouse, NULL)) ||

FAILED(Mouse‐>SetDataFormat(&c_dfDIMouse)) ||

FAILED(Mouse‐>SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE))

){if(Mouse) {Mouse‐>Unacquire();Mouse‐>Release();Mouse = NULL;

}}

if(Mouse){// マウスの軸モードを相対値モードに設定

DIPROPDWORD diprop_mouse;diprop_mouse.diph.dwSize = sizeof(diprop_mouse); diprop_mouse.diph.dwHeaderSize = 

sizeof(diprop_mouse.diph); diprop_mouse.diph.dwObj = 0;diprop_mouse.diph.dwHow = DIPH_DEVICE;diprop_mouse.dwData = DIPROPAXISMODE_REL; // 相対

if (FAILED(Mouse‐>SetProperty(DIPROP_AXISMODE, &diprop_mouse.diph)))

{}

}米適当にコピペして削っただけなんでこのままでは動きません

長っ!

Page 28: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリの場合

if(DxLib_Init() == ‐1){// エラー時の処理を書く

}

これだけ!

Page 29: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリ超オススメ

• このように、非常に簡単にゲームを作ることができる。

• デバイスの初期化以外にも、画像の描画、キー入力の取得、サウンドの再生などを簡単なプログラム記述で実行できる。

–どれも、DirectXで実行しようとすると数十行~数百行は処理を書かなくてはならない

Page 30: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリまじオススメ

• DirectXの全ての機能をサポートしているわけではないが、ある程度のことはできる

• ぶっちゃけ2Dゲームなら、DXライブラリを使ってプログラムを書けば充分

• DXライブラリを使って作っている同人ゲームも結構ある。

Page 31: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリおすすめサイト

• C言語なんでも質問サイト

– http://dixq.net/– 「ゲームプログラミングの館」では、DXライブラリの使い方を解説している。

– 「龍神録プログラミングの館」では、東方っぽいシューティングの作り方を解説している

Page 32: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おすすめ書籍

• DXライブラリを使ってゲームを作る入門書

• DXライブラリを使ってる本は、おそらく現時点でこの本のみ

14歳からはじめるC言語わくわくゲームプログラミング教室

Page 33: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おすすめしない書籍

• こっちは、Windows標準の描画機能(GDI)を使っている。

• GDIは遅すぎてゲーム作りには向かない

• 本の内容自体も微妙。

• 14歳の本と間違えて手に取らないように

13歳からはじめるゼロからのC言語ゲーム

プログラミング教室

Page 34: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おすすめしない書籍

• これも、GDIでゲームを作る本なので、タイトルに釣られて買わないこと。

• WinAPIを解説した本として捉えると、勉強にはなるかもしれない。

Windowsゲームプログラミング

Page 35: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DXライブラリなんてヤダヤダ!

DirectXを使いたい!という人は

Page 36: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

DirectX入門書

• マスタリングDirectXプログラミング

• DirectX ゲームグラフィックスプログラミング

• DirectX の入門書ならこの2冊が分かりやすくてオススメ

• この2冊より分かりやすい解説サイトは無い

Page 37: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

• DirectXの、グラフィック部に絞って解説している

• 自分の知っている限り最も分かりやすい本

DirectX ゲームグラフィックス

プログラミング

Page 38: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

• こっちはグラフィックだけではなく、

サウンド再生やキー入力なども解説している

• キー入力について扱っている本は珍しい

マスタリングDirectXプログラミング

Page 39: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

ゲームプログラミングおすすめサイト

Page 40: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

ゲームプログラミングおすすめサイト

• もんしょの巣穴

– http://sites.google.com/site/monshonosuana/–旧コンテンツに、DirectXに関する多くの解説がある

• ゲームプログラミングWiki– http://www.c3.club.kyutech.ac.jp/gamewiki/– DirectXに関する解説だけでなく、ゲームプログラミングに関する解説もある

Page 41: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

ゲームプログラミングおすすめサイト

• ○×(まるぺけ)つくろーどっとコム– http://marupeke296.com/–ゲームプログラミングに関する解説多数

–特に当たり判定に関する記事が分かりやすい

• 全ゲ連講演資料まとめWiki– http://zengeren.wiki.fc2.com/–過去の講演資料がまとまってるので、参考になる記事があるかも

–そのうちゲームプログラミング入門が増えるかも

Page 42: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

ゲームプログラミング書籍あれこれ

Page 43: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

• セガのとある部署の新人研修をまとめたもの

• 一昨年の発売以来バカ売れ中

• 自分が初心者だったころこの本があれば・・・という声が多数でるほど、しっかりとまとまっている本。

• かなり分厚いが、解説も丁寧で良い

ゲームプログラマになる前に覚えておきたい技術

Page 44: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

• ゲームで使いそうな部分に絞って、高校レベルの数学、物理学の基礎を解説

• リファレンスとして使いやすい構成の本。持っていると便利。

• 各項には公式の簡単な説明+ソースコード例が書いてある。

• いちいちポンド、ヤードなどから、メートル,グラム法に単位を直しているのが分かりづらくて難

ゲーム開発のための数学・物理学入門

Page 45: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

○○プログラミングシリーズ

• ソフトバンクパブリッシングの、「○○プログラミング」「○○アルゴリズムマニアックス」シリーズについて

• 「シューティングゲームアルゴリズムマニアックス」が売れたことで、このシリーズがどんどん発刊されている

• たまに良書もあるが、悪書のほうが多いので、しっかり見極めて買うこと。

Page 46: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

こんな感じで色々あるわけですが、ハズレの方が多かった気がします

Page 47: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

特にハズレだった書籍

• 自分が読んだ中では、この3冊が最悪でした– 著者はゲーム作ったことあるのか?– フラグちょっと変えただけじゃん!– このソースコードと解説を何に活かせと?– などなど・・・

Page 48: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

• 自機狙い弾、N‐WAY弾、分裂弾・・・と、STG のアルゴリズムを色々扱っている。

• シューティング作ってみたい人は読んでみるといいかも。

• この本あたりまではこのシリーズもまともだった・・・

シューティングゲームアルゴリズムマニアックス

Page 49: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

物足りなくなったらこの辺にチャレンジ

• ゲームコーディング・コンプリート一流になるためのゲームプログラミング

• スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践

• DirectXシェーダプログラミング仕組みからわかるゲームエフェクトテクニック

• DirectX 9 シェーダプログラミングブック

• 実例で学ぶゲーム3D数学

• ゲームプログラミングのためのリアルタイム衝突判定

などなど。どれも買って損無しの良書です。

Page 50: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

プログラム以外の話

Page 51: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

修正パッチの作成

• udm差分ファイル作成ツール

– http://product.lameije.co.jp/udmtool.html–シェアウェア(2100円)

–同人ゲームで割と使われている

Page 52: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

Subversion

• Subversionを使うと、複数のPCでデータを同期することができる

–それぞれがサーバー上にデータを書き込み、手元のデータとサーバー上のデータを同期させる

• 基本的にはソースコードの管理に利用するが、どんなファイルでも同期できる

–例えば、画像ファイル・サウンドファイル、ソースコードなどゲームに使う全データを対象とし、プログラマ、グラフィッカ、サウンドなど全メンバーが手元のデータを同期させる

Page 53: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

Subversion

• TortoiseSVN– Subversionを利用するためのクライアント

– フォルダの右クリックメニューから利用する

– http://tortoisesvn.tigris.org/

• 使い方についてはぐぐって調べてください

–チェックアウト、コミット、アップデート、インポートあたりが分かればとりあえず十分です

Page 54: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

手順

1. 誰か1人が1度だけ、リポジトリにPC上のデータをインポート

2. 各々のPCに、リポジトリのデータをチェックアウトして作業領域を作成する

3. それ以降は、PC上で行った変更をリポジトリに反映させたい場合には「コミット」を。リポジトリ上の最新データをPC上の作業領域に反映させたい場合には「アップデート」をそれぞれ行う

Page 55: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

インポート• PC上のファイル群をリポジトリに登録し、リポジトリを有効化する

–まず最初にインポート行う

–誰かが1度だけ行えばよい

Page 56: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

チェックアウト

• リポジトリ上のデータをダウンロードし、Subversion対象領域を作成する

–各々が1度だけ行う必要がある

–空のフォルダを作成し、右クリックでチェックアウトを選択

Page 57: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

アップデート

• リポジトリ上の最新データを、手元のSubversion領域に反映させる

Page 58: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

コミット

• 手元のSubversion領域にあるデータのうち、

前回アップデートされてから変更されているものを調べ、リポジトリのデータを上書きする

Page 59: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

コミット(2)

• 「コミット」を選択した後の画面

–上のボックスには、今回の更新内容を書くこと

–下のボックスでは、コミットするファイルを選択

Page 60: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

コミット注意点

• コミットする前には、必ずアップデートを行うこと– アップデート⇒コミット、の手順で必ず行う

• 自分が前回アップデートした後に、誰かがコミットを行っていた場合、その人の変更を上書きしてしまう可能性があります

• アップデートしたからといって、自分書いた部分が消えてしまうことはありません。リポジトリ上の最新データとソースコードの差分を調べて、ちゃんとマージされます。

Page 61: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

リポジトリ

• Subversionで利用される、サーバ上のデータ置き場のことをリポジトリと呼ぶ

–チェックアウト時、インポート時などにリポジトリのアドレスを指定する

• リポジトリを利用するためにはサーバーを立てる必要がある– Unfuddleというサービスが、無料で200MBまで利用できるサーバーを提供しているので、このサービスを利用すると楽

– http://unfuddle.com/

Page 62: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

Unfuddle

• アカウントを作成したら、以下のURLでアクセス

– http://アカウント名.unfuddle.com/

• 「Repositories」 ⇒ 「New Repositories」でリポジトリを作成する

– Title にはリポジトリ名、Abbreviationには小文字アルファベットで文字列を指定

– リポジトリのアドレスは、http://アカウント名.unfuddle.com/svn/アカウント名_Abbreviation名/

Page 63: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

グラフィック(2D)

• ドット絵

– 書籍、ドット絵講座系のWebサイトなどを参考に

– ニコニコ動画などで、ドット絵の描き方を公開している方もいる

– ウチのドッターは「Edge」というソフトを使って描いている

• ドット絵以外のグラフィックソフト

– SAI(5000円)とか、PhotoShop(数万円)とか。

– 無償ならPixiaとかGIMPとか(古い情報かも)

Page 64: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

グラフィック(3D)

• 安く済ませたいなら「Metasequoia」– フリー版なら無料、有料版は5000円–入門書も多数出ている

–まずはこのソフトから触ってみて、物足りなくなったら他のソフトに乗り換えるのがベストか

• Blenderという無料ソフトもある

– こちらは本格的なうえに資料も少ないので厳しいかも

Page 65: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

プロ向けの本格的な3Dソフト

• LightWave3D– 10万円しないくらいの価格

–個人で所有するにはギリギリのラインか

• Maya, 3dsMax, SoftImage等–数十万円レベル

–ゲーム業界でも普通に利用されている

–初心者にはおすすめできない

Page 66: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

サウンド

• 自分で作るか、人に作ってもらうか、

無償で公開されている素材を利用するか

• フリーの作曲ソフトは、Domino, Music Studio Producer, REAPER あたりが有名らしい

– http://takabosoft.com/domino– http://www.forest.impress.co.jp/lib/pic/music/sequencer/msproducer.html

– http://www.cockos.com/reaper/

Page 67: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

Web上の効果音・BGM素材

• 効果音は「ザ・マッチメイカァズ」が定番サイト– http://osabisi.sakura.ne.jp/m2/

• 同人ゲームでも良く利用されている

– 「あれ、この効果音あのゲームで聞いたな?」なんてこともよくある

• BGM素材を公開しているサイトは色々ある

• 例:煉獄庭園– http://www.rengoku‐teien.com/

Page 68: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

素材を利用する際の注意点

• ライセンス(利用許諾)は必ず確認すること

–商用利用は可能か、素材元クレジットを明記する必要があるか、素材制作者に許可は

– ライセンスを確認せず利用して揉めることは多い

–海外の場合も、英語めんどくさいからいいやとか、日本だけならバレないしいいやとか思っちゃダメ

• ネット上ではみんな品行方正で正義感がやたら強いので、間違いなくバレると思っといた方がいいでしょう

Page 69: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

素材を利用する際の注意点

• サウンド素材に限った話ではありません

–プログラム・グラフィック・フォントなども。自分で作ったもの以外は全てライセンスを確認すること

• プログラムの場合、GPLライセンスのプログラムを使ってしまって揉めたり(例:Leaf, SCE)– GPL, MIT, BSD など、多くのライセンスが存在する

– ぐぐって分からなかった場合は詳しい人に聞きましょう

Page 70: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

素材を利用する際の注意点

• フォントの場合、ライセンスを意識せず使っている人が非常に多い。– フォントも著作権物です

– 「フォントを画像化してゲームに組み込む」という、ゲーム向けの利用法が可能かどうか明記されているフォントは少ない

– どうしても分からなければ制作元に確認を

• 2chの「ゲームに安心して使えるフォント探せ」というスレが有用かも– http://wiki.game‐develop.com/

Page 71: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

最後に

• とにかく、まずは簡単なものでいいので1本作り上げましょう。–まずはゲームを完成させることが大切です。

• ここまで色々技術書を紹介してきましたが、別に技術にこだわる必要はありません。ゲームは面白ければいいんです。

• 困ったときには本を読んでサクっと問題解決しちゃいましょう。

–ネットで検索するより、本を読んだほうが早く解決します。時は金なり。

Page 72: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

最後に

• そして、いずれはここに立って講演してくれる方が出てくれると嬉しいです。

• 勉強会という文化の問題か、プログラム講演ばかりですが、グラフィックでもサウンドでも企画でもいいので、気軽に講演して下さい。

• 静的ゲーム(ノベルゲーとか)系の講演も少ないですが、講演しても全然構いません。俺は興味津々です。

Page 73: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

おまけ

Page 74: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

修羅場の友

• 定番のユンケルは顆粒(粉薬)がオススメ

–一番安いユンケル(液体)は、1本あたり300~400円– しかし顆粒は、1包あたり100円ちょい

– コストパフォーマンス抜群

Page 75: これから始める ゲームプログラミング · OpenGLなどのマルチメディアAPI ... • Visual Studio 2010 Express ... – Visual C++ 2010

もの足りない訓練されたあなたに

• 活蔘(カツジン)マジおすすめ

–ユンケルの1000円以上のモデル(ファンティとかスターとか)と似たような成分構成

–値段は10本セットで4000~5000円。コスパ抜群

–扱ってる店は少ないですが、コクミンドラッグはだいたい全店扱ってます(アキバ・御徒町・新宿など)