新FPSチュートリアル#2:部屋を広く、敵を多く
新FPSチュートリアル#1:はじめに
この記事は主に3D Gamestudio A8バージョン向けですが、A7でも最新版であれば実施出来る可能性があります。少なくとも、A8の無償版に含まれる下記プログラムとリソースは、A7でも動く可能性が高いと考えております。現在確認しておりますが、もし先に情報をお持ちの方はご一報頂ければ幸いです。
以前、3DGS A6〜A7にかけて、「FPSチュートリアル」(以下旧チュートリアル)を公開しておりましたが、3DGS A8には、新しいゲームテンプレートコードが付属しています。
3DGS A6の旧ゲームテンプレートは、C-Scriptで書かれていましたが、新ゲームテンプレートは、3DGS標準のコンパイラ言語であるLite-Cで書かれているため、3DGSの学習にも最適です。
このため、この新しいA8用ゲームテンプレートを使った、FPSゲームの作り方をご紹介していきたいと思います!
このチュートリアルで、3DGS A8 Professionalを用いていますが、無料で期間制限なく使用可能なフリー版でも動くはずですので、ぜひお気軽に試してみて下さい!
それでは、早速はじめてみましょう。
1、必要なもの
・Windows XP,Vista,7などがインストールされたWindowsパソコン(できれば3D性能がある程度あるもの)
・3D Gamestudio A8(フリー版でもOKなはず)
入手、インストールについてはこちら。
※3DGSのインストールフォルダについて
このチュートリアルでは、Windows7(64ビット版)での例を示しており、
その環境でのデフォルトのインストール先は、
C:\Program Files (x86)\GStudio8
となりますが、その他のOS(XPなど)の場合、
C:\Program Files\GStudio8
となることと思いますので、適宜読み替えてください。
2、プロジェクトフォルダを用意する
ゲームは、プログラムコードと、モデルファイルや音声ファイルや画像ファイルなどのリソースから構成されています。
ゲームテンプレートで使用するコードやリソースは、3DGSのフォルダにありますので、それを適宜読み込む形でも良いのですが、リソースが各地に分散されていると、どのコードやリソースがどこで参照されているのかが把握しずらくなり、また改造もしにくくなります。
そこで今回は、プロジェクトフォルダを作成し、3DGSのフォルダにあるコードやリソースをできる限りそこにコピーして入れてしまって、プロジェクトフォルダ内で完結してしまうようにすることにします。
こうすることで、学習や改造が容易になりますし、また、プロジェクトをフォルダごと複製できるため、試作やバージョン管理、バックアップなどが容易にでき便利です。
まず、フォルダを作ります。場所や名前は適当に決めて結構ですが、日本語(全角文字)やあまり長い文字の使用は避けましょう(これはプロジェクトやコードやリソースファイル名などでも同じです。)

ここでは、デスクトップにmyfpsというフォルダを作成しました。
次に、以下の3DGSフォルダ内のファイルを全て、myfpsフォルダ直下にコピーしてください。
プログラムファイル:
C:\Program Files (x86)\GStudio8\include\t_shooter_doors.c
C:\Program Files (x86)\GStudio8\include\t_shooter_elevators.c
C:\Program Files (x86)\GStudio8\include\t_shooter_enemies.c
C:\Program Files (x86)\GStudio8\include\t_shooter_player.c
C:\Program Files (x86)\GStudio8\include\t_shooter_weapons.c
リソースファイル:
C:\Program Files (x86)\GStudio8\templates\models内の全てのファイル
C:\Program Files (x86)\GStudio8\templates\images内の全てのファイル
C:\Program Files (x86)\GStudio8\templates\sounds内の全てのファイル

コピー後。300個強のファイルがmyfpsフォルダ内に入るはずです。
画像やモデル、音声といったリソースは、最初から全て使うわけではありませんが、こうしておいたほうが、将来の拡張の時にいろいろとチョイスできるので便利です。
3、最初のゲームを作る
さて、それではいよいよ最初のゲームを作ってみましょう。まず、スタートメニューから、WED Level Editor(以下WED)を開きます。
今回から、より分かりやすい解説のため、実際に作業している様子のキャプチャ動画を作成しましたので、ここから先は、こちらをご覧ください。
※右下の拡大ボタンを押し、なるべく最大の大きさ(フルスクリーン)でご覧ください。
※ここで作成するマップの保存先は先ほどプログラムとリソースをコピーしたフォルダ(上記例では「myfps」)にして下さい。
※動きが早すぎる場合は適当にポーズしたり戻すなどしてみてください。慎重に同じ手順を踏んでいただけば30分前後で簡単にできると思います。
いかがでしたか?今後これをさらに拡張していく過程をご紹介できればと思います!
次回へ
円高の進行に伴う特別価格につきまして
3DGSJapanでは、2009年2月より、円高差益還元として、特別価格でのご提供を行って参りましたが、その後、ドル−円為替レートがさらに円高方向にふれ、現在は歴史的な水準に達しております。
弊社といたしましては、今後、当面の間、この水準の円高傾向が維持される公算が高いと判断いたしましたので、2011年9月より、さらなる円高差益還元として、下記の特別価格で、各ライセンスをご提供させて頂くことと致しました:
その結果、価格改定後の新価格は以下のようになります:
・Extra版:円高差益還元特価7,700円(税込) (通常8,721円)
・Commercial版:円高差益還元特価15,700円(税込) (通常19,500円)
・Professional版:円高差益還元特価75,500円(税込) (通常88,091円)
※「円高差益還元特価」は、暫定特価となっておりますので、
今後ドル円レートが急激に上昇するなどした場合は、
予告なく終了または変更させて頂く場合がございます。
予めご了承のほど宜しくお願いいたします。
これまでライセンスをご購入下さいました皆様におかれましては、
上記為替の変動による価格改定につきまして、
何卒ご理解を賜りますようお願い致します。
また、よりお求めやすくなりました3DGSライセンスを、
何卒宜しくお願い致します。
3D Gamestudio A8の本格的な取り扱いを開始!
3D Gamestudio A8バージョンにつきましては、これまで、お問い合わせベースでの、個別のご対応、及びライセンス販売を行わせていただいておりましたが、このたび、弊社販売およびサポートの準備が整いましたので、本格的なお取り扱いを開始させて頂きました。
A8バージョンは、基本的に、A7バージョンの流れを引き継いだものですが、物理エンジンにNVIDIA® PhysX®を採用するなど、一部に大きな変更がございます。
このほか、エンジン効率やネットワーク系の機能、外部I/O関係など、数多くの改良点があり、また、現在もバージョンアップが行われています。
3D Gamestuio公式のトレイラーが公開されましたのでご覧ください!
3DGSJapanでは、引き続き関連情報を公開していきます。今後ともどうぞよろしくお願い致します。
A7をご利用の方へ
A8公開に伴い、A7は現在の7.866が、おそらく最終バージョンとなっています。弊社では、A7からA8へのアップグレードライセンスもお取り扱いをさせて頂いております。
もっとも、A7の最終バージョンは、かなり安定したバージョンであり、それ自体としては、ゲーム制作ツールとしては、通常の用途であれば十分な性能があると存じます。
2011年6月現在でも、A7を使用されている方は多く、今後A8と平行して、A7もしばらくは十分現役とおもわれます。(実際、上のトレイラー動画に登場するプロジェクトは、A7で作成されたものや、A7でも可能なものが多いように感じます。)
このため、A7からA8へアップグレードをなさるかどうかは、A8の新機能の中に、どうしても必要な機能があるかどうかで判断されると良いかと存じます。
ご質問などございましたらお気軽にお問い合わせ下さい。
※コード互換性について
Conitec社によると、物理エンジン関係を除き、A7用に書かれたほとんどのLite-Cコードは、A8でも動くそうです。
Except for physics functions, version 8.20 is 100% script compatible to all A8, A7, and A6 version from A6.40 and above.
出典URL
ただし、個別のコードが動くかどうかは、無償版などで事前に検証を行うことをお勧めいたします。
3DGSの学び方
そういう方は、下記に記載されている内容や、リンク先を上から順に、一通り実践し、マスターすると、少なくとも初心者を卒業し、簡単なゲームを1から独力で作ることができるようになると思います。(そして、それ以上の上級者への道は、実際の開発そのものではないかと思います。)
最初はとっつきにくく感じるかもしれませんが、急がずじっくりゆっくり、楽しみながら頑張ってみて下さい!
でもその前に!
下記リンク先を読んで踏まえておくことを強くおすすめします:
3DGSでつまずかないために
※「行き詰った」と感じたときも、再度読んで頂ければと思います。
1、3DGSで遊ぶ
3DGSとは何かを知るには、まずいろいろ遊んでみると良いと思います。サンプルを実行することから始めましょう。
※ここでは、3DGSがC:\Program Files\GStudio8にインストールされている前提で解説しています。他のフォルダにインストールされている方は適宜読み替えてください。
インストール後、まずは、新FPSチュートリアル(解説記事)をご覧ください。
1−1 ソースコードからの実行方法
ここでは、ソースコード(.cファイル)から、3DGS用のプログラムを実行する方法を解説します。付属サンプルに限らず、これは3DGSでは普通に行う動作ですので、しっかり覚えておきましょう。
なお、実行できるファイルは、3DGS用につくられたlite-Cのソースファイル(拡張子は.c)で、最初に実行されるmainという関数(プログラムのスタート地点)があるファイルです。(スクリプトファイル.wdlも同様ですが、wdlはライセンス版のみ実行可能ですのでご注意下さい。)
ソースファイルからの実行方法は簡単です:
(1)ソースファイル(.c)をダブルクリックしてSED(スクリプトエディタ)で開く。
(2)SEDで開いたら、F5を押す。(これは、「テスト実行」のショートカットです。)
以上の2ステップだけで実行できます!
1−2 カーレースデモ
こちらに解説記事がございます
これはソースを見て分からなくても全然構いません。遊びましょう!
(万一、動かなくても、気にしないで先に進んでください。)
1−3 small.c
通常インストールでの所在はC:\Program Files\GStudio8\samples\small.cです。
これはほぼ最小構成の3Dプログラムで、「HelloWorld」のようなものです。
実行すると、地形で構成されたレベル(マップ)を読み込み、そこに地球のモデルを1個配置します。
3DGSの実行プロセスの基本を知る上でとても重要なサンプルですので、これはソースを見てみることをおすすめします。
といっても、//で始まるコメントを除くと、実質たった5行なので、ここで解説してしまいます!
1行目:function main()
2行目:{
→C言語ではおなじみのプログラムのスタート地点の関数の冒頭です。
次の3行目から4行目がこの関数内のコードとして実行されます。
3行目:level_load("small.hmp");
→level_loadは3DGSの関数で、レベル(マップ)を読み込みます。
レベルとは3Dで構成された世界のようなものです。
ここで読み込んでいるsmall.hmpはhmpファイルといって、
山や丘や谷などの地形データと、そのテクスチャを格納する形式です。
※このlevel_load関数は、hmpの他にwmbファイルと
mdlファイルを読み込むことができます。
このうち、wmbはワールドエディタ(WED)で作成し、コンパイルした形式です。
先述のhmp(地形データ)や、mdl(モデルファイル)も、
wmb内に配置することができるため、通常「レベルデータ」というと、
このwmbファイルを指すことが多いです。
(このサンプルでは簡易的な例のため、hmpを直接読み込んでいます。)
※small.cと同じフォルダにsmall.hmpというファイルがあるので、
ダブルクリックしてみましょう。MED(モデルエディタ)で開くことができます。
4行目:ent_create("earth.mdl", vector(10, 20, 30), NULL);
→ent_createは、1番目の引数で指定した、earth.mdlという
モデルのファイルを読み込み、その「エンティティ」(entity)を、
2番目で指定した座標(X=10,Y=20,Z=30)に作成します。
※座標はvector()という関数で指定していますが、
これは厳密にはベクトルで座標を指定するためです。
このように、3DGSでは、全ての座標はベクトルとして指定します。
良く分からない人は座標は必ずvector(X,Y,Z)で指定する、
というおまじない程度に考えてください。
3番目の引数は、エンティティの動作を規定する関数(エンティティ関数)を
指定することが出来るのですが、今回のサンプルでは、この地球のオブジェクトは
作成した位置に静止して何もしないので、NULL(未定義)を指定します。
エンティティとは、3DGS独特の呼び方なので、異質に感じるかもしれませんが、
「マップの中に置くモノ」くらいの理解で気楽に構えていただければと思います。
もっと厳密に知りたい方のために書くと、エンティティとは、
「3DGSアプリケーションによって描画等される、
ダイナミックなオブジェクトのインスタンス」です。
プレイヤー、敵キャラクター、アイテム、木、草など、
ゲーム中で物体としてでてくる「モノ」のうち、(建物のように
動かないために)マップとして作成されるもの以外の「モノ」は、
ほぼ全て「エンティティ」として作成され管理する、と考えておいてください。
※small.cと同じフォルダにearth.mdlというファイルがあるので、
ダブルクリックしてみましょう。MED(モデルエディタ)で開くことができます。
※同じようにダイナミックに作成されるオブジェクトとしては、
上記のエンティティのほかに、煙などを表現するための
「パーティクル」(particle)や、ステータス表示などに
つかう「パネル」(panel)などがあります。
5行目:}
→これは1行目で始まったmain関数の終わりを示すものです。
このように、たったの5行で、小さな3Dアプリケーションを作ることが出来ます。
DirectXを直接いじる場合、ここまで到達するために、
沢山の初期化コードを書く必要があることを考えると、
大きな省力化ではないでしょうか。
(もちろん、3DGSでも、各種設定コードを追加することで、
カメラの位置や角度、解像度、アンチエイリアシングなどなど、
細かなコンフィグレーションを行うこともできます。)
重要なTIPS:
このプログラムを実行中に、数字の0キー(テンキーではない方)を押してみましょう。
すると、組み込みの「フライスルーモード」になり、視点(カメラ)を次のように移動できます:
・↑↓キー : 前進後退
・←→キー : 左右回転
・マウスを右ボタンを押しながら動かす:
(FPSゲームのように)動かした方向に視点を移動
※このモードはもういちど0キーを押すと解除できます。
この機能はデフォルトで、テスト実行中の全てのプログラムで利用できます。
(キー割当やカメラの動きをプログラムで記述すると利用できなくなります)
他に同様の組み込み機能(動作)としては、主に以下のようなものがあります:
・F5 : 解像度切り替え
・F6 : スクリーンショットを撮り、プログラムがあるフォルダにJPEGファイル出力
・F11 : ステータス表示、ワイヤーフレーム表示など(テストモード時)
・ESC : 終了
1−4 earthball.c
通常インストールでの所在はC:\Program Files\GStudio8\samples\earthball.cです。
このプログラムはsmall.cよりやや長いですが、
その分非常に多くの有用なサンプルが含まれています!
実行すると、地形で構成されたレベル(マップ)を読み込み、空を配置します。
そして、画面中央に、物理設定がなされた地球のようなボールのモデルを配置します。
物理設定がなされているため、このボールは自由落下し、
地面を実際のボールのようにはずんだり、転がったりします。
スペースキーを押すと、このボールを蹴る
(正確には速度ベクトルを与える)ことができます。
このプログラムには、独自のカメラ制御コード(フライスルー)が
含まれていますので、次のキーで「飛行」することができます:
・WASPキー:前進後退左右移動
・マウスを動かす:FPS風視点移動
アクセラレーション(加速)コードが入っていますので、
かなり爽快な飛行感覚を味わうことができると思います!
※small.cの時の、0キーのフライスルーモードは、
このプログラムの実行時は使用できません。
これは、独自のコードが書いてあるため、キーの割当が重複し、
正しい動作にならなくなってしまうためです。
このプログラムは、比較的短い(コメント盛りだくさんで150行弱、正味は70行程度?)にもかかわらず、やっていることは多いため、ここで解説することはできませんが、興味があれば、是非、コードを眺めてみることをおすすめします。英語コメントが大量に書いてありますので、必要に応じて翻訳しながら読み解いていくと、理解の大きな助けになると思いますが、もし理解できなくても構いません。以降のlite-Cチュートリアルを進めていくにしたがって、自然に理解できるようになっていくと思いますので、あまりハマらずに前に進みましょう。
1−5 infinite_terrain.c
通常インストールでの所在はC:\Program Files\GStudio8\samples\infinite_terrain.cです。
詳しくは、こちら。
1−6 その他のサンプル
その他、時計を表示するアプリケーションや、通信対戦でエアーホッケーのようなゲームを行うサンプルなど、数多くのサンプルプログラムが、C:\Program Files\GStudio7\samples\フォルダには入っています。それらは一見、シンプルでも、3DGSを学ぶ上でとても参考になる場合もありますので、時間があるときに是非試してみてください。(コードの理解はlite-Cワークショップの後でOKです。)
2、lite-Cワークショップをこなす
「lite-Cワークショップ(lite-C Workshop)」とは、開発元の公式のドキュメントで、lite-Cを使用した、3DGSプログラミングの基礎を、サンプルを交えながら解説するものです。
関数などの働きを辞書のように解説していく、「リファレンスマニュアル」と同様に、3DGSのドキュメントとしては最も重要な決定版ですので、下記の点を参考に、是非学習してみましょう。
オンライン版lite-CワークショップURL:
http://tutorial.3dgamestudio.net/
Workshop25について
本ワークショップのほとんどの部分は、無償でご利用いただけるFree版で実施することができますが、Workshop25については、ネットワーク通信機能を使用するため、Free版ではWorkshop24まで行ってください。
英語ドキュメントについて
lite-Cワークショップは、英語で書かれていますので、英語が苦手な方はこちらを参考に、対策を行ってみてください。
リファレンスマニュアルについて
必要に応じて、「リファレンスマニュアル」を参照すると、より個別の関数などについて理解が深まると思います。リファレンスマニュアルについても英語で書かれていますので、苦手な方はこちらの対策を参考にされてみてください。
オンライン版リファレンスマニュアルURL:
http://manual.3dgamestudio.net/
スクリプトエディタの日本語対応について
※SED(ScriptEditor)で付属のサンプルソースコードを開いた時は、
必ず、上部メニューの「Option」から「Fonts」を選択し、
開いたダイアログの「文字セット」を「日本語」に設定してください。
また、フォントをMSゴシックなどにしてください。
そうでないと、欧文文字セットがデフォルトになっているため、
日本語で入れたフォントが文字化けします。
(現在時点では、この「文字セット」の設定が保存されない現象が
ありますが、これについては開発元に対応を依頼し、先方もそれを了解しています。)
※SEDで日本語(全角文字)を入力したり編集する時は、
出来る限りカット&ペーストしてください。
(2009年2月時点では、1バイトずつの編集になるためで、
これも改善提案を予定しています。)
別のテキストエディタでShift-JISで開いて編集し、保存することも有効です。
3、ゲームデザインチュートリアルをこなす
lite-Cチュートリアルを一通りこなしただけでも、かなりの力がついていることと思いますが、レベルエディタWEDを使った、レベルの作り方についても、一通り学ぶことをおすすめします。下記はそのための最適なドキュメントです。
ゲームデザインチュートリアルURL:
http://download.conitec.net/wed_tutorial_e.zip
なお、英語が苦手な方はYahoo翻訳のようなテキスト翻訳サイトを適宜併用されると良いと思います。また、予備知識として、FPSチュートリアルを最後まで一通り読んでおくと、なお理解しやすいかと思います。(FPSチュートリアルはFree版では実行できませんので、Free版の方は読むだけでOKです。)
4、ミニゲームを1から作る
ここまで学習を終えられたら、恐らく、小さなミニゲームを作ってみることができるくらいの予備知識が身についているはずですので、是非、挑戦してみましょう。
特に配布したりするわけではありませんので、ミニゲームに登場するキャラクターは、
C:\Program Files\GStudio7\templates\models
内のモデルや、
3DGSのリソースサイト「ACKNEX UNLIMITED」内の、こちらのページの素材を使用してみると良いと思います。
※「ACKNEX UNLIMITED」には、チュートリアルなど、その他の有用な情報や素材などがありますので、是非参考にされてみてください。
実際にゲームを作ってみると、まだまだわからないことがでてきたり、うまくいかないことが沢山でてくると思います。しかし、それはより一層の理解と、開発力をもたらしてくれる絶好の機会ですので、まずは今まで学習してきた各種ドキュメントやリファレンスマニュアルなどを参考に、解決してみましょう。その上でどうしても分からないことが出てきたら、3DGSJapanのサポートに聞いてみるのも一つの手です。
5、おつかれさまでした!
ミニゲームが完成したら、貴方はもう立派な「3DG使い」です!あとは、2作目を作るなり、さらに学習するなり、自身のプランに合致した使い方をされることと思います。Free版をお使いの方は、ライセンスを購入されることで、さらなる高機能な3DGSをご利用いただけますので、是非、ご検討下さい!






