1 名前:名前は開発中のものです。 [2009/03/31(火) 01:14:36 ID:IgyJcgap] Cを習得した程度のスキルでも、 GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリの詳細ついては homepage2.nifty.com/natupaji/DxLib/ を参照して頂きたい。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 過去スレ:DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/
795 名前:名前は開発中のものです。 [2009/07/28(火) 02:18:15 ID:0RhUYUoP] 股だな
796 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 05:12:13 ID:uYQPfFdp] DXライブラリPortable、次のバージョン来ないかな 3Dポリゴン描画したいです……
797 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 12:23:42 ID:YL4nqTsX] そういやDX3Dってどれくらいできたのかな?
798 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 13:20:14 ID:aQj264s2] >>797 逃げたんじゃないか? 大学中退するやつだし
799 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 19:50:25 ID:lbcOkIrb] DX3DってD3DXと紛らわしいな。 3D描画をDXライブラリみたいに単純化するのは無理。3D描画のフレームワークは D3DXで十分。それ以上やるとライブラリの独自色が付く。 2DもD3DXSpriteで構わないし、ちょっと調べればテクスチャにαの付いた板ポリを D3DXで描画する方法はいくらでも出てくるけど。 DirectX6はDreamcast向け、DirectX8はXbox向けに作り直されてる訳で、そのまま でも十分行けるライブラリ。DXライブラリの最大の意義は、WinMainのすっきり感 だと思う。
800 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:50:59 ID:LTJXvZ7v] 本家の名前の紛らわしさに比べたら… DXライブラリでも使えよ!って言われて固有名詞だとは夢にも思わず なかなか存在に気付けなかった俺
801 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:52:30 ID:bkreYxYW] 3Dなんかいくら敷居を下げたところでDXライブラリしか使えないような子には扱えないよ ゲームフレームワークみたいな方向に簡単にするなら別だけども
802 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:36:50 ID:C3k1GCCB] あの・・・ 流れを断ち切った横レスなんですが、 C言語+dxlibで作ったプログラムをC++のクラスってのを使って まとめようと思い、メインループを書いてみたんですが、 書き方があっているのかすごく不安なのでお聞きしたいと思いました。 もし、スレチならいいスレ教えて・・・ よし!見せてみろ!ならソース張る。
803 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:37:39 ID:lZJGMEL/] DXライブラリに親でも殺されたのか
804 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:43:58 ID:LTJXvZ7v] >>802 ヨシみせてみろ
805 名前:802 mailto:sage [2009/07/28(火) 21:52:18 ID:C3k1GCCB] ワーイ ID GCCってw #include "GV.h" int WINAPI WinMain( HINSTANCE hI,HINSTANCE hP, LPSTR lpC,int nC ) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; //↓このあたりがめっちゃ不安なのですが。 Flame* T = new Flame; // SetDrawScreen(DX_SCREEN_BACK); //MainLoop()内で処理を書いてます while(!(ProcessMessage()) && !(CheckHitKey(KEY_INPUT_ESCAPE)) && (T -> MainLoop()) && !(ScreenFlip()) && !(ClsDrawScreen())); // DxLib_End(); return 0; } ヘッダファイルも見てもらえるのなら・・・・☆彡ってレスしてくらさい
806 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:00:28 ID:bkreYxYW] それだけならそんなにおかしいところはないと思う 細かいどうでもいいことを突っ込ませてもらうと, FlameじゃなくてFrame あと大文字一字の変数名はやめてくれ紛らわしい
807 名前:801 mailto:sage [2009/07/28(火) 22:09:21 ID:C3k1GCCB] フレイム・・・フレーム・・・ 一文字違いが大違いでした・・・ 参考にした本(セガ本?)にそういう記述があったのでつい (Tの件は) T* <=この変数を使う場合 T->A T->B とか、 for(int i=0;i<1000;i++){ T-> X[i] } みたいに変数の中身をwhileの中で更新しまくっても問題ないですか?
808 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:10:29 ID:YL4nqTsX] ゲームプログラマーになる前に〜ってタイトルの本か
809 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:14:47 ID:C3k1GCCB] そうです。 ちなみに2章を読み始めてから進まないまま二ヶ月目
810 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:16:24 ID:bkreYxYW] >>807 ダメダメ それならCの構造体と変わらない クラスの外からメンバ変数にアクセスするのは避ける クラスっていうのは,外からはボタンを押すだけで中で勝手に処理してくれる 便利な機械みたいな感じ(そういう風に作るのが理想)
811 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:19:08 ID:TfpzHMPf] 先にEffectiveC++とデザインパターンの本読むべき
812 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:26:10 ID:bkreYxYW] クラスを利用したこともないのにいきなり作れるわけがない ためしに他の人が作ったC++のクラスライブラリを触ってみればいいんじゃない ゲームエンジンならSeleneとか 英語大丈夫ならIrrlichtなんかも簡潔でおすすめ どういう風にクラスを使えばいいのかわかるよ
813 名前:802 mailto:sage [2009/07/28(火) 22:29:42 ID:C3k1GCCB] なるほど。。 本高い・・・。 すでに 14才から・・・、 OS自作・・・ やさしいC・・・ よくわかるC・・・ IP! Cプログラミング講座、 アルゴリズムマニアックス、 はじめてのアルゴリズム入門、 とかの本を買っては進めないところがあって止まるを繰り返してもう資金が・・・ 来月余裕があったら買ってみます。
814 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:31:58 ID:TfpzHMPf] 買う前に一冊読みきれwww それか図書館だな
815 名前:801 mailto:sage [2009/07/28(火) 22:35:44 ID:C3k1GCCB] これだけ本読んだらもしかしたらオレゲーム作れるんじゃね? と勘違いして作り始めたのさ! もう・・・タイムリミットがちかずいている・・・・・・ やつが・・・・来る!
816 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:36:54 ID:LTJXvZ7v] マクドに注文する側がバイトのシフトとかパンズの在庫を気にしちゃ駄目だぜ
817 名前:802 mailto:sage [2009/07/28(火) 22:41:24 ID:C3k1GCCB] >>815 そういうことなのか! なんかよくわかった気がしました。 クラスの中で処理を完結すればいい感じになれるってことですね♪ アレ?ッてことは今書いるプログラムは・・・・
818 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:50:21 ID:lbcOkIrb] スタックフレームとヒープとスタティック領域が分かってないとC/C++は辛い。 どっかに親切な解説ねーかな。ここじゃ正直めんどい。 とりあえず今から風呂→ネトゲでギルド潜りするんで、一分でそれっぽいとこ探して おいた。 ttp://gihyo.jp/dev/serial/01/antique_assembler 初心者に分かるかはシラネ。でもこれが分かればCのメモリでつまづくことはたぶん 無くなりそうな記事に見えた。15秒くらいしか読んでないけど。
819 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:55:24 ID:lbcOkIrb] すまん、面白そうなんで↑の記事をちょっと読んでみたが、初心者でWindows環境だと 素直に読めるもんじゃないかも。 ある程度「ふんふんそんなもんか」って飛ばし読みするには悪くないとは思うけど、 真面目にサンプルコードを走らせたりするタイプだと微妙にきつそう。
820 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:57:31 ID:bkreYxYW] あんまり低レベルなことは気にしなくていいと思うよ オブジェクト指向をちゃんとやりたかったらJavaのような 思いっきり抽象的な世界でリフレッシュした方がいいかもしれない ゲーム作るのだって簡単
821 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:58:28 ID:C3k1GCCB] えっと・・・ 関数を呼び出したときには元の場所に帰ってくるための情報が どこかよくわからないない場所に スタックの構造をした形でつまれているんだよ、ってこと?
822 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:11:05 ID:lZJGMEL/] しかしゲームを作るのにそれほど必要ない知識なのであった
823 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:14:09 ID:C3k1GCCB] java・・・・ とりあえずおいらゲームを作って見るよ! クラスの中でクラスを宣言したりnewする方法がまったく理解出来ないけど。 時間切れなので・・・ノシ ご指導ありがとうございました!
824 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:29:31 ID:0RhUYUoP] さて、そろそろD言語に手を出そうか…
825 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:32:38 ID:LTJXvZ7v] そして一向にゲームが完成しない罠 勉強もいいけど取り敢えずサクッと作った方がよいかも
826 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:40:38 ID:gMpP2gLw] 上から降ってくる「モノ」を、ただひたすら画面下部で避けるだけのゲームとか、そういうの?
827 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:45:05 ID:C3k1GCCB] あら?? ニコニコ動画にうpしたのならあるけど・・・・ それよりヘッダファイル見る?
828 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:53:41 ID:KFmBMjPZ] 見てあげないこともない
829 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:07:48 ID:6Y8+8XuP] ttp://www.nicovideo.jp/watch/sm7736340 とりあえず張ってみる。 これ以上スレすると荒らしになってしまいそうな気ガスる
830 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:22:10 ID:sFXJxN65] つーか、やろうとしてることから考えると、ちゃんとメモリの意味が分かってないと トンチンカンになる。 余計なことやろうとせず、意味の分かってる仕様だけ使っていればいい。いわゆる better CとしてのC++。newとか罠満載なものにやたらと触らない。
831 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:37:52 ID:1WJmBm/8] 俺は昔アセンブラかじったことあったからメモリの意味はある程度わかってるつもりだったが、 最近までポインタが理解できずに使えなかった……。 どっかのサイトで「int *p」は「int* p」だって書いてあるのを読んでやっと少しだけわかった気がした。 「なんで *p で宣言してるのに使うのは p なんだ???」とずっと疑問だった。 Cって俺にはわかりづら過ぎる……。わかる奴凄い。
832 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:46:49 ID:e3ckjdq+] >>831 68系のアセンブラを知っていればポインタを知っているとおもう。 ここを読んでみなさい。C++について詳しく解説してある。 www.asahi-net.or.jp/~yf8k-kbys/
833 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 02:17:12 ID:IM9p+Dbm] ポインタなんて最初あまり分からずに大分年月経ったらやっと分かり始めた いろいろ試行錯誤とか苦労しないと分からないのでは 話変わるがちょっと上のレスに関連することだが俺結構メンバ公開にして外からアクセスしてた 何かアクセサ使うとその分遅くなるような気がしてしまうんだよなあ
834 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 04:42:03 ID:sFXJxN65] ぶっちゃけアセンブラが分かってれば、ソフトウェアレベルの出来事なら一番下の構造 から透けて見えるから、ポインタなんかは概念も挙動も一発で飲み込める。 下の構造が見えないと、どんな処理が速いとか遅いとか効率いいとか悪いとかは経験の 繰り返しで飲み込むしか無いけど、下から見えていれば論理的に自然に飲み込める。 だが、アセンブラを理解する段階での苦労が大きいし、今のご時世でどんだけ報われる かは自信ないからお勧めもしない。 とは言っても、昔は「まずアセンブラで」とか「BASICかアセンブラしか開発環境は ありません」とかが普通だったから、そこまで難しいもんでも何でもないけどな。
835 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 05:06:48 ID:KJv9oy2N] アセンブリ言語自体はそらもう単純なもんだからな ただ今のプログラミング環境に慣れ親しんでると、ちょっとした事すら書くのが面倒ってだけで
836 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 06:22:35 ID:gEGcx4CR] newとかdeleteとか 必要性がよくわからなくて結局殆ど使っていない。 使った方がカッコいいんだろうけど
837 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 07:15:08 ID:cb/+Lg0n] 動的に確保するときだけ使ってる
838 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 09:17:36 ID:IM9p+Dbm] 俺も必要性よく分らなかった時は使わずにやってた 使い方覚えたら結構便利だ すぐでなくともそのうち覚えればいいんじゃないか
839 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 10:34:12 ID:jVZkfrqg] 使わないでなんとかできてると 覚えようとしないんだよなぁ……。 プログラム言語の解説サイトとかで命令の説明とかはいくらでも読めるけど、 「ゲームを作る際にこうやって使ったら便利!」とかまで書いてある事ないじゃん? だから「ふーん」で終わっちゃうんだよね……。 いや俺が不勉強なのはわかってるんだが。
840 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 10:40:16 ID:p52lIH/W] 必要になったときに学ばないと覚えないんだよなぁ…… ポインタもメモリの確保もよく分からなかったけど、 一度必要になってから調べなおしたら結構使いこなせるようになった
841 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 11:05:54 ID:IM9p+Dbm] 俺もテンプレート使う気なかったけどある時どうしても使う必要に駆られて使ってみたらすんなりいって便利だったなあ まあ使わないでいけるんならいいんじゃまいか
842 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 11:45:25 ID:oi3ivzjY] C++は文法習得〜良いコーディングの間が長すぎる いろいろ覚えるとC++のほうがゲーム作りやすく感じるんだけどな
843 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:08:33 ID:B4ng0Zvn] Javaだと手軽にクラス使えるから結構細かいこともクラス使って実装したりするけど C++はクラスが使いにくくて返って面倒になったりするからつい細かいことはC風に書いてしまう
844 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:15:13 ID:tcSJ+b5u] STLはすげー便利
845 名前:843 mailto:sage [2009/07/29(水) 13:17:37 ID:B4ng0Zvn] いや出来合いのクラスを使うのはいいんだけど 作るのがめんどくさいんだよね
846 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:47:45 ID:IM9p+Dbm] そもそもJavaはクラス使わずに書けないのでは
847 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 13:54:50 ID:B4ng0Zvn] そりゃもちろんそうだけど,「すべての変数や関数がクラス内に収められている必要がある」 というだけのことであって,クラスを単なる名前空間と考えるならCと変わらん クラス使ったからってオブジェクト指向になるわけじゃない
848 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:11:50 ID:p52lIH/W] まあ、intだってクラスだし、C++は設計的に変数は全部クラスっちゃクラス さまざまな動きするものをまとめて管理するにはクラス使う方がラクだと思う シューティングの弾とかRPGのNPCとか。 というか俺はクラス使った半オブジェクト指向でしかゲーム作れなかったりする
849 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:20:10 ID:gEGcx4CR] JAVAでひとつのクラスの中に全ての処理を 手続き型で書いちゃうプログラマを思い出した。
850 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:22:40 ID:mG6Pind/] ああ、俺がやりそうだな、そういう事。
851 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 14:53:37 ID:KJv9oy2N] >>848 >まあ、intだってクラスだし おいおいそれはJavaの事を言ってるんだろうな? C++でのintはコンストラクタもデストラクタも持たないPODだが
852 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:03:26 ID:cAIJJmev] Javaのintはプリミティブ・・・
853 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:05:31 ID:KJv9oy2N] >>852 すまん Javaの事>Javaのintegerクラスの事 で
854 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:05:32 ID:B4ng0Zvn] Javaでもintはクラスではなくプリミティブな値型 むしろJavaのほうがクラスとプリミティブ型の間に明確な振る舞いの違いがある intをクラスの一種(正しくは構造体)として扱うのは.NETだな(C#やVB.NET)
855 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:09:10 ID:cAIJJmev] Rubyもね
856 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 15:12:55 ID:p52lIH/W] あれ?違ったっけ? と思ったら C++では「intにもコンストラクタとデストラクタがある」ってのを間違えて覚えてたみたい…… 恥ずかしい///
857 名前:名前は開発中のものです。 [2009/07/29(水) 18:42:39 ID:PJW2UirX] >>826 俺、それさえも途中で投げたんだが
858 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 19:09:50 ID:QQ6cQOKX] >>857 まてまてまて。流石にそれは話にならんぞ。 料理が出来ないって人に、 「出汁とかその辺無視してもいいから、とりあえずお味噌汁から作ってみようか」 ってアドバイスして、無理って言われたようなもの。
859 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:04:55 ID:DQFan6Z4] 教えて偉い人 爆発とか衝撃波みたいなエフェクトを管理するクラスを作ったのよ メンバ的にはコンストラクタとデストラクタと描画中かどうかのフラグ管理と実際に描画する関数といった具合 コンストラクタでエフェクト用の画像をメモリに読み込んでるんだけど このクラスのオブジェクトを作る度にロードされるのが気持ち悪くてしかたない 画像リソースを読むところだけ外に出せないだろうか
860 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:14:58 ID:p52lIH/W] 前もって画像を読んでおいて、そのグラフィックハンドルを コンストラクタでクラス内の変数に代入すればいいんじゃないの? グラフィックハンドルってただの数値だし
861 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:29:24 ID:RdHjB4sC] クラスAのコンストラクタで画像を読んで、 クラスBのコンストラクタでそのグラフィックハンドルを得るようにした場合、 どちらのコンストラクタが先に呼び出されるか分かりませんが問題ないですか
862 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:33:36 ID:tcSJ+b5u] その場合クラスAは動的に確保しとくべきじゃないの
863 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 20:49:35 ID:vU/WuoP5] // あらかじめ画像を読み込んでおく Image *image = new Image("effect.png"); // 複数のインスタンスでハンドルを使いまわす Effect *explode1 = new Effect(image->handle); Effect *explode2 = new Effect(image->handle);
864 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 21:21:10 ID:sFXJxN65] どこでdeleteするんだ?
865 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 21:31:15 ID:cAIJJmev] 画像管理するクラス作っておいて以前ロードしたものと同じものがあったらそれ使いまわす
866 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 22:04:56 ID:oi3ivzjY] shared_ptrで画像を共有する
867 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 23:32:20 ID:IM9p+Dbm] 画像管理クラスなんて態々作らずメイン処理のクラスにハンドル持たしてるわ俺 そっからオブジェクトクラスに渡すのはそのハンドルのポインタにしてる そうすれば途中でウィン→フルに変えるときとかもそのメインの画像読み込みメソッド呼び直すだけで済む
868 名前:名前は開発中のものです。 [2009/07/30(木) 12:04:22 ID:OvoMaJfI] ハンドラをスタティックにしちゃだめなのか?
869 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 12:18:43 ID:OvoMaJfI] 上げちまったすまね むしろグローバルでハンドラを作れってことか 再利用性が皆無になるが
870 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 13:34:41 ID:9rAtPdyT] コンストラクタで画像を読み込み+デストラクタで開放するだけのクラスImageを そのステージで必要ならshared_ptrで読み込む エフェクトを実際に使う箇所ではそのshared_ptrをコピーして使う ステージを通して読み込みは1回だけで、コピーもshared_ptrのコピーだけですむから軽い しかもステージが終わったら勝手に安全に開放される 何よりコードがすごい簡単で見やすくなる ってじっちゃがいってたけど、俺GUIのゲームまだ作ったこと無いからわからねーわ
871 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:13:59 ID:650NzX62] >>870 とかを見るとさらに、 class ImagePool : noncopyable { typedef shared_ptr<Image> ImageSP; typedef unordered_map< wstring, ImageSP > ImageHash; ImageHash ih_; public: ImageSP get( wstring name ) { ImageHash::iterator it = ih_.find(name); if ( it == ImageHash.end() ) { it = ( ih_.insert( make_pair( name, ImageSP( new Image(name) ) ) ) ).first; } return it->second; } void clear() { ih_.clear(); } }; みたいな感じのも書きたくなるな。パフォーマンスどうなるかはシラネ。
872 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:20:25 ID:650NzX62] ああ、もちろんステージの頭で必要そうなイメージはget()しまくっておくんだけどな。 ステージ始まってるのにいちいち止まってたらうぜーし。
873 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:20:35 ID:hh3V9W8K] どうせステージ読み込むときに何回か呼ぶだけだろ そんなもんにパフォーマンスもクソもあるかよ
874 名前:名前は開発中のものです。 mailto:sage [2009/07/30(木) 22:24:47 ID:650NzX62] 参照時のパフォーマンスだぜ まぁhash検索のとこが重いだけだから、何度も何度も何度も何度もshared_ptr拾い直す ようなアホなことをしなきゃ問題無いだろうけど つーかぶっちゃけ超絶やっつけだから先に言い訳で書いた>パフォ
875 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:00:04 ID:QXWHJ91E] class effect { private: int x,y,kasokudo,flag,type,r,g,b,xt,yt; int static swgraph,slgraph,slgraph2,slgraph3,vcgraph,ptgraph,ptgraph2; double angle,timer,spread; public: effect(){} Load_resorce() (中略) ~effect(){} }; int effect::swgraph=0; int effect::slgraph=0; int effect::slgraph2=0; int effect::slgraph3=0; int effect::vcgraph=0; int effect::ptgraph=0; int effect::ptgraph2=0; 結局こんな解決に落ち着いたよ ありがとう 無理に外へ出さないでヘッダと画像ファイルだけ移植すれば使いまわせる方がいいかなと 画像ロードするメソッドを1回だけ呼ぶようにしてスタティックなハンドラへぬっこむ感じで
876 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:00:25 ID:Qfg9axiN] ウィンドウとフルスクリーンの切り替えって、設定と読み込んだもの全部どこかに記録しておいて、切り替えた後に読み直さないといけないの?
877 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:02:27 ID:QXWHJ91E] メモリに読み込んでたものは切り替えで開放しちゃうんじゃなかったっけ? 呼びなおすようにはしてる
878 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:09:47 ID:hsxXyy+h] 画像の情報とハンドルをラップするクラスを作るのがスマートかなあ でもそういうことしだすと何のためにDXライブラリ使ってるのかいまいち分からなくなってくる どうせラップするんだから中身は別に複雑でもいいよねみたいな
879 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 14:37:35 ID:fM5CMo54] グラフィックを読み込む処理はひとまとめにしてる。 グラフィックを読み込んだ時にエラーだと-1が返ってくるそうだから、 グラフィックハンドルに-1はありえないって事で 各グラフィックハンドルの初期値は-1にしておいて、 -1でないやつだけを読み直すとかやってるな。
880 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 17:19:13 ID:Qfg9axiN] ProcessMessageの返すエラーと×印を押した時の終了メッセージを見分ける方法 あるいは、右上の×印をクリックできないようにする方法はありますかね?
881 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:11:57 ID:XBQ0j9Rg] ×をクリックできないようにするのはあまりよろしくないんじゃないか
882 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:13:18 ID:fM5CMo54] クリックできなくさせる事になんの意味があるのかわからん。
883 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:23:08 ID:XBQ0j9Rg] 閉じるボタンは GetWindowUserCloseFlag で取得できるかも
884 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:23:30 ID:M1rtP1+j] hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=658
885 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:31:27 ID:Qfg9axiN] サンクス なんとかなりそうです
886 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 18:49:30 ID:XBQ0j9Rg] >>884 真面目に読んでて途中からワロタ
887 名前:名前は開発中のものです。 mailto:sage [2009/08/01(土) 22:58:32 ID:Qfg9axiN] GetWindowUserCloseFlagってエラーが起こった時の返り値ってわかりますか?
888 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 04:05:26 ID:ioGay+hN] エラーって?
889 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 13:21:29 ID:raZxXOJp] >>888 だいたいほかの関数だと成功:0、エラー:-1を返してるじゃないですか? そいうのがこれにも無いのかなとおもって
890 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 15:42:36 ID:kM+dLyLX] TRUEかFALSEか取得して返すのにエラーが出るとは思えないけど。 でも一応DxLibは関数の共通規約が-1=エラーぽいから-1だけ特別扱いでいいと思うよ
891 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 15:47:58 ID:VhKHrAIb] エラーが起きない関数だってあるんだから、余計な処理はしなくていい。
892 名前:名前は開発中のものです。 mailto:sage [2009/08/02(日) 18:18:51 ID:kM+dLyLX] GetWindowUserCloseFlagってエラー起きないの? ドキュメントに載ってない関数だから知らないんだけど ソース見る気はしないし
893 名前:名前は開発中のものです。 mailto:sage [2009/08/03(月) 13:33:57 ID:Bkg1TOoK] 暗号化した画像ファイルからDrawGraphで描画するまでの手順って ファイルから読み込み複合化した色情報を配列にセット →MakeARGB8ColorSoftImageなどでSoftImageのメモリ確保 →DrawPixelSoftImageなどで配列からSoftImageに書き込む →CreateGraphFromSoftImageなどでグラフィックハンドルを作成 →DeleteSoftImageでメモリ開放 →DrawGraphとかで描画 でおk?
894 名前:名前は開発中のものです。 mailto:sage [2009/08/03(月) 18:31:28 ID:Iq3WkgiH] 自分も用意したフォントが使いたくなったので>>757 の方法を試してみたんだけど、 開放に成功しないんだよなぁ…… 仕様上プログラムが終了すると開放されるみたいだし、大丈夫なのかなコレ
895 名前:894 mailto:sage [2009/08/03(月) 18:43:55 ID:Iq3WkgiH] うわー引数ミスってただけでした…… こめんなさい
896 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 01:23:43 ID:zuu4zu8S] おまいら名前空間ってどうしてる? 微妙にグローバルなのが邪魔くさいんだが、Dxライブラリのソースをまるっと書き換えるしかない?
897 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 01:44:29 ID:HZG+0EA+] WIN98前後にプログラミングやってみたくなって、 とりあえずCだけ独学してすぐにDirectX見て 挫折した自分には今更ながら、ピッタリじゃないか。 実際の所はオブジェクトで書いていけないと、ツラいの?
898 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 02:36:14 ID:I3xbLsIe] さぁ? 俺はオブジェクトが何かも知らないが DXライブラリのおかげでゲームは作れてる。
899 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 03:09:27 ID:2NLtwfy5] main.cppとヘッダファイルだけでゲーム作ってる俺もいるし
900 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 06:22:55 ID:6mk+vC8F] >>897 あると便利
901 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 07:58:54 ID:jjYfmP92] 何か途中でフル⇔ウィンドウ変えれるようにしたらフルにした時に画面がチラつくんだが 画像を読み直すだけでは駄目なのか
902 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 08:02:04 ID:jjYfmP92] と思ったら事故解決した SetDrawScreen( DX_SCREEN_BACK ) ;死直さないと駄目なのか
903 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 10:32:21 ID:sPOvaCTT] >>897 ちょっと勉強すればいいだけのことを避けて ずいぶんと無駄に自分の幅を狭めてると思わない?
904 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 17:23:09 ID:gMr+p3zp] みんなDxLibのラッパークラスとか作っちゃったりするの?
905 名前:名前は開発中のものです。 mailto:sagw [2009/08/04(火) 17:27:28 ID:xk/uaGqe] >>904 ラッパーというか、あのまんまじゃゲーム作りに面倒だから、 あれにもうちょっと色々と処理類を追加して、作りやすくはしてる。
906 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 17:27:59 ID:zuu4zu8S] ラッパを作らずに、ゲームを作れるのだろうか。
907 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 19:53:27 ID:sPOvaCTT] device->DrawImage((Image*)image); みたいな? さすがにこんなラッパーが必要になるようなら他のC++用のライブラリ使った方がいいと思うよ
908 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:01:54 ID:vP8Ikyop] ゲームなんてラッパみたいなもんだ
909 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:43:25 ID:ODeu4gp1] そんなことせんでもゲーム作れるようにするのがDXライブラリが目指す所だと思うし
910 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 20:48:39 ID:YerTetmP] そんなことしたいならDirectX覚えろっていう
911 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 21:06:21 ID:nYiQO+FG] 併!用!
912 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 22:48:47 ID:tCn5IwcP] 誰がラップ歌えと。
913 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 22:57:08 ID:ODeu4gp1] >>912 のお陰でやっと気付いた
914 名前:名前は開発中のものです。 mailto:sage [2009/08/04(火) 23:06:20 ID:l5hPySed] うまいな
915 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 00:19:33 ID:SP3G2Rzn] >>911 は、その才能を別のところに生かすべきだったと思う ところで、あえてゲームのジャンルを指定せずに聞くが ChangeFontType( この辺とか ) ; ChangeFont( "この辺て" ) ; 何入れてる? ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE ) ; ChangeFont( "MS P明朝" ) ; とかだと、どうにも汚い メイリオとかオーサカつかえりゃいいんだろうけど
916 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 01:41:03 ID:6IxCn2Gg] 640x480のwindowモードで1秒に60回メインループを回してClearDrawScreenとScreenFlipするだけのプログラム 書いたらCPU使用率が20%超えてるんだけどこんなもん?WaitTimer(10);は入れてます。
917 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 02:13:38 ID:tpv/Q7sN] >>915 >>757 使ってBDF M+やVL Gothic使うと汚くはないしライセンス的なものもきれいで好きです
918 名前:名前は開発中のものです。 mailto:sagw [2009/08/05(水) 02:27:07 ID:uKOy3PVl] >>916 そんなものじゃない?自分の環境でも、だいたい20%前後で推移してるし。 ScreenFlipには、アイドリングループもやってるような事を>>70-95 当りに書いてるし きっと大体そんな感触。 だから、多少負荷を掛けたループを入れても、いきなり100%とかにはならないし。
919 名前:名前は開発中のものです。 [2009/08/05(水) 05:21:50 ID:Nty2bj+r] A:あるXというパソゲーがあったとして、そのゲームをDXライブラリで再現したとしたら どっちの方が処理速度が速い? 管:それはおそらくオリジナルのゲームになるでしょう。 しかしそれは仕方ありません。DXライブラリは DirectX を意識しないでプログラムを 組めるように出来ているので、どうしても DirectX を意識して、DirectX にとって最適な 方法を念頭にいれて作られたソフトには敵いません。 ですが、それは DirectX と密接に関わらないと出来ない表現や処理が出きるか出来 ないか程度の違いで、処理速度的には目を凝らさない限りわからない程の差だと 思います。 これみて思ったが前に hot スープ なんとかってベーシックみたいなやつ使ったことあるけど あの処理の遅さには萎えた
920 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 06:49:21 ID:pLHczCar] HSPのことかあああああああああ
921 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 07:07:46 ID:m9BmQxuD] そもそも比較対象とするほうがおかしくないか。
922 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 07:11:20 ID:b5+ghAk/] HSPはインタプリタだし 過去にGameMaker使ってた俺はC++に乗り換えて処理の早さに感動した 弾10000個出しても一切処理落ちなしとか
923 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 09:28:27 ID:6IxCn2Gg] 家庭用ゲーム機ってCPU使用率どのくらいなの
924 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 09:35:09 ID:b5+ghAk/] >>923 ゲームによる PS2の後期作品は常に100%近いものも多いと思う
925 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 10:03:45 ID:BDIkZ1Lk] メイリオはXPならダウンロード可能になってるから、 ・XP以上でやれ ・メイリオ自分で落とせ と割り切った動作環境なら使えなくもない まぁ、そこまでするより>>917 がベターな気はする
926 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 13:28:59 ID:rAOud/k3] >>919 初期化に関してはDXライブラリの方が遅い なぜなら使わない機能まで実装してしまうから 初期化のプロセスさえ我慢してしまえば、DirectXを使っている以上、ほとんど処理に差は出ない
927 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 13:40:07 ID:b5+ghAk/] 初期化も他のライブラリに比べればかなり早くないか? 初期化→モデル読み込み→表示ってプログラム組んでるけど 起動から表示まで1秒も掛からないぞ
928 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 16:15:24 ID:OhVzEwVo] え?
929 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 20:39:22 ID:QIPk2n9v] クライアントがウィンドウのタイトルバーをつかむとかして処理が停止したことを判別する方法はある?
930 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 21:20:02 ID:5Y+5L7IB] アクティブかどうか判定する関数があったような
931 名前:名前は開発中のものです。 mailto:sage [2009/08/05(水) 21:57:12 ID:tpv/Q7sN] >>929 もし直接DxLibのAPIになかったとしても、 最悪隠れAPIのSetHookWinProcを使っていけちゃうのであきらめずに頑張ってください
932 名前:名前は開発中のものです。 mailto:sage [2009/08/06(木) 00:09:50 ID:HbTQ3knb] フルスクリーンにすればいいのに
933 名前:名前は開発中のものです。 mailto:sage [2009/08/06(木) 00:17:40 ID:jDGBXq4e] フルスクリーン・ウィンドウの切り替え時って画像はDeleteGraphする必要なし? >>932 でもやっぱウィンドウのほうがやりやすいゲームとかあるよ