SDXFrameWork  0.13
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
SDXの導入方法(Windows)

SDXFrameworkの使用には
「SDXFramework」
「VisualStudio2013」
が必要です。
Windows環境の場合、コンパイラは「Visual Studio 2013 Community」を推奨しています。「Express Edition for Desktop」でもOKです。
識別子にUnicodeを使用している関係で基本的にgccでコンパイルする事は出来ません。
VisualStudio2012以前の環境については、サポートしていません。
VisualStudio2015 Prevew版は対応していると思いますが、テストが十分出来ていません。


1 VisualStudioをインストールする
C++の規格準拠具合の関係で、VisualStudio2012以前のコンパイラは使用できません。
Visual Studio のダウンロード
ライブラリがAGPLなので「Visual Studio 2013 Community」の利用条件を満たします。
機能的に優位なのでExpressエディションでなくCommunityエディションの利用を推奨しています。
使用しているOSがWindowsXPやVistaの場合、VisualStudio2013がインストール出来ないため、この方法ではSDXは使用できません。

詳細なインストール方法やライセンス登録については、「VisualStudio 2013 インストール」等でGoogle検索するといくつかキャプチャ付きの記事が見つかると思うので
それらを参考にしてください


2 SDXFrameworkをダウンロードする
下記サイトで最新版を配布しているので、リンク先からダウンロードして下さい
OSDN


3 新規プロジェクトの作成
プロジェクトの作成
①上部メニューの「ファイル」の「新しいプロジェクト」からWin32アプリケーションのプロジェクトを作成します。プロジェクト名は好きなように付けて下さい

②Win32アプリケーション ウィザードが開くので、一回「次へ」をクリックします。
空のプロジェクトにチェックを入れて、完了をクリックして下さい。

プロジェクトを設定
①上部メニューの「プロジェクト」をクリックし「プロパティ」をクリックし、設定ダイアログを開きます。

②ダイアログ左上の構成を「Release」に変更します

③ダイアログ左の「構成プロパティ」→「C/C++」→「コード生成」を選びます。
ランタイムライブラリを「マルチスレッド (/MT)」に変更し、「適用」ボタンをクリックします。
この設定を行わない場合、"MSVCP1XX.dll"が無いエラーが出る事があります。

④ダイアログ左上の構成を「全ての構成」に変更します

⑤「構成プロパティ」→「全般」を選びます。(任意)
この設定は任意です。
WindowsXPでも動作するようにしたい場合は「プラットフォームツールセット」を、「Visual Studio 201X (v1XX)」から「Visual Studio 201X - Windows XP (v1XX_xp)」に変更します。

⑥「構成プロパティ」→「VC++ディレクトリ」を選びます。
「実行可能ファイルディレクトリ」に、「SDXFramework/Windows/dll/x86」を追加します。

⑦ダイアログ左の「構成プロパティ」→「C/C++」→「全般」を選びます。
追加のインクルードディレクトリに先ほど解凍した「SDXFramework/jni/SDL/include」を追加し、「適用」ボタンをクリックします。

⑧ダイアログ左の「構成プロパティ」→「リンカー」→「全般」を選びます。
追加のライブラリディレクトリに先ほど解凍した「SDXFramework/Windows/lib/x86」を追加し、「適用」ボタンをクリックします。

⑨最後にダイアログの右下にある「OK」を押してダイアログを閉じます。

⑥と⑧は64bit版の場合、X64。32bit版の場合、X86を使ってください。libとdllの構成が違う場合、コンパイルエラーか実行エラーになります。


4 サンプルソースのビルド
画面左側の「ソリューションエクスプローラー」の「ソースファイル」フォルダを、
右クリックして「追加」→「新しい項目」から.cppファイルを追加して下さい。
ファイル名は何でもかまいませんが「main.cpp」にして下さい。
追加したcppファイルに以下のコードをコピペして、コンパイルして実行して下さい。

#include <SDXFramework.h>
#include <SDXafx.h>
using namespace SDX;
int main(int argc, char* argv[])
{
System::Initialise("sample", 640, 480);//ライブラリの初期化
int x = 320;
int y = 240;
while (System::Update())
{
if (Input::pad.Down.hold) y += 5;
if (Input::pad.Up.hold) y -= 5;
if (Input::pad.Right.hold) x += 5;
if (Input::pad.Left.hold) x -= 5;
Drawing::Rect({x-10, y-10, 20, 20}, Color::White, true);
}
System::End();//ライブラリの終了処理
return 0;
}

画面に白い□が表示され、カーソルで移動出来れば導入成功です。
失敗した場合は、もう一度手順を確認して下さい。
よくわからない場合は、掲示板で「新しい話題を始める」をクリックして質問して下さい。
SDXFramework:ヘルプフォーラム


5 プリコンパイル済みヘッダーを利用する
SDXは色々な理由があって、大半のコードをヘッダーに実装しており、普通にコンパイルすると時間が余計にかかります。
そのため、プリコンパイル済みヘッダーを使う事を推奨しています(※使わなくても動作はします)

ファイルを追加する
画面左側の「ソリューションエクスプローラー」の「ソースファイル」フォルダを右クリックして
「追加」→「新しい項目」から.cppファイルを追加して下さい。
ファイル名は「pre_compile.cpp」とします。

次に画面左側の「ソリューションエクスプローラー」の「ヘッダーファイル」フォルダを右クリックして
「追加」→「新しい項目」から.hファイルを追加して下さい。
ファイル名は「stdafx.h」にして下さい。

ファイルを編集する
pre_compile.cpp(cppとhを間違えないで下さい)には

#include "stdafx.h"
#include <SDXafx.h>

と入力して下さい。

stdafx.hには

#include <SDXFramework.h>

と入力して下さい。

先ほどの「main.cpp」の

#include <SDXFramework.h>
#include <SDXafx.h>

の三行を

#include "stdafx.h"

に変更します。

プリコンパイル済みヘッダーの作成と使用設定
画面左側の「ソリューションエクスプローラー」の「main.cpp」を右クリックし「プロパティ」を開きます。
ダイアログ左の「構成プロパティ」→「C/C++」→「プリコンパイル済みヘッダー」を選択します。
画面右の「プリコンパイル済みヘッダー」を「使用 (/Yu)」に変更し、画面右下の「OK」をクリックします。

次は「ソリューションエクスプローラー」の「pre_compile.cpp」を右クリックし「プロパティ」を開きます。
ダイアログ左の「構成プロパティ」→「C/C++」→「プリコンパイル済みヘッダー」を選択します。
画面右の「プリコンパイル済みヘッダー」を「作成 (/Yc)」に変更し、画面右下の「OK」をクリックします。

これで、コンパイルが通る事を確認して下さい。

もし「main.cpp」以外に他の.cppファイルを追加する場合は、そのファイルも「main.cpp」と同じ設定をして、

#include "stdafx.h"

をファイルの先頭に書いて下さい。


6 プリコンパイル済みヘッダーだけ最適化する
※この設定は必須ではありません
デバッグビルドが遅い場合は、プリコンパイル済みヘッダーのみ最適化する事が出来ます。
デバッグビルドで処理落ちしない場合は、この設定をする必要はありません。

※VC++のバグなのか、1項目ずつ適用しないと、フリーズする事があります。
①画面左側の「ソリューションエクスプローラー」の「stdafx.cpp」を右クリックし「プロパティ」を開きます。

②ダイアログ左上の構成を「アクティブ(Debug)」か「Debug」にします。

③ダイアログ左の「構成プロパティ」→「C/C++」→「全般」を選択します。
画面右の「デバッグ情報の形式」を「プログラム データベース (/Zi)」に変更し、画面右下の「適用」をクリックします。

④ダイアログ左の「構成プロパティ」→「C/C++」→「最適化」を選択します。
画面右の「最適化」を「実行速度の最大化 (/O2)」に変更し、画面右下の「適用」をクリックします。

⑤ダイアログ左の「構成プロパティ」→「C/C++」→「コード生成」を選択します。
画面右の「基本ランタイムチェック」を「既定」に変更し、画面右下の「適用」をクリックします。
その後、隣の「OK」をクリックして、設定を完了させます。

これで、ある程度処理が早くなります。
コンパイル時に警告メッセージが表示されますが、無視して下さい。


7 エディットコンティニュを有効にする
※この設定は必須ではありません
ゲーム開発の場合、例えば敵キャラの動きを少し変えるとか、キャラクターの台詞を少し変えるとかする度に
プログラムを終了して、再コンパイルし実行するのは非常に手間がかかり面倒です。
lua等のスクリプトを使ったり、外部のリソースにしても良いのですが、それはそれで手間です。

VisualStudioを使う場合、エディットコンティニュを使えば、実行中に差分コンパイルが可能です。
多少制約はあるものの、使いこなせば相応に強力なのでVisualStudioを使うなら、是非とも使いましょう。

設定方法
①上部メニューの「デバッグ」を開き「オプションと設定」をクリックしダイアログを開きます。

②一覧から「デバッグ」→「エディットコンティニュ」を選択します。

③「ネイティブのエディットコンティニュを有効にする」にチェックを入れ、画面右下の「OK」をクリックします。
エディットコンティニュの利用
①先ほど書いたサンプルをデバッグ実行します。

②実行中にソースを編集します。xやyに足したり引く値を5から15に増やして下さい。

③上部メニューの「デバッグ」→「コード変更を適用」をクリックします。

④差分コンパイルが開始しすぐに終わります。カーソルキーでの移動速度が3倍になっていれば成功です。

開発初期の全体的な設計の段階では、エディットコンティニューはそこまで便利ではないですし、
複数人で開発していて、スキル差が大きいのでスクリプトを使う場合や、スクリプトで追加データを配布したい場合等
エディットコンティニュが万能かと言うと、そうではないですが、VisualStudioを使うなら抑えておきたい機能です。


8 プロジェクトのテンプレートを作成する。
VisualStudioでは一度作成したプロジェクトを雛形として保存する事が出来ます。
テンプレートを作成しておけば、次回以降のプロジェクト新規作成が楽になります。

①画面上部の「ファイル」から、「テンプレートのエクスポート」を選択します。

②ダイアログが開くので、プロジェクトテンプレートが選択されているのを確認して「次へ」をクリックします。

③テンプレート名と、テンプレートの説明を書いて、「完了」をクリックします。
テンプレート名は「SDXテンプレート」等として下さい。

④画面上部の「ファイル」から、「あたらしいプロジェクト」を選択します。
C++用のテンプレートが追加されていれば成功です。次回以降はこれを選択してプロジェクトを作成する事が出来ます。


9 完成したソフトを配布する。
Releaseビルドして、exeファイルとdllファイルと必要なリソースを配布して下さい。
DLLと実行ファイルを同じフォルダに置くとどれが実行ファイルかユーザーが見つけにくい場合等は、
相対パスのショートカットを置く等すると良いと思います。
10 dllを減らす。
ある機能やデータフォーマットを必要としていない場合、dllを一緒に配布しなくても良いDLLがあります

BMPフォントしか使わない場合は

#define OMIT_SDL2_TTF

をstdafx.hに定義すると、ttf関連の機能を無効に出来ます。
SDL2.dll:必須
SDL2_main.dll:必須
SDL2_image.dll:ほぼ必須
SDL2_mixer.dll:ほぼ必須
SDL2_ttf.dll:ttf機能を無効にしないなら必須
zlib1.dll:ほぼ必須

『libwebp-4.dll』
webP形式の画像を使うなら必要

『libtiff-5.dll』
tiff形式の画像ファイルを扱うなら必要

『libpng16-16.dll』
png形式の画像を使うなら必要

『libjpeg-9.dll』
jpeg形式のファイルを使うなら必要

『libvorbisfile-3.dll、libogg-0.dll、libvorbis-0.dll』
ogg形式の音声ファイルを使うなら必要

『libmodplug-1.dll』
必須

『libmikmod-2.dll』
必須

『libFLAC-8.dll』
FLAC形式の音声ファイルを使うなら必要

『smpeg2.dll』
MP3形式のファイルを使うなら必要、MP3特許が切れていないので使用は避けても良い

『libfreetype-6.dll』
ttf形式のフォントを使うなら必要