[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
私の当初の開発マシンは
モバイルPentium4 1.7G
VRAM 16M
メモリ 512MB
のノートパソコンでした。
(現在はCore2Duo T7250 2G/gforce 8600M 512M/メモリ2G)
このパソコンで開発していて度々感じたのが、動作が重いって事でした。
多重スクロールさせて弾幕を撃たせていたら、大体400発程度の弾を撃たせるのが
処理落ちしない限界って感じ。
それも、色々と処理を軽くする為に削除した部分などもあり、なんとかならんもんかと思っていました。
そして良く聞くのが、HSPは処理が重いって話。
HSPはインタプリタ言語と言うようで、普通の?言語とはちょっと違うみたい。
例えば、パソコンをアメリカ人、製作者が日本人だとします。
アメリカ人にプログラムを伝える為には、英語で話すのが一番です。
でも製作者は日本人なので英語は話せません。
ここで登場するのが通訳(インタプリタ言語=HSP)です。
でも、通訳を通して伝えるよりも、直接英語で話した方が話は早いです。
ここで言う英語がC言語になるって事です。
なので、HSPよりもCの方が処理が早いって話になるようです。って事をどこかのページで読みました。
(※※追記。この解釈も若干間違っています。
詳しくはコメント欄のモイモイさんのコメントを参照して下さい)
でもHSPとC言語で、どの程度の差があるのかはわからないので
実際に同じようなプログラムを使って比べてみたいと思いC言語使ってみようと思ったのですが
C言語と言うのは非常に難しいらしく画像一つ表示するのも大変なようです。
そこで登場するのがDXライブラリ。
DXライブラリを使えば、簡単に画像が表示できたりするみたいなので、早速使ってみる事にしました。
まずはDXライブラリのHPに行ってDXライブラリをダウンロードするのですが、その前にC言語用の
ソフト(コンパイラ?)を入手しなければなりません。
DXライブラリの使い方解説のページを見てみると
VisualC++ 2008 Express Edition
VisualC++ 2005 Express Edition
BorlandC++ Compiler 5.5
の3つが無料!で使えるようです。
なんかC言語と言っても、CやC#やC++等の種類があるみたいです。でも無料で使えるのはC++
だけみたいなので、上記の3つから選べば良いみたい。
解説を読んでみると、BorlandC++よりもVisualC++の方が高機能なデバッカがあるみたい。
でもBorlandC++の方が動作は軽いみたいです。
で、VisualC++ 2008よりもVisualC++ 2005の方がセットアップは面倒みたいですが動作が軽い
みたいなのでVisualC++ 2005 Express Editionを選んでインストールしました。
セットアップは確かに面倒でしたが、HPにて詳しく解説されているので迷う事はありませんでした。
結局DXライブラリを使用する為には
VisualC++ 2005 Express Edition
Platform SDK
VisualC++用 DXライブラリ
の3点をインストールするだけで使用出来るみたいです。しかも無料で!
インストールは無事終わったのですが、肝心な使い方が全くわかりません。
どこかに良い解説サイトでも無いかと探してみたら、とても良さそうなサイトがありました。
C言語何でも質問サイトさんのゲームプログラミングの館という所が、丁寧なサンプルプログラム
もあり、とても判りやすいです。
で、とりあえずお約束の"Hello, world!"を表示させてみました↓
画像は適当な画像を読み込ませて表示させています。
プログラムとしてはこんな感じ↓
*****************************************************************************
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
int White;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
DrawString(450,180, "Hello, world!" , White);//文字列表示
LoadGraphScreen( 0 , 0 , "lastbosshaikei.png" , TRUE ) ;
LoadGraphScreen( 0 , 0 , "ending1.png" , TRUE ) ;
LoadGraphScreen( 0 , 0 , "ending2.png" , TRUE ) ;
WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
*******************************************************************
まるで自分が作ったみたいに書いてますが、全て丸写しです^^;
ちなみに文字と画像を表示している部分は
DrawString(450,180, "Hello, world!" , White);//文字列表示
LoadGraphScreen( 0 , 0 , "lastbosshaikei.png" , TRUE ) ;
LoadGraphScreen( 0 , 0 , "ending1.png" , TRUE ) ;
LoadGraphScreen( 0 , 0 , "ending2.png" , TRUE ) ;
だけなので、たったコレだけで画像や文字を表示出来てしまいました。しかも画像は透過処理も
されています。
で、とりあえずキャラクタを読み込んで動かせるようになろうと現在勉強中です。
しかし、私はC言語の話で良く聞くクラスとかポインタとか構造体とか全く判っていませんので
挫折する可能性大です。
エントリのタイトルが「DXライブラリを使ってみる その1」となっていますが、その2があるかは
わかりませんので、その2以降がなくてもツッコミは無しの方向でお願いします^^;
ところで、HSPとC言語の違いについて書かれていますけど、ちょっと補足しますね。
おそらくkt.さんの書かれている内容は「コンパイラ言語」と「インタプリタ言語」の違いのことかと思います。
C言語のようなコンパイラ言語は『実行前に』コンパイルを行うことでコンピューターが直接理解できる機械語形式の実行ファイルを作成するのですが、HSPのようなインタプリタ言語は『実行する段階』で逐次機械語に翻訳を行っています。
なので、本文中の英語に当たるものはC言語ではなく、機械語(マシン語)のことではないかと・・・。
(もちろんコンパイラ言語であるC言語の方が、処理速度は速いです。)
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!