忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[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!"を表示させてみました↓
s-WS000122.jpg
画像は適当な画像を読み込ませて表示させています。

プログラムとしてはこんな感じ↓
*****************************************************************************
#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以降がなくてもツッコミは無しの方向でお願いします^^;

PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
おおっ!
遂にkt.さんもC言語+DXライブラリに手を出されたのですね。ちなみに僕も「C言語何でも質問サイト」のサンプルをかなり参考にさせて貰ってます。分かりやすいですよね。

ところで、HSPとC言語の違いについて書かれていますけど、ちょっと補足しますね。
おそらくkt.さんの書かれている内容は「コンパイラ言語」と「インタプリタ言語」の違いのことかと思います。
C言語のようなコンパイラ言語は『実行前に』コンパイルを行うことでコンピューターが直接理解できる機械語形式の実行ファイルを作成するのですが、HSPのようなインタプリタ言語は『実行する段階』で逐次機械語に翻訳を行っています。
なので、本文中の英語に当たるものはC言語ではなく、機械語(マシン語)のことではないかと・・・。
(もちろんコンパイラ言語であるC言語の方が、処理速度は速いです。)
モイモイ URL 2008/10/26(Sun)01:37:51 編集
無題
いよいよC言語に突入ですね。
ぜひ作品が完成するようがんばってください。
う〜ん、感化されて何か作ってみたくなるなぁ。
keigo URL 2008/10/26(Sun)02:12:48 編集
無題
「C++でSTGを作っていくblog」になるかもしれませんねw
私は昔にVisualC++5をいじって、その頃はゲーム用のライブラリの存在を
知らなかったので、簡単なプログラムだけで挫折して、HSPに乗り換え、今に至りますが
記事を読んでいて、またチャレンジしたくなってきました。 今はコンパイラも無料なんですね
NONAME 2008/10/26(Sun)02:40:04 編集
無題
モイモイさん>
丁寧な解説有難うございますm(_ _)m
ちょっと私は勘違いしていたみたいですね^^;
でもC言語の方が処理は早いみたいなので、とりあえずサンプルプログラムを作るところまでは頑張ってみます。

keigoさん>
作品が作れる所まで行ければ良いですが、どうなることやら^^;
keigoさんも是非。

NONAMEさん>
C++でSTGを作っていくblogになる可能性はありますね^^;
でもHSPを勉強してなければ、C言語何でも質問サイトの解説を見てもあまり理解できなかったと思うので、かなり役にはたっています。
まぁ、今後挫折する可能性もおおいにあるのですが(汗)
kt. 2008/10/26(Sun)12:06:57 編集
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
04 2024/05 06
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 31
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]