- ベストアンサー
C# ゲーム作成 FPSと描画処理に関して
環境はVisualStudioC#Expressを使っています。 今回動きのあるゲームを作ろうと思ったのですが、 最も基本となるFPSの処理と再描画の処理が理解できません・・・。 簡単な動きのないアプリケーションくらいしか作れない程度のレベルなので、かなり細かいところになると分からないと思います。 プログラムだけ書かれてもどこにそれを書けばよいのか分からないほどだと思います。FPSに関してはTimerコンポーネントを使ってみたのですがうまくいきません。 そこで教えていただきたいことは、 (1)簡単なFPSのサンプルプログラム(出来れば精度とかもあるのでみなさんが普通にゲームに使っているようなものを) (2)簡単な再描画処理のサンプルプログラム (3)C#ゲーム作成にオススメなサイトや本 出来ればVisualStudio前提の説明だとありがたいです。 とりあえず球が『60FPSで動き、画面も再描画される』ことが目的です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>DirectXを使ったほうが簡単ならば是非使いたいと思います。 2Dと3Dのどちらもアクションやシューティングを作るならDirectXを活用しないと速度的に辛いですよ。SFCのドラクエ程度のゲームとかADVなら、WindowsAPIで作れないことは無いですけど。 それと球を画面に描画したいと書かれていたので、sha-girlさんはDirectXを紹介したのです。球はbmpで書かれているデータでしょうか?それとも単なる円の間違い? FPSとDirectXの参考サイト↓ http://www.clks.jp/csg/ http://kadankai.hp.infoseek.co.jp/html/shiraishiakira/csmdx_index.html http://www.atelier-blue.com/program/mdirectx/
その他の回答 (3)
- zwi
- ベストアンサー率56% (730/1282)
ちょっと補足を。忘れてました。「Managed DirectX 2.0」は「XNA Game Studio」に名前が変わったようです。Xbox360とWindowsのゲームがC#で共通のプラットフォームで開発できるようになりました。 数々の紹介。 http://www.saturn.dti.ne.jp/~npaka/xna/ http://ja.wikipedia.org/wiki/Microsoft_XNA http://www.watch.impress.co.jp/game/docs/20061219/3dxna.htm マイクロソフトの「XNA Game Studio」のページ。 http://www.microsoft.com/japan/msdn/xna/default.aspx http://www.microsoft.com/japan/msdn/xna/XNA_dekiru.aspx http://xna-studio.jp/ 「できるプログラミング XNA Game Studio Express」 という本は非売品でマイクロソフトに連絡すると入手できるようです。 つい数日前「XNA Game Studio 2.0」も発表されました。 http://pc.watch.impress.co.jp/docs/2007/0907/ms.htm http://pc.watch.impress.co.jp/docs/2007/0907/ms2.htm 日本では扱いがまだ少ないですが、世界的には注目されているようです。
お礼
色々な参考サイトを教えていただきありがとうございました。 一般的にみなさんが行っている方法で簡単なゲームを作りたいのでとりあえずDirectXを用いてシューティングゲームくらい作れたらいいなと思います。
- zwi
- ベストアンサー率56% (730/1282)
C#のゲームの本は、この三種類です。 http://www.amazon.co.jp/s/ref=nb_ss_/250-1388869-8241015?__mk_ja_JP=%83J%83%5E%83J%83i&initialSearch=1&url=search-alias%3Daps&field-keywords=c%23+%83Q%81%5B%83%80&Go.x=0&Go.y=0&Go=Go で、2DのDirectXの本は皆無ですね。 とりあえず、WindowsAPIの「C#ゲームプログラミング」を読んでみてはどうでしょう? C#で使えるDirectXは「Managed DirectX」と呼ばれていますが本が少ないのです。 洋書で良ければ下記の本もあります。評判も良いようです。 http://www.amazon.co.jp/Managed-Directx-Start-Graphics-Programming/dp/0672325969/ref=pd_bbs_sr_1/250-0399562-6461017?ie=UTF8&s=english-books&qid=1189331165&sr=8-1 本ではないですがマイクロソフトの「Managed DirectX」の使い方解説。 http://www.microsoft.com/japan/msdn/directx/japan/dx9/default.aspx 普通のDirectXの本はc/c++で書かれていますのでC#に自分で置き換える必要があり、そのまま使えるソースコードではありません。その点さえ気にならなければ本は多数出ています。
お礼
C++でもC#でもどちらでもよかったのでC++のほうが多数本が出ているというのであればC++にします。C++の参考書は『猫でも分かるゲームプログラミング』だけは持っているのですがDirectXについては全く分かっていませんでした。DirectXについて勉強したほうがよさそうですね。
- sha-girl
- ベストアンサー率52% (430/816)
FPSとはフレームパーセックの事だと思うが そもそもDirectXのアプリは固定60フレームとかで動いてるわけではなく 可変で動いてます。 (一般的に前回表示してフレームからの経過時間ミリ秒で見ます) Windowsの場合、優先順位の高い他のプロセスが高不可になれば 自アプリはCPUのリソースをとれなくなるので、そうなっています。 (最近の次世代機と呼ばれるものもそういう設計です。) DirectX SDKをダウンロードすればサンプルソースが入っていますから それを見てください。(C#用のサンプルソースも入っています。) http://www.microsoft.com/japan/msdn/directx/downloads.aspx 球ということは3Dですよね? DirectXを使わず球の表示を60fpsの速度で描画をするのは 難しいと思いますし、オブジェクト数が増えれば60fpsを維持する事は出来なくなるでしょう。 それはDirectXを使っても同じことです。
お礼
すみません3Dではなく2Dでお願いします。 「DirectXを使う」ということがよく分かっていません。プログラム中で呼び出したりして使うのでしょうか。 DirectXを使ったほうが簡単ならば是非使いたいと思います。
お礼
なるほどー、プログラム内で記述した円と画像データの違いのことだったのですか。最初はただの円でFPS処理やらが出来ているか確認して、いずれはbmp画像を使うと思います。DirectXと聞いてややこしくなりそうだったので逃げてたのですが、やはり使ったほうがよさそうですね。 今C#に関しての参考書は「VisualC#2005 逆引き500の極意」しか持っていません。何かDirectXについてオススメの参考書があったら是非教えていただきたいです。