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/
134 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 00:04:23 ID:eksjqOvu] DXライブラリの本を読んだけど、とても14歳から始めるような話じゃねーな 大学生が入門書に読んでちょうどいいレベルだろコレ
135 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 00:10:39 ID:HkJlrRjH] 14歳から始めて30歳くらいで読み終わるっていう意味じゃないかな
136 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 00:34:07 ID:m4cMSkq6] 14歳っつーと中二くらいか。 俺はBASICがせいぜいだったが、 マシン語とかやってる友人もいたし 決して無理じゃないだろう。
137 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 00:45:01 ID:NnZtX6wz] やっぱ0x14歳だったか
138 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 01:53:08 ID:OFMPoMrl] むしろ厨二がガツンとやられるための本
139 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 08:20:28 ID:6tVcbqW6] 14歳の新版(VS2008対応版)は、3章までと4章以降のレベル差がひどい。 簡単に作れるように自前ライブラリ用意してるけど そのせいでDxLib関数なのか自前関数なのかごっちゃになってるし。 間に20章ぐらい入れて10本以上ゲーム作って、本の厚さが倍になってもいいぐらい。
140 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 09:19:39 ID:nBjz8W9W] >>139 そしたら、値段も倍になるがな
141 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 10:17:56 ID:eksjqOvu] 世間一般の流れ 小学生 ゲーム遊ぶのおもしれえwww 中学生 ツクールおもしれえwww 高校生 VisualBASICとかC言語を始めるか 大学生 C++とかJAVAで2Dゲームでも作るか 20代 3Dゲーム、オンラインゲーム作るよ! 30代 何でこんな仕事を選んだんだろう…… 40代 クビになった。新しい仕事探すか…… 50代 息子よ。おれは昔、ゲーム開発をやっててなあ 60代 年金安いのう…… 70代 孫よ。わしは昔、ゲーム開発を(ry 80代 開発の仲間……もうみんなこの世におらん…… 90代 ゲーム? 何のことかいね 100代 「おじいちゃん! それはご飯じゃないよ、ゲームだよ!」 晩年 「おじいちゃんは亡くなる前に、大好きな『ハレハレユカイ』を唄っていました」
142 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 10:28:58 ID:FvUt88Xp] 大往生だな。いい人生だった
143 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 16:15:43 ID:6TTz0S/c] >30代 何でこんな仕事を選んだんだろう…… いまここ
144 名前:名前は開発中のものです。 [2009/04/28(火) 22:07:41 ID:MfOPTYG9] なんか画面のドット範囲が640×480で固定されてるんですが これいじる方法はDXライブラリには無いんですか?
145 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 22:15:25 ID:GpFUP3xe] 公式のリファレンスくらい嫁と言いたいが つSetGraphMode
146 名前:名前は開発中のものです。 [2009/04/28(火) 22:24:39 ID:MfOPTYG9] >>145 ありがとうorz すみません。ウインドウモードの項ばかり探してました
147 名前:名前は開発中のものです。 mailto:sage [2009/04/28(火) 23:44:24 ID:AAXsWLBJ] 「これいじる方法はDXライブラリには無いんですか?」って訊くくらいなら全部読めよ!
148 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 00:04:40 ID:fznxD5WL] >>143 やあ、俺
149 名前:名前は開発中のものです。 [2009/04/29(水) 00:57:49 ID:8JDzhdlg] >21歳 卒業とともに小さな会社に一人だけ入社 何でこんな仕事を選んだんだろう……相談する同僚がいない >30歳 ←いまここ 俺
150 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 12:12:40 ID:0KNrHYhz] 小学生 ゲーム好きだけどファミコン買ってもらえなかったから友達んちに通ってうざがられる 中学生 PC98買ってもらってtakeruとかでゲーム買ったりベーマガ買ってBASICで遊ぶ 高校生 女遊びでPCなんていじらない 大学生 にはならずにバイト生活。PCなんて無縁 20代 実家に帰るとWindows98とネットがあったので暇だったのでいじってみる。 ここでwebの世界やプログラミング熱再発。色々物色する。 そしてそのまま引きこもり。 30代 ←もうすぐここ
151 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 12:23:18 ID:Id8MNKk3] それは報告しなくてもいいです
152 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 13:15:43 ID:0KNrHYhz] してもいいです
153 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 14:34:34 ID:DcEbzAT6] そうですか
154 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 14:49:56 ID:eqm+L+6k] そうでづよ
155 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 15:17:03 ID:GO8Ds4lj] そうでちゅわ
156 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 19:22:33 ID:sy8jjFeI] プログラマーは35歳で引退だからな プランナーや絵描きなどで生きられるだけの資産がなければ、そのままスクラップだ ゲーム会社も高齢化が進んでて、新しい概念が作れなくなってきている
157 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 19:25:35 ID:eqm+L+6k] なぜ35なのかというと、部下ができたりしてプログラムどころじゃなくなるから。 新しい概念が作れないのはゆとりが増えたから
158 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 20:32:14 ID:2b50vk1R] それでも将来は……。
159 名前:名前は開発中のものです。 mailto:sage [2009/04/29(水) 21:37:02 ID:Dpfb2ylv] それはスレ違い
160 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 00:27:05 ID:JN4PBkev] ドラッグ&ドロップで音楽を再生したいのですが DXライブラリで実現できますでしょうか? GetDragFilePath()の使い方がいまいちわかりません。 ご教授お願い致します_ _
161 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 00:58:25 ID:qZvDrEy3] >>160 D&Dに関しては、GetDragFilePathでググって出てきたページの内容を見る限り、 この関数は毎フレーム呼び出し、戻り値はD&Dされていれば0、されていなければ-1となる。 D&Dされてたら、引数で渡したバッファにD&Dされたファイルのパスが入ってくる。 ちなみにD&Dされたファイルの個数はGetDragFileNum()で取得できる。 複数ある場合は、その数だけGetDragFilePathを呼べば1つずつファイルパスを取得できる。 ちなみにこれらは毎フレームに一度DragFileInfoClear()で初期化してから使うべき。 ただ情報が古い可能性もあるし、実際試したわけじゃないから、 今のDXライブラリでできるかどうかは知らない。
162 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 01:05:34 ID:qZvDrEy3] 読み返して気付いたが、ひどい日本語だ・・・まぁいいや
163 名前:名前は開発中のものです。 [2009/04/30(木) 01:56:07 ID:JGk3snwA] #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){ ChangeWindowMode(TRUE); SetMainWindowText("(´・ω・`)"); if(DxLib_Init() == -1 ){return -1;} int open,tdn,cc;char file[256]; SetDragFileValidFlag(TRUE);SetDrawScreen(DX_SCREEN_BACK);SetFontSize(32); while(ProcessMessage()==0){ ClearDrawScreen(); open=GetDragFilePath(file);//D&Dでファイル獲得する open:ファイル獲得が成功か失敗か判定 if(open==-1&&CheckMusic()==0)DrawFormatString(0,100,-1," なんか音楽を食わせろ!ESCキーで終了"); if(CheckMusic()==0&&cc==0){SetMainWindowText("(´・ω・`)");cc=1;} if(CheckMusic()==1)DrawFormatString(0,100,-1," 音楽を止めるのならスペースを押せ!"); if(CheckHitKey(KEY_INPUT_SPACE)==1)StopMusic(); //スペースで音楽を止める if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break; //エスケープで終了 if(open!=-1){ //ファイル獲得成功 cc=0;SetMainWindowText(file);tdn=PlayMusic(file,DX_PLAYTYPE_LOOP);} ScreenFlip();Sleep(20); //音楽ファイル以外を食わせた場合w if(tdn==-1){MessageBox(NULL,"(゚Д゚)ゴルア!"," それ再生できねーし",0x0000030);StopMusic();break;} DragFileInfoClear(); } InitSoundMem(); DxLib_End() ; return 0 ; }
164 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 02:04:43 ID:JN4PBkev] >>161-163 ありがとうございます!! >>163 さんにはサンプルまでご用意いただいて感激です! これでBGMをプレイヤーに指定させることができます。 即レス感謝!ありがとうございました!!
165 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 09:08:28 ID:QAaf0WGA] 個人的にはAPI使って、ファイル開く形式を勧めたいが……
166 名前:名前は開発中のものです。 mailto:sage [2009/04/30(木) 13:16:31 ID:Nu0gAO10] 最初からサンプル書いてくれと露骨に頼めば可愛げもあるのに。
167 名前:名前は開発中のものです。 mailto:sage [2009/05/01(金) 08:16:49 ID:OvJuayUs] 暫定的にDrawStringで文字を描いていたんだけど、 見栄えや諸々の理由で画像ファイルとして文字を作ることにした。 インストールされてるフォントを使って12x16のサイズのカタカナを ほぼそのまま描いてるんだけど、どうしてもエッジが目立っちゃう。 縁取りとか、影とか、ぼかしとか色々試したんだけど難しい。 みんなはどうやってるの?あと、デザインとか凝ったりするの?
168 名前:名前は開発中のものです。 mailto:sage [2009/05/01(金) 09:46:27 ID:g5JaOboh] >>167 その辺は、普通に。 まずは、見栄えとかよりも、完成が先だしね。 「文字 CG 講座」とか「ロゴ 制作」とかで検索すrば、やりたい事の方法が見つかると思う。
169 名前:名前は開発中のものです。 mailto:sage [2009/05/01(金) 10:22:40 ID:SX1l7Niw] なんの為の文字かってのにもよるだろうけど、 セリフとかそんなヤツなら、何も工夫せずにそのままDrawStringで表示してる。 >デザインとか凝ったりするの? デザインが大事なのは理解してるが、センスが壊滅的なので あきらめて最低限で済ませてる。
170 名前:名前は開発中のものです。 mailto:sage [2009/05/01(金) 14:38:00 ID:OvJuayUs] >>168-169 ありがとう。俺もデザインが壊滅的です。 しょぼ画像で今まで普通にやって来たんだけど、 先日ゲーセンで業務用のゲームを見たのがいけなかったw 最近はフォントを一文字ずつ手打ちでドット修正して、 気付いたら4、5時間経ってて結局上手くいかなかったとかあって。 まあでも、「この方法では出来ない」っていうのが少し分かったのは収穫だけどw ゲーム作るのってやっぱり色々な知識が必要だね。
171 名前:名前は開発中のものです。 mailto:sage [2009/05/01(金) 21:45:00 ID:n+u5dqvm] その試行錯誤が楽しくもあり面倒くさくもあり
172 名前:名前は開発中のものです。 mailto:sage [2009/05/02(土) 08:08:52 ID:Sn/Kauil] ロゴはなぁ… それで飯食っている奴がいるくらいだから奥が深いよな。 フォントの選定とか字間とか決めるだけでも大変。
173 名前:名前は開発中のものです。 mailto:sage [2009/05/02(土) 13:50:47 ID:BkuXnv3v] 英数字だけ程度ならフォトショとかで作るけど、 台詞に使って日本語漢字とかまでなるとやってられないから普通に既存フォントのでやってるな。 フリーのフォントいくらでもあるから、それ使えばいいんじゃないか? テキストに文字書いておけば、指定フォントのを画像ファイルにして出力するソフトなかったっけか。
174 名前:名前は開発中のものです。 mailto:sage [2009/05/02(土) 14:40:37 ID:M7HWaCGQ] 2009/5/1更新 2.25b
175 名前:名前は開発中のものです。 mailto:sage [2009/05/04(月) 16:41:52 ID:FkdRsV2L] ちょいと質問です。 SetAlwaysRunFlagで非アクティブでも処理を実行し続けるようにして アクティブ時はCPU使用率15〜20%ぐらいでスムーズに動いてるけど 非アクティブ時は、CPU使用率が0近くになってしまいます。 処理もカクカクになってしまうのですが、 どうにも原因や解決法について手詰まりになってしまったので 何かアドバイスをいただけませんでしょうか?
176 名前:名前は開発中のものです。 mailto:sage [2009/05/04(月) 16:47:43 ID:dGZpGfbH] >>175 これが参考になるかも ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1224
177 名前:名前は開発中のものです。 mailto:sage [2009/05/04(月) 17:21:31 ID:FkdRsV2L] >>176 Σ (゚Д゚;)うおー解決したー!! DXライブラリ自体の仕様的問題だったとは・・・ ありがとうございましたー
178 名前:名前は開発中のものです。 mailto:sage [2009/05/05(火) 23:39:46 ID:klIXgzed] GetRandを使って1回だけ乱数を取得するってどうやるの?
179 名前:名前は開発中のものです。 mailto:sage [2009/05/06(水) 01:59:46 ID:36dZu90f] 意味がわからないけど、一回だけGetRandすればいい……って事じゃないの?
180 名前:名前は開発中のものです。 mailto:sage [2009/05/07(木) 01:34:26 ID:cIvk0VJg] do while文使うとループ処理終わらないんだけど俺だけ? どんな簡単な条件でもだめ whileは全然問題なし、仕方ないからfor文で代用した
181 名前:名前は開発中のものです。 mailto:sage [2009/05/07(木) 01:39:44 ID:AtAjM9gE] 環境とかソース示してくれない事にはなんともいえん。
182 名前:名前は開発中のものです。 mailto:sage [2009/05/08(金) 13:06:52 ID:H40Fz4tQ] >>180 条件を逆にしてみれば?
183 名前:名前は開発中のものです。 mailto:sage [2009/05/08(金) 17:28:23 ID:mPd9shMx] >>180 hello world的なコンソールアプリだとなんともないのに DXライブラリだと動かないのか? またまたご冗談を○ノ
184 名前:名前は開発中のものです。 mailto:sage [2009/05/08(金) 21:29:41 ID:1gmuUpcC] DXライブラリで遊んでて、 3Dも触ってみたくなったら次はどの辺のライブラリがお勧めかな?
185 名前:名前は開発中のものです。 mailto:sage [2009/05/08(金) 21:43:28 ID:mPd9shMx] 直に叩くのマジお勧め。 ライブラリを使うにしても。
186 名前:名前は開発中のものです。 mailto:sage [2009/05/08(金) 23:03:24 ID:1gmuUpcC] >>185 直かー、興味はあるけど難しそうだね その辺もライブラリのソースを見てみたい感じ DXライブラリ3Dを引き継いでる(?)のがSiv3Dで公開はまだしていないのか
187 名前:名前は開発中のものです。 [2009/05/09(土) 03:40:25 ID:lfg6KlkW] 真・女神転生のようなダンジョンマップ一度作ってみたい
188 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 10:18:06 ID:K91OINFM] >>184 現時点ではDarkGDKがお勧め。 DarkBasicをC言語で使えるようにしたライブラリだが、DXライブラリ並に簡単に3Dが使える。 資料もDarkBasicのものが使えるから検索すればかなり見つかると思う。
189 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 11:47:43 ID:kLkdvUF6] >>185 直叩きはいいけど、ウインドウズと付き合うのがイヤなんだ俺は。 今の俺の技術なら、WinProcの多重switch〜caseの悪夢から逃れられるかもしれないけど。 ここが奇麗にラッピングできたら、DxLibから離れられる。
190 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 19:21:56 ID:jAmZ4VAa] このライブラリってc++でしか開発できないの? cでも動く?
191 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 19:40:27 ID:E8u7Mo3p] >>190 意味も分らずに質問してるのか?それとも釣りか?荒らし? >(使用する際はC言語の知識だけで大丈夫です) と、Topページにすら書いてあるが・・・・・
192 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 19:55:55 ID:lCTV4YZ7] >191 その回答だと、それはそれで微妙じゃないか?
193 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 20:07:46 ID:IQdWMaEz] Cのコンソールで一通りの基礎を抑えたレベル(ポインタは微妙だけど) OpenGLも基礎の基礎ぐらいは分かる。 しかしC++は全くやったことないから、Cのソースコードでも動くのかなぁって思ってさ つうかこの俺のこの程度のレベルで開発できるのか?w
194 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 20:14:03 ID:trjZI4JP] 心配するな。 BASICくらいしかまともに使えなかった俺でも作れてる。
195 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 20:46:52 ID:eADherQO] 予想どおりだけど、Cではコンパイル通らなかったよ。
196 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 20:58:33 ID:IQdWMaEz] >>195 自分も通らなかったから、やっぱりcppでやらないとダメか…。 でもcとc++の違いって引数の所とかreturn 0;を入れる事ぐらいだよね それなら俺にも作れそうだ
197 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 21:35:15 ID:mrxl7P60] DarkGDKのサンプルコードをUPしとく gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0415zip.html
198 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 21:37:34 ID:lCTV4YZ7] 最初は、C++はCの文法がまんま使えると思ってていいと思うよ。 そりゃ細かいところは違うけど。
199 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 22:24:26 ID:yqvEK1Ux] 俺はmainがwinmainに変わったぐらいしか意識せずに Cのつもりで書いてるけど特に問題は起こってない。
200 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 22:42:09 ID:trjZI4JP] 俺はCとC++の違いなんて知らんけど、少なくともBASICとC++の差に比べたら無いも同然だろう。 きっぱり乗り換えた方が早いと思うよ。
201 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 22:43:16 ID:5QjZvH8C] Cでも書けるけどコンパイルはC++としてしなければいけない ってことでしょ CからC++の関数呼べないだろうし
202 名前:名前は開発中のものです。 mailto:sage [2009/05/09(土) 23:17:11 ID:mrxl7P60] DarkGDKの3Dデモ gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0416zip.html
203 名前:名前は開発中のものです。 [2009/05/10(日) 01:23:34 ID:ZcEG6Uji] テキスト読み込ませるにはどうしたらいいんだろ?
204 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 03:57:46 ID:LkvOOs8Z] >>202 184じゃないけど良いなコレ まあスレ違いだからここではやめとくが
205 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 09:08:13 ID:rPuqylL4] >>203 それはDXライブラリと関係ない、C言語の領域だからぐぐって探せばみつかるでしょう。 まぁひとつ言っておくなら、読み込むだけなら テキストファイルだろうとバイナリファイルだろうと関係ねーって事でしょうか。 それがテキストファイルかバイナリファイルかを区別するのは人間の仕事。 コンピュータにとってはどっちも数字の羅列です。
206 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 09:16:50 ID:rPuqylL4] >>202 おお、簡単そうでいいな。 と思ったが商用だとライセンス必要なのか。
207 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 09:27:04 ID:SuvqbuIW] >>206 メーカーのひと?
208 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 10:31:11 ID:fyec3Pfk] 「同人は金とるけど商用ではありません」って理屈がアメリカに通用するかどうか。
209 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 15:37:12 ID:3Fci4lbQ] あれー? exeクリックしても何も起こらないや。 動かすのに必要な環境とかあるのかな
210 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 15:49:58 ID:pxkMQo3W] 何の話?
211 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 15:54:27 ID:QdEuQjX4] >>203 >>205 せっかくだから DxLib でやろうぜ。 以前、なんかダサイ感じのやつを作った記憶あったのでうp int MapInit() { int FileHandle = FileRead_open("StageData.txt");// ファイルのオープン int FileSize = FileRead_size("StageData.txt");// ファイルサイズを取得して char* FileImage = new char[FileSize];// その大きさだけ領域確保 FileRead_read( FileImage,FileSize,FileHandle);// 一気読み FileRead_close(FileHandle);// ファイルを閉じて終了 const char* d = FileImage; while(*d != '\0'){ // NULL文字(終端)ではない間 switch( *d ){ : :
212 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 16:04:32 ID:pxkMQo3W] それ、NULL文字はどこでセットされるのさ?
213 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 16:27:43 ID:hIOF9W71] PlaySoundMemでmp3の音楽ファイルをループ再生した時、 曲がはじめに戻る時に一瞬無音部分が挿入されてしまうのは仕方の無い事なんですかね?
214 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 16:53:15 ID:jnxHmucW] 指定秒数から再生みたいな関数無かったっけ
215 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 18:54:17 ID:rCuDH3cs] あるよ。 俺使ってるから間違いない。
216 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 19:18:26 ID:hIOF9W71] いや頭は正常だけど終わりの部分と頭の間に微妙な空白期間があるんだけど。
217 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 20:22:30 ID:rCuDH3cs] それはMP3自体にはまったく空白が無い状態で? てか空白が頭なのか終わりなのか区別つくのか? 俺はoggでやってるけどそんな現象は出ていない。 oggでなくてmp3だから空白が出てるってのも考えにくいし……。 たとえば、 // 音声をループ再生する PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ; // キーの入力待ち WaitKey() ; こんな感じで音楽鳴らしてWaitKeyで待たせてるだけの状態でも空白は出る?
218 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 21:46:31 ID:a1w4zsI+] 空白をカットすれば
219 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 21:59:26 ID:CorOGe62] MP3とかoggを直接編集できるフリーソフトとかあるから それでまず音楽データ自体に空白が入ってないか確認するのが先かな。 (俺は古いけどspwaveっての使ってる)
220 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 23:33:01 ID:UtduPSoD] ゲーム開発って、ファイル分割がキチンと綺麗に出来るかどうかで難易度グッと変わるよね? いまいちヘッダーファイルに何書けば良いのか分からん。 ヘッダーファイルに書くのって基本的に 構造体、グローバル変数、クラス で良いんだよな? でもグローバル変数はそのまま書くより、メインの実行処理を書いたソースでグローバル宣言して、externしたのをヘッダーに書いた方が良いのか? 中々難しい
221 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:02:53 ID:MkdOym7I] ヘタレプログラマな俺は何も考えずにやってる。 必要性を感じたらやればいいなと。
222 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:25:28 ID:HAsszTiW] 再利用性ってのがあるだろ 他のプロジェクトで同じヘッダーを使いたいって時があるはず stdlib.hやwindows.hなどは、頻繁に共有して使う定義をまとめてあるわけだな ゲーム開発では、バージョンアップや拡張版を作る時に意識する そういうのが前提になくて、ただ使い捨てのマイナープログラムを作りたいだけなら ヘッダーに書こうがソースに書こうが大した違いにはならん 集団開発ではこういう実動的な概念を知ってないと、プロジェクトに致命的な遅れを引き起こす原因になる 読めないソース、意味のわからない変数名、再利用性の全くないヘッダー そういうのを書く奴はとても多い 同僚から「早くクビになれ」と睨まれてるのに、大抵は自覚がない
223 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:37:43 ID:h5MMChCx] mp3の仕様上、変換した時点で前後に無音部分が入るのは避けられないんじゃなかったか? 無音部分のないoggを作れば大丈夫だと思う
224 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 01:25:34 ID:SJM28vd6] wavの状態で編集→mp3にエンコ これでmp3にした場合だけループに空白が出来る。 でも編集ソフトでmp3ファイルを見てみても無音が入っていないので ファイル自体じゃなくてループ再生時に無音が入っちゃってると予想してる。 >>223 のような情報もあるのでwavからoggでやってみようと思います。 むしろmp3でちゃんとループしてる人がいるなら是非そのファイルをくれませんか?
225 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 01:55:23 ID:vfkeltZY] まー、mp3使う理由なんてないだろ
226 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 10:32:30 ID:Y/ATwNUT] >>220 グローバル変数を何の工夫もなくヘッダに書くのはありえない。 でも、1つのソースファイルからしかincludeしないなら ヘッダの意味もないが、トラブルも出ないし好きにしたらいい。
227 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 23:27:48 ID:+oDxJ+XL] >ヘッダ 例のセガの人の本によれば ヘッダファイルは、そのモジュールの顔のようなものなので、 自分からしか参照しないものはヘッダに書くな、だそうな。
228 名前:名前は開発中のものです。 mailto:sage [2009/05/12(火) 20:59:39 ID:TP6i3fOM] OPムービーをつけたいのですが動画挿入ってできます?
229 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 00:34:03 ID:S36sOxw7] >>228 リファレンス嫁
230 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 00:45:59 ID:Vux89+qG] 普通にありましたすみません
231 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 02:31:33 ID:SfL0C2tM] みんなDXライブラリをなんて読んでる? ディーエックス?デラックス?
232 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 02:39:25 ID:SMqynftr] ディーエックスかな てかそもそもデラックスなんて意味込められてたっけか?
233 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 04:37:24 ID:+PRxmC7L] よし! 今度、自分用のライブラリを作る時は超合金ライブラリという名前にしよう。
234 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 04:45:57 ID:S6Vidvv6] ぼくはダブルエックス!
235 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 05:27:57 ID:WYplVFDZ] 俺はデラックスって呼んでるな。カービィDX的なノリで
236 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 11:01:09 ID:+PRxmC7L] DXライブラリ…… それは裏切りを意味する言葉。
237 名前:名前は開発中のものです。 [2009/05/14(木) 23:52:26 ID:JXz6JeNm] wav変換 www.vector.co.jp/soft/dl/win95/art/se202196.html アドウェア臭いのついてるから本体以外キャンセル(Jwordとかプレーヤーとか) www.vorbis.com/files/1.0/tobias/OggDS0995.exe これインスコすればOGGをメディアプレーヤーで直再生できる
238 名前:名前は開発中のものです。 mailto:sage [2009/05/16(土) 18:21:08 ID:RrtE4NOX] DXライブラリってProcessMessageでメッセージをひとまとめに扱ってますが このことによって何か出来なくなる(制限される)ことってありますか? ウインドウズプログラム的に。
239 名前:名前は開発中のものです。 mailto:sage [2009/05/20(水) 18:05:19 ID:XKq5DK9V] 画像を多く使う予定なのですが、 DrawRectGraphでその都度座標を指定して描画するのと LoadDivGraphやDerivationGraphで新しくグラを作成するのってどっちがいいとかありますか? 面倒なのですがDrawRectGraphの方が軽そうな感じがして…
240 名前:名前は開発中のものです。 mailto:sage [2009/05/20(水) 19:14:49 ID:cd8SaRtc] 後者の方が速かった気がする 実際に試してみるのが一番いいと思うけど
241 名前:名前は開発中のものです。 [2009/05/20(水) 22:50:34 ID:XKq5DK9V] ありがとうございます。両方試して比べてみます。
242 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 01:24:36 ID:nDXZOisY] 結果の報告お待ちしております
243 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 14:53:13 ID:f26CXGR7] いちいち画像読み込むとハードディスク使うから遅い メモリに読み込んでハンドル返す方法は高速に描ける 速度を必要とする場面かどうか検討するといい 使い捨ての場面ならメモリに確保しない方が開発の負担が小さいし 何度も使うのならメモリに読み込んだ方が処理の負担が小さい 一般的には後者に統一することが多い 似たような話で、画像にjpgやpngを使ったり、mp3を使うのはCPUに負荷を掛けるので 通常素材にはbmp、効果音にはwavを使うのを勧める (企業開発で形式を隠蔽したいわけでもないし)
244 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 17:07:42 ID:nDXZOisY] 大した負荷じゃないんじゃない?
245 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 17:31:35 ID:d1JBtW4A] HDDからいちいち読み込んでるとアホみたいに遅くなるぞ
246 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 19:45:39 ID:uQ1uMZZL] 下三行への突っ込みだと思う
247 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 20:03:43 ID:PVitCZoM] jpgやpngはロードした時点でbmpに変換されるんじゃなかったっけ。
248 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 23:37:28 ID:SY9MChf5] pngやらはゲーム処理が遅くなるかもしれんが、 bmpを使うとゲーム容量が馬鹿デカクなる気がする 実際にどれほど処理・容量の違いがあるのかが知りたいNe!
249 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 23:43:38 ID:Lde+nmZH] いまどきbmpで作ったからって容量が多くなりすぎて困るって事はないと思うけどなぁ。 3Dゲームとかノベルゲームとかならまだしも。 むしろ容量食うのは音楽。
250 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 00:30:16 ID:opiwTOF8] ある程度DL数が多かったり、自宅サーバだったりする場合は けっこう容量も気になってくるのだそうな。
251 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 00:49:48 ID:rdJ4/1mO] bmpじゃないと透過色が定まらない…
252 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 13:26:24 ID:Ttltxn7S] 俺はpng一択。αチャネルを1ファイルで処理できるのが便利すぎる (bmpやjpgだとチャネル用の別画像を用意しないといけない) ちなみに読み込みだけにCPU負荷がかかるだけで、 テクスチャになってしまえば転送速度は同じ。 bmpの場合はファイルサイズも大きくなり、読み込みに時間が逆に掛かることもあるので、適材適所が良いと思います
253 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 21:09:50 ID:opiwTOF8] 質問。 32x32の画像があって、これを2倍に拡大して表示するのと、 64x64の画像があって、これを等倍で表示するのとでは、どっちが高速? 拡大する手間がある分だけ遅くなると見るべきか、元々の画像が小さいから有利と見るべきか。 実測してみたけど、いまいちよく分からん。
254 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 21:24:41 ID:xxFjO+BK] 実測してわからないのならどうしようもないような……。
255 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 00:55:35 ID:1QCRwyZH] >>253 前者の方が早いでしょう 拡大表示処理はハードウェア(Direct3D)で行うので、とても高速ですよ
256 名前:239 mailto:sage [2009/05/23(土) 12:29:43 ID:A4cQi3hh] 2000*4000くらいの大きな画像や、小さい画像を1000個くらい描画してみて DrawRectGraphとDerivationGraphの違いを検証してみましたが、 メモリ、ビデオメモリ、処理速度に目立った違いは見受けられませんでした。 なので扱いやすいDerivationGraphを使って行こうと思います。
257 名前:名前は開発中のものです。 [2009/05/23(土) 13:25:24 ID:ORU4uz0n] 自分や友人がDxLibを使って作ったゲームを俺のPCで起動させると、始めはいいんだが、しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか? 俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?
258 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 17:37:42 ID:XAnqJ6HC] 257 名前:名前は開発中のものです。[] 投稿日:2009/05/23(土) 13:25:24 ID:ORU4uz0n 自分や友人がDxLibを使って作ったゲームを俺のPCで起動させると、始めはいいんだが、しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか? 俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?
259 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 20:01:55 ID:5w7OxnoQ] インデックスカラー方式の画像描画はどうやったらいいんでしょうか。パレットを切り替えて色を途中で変えたりしたいんですが。
260 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 20:38:13 ID:JcHBq+Qd] 一度メモリに読み込んでからパレット部分を書き換えて、グラフィックハンドルに登録する。 つまり、途中で自在に色換えはできない。 わかる、君のやりたい事はわかる。 スプライトの色変えみたいに自在にやりたいんだよな。でもできない。
261 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 22:53:41 ID:5w7OxnoQ] PCってファミコン以下の糞環境なんですねラスタースクロールもできないし
262 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 23:00:23 ID:KtGbScqt] DirectXでも弄ってろよ
263 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:14:29 ID:wnjrF3Q2] ラスタースクロールなんて10年ぶりに聞いた
264 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:17:36 ID:mQM6vOM4] >しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか? 処理速度が低下するような時は、メモリーリークの可能性がある、 簡単に書くと、メモリを解放せずループで使いっぱなしにすると メモリーがどんどん不足してゆき処理速度低下として症状が現れる。
265 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:42:23 ID:3op8nAnx] >>259 一色ごとに画像を抽出してそれを全部白くして、表示時に色をいじってだね・・・ コストはかかるが、あくまで自由自在に色をいじりたい奴だけそうしてみるとか
266 名前:名前は開発中のものです。 [2009/05/24(日) 04:14:52 ID:7GmmmL9x] FilmtnとBCCつかうとコンパイルとプログラム実行一瞬でめちゃくちゃ速いな VC2008は豪華だけど重い
267 名前:名前は開発中のものです。 [2009/05/24(日) 17:40:43 ID:seD1hHi/] >>264 同じソースでも、友人のPCだったら落ちないという… 落ちないようにするにはどうしたらいいかな? ※と、書いてる途中でタスクマネージャーを見たら、CPU使用率が90%以上に張り付いてた。 他何も起動してないし、アプリケーションを停止したら0%に戻る。意味不明。
268 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 19:21:41 ID:e3aiszR0] そりゃ友人のPC環境が良いだけって話にならんかね。
269 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 20:01:22 ID:PboGdTn+] まぁ、ソースを見ないとなんともいえないな。 文字描画するのに、毎回文字の大きさ変えて描画してるとか
270 名前:名前は開発中のものです。 [2009/05/24(日) 23:50:08 ID:seD1hHi/] 自分 CPU:Core 2 Duo 2.66GHz RAM:4.00GB 友人 CPU:Core 2 Duo 2.40GHz RAM:2.00GB ソースとして挙げるなら、DxLibのホームページの、ゲーム作成講座のソース。 四角君が自分に向けて弾を撃って来るあのソースですらなりました。
271 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 00:30:41 ID:41gxgfIl] いちいちageるなぼけ
272 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 01:34:29 ID:eHx6nkcb] c++教室の2Dアニメーションのプログラムを書いたんだが、表示されない 何が悪いのか……
273 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 01:53:57 ID:UZHs9GNu] それは愚痴か、質問か。 質問だったら「エスパーじゃないんだから、そんな事知らん」
274 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 02:16:31 ID:/EmhtAKe] DirectXを最新版にしてみたら?
275 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 07:48:45 ID:qL901e+j] 指定ファイル名が違うとかダブルバッファの処理がおかしいかメモリに読み込まれてないかじゃね
276 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 10:55:40 ID:yXpMtdiR] 俺はScreenFlipでの垂直同期周りだと予想 グラボと設定によっては同期待ちのタイミングでCPU処理に加算されとても重く「感じる」ことがある。
277 名前:名前は開発中のものです。 [2009/05/25(月) 15:09:43 ID:bb62p5Sd] SetWaitVSyncFlag(FALSE); でカオスになるぜ!
278 名前:名前は開発中のものです。 mailto:sage [2009/05/26(火) 17:43:21 ID:WrI50zFN] >277 誰もが一度は通る道www
279 名前:名前は開発中のものです。 mailto:sage [2009/05/27(水) 04:36:49 ID:cQqUnwcL] 3D背景を実装するのって難しいかね
280 名前:名前は開発中のものです。 mailto:sage [2009/05/27(水) 04:47:29 ID:klPEh/z6] あなたの実力による
281 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 00:03:12 ID:vY9ARI7K] チラ裏。 Dxライブラリをうまく名前空間に突っ込めないかなー、と思ったが 自前で改造しなきゃならない量を考えると挫折しそうだって愚痴。 >279 3Dで作った背景を2D画像に落として、 無理やりパターンアニメで表示させてるって作品があったような気がする。
282 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 01:20:12 ID:4j6tq9JR] >>279 実際にいじってないのでなんとも言えないが ここに映像つきのサンプルあるよ。 dixq.net/rp/
283 名前:279 mailto:sage [2009/05/29(金) 06:57:39 ID:Vqjs1m4E] >>280 ふむ…努力次第でどうにでもなるという解釈でおkかな。時間はかかりそうだがやってみないことにはわからないな >>281 横シューのなら見たことあるwwものすごい労力の割に拡張性が無さそうでなぁ… >>282 おお、こんな感じで動かせられるなら… とりあえずテクスチャを簡単にくりくり動かせるような関数でもつくってみることにする
284 名前:名前は開発中のものです。 [2009/05/29(金) 21:51:58 ID:izoQPgWw] VC2008って無意味に重いなあ 関数かいてカーソル合わせると宣言が表示されるから便利なんだけどなあ
285 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 23:04:59 ID:ATWupmEU] ツール→オプション→環境→自動バックアップ→自動バックアップの実行間隔→60分ごと
286 名前:名前は開発中のものです。 [2009/05/30(土) 23:32:29 ID:3JWvpnu4] >3Dで作った背景を2D画像に落として、 >無理やりパターンアニメで表示させてるって作品があったような気がする。 いいねこれメガテンの3Dダンジョンみたいなのに使えるな
287 名前:名前は開発中のものです。 [2009/05/31(日) 03:54:51 ID:/tj3gvKS] int state = 0; swith(state){ case 0: if(CheckHitKey(KEY_INPUT_RETURN)){ 文字表示 state++; } case 1: if(CheckHitKey(KEY_INPUT_RETURN)){ 文字表示 state++; } case 2: if(CheckHitKey(KEY_INPUT_RETURN)){ 文字表示 } } という風にすると、全部一気にキー判定されて、同時にすべての文字が表示されます。 WaitKeyとかWaitTimerを使う以外で、エンターを押すごとに順番に表示させるにはどうすればいいでしょう?
288 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 04:07:26 ID:WdCW0LKP] >>287 コンパイルしてないから、実際に動くかは知らんが、 enterが押しっぱなしの時は、flagを0にシナイので、 enterが離されて、再度flagが0になってからswitch文の実行が行われる。ように改造すれば 望みの結果が得られると思う。 int state = 0; int flag =0; if(flag == 0){ switch(state){ case 0: if(CheckHitKey(KEY_INPUT_RETURN)){ flag =100; 文字表示 state++; } case 1: if(CheckHitKey(KEY_INPUT_RETURN)){ flag =100; 文字表示 state++; } case 2: if(CheckHitKey(KEY_INPUT_RETURN)){ flag =100; 文字表示 } } }else if(flag != 0) {f( !CheckHitKey(KEY_INPUT_RETURN) ){ flag =0; }
289 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 04:49:59 ID:j4yiAyL2] /*>>287 の意図する動作かどうかわからんが、俺がいつも使ってる方式 キーバッファを設けることによって、押された瞬間を判定することができる*/ #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) {return -1;} SetDrawScreen(DX_SCREEN_BACK); char key_buffer[2][256]; // キーバッファ int state = 0; while (ProcessMessage() != -1) { ClearDrawScreen(); // 前のフレームの入力状態を保持 for (int i = 0; i < 256; i++) { key_buffer[1][i] = key_buffer[0][i]; } // 現在のフレームの入力状態を取得 GetHitKeyStateAll(key_buffer[0]); // 「現在のフレームで押されている」かつ「前のフレームで押されていない」ならば if (key_buffer[0][KEY_INPUT_RETURN] && !key_buffer[1][KEY_INPUT_RETURN]) { state++; // 次の状態へ } // state の値によって分岐するなり何なり DrawString(0, 0, "Press enter key!", GetColor(255, 255, 255)); DrawFormatString(0, 20, GetColor(255, 255, 255), "状態%d", state); // 適当なところで終了 if (state == 10) {break;} ScreenFlip(); WaitTimer(10); } DxLib_End(); return 0; }
290 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 05:11:01 ID:YoqdwaI9] とりあえずbreakしようぜ
291 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 08:31:50 ID:JGIiJgnT] if((CheckHitKey(KEY_INPUT_RETURN))&&LeftFlag==0){ LeftFlag=999; 文字表示}else LeftFlag=0; 押したときだけ処理するようにすればいけそう?
292 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 08:46:00 ID:P4ttxSKS] static break
293 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 15:21:06 ID:jTyG44wW] if(CheckHitKey(KEY_INPUT_RETURN)){ if(enter_cnt<100){enter_cnt++;} }else{ enter_cnt=0; } if(enter_cnt)//押している間 if(enter_cnt==1)//押された瞬間
294 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 15:22:27 ID:jTyG44wW] if(CheckHitKey(KEY_INPUT_RETURN)){ if(enter_cnt<100){enter_cnt++;} }else{ enter_cnt=0; } 半角消えるのか
295 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 20:06:14 ID:kvaGbtb9] >>286 DOGA最盛期にうんざりするほどあったよそういうの
296 名前:名前は開発中のものです。 [2009/06/01(月) 03:53:44 ID:ojIQArFl] CheckHitKeyで押された回数を数えるにはどうしたらいいでしょう?
297 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 03:59:15 ID:YGv3z7sb] >296 if文とインクリメント
298 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 04:02:48 ID:7hVJjQOF] >>296 今話題の押された瞬間を数えて適当な変数に保存しときゃいいんでね?
299 名前:名前は開発中のものです。 [2009/06/01(月) 04:12:11 ID:ojIQArFl] 下のプログラムを改良して、エンター押すごとにA,B,C,Dを表示させていくにはどうしますか。 下のままだと、ABCDっていっきに表示されます。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1; int col1 = GetColor(255, 255, 255); char input[4]; int i = 0;
300 名前:名前は開発中のものです。 [2009/06/01(月) 04:13:52 ID:ojIQArFl] >>299 続き while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){ if(CheckHitKey(KEY_INPUT_RETURN)){ switch(i){ case 0: input[i] = 'A'; break; case 1: input[i] = 'B'; break; case 2: input[i] = 'C'; break; case 3: input[i] = 'D'; break; } i++; } if(CheckHitKey(KEY_INPUT_SPACE)){ ClearDrawScreen(); DrawString(0, 0, input, col1); } ScreenFlip(); } DxLib_End(); return 0; }
301 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 08:41:57 ID:7hVJjQOF] キーを1回押されるごとに処理したい場合の あるごりずむ体操 (ループはじめ) ↓ <前回キーが押されていたか?> YES→ (ループおわり) ↓ NO <キーが押されているか?> NO → (ループおわり) ↓ YES [キーが押された時の処理] ↓ (ループおわり)
302 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 08:43:59 ID:OkPmCHq7] iの値も0に戻してあげようね
303 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 09:36:50 ID:hCSvJ7Y8] リアルタイム処理でないのならScreenFlipのあとにでも↓を追加しときゃいいんじゃね? while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 && CheckHitKey(KEY_INPUT_RETURN) == 1 ){ Sleep(16) ; }
304 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 10:52:22 ID:YGv3z7sb] >>301 昔、組み込みプログラムでやったな、そういう処理。
305 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 16:12:49 ID:rm5/xw9E] クラス化するとか class Key { private: int keyCode, state; public: Key( int KeyCode ) : keyCode( KeyCode ), state( 0 ) {} int CheckHit() { int tmp = state; state = CheckHitKey( keyCode ); return tmp ? 0 : state; } }; //WinMain ... Key enter( KEY_INPUT_RETURN ); if(enter.CheckHit()){ ...
306 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 21:33:29 ID:lE2okL9b] 無駄すぎ糞ワロタ
307 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:14:20 ID:MR6y8v2X] そこで無駄のないソースの登場ですね。
308 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:52:38 ID:aqGzCF5U] 俺もクラス化してるから、簡潔な方法があるなら教えて欲しい。
309 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:57:02 ID:eaj8yaj9] そもそもこのプログラムはスペースを押さないと表示させないようにしてるのかな それはともかく言われたように押してくごとにABCD表示させようと思ったら >>300 を変更するとしたら int returnOn = 0; // ← while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){ if(CheckHitKey(KEY_INPUT_RETURN) && !returnOn){ // ← switch(i){ case 0: input[i] = 'A'; break; case 1: input[i] = 'B'; break; case 2: input[i] = 'C'; break; case 3: input[i] = 'D'; break; } i++; returnOn = 1; // ← } if( !CheckHitKey(KEY_INPUT_RETURN)) returnOn = 0; // ← (以下略) とかやるとか
310 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 23:27:38 ID:FdTrWJbB] static変数のフラグ使うのが一番単純だと思うなあ
311 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 09:36:41 ID:9M4SMxHr] hsp時代にも散々似たような処理書いたなぁ… なんかゲームのメインループ() { if((Aボタン==1)&&(Aボタンバッファ==0)) { なんか押された瞬間だけ1回やりたい処理 } Aボタンバッファ=Aボタン } 最初からKEY_DOWN、KEY_UP的なものがライブラリに有れば楽なんだが ゲームじゃしょっちゅう使うし
312 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 09:48:11 ID:fOpSnwq/] 32ビットか64ビットの整数をバッファにしてビット演算で書き込み、取り出しが一般的だろ そのバッファに生でアクセスすることはあまりないが、 かといってキーごとにオブジェクト化するのもありえない
313 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 11:07:30 ID:lqyt4myq] 299にいきなりそんな話してもわかんないでしょ。
314 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 11:08:32 ID:fOpSnwq/] 抜けてたが、 上の例の場合、バッファは二つ以上ないとあまり意味ない キーがマッピングしきれないって人はchar配列とか使えばいい よりこだわる人はRawInputで
315 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 21:23:19 ID:CgQN485t] >キー入力 自分が使ってるルーチンのコードを記事にまとめました d.hatena.ne.jp/kokarage/20090602/p2
316 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 22:46:42 ID:D2ufpiqQ] 入力の話題が出たので キーコンフィグの実装で悩んでるんだけど、 >>315 とかだと KEY_INPUT_なんとか の部分は変えられないし どうやってキーコンフィグ実装するんだろうか・・・ 同じようなソースでenumを弄っても根本的には変わらないし
317 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 23:00:27 ID:fOpSnwq/] 少しは頭使えよww
318 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 23:00:38 ID:vp7xQIPq] >>315 の例で言うならkeyb_keyを動的に書き換えりゃよかんべよ KEY_INPUT_なんとかとスクリーンに表示する文字との対応表は作らにゃならんが
319 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 23:19:31 ID:rGe8VGDA] 抽出 ID:fOpSnwq/ (3回) 312 名前:名前は開発中のものです。[sage] 投稿日:2009/06/02(火) 09:48:11 ID:fOpSnwq/ 32ビットか64ビットの整数をバッファにしてビット演算で書き込み、取り出しが一般的だろ そのバッファに生でアクセスすることはあまりないが、 かといってキーごとにオブジェクト化するのもありえない 314 名前:名前は開発中のものです。[sage] 投稿日:2009/06/02(火) 11:08:32 ID:fOpSnwq/ 抜けてたが、 上の例の場合、バッファは二つ以上ないとあまり意味ない キーがマッピングしきれないって人はchar配列とか使えばいい よりこだわる人はRawInputで 317 名前:名前は開発中のものです。[sage] 投稿日:2009/06/02(火) 23:00:27 ID:fOpSnwq/ 少しは頭使えよww
320 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 23:23:59 ID:9M4SMxHr] >>316 自分の場合: ちょっと>>315 と関数の仕様が違うけど KEY_STATE getKeyState(int pad_num, KEY_FUNC key_func); if(getKeyState(1, shot_btn) == KEY_DOWN){ ショット処理 } コンフィグのiniファイルかなんかを読んで shot_btnとかjump_btnとかの数字を適当に書き換える 今パッと思いついただけでコンフィグ実装したことないけど
321 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 01:33:47 ID:BENUHFDk] >320 俺も大体そんな感じでやってる
322 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 01:35:57 ID:ZbYk0Q0K] 変な質問。 ウインドゥモードにした場合、勝手にウインドゥを作成して表示ではなく、あるウインドゥを使うように することってDXライブラリではできますか?
323 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 02:49:29 ID:jjOgvpoK] >>322 例えばIEのウィンドウに表示したりとか? 意味がよくわからんが何より意図がわからない
324 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 04:00:28 ID:bNYd6KiM] どうせならGetHitKeyStateAllの方使った方がよくね
325 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 10:50:20 ID:tN/MRQC4] MDIにしたりとかだろ。 無理じゃないか?
326 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 12:26:59 ID:jjOgvpoK] >>324 ジョイパッド無理じゃなかったっけ? まぁ可能かどうかは別にして それをどうラッピングして押下げや押上げの判定を楽にしようかって話なんじゃ
327 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 14:28:21 ID:/YZEGe2A] 俺の場合はGetJoypadInputState と GetHitKeyStateAll を併用で一括入力管理して 押上判定は個々の部分でやってるな。
328 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 17:51:51 ID:JOR7X/qw] クラス化するとしたらこんな感じですかね? ttp://www.dotup.org/uploda/www.dotup.org90647.zip.html 考え方は>>315 と同じ
329 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 18:54:40 ID:jjOgvpoK] みんな色々なやり方で面白いな。 自分はWin32APIのイメージが強すぎたせいか KEY_UPとかキー状態の列挙体を戻り値で返す方法前提で考えていたけど メンバにアクセスして真偽だけ返すという手もあるのか…
330 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 20:15:41 ID:n5yqAu71] >>319 意味わからん。>>307 さんですか?
331 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 20:41:08 ID:RNCUnVzX] いや307は俺。
332 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 22:22:44 ID:DNn913L5] おいおい勝手に俺を名乗るなよ
333 名前:名前は開発中のものです。 mailto:sage [2009/06/03(水) 23:55:15 ID:ZbYk0Q0K] 俺も307です
334 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 00:44:33 ID:4zSVCft7] じゃあオレも307
335 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 00:56:02 ID:uCnhFctq] 俺がこんなにいるなんて……作業がはかどるかなぁ。
336 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 03:42:53 ID:pMlbkkXE] 能力は1/5だけどな
337 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 04:45:47 ID:EMFSgqr3] 天津飯かよ
338 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 07:23:29 ID:pMlbkkXE] >337 名乗ったのが4人なら、もっと天津飯ネタを取り入れていた
339 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 19:12:58 ID:EMFSgqr3] で、 >>328 式がベストでおk?
340 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 21:55:52 ID:94jaKxLF] 2Dに限ってなんだが 結局の所 DXライブラリで作ったゲームと OpenGLで作ったゲームと DirectXで作ったゲームって どこがどうちがうの?ほぼ一緒だろ?
341 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 23:58:41 ID:NBcwy8pb] >>340 名称が違う 難易度も違う
342 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 00:24:06 ID:LjYKB7R9] >>340 DXライブラリ:楽。動作実績が大きい。 OpeGL:日本のゲーム作りに関しては情報少ない。 DirectX:DXライブラリと似たようなラッパーを書く事になる。動作検証要。
343 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 00:26:20 ID:jQ78PNQ2] DXライブラリのサポートは金とってもいいレベル
344 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 00:29:54 ID:MVmrQAbM] 世界的な実績で言うなら、その3つの中で一番下のような気もするけどなーw
345 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 00:39:57 ID:fb3Bnpon] ツクールシリーズ →日本人からプログラミングの素養を奪い取るキラーソフト DXライブラリ →日本人から3Dプログラミングの素養を奪い取るキラーソフト 漢ならLinux環境でC+OpenGLでvi+gdbするべし
346 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 01:17:49 ID:k3aCK9Tq] >>345 それなら薦めるべきはSDLな気がする それだけだとせっかくCとGL使ってもキー入力まわりで移植性がなくなる GLUTのキー処理は論外だし SDLからGL叩けるし メジャーなプログラミング言語のほとんどがSDL対応してるし でもこのスレ的にどうかと思うぜこの話題
347 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 01:22:53 ID:gGshfnNu] それだけ解っててなぜDXライブラリスレにいるのかと。
348 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 01:48:22 ID:byAKAyX7] 「作ったゲーム」に関していう違いなら DXライブラリで作ったゲーム 動作実績があるライブラリだから動作する環境が多い 速度は各ソフトの特性に合わせて最適化できないぶん遅い ライブラリで実装されていてDirectX直叩きなら使える機能が使えないから表現力はDirectX直叩きした場合より劣る OpenGLで作ったゲームとDirectXで作ったゲーム エンジンの動作検証は作者PCのみだからプレイヤー環境で動作しない可能性はライブラリを使った場合より高い 作るソフトに合わせて最適化できるのでDXライブラリ作者と同レベルのプログラム力を持っていれば確実にDirectX直叩きのエンジンの方が動作速度が速い DirectX直叩きできるから表現力はDirectXの表現力とイコール
349 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 02:19:36 ID:byAKAyX7] 追記 基本的にゲーム製作を助けるためのものだからプレーヤー側から見ればDirectX直叩きで DXライブラリと同等かそれ以上の性能のオリジナルエンジンを使ってソフトを作ってくれた方が嬉しいのは確かだろう (それが製作者が支払う労力に見合うかどうかはさておき) ただ、DXライブラリの存在があったことによって世に出ることができたゲームソフトもあるだろうから 端的にプレーヤー側にとっては動作安定以外にはデメリットしかないという結論に達することはできない 345的な理論はBASIC言語についても似たようなことが言われていたね、まあ3D対応すれば多少は改善されるんじゃないか
350 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 06:01:05 ID:/qtS2mAS] 俺の場合はC++を重点的に学習したいからこれ選んでる DirectXとか使おうもんならC++の上にこれも覚える負担に駆られるためかなり厳しくなる DXLIBだと覚えること比較的少なく済むからC++に労力割けれるしね だからその人その人の状況次第でしょう あとこう書くといちゃもんつけてくる奴がいるから言っとくけど 全半角に突っ込むのなしね 俺タイプ苦手だから一々直すの面倒いからそれだけは言っとく
351 名前:名前は開発中のものです。 [2009/06/05(金) 07:44:06 ID:Jb6PFwRw] クソスレ晒し上げ
352 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 08:16:16 ID:2+rjN8tB] 面倒って……MS-IMEなら無変換キーを二回押すだけだし ATOKだってファンクションキー一回押すだけだろうに……。 ていうかタイプ苦手だから面倒なんじゃなくて それくらいを面倒がるからいつまでたってもタイプ苦手なんじゃないか。
353 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 11:48:16 ID:KAzeFILe] DXライブラリに関する書籍はないものでしょうか?
354 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 12:27:22 ID:/qtS2mAS] 俺は全角のが落ち着くの
355 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 14:40:29 ID:pZVc1EDu] 苦手というか、面倒という気持ちはわかる。 プログラミングしてて全角でコメントした後半角になおしたりとか正直邪魔くさい。
356 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 17:58:00 ID:b0tlHB//] >>353 初心者用でいいなら14歳から始める〜 とか
357 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 21:40:13 ID:k3aCK9Tq] >>348 >>349 一通り触ったことはなさそうなことだけ伝わってくる文だな その割に長くてうざい
358 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 21:56:05 ID:WwCy/X5Y] >>342 OpenGLならラッパー書かずに済むの?
359 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 23:07:05 ID:1schIxWd] OpenGLはラッパーどころかゲーム作りに必要な他の部品も必要。音楽再生とかキー入力とか画像読み込みとかどっかのライブラリ持ってくるなりしないといけないから超めんどくさいそりゃ普及せんわ
360 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 23:14:10 ID:KAzeFILe] >>356 明日あたり立ち読みしに行ってみます
361 名前:名前は開発中のものです。 mailto:sage [2009/06/05(金) 23:49:13 ID:LjYKB7R9] 14歳は名著でもあり地雷でもあるから気をつけろ。 誤字脱字内容間違い多いからな。
362 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 00:03:30 ID:H/iQ8fyW] >>359 むしろ技術力がつく
363 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 00:06:10 ID:sFhdVHFw] んなこと言い出しゃ自分でOpenGL、DirectX相当つくったり 自分で言語やコンパイラつくったり
364 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 00:44:32 ID:yKGSZjfM] >>322 俺もこれやりたい ウィンドウ周りは.NET Frameworkにまかせて、あるPictureBoxコントロールの中で描画とか
365 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 00:57:21 ID:sFhdVHFw] LunaかなんかのサンプルにMDIのウィンドウで動いているのなかったっけ?
366 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 02:23:33 ID:0RWuIZ8X] ある程度プログラムさえ分かってりゃある程度の誤字脱字には気付くんじゃまいか と言うよりあれはそんな初心者向きじゃないような気モス ある程度基本はできていた方がいいかも 俺は大分参考になったし俺のやり方はそれがベースになってる
367 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 14:28:01 ID:9zaJ0Qz/] マップスクロールってどうやるんだ? プレイヤーがx座標400ぐらいまで行ったら、背景画像をスクロールさせる感じで組んでみたら 動いてるようには見えるけど自身の座標は当然変わらず、後ろのハリボテが動いてるだけになったw どんな感じでマップスクロールって作ってる?
368 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 14:45:01 ID:mp6p4QK3] >>367 基本的のその考え方で間違ってない。 気に入らないならもっと考え方を進めていけばいいだけ。
369 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 15:02:08 ID:triYp4O5] アクションゲームなら、マップの座標は固定にしてカメラを動かすという考え方のほうがいいかもしれない。
370 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 16:34:01 ID:4wIgR8zN] よく2Dクォータービュー型の箱庭ゲームで画面の拡大・縮小というのがあるけど、 あれは裏バッファ2に描いておいて、裏バッファに縮小転送、フリップというやり方 なのでしょうか? それとも拡大・縮小の段階毎に元絵を用意しておいて、現在の段階に応じた元絵 を裏バッファに描画、フリップというやり方なのでしょうか?
371 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 17:22:10 ID:mp6p4QK3] やった事ないけど、俺がもしやるなら 普通にそれぞれの画像を描画する際に縮小描画するだろうな。 当然、表示座標も縮小計算して。
372 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 17:26:21 ID:Fiwfc+rD] 俺は普通に描画時に拡大縮小してる >>370 だと後者になんのかな
373 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 17:40:50 ID:mp6p4QK3] ひょっとして、拡大縮小描画の命令を知らんとか?
374 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 18:10:53 ID:94tz/m1F] >373 拡縮機能使ってる? それとも予め画像用意しとく? って聞きたいだけじゃないかな。
375 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 18:59:26 ID:9zaJ0Qz/] 当たり判定って三角関数使って作ったほうがいい? それともXY座標だけのでもいい?
376 名前:名前は開発中のものです。 [2009/06/06(土) 19:42:33 ID:94tz/m1F] ちょっと質問。 >int SetWaitVSyncFlag( int Flag ) ; >ScreenFlip関数 実行時にCRTの垂直同期信号待ちをするかのフラグセット ってあるんだけど、 これって液晶モニタだと関係ない(常にtrue扱いになる?)んだろうか。 手元に液晶しか無いんで、プログラムが間違ってるのか仕様なのか判断できないんだ。 >375 なんの当たり判定だよと。 x,yだけで処理できるなら三角関数使わなくてもいいんじゃないの?
377 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 21:33:11 ID:gMk4d0ex] よくは判らんが、垂直同期信号って別にモニタが返してきてるわけじゃないんじゃない? とりあえずうちの液晶モニタじゃ普通に動いてるし。 グラボ(RADEON)で垂直同期信号のON/OFF設定ができてるから 問題となるのはグラボの設定って気がする。
378 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 21:49:45 ID:94tz/m1F] ビデオカードか、言われてみればそりゃそうだよな。 なんかすまん。 色々と試してみた結果、 グラボの設定を変更&フルスクリーンでFPSが60Hzの上限を突破することが出来た。 まあ、実際に使うことはないだろうけれど。
379 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 21:52:06 ID:9zaJ0Qz/] >>376 横スクロールの当たり判定
380 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 22:08:08 ID:gMk4d0ex] >>379 君はもう少し自分の考えてる事を他人にわかって貰う努力をしろw スクロールと当たり判定と三角関数がどう関わってくるのか、の説明とか どうして「三角関数が必要かも」と思ったか、とか。
381 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 22:46:25 ID:sFhdVHFw] 円形か四角か
382 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 23:14:29 ID:vskJtjA7] >>380 おまえ、偉そうジャン?
383 名前:名前は開発中のものです。 mailto:sage [2009/06/06(土) 23:46:26 ID:+AmloxXp] ジャン()笑
384 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 00:27:15 ID:jsaQKHFo] >>380 努力しろとか、おまえ、何様ジャン?
385 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 00:43:22 ID:7g+XVYWN] MessageBox(NULL,"なんとか","かんとか",MB_YESNO) これのメッセージの中身って、%dで変数表示したりできるんですか? できるならどうやってやるんでしょうか、教えてください。
386 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 00:47:04 ID:jsaQKHFo] >>385 リファレンス読む努力しろ こんな簡単な事ができなきゃやめちまえ
387 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 00:57:18 ID:WlXcjgXY] >>371-374 返答ありがとうございます。 どうも、うまく伝わってなかったみたいですね。 そうか、1つの建物なり乗り物を描画する時に縮小描画してるというわけですね。 それが普通ということですね。 >>386 あんたも努力しろって言ってるジャン
388 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 00:57:54 ID:fLd/zS9/] >>384 俺も379読んで380と同じ意見だ 384は379だけでわかるのか? >>385 できない、sprintfを調べてみるといい
389 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 02:35:15 ID:3sx78L/g] 当たり判定に三角関数が必要か?三平方の定理のことじゃないか まあ俺は2次元しか知らんから分からんが
390 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 10:52:33 ID:OFYyutYg] いつからウミガメのスープスレにw
391 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 11:57:27 ID:caHBoLjZ] ウミガメノスープスレって何のことかと思って調べちまったじゃないかw ある問題について出題者が回答者の質問にYes/No形式でヒントを与えつつ 解答を推理していくゲームか。 なるほど確かに、質問者がちゃんと状況を説明できず、情報も小出しにしかできないで 質問に答えようとする人間が、なんとか回答するに足るだけの情報を 引き出そうと四苦八苦するところが似ているな。
392 名前:名前は開発中のものです。 mailto:sage [2009/06/07(日) 12:07:51 ID:OFYyutYg] >>391 ゲーム化したぜ(原作がスレって意味じゃないが) スローンとマクヘールの体験版をプレイする作業に戻るんだ
393 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 08:25:05 ID:LOgaJ0S5] 2Dスクロールゲームでさ 敵を出すときって、マップ座標の一定値までプレイヤーが来たら敵を出現させるって感じでいいのかな? 今敵の出現関数の引数にマップ座標渡してやってるんだけど、それだと思った所に出すのがめんどくさい。 もっといい方法ない?
394 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 08:29:40 ID:sCESisPc] なんかDXライブラリと直接関係ない質問が連発されるなぁ。 他にもっと適切なスレがあると思うんだが。 >>393 それで特に間違いはないと思うが、 マップデータに敵の存在情報を埋め込むという手もあると思うな。 自由スクロールかどうか等で、いろいろ工夫がいるようになるだろうけど。
395 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 09:03:31 ID:5KFTi9VQ] だったら誘導してやれば 2Dスクロールゲームと言ってもいろいろあるからそれにもよる
396 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 10:40:15 ID:tSfMBcni] というかどのスレか誘導して欲しい。 確かにDXライブラリ以外の話題はスレ的によくないと思うし。
397 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 11:12:30 ID:WLx6NXXx] 2Dスクロールで敵が出ると言ってもシューティングや他のアクションゲームもあるし それらで別れるからなあ。
398 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 11:33:19 ID:cazy22G6] DXライブラリに関係ないゲームアルゴリズム系総合なら、ここでいいんじゃね? 【初心者】スレを立てる前にココで質問を【Part19】 pc11.2ch.net/test/read.cgi/gamedev/1236761855/
399 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 13:24:46 ID:5KFTi9VQ] でもまあアルゴリズムと言ってもDXライブラリ的なアプローチもあるやも知れん
400 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 13:44:11 ID:1Ns/D0F7] DXライブラリ的なアプローチって何やねん
401 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 17:09:17 ID:Q/bmJU+V] DXライブラリを使ったアルゴリズムなら?
402 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 20:15:15 ID:fnZML6Vn] 前に教えてもらった14歳からはじめるシリーズを立ち読みして その中で、わくわくゲームプログラミングを買ってきました ゆくゆくはRPG作れたらいいなぁ、なんて しかし最近の14歳は凄いな、ざっと見たけどこの本理解できんだろうか・・
403 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 20:22:53 ID:kVsTXpwy] スレチだが、サルでもわかるXXの本があるのだから、人間はサル以下と
404 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 21:19:56 ID:ScR8iayc] PC-6001版ゼビウス(タイニーゼビウス)を作ったのは小学六年生だと聞いて愕然とした。
405 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:13:08 ID:4xXNhiJa] 小学生なめんな 年齢で知識の量は違っても論理力はたいして変わらないと思う
406 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:22:34 ID:gmTgYuK1] >>402 昔は小中でハンドアセンブルとかふつうだったし テキストエディタ無かったし アセンブラやコンパイラ無かったし それでもゲーム作ってたからね 資料がネット無い時代だけど毎月大量の雑誌があったおかげで 今の10倍は情報量があると思う 14歳からはじめる〜の内容が毎月5冊くらい雑誌としてあったと思いねぇ
407 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:31:36 ID:VwdPN9TR] テキストエディタがないってどうやってコーディングしてたんですか
408 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:35:38 ID:1Ns/D0F7] >>406 モノがあふれてない方がかえって集中できてよいことの典型的な例ですな
409 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:38:00 ID:rJGFypi7] 当時でも、機械語でゲーム製作できる小学生は相当凄い。 情報も今のほうが圧倒的に多いし楽に手に入る。 逆に、情報や手段が多いせいで入りにくくなってる。
410 名前:名前は開発中のものです。 mailto:sage [2009/06/08(月) 23:58:56 ID:gmTgYuK1] >>407 方眼用紙もってドット絵かいたりハンドアセンブルばっかりしてた 変換表の半分くらいは暗記してたけど今じゃもう何も覚えて無い c9がretだっけとかそんな感じ ミスすれば暴走>リセットだったから実行するにも緊張した 結果机上デバッグにみんな慣れてソースやバイナリ見るだけですぐわかるようになってくる バイナリ見たときのビッグエンディアンのわかりやすさはあこがれた なんせ俺の暴走原因の90%は上位と下位のスワップし忘れがほとんどだったから あと当時はPCの楽しさは俺達しかしらないんだぜ的なものもあったかな というか全然普及して無いから虐げられてた マイコン触れる=ネクラの変人で運動も何も出来ないんだろ的な だからDXライブラリのように敷居を下げるライブラリにはがんばってもらいたい 今のほうが情報が入手しやすいというのはどうだろうね CPUそのものとかOSとかデザパタとかそういうオカタイ情報は入手しやすいけど ゲームを作りたい場合の情報の敷居の高さは半端じゃないよね? 徳間のM-FANみたいなのが必要かなと
411 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 00:57:34 ID:S/a6iR+n] ゲームプログラミングが初めてだという人、特にゲームを作りながら言語も覚えようという人は 最初は出来る限りシンプルなゲームから作った方がいい…と、僕は思うんだ。 80年代前半より前の生まれなら、ゲーム&ウォッチが通じるんだが 最近の子(20歳以下)だと、どのへんが分かりやすい例え何だろうか。
412 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 01:10:43 ID:oifuXaCW] >>407 >>410 俺も方眼紙にドット絵描いたり、 ノートにニーモニックでプログラム書いてから、ニーモニック→マシン語変換表見ながらマシン語に書き換えて、 それをバイナリエディタで入力とかやってたなぁw ところで当時バイナリエディタって読んでたっけ? なんか別の呼び方だったような気がするが……。
413 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 01:17:12 ID:gC7kpoXP] モニタ
414 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 01:46:37 ID:PMo4RsPh] ここにいる人は40歳前後が多そうだな
415 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 02:52:08 ID:3VeuGuyA] そんな知識のある父がほしかった
416 名前:名前は開発中のものです。 [2009/06/09(火) 03:20:38 ID:C8Rc41AV] 今思い出すと俺も16,7の時もツクールで なんであんなに創作意欲があったんだろうと思う 年取るとアイデアうかばない症候群になった ただの鬱なのかもしれんが
417 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 04:40:20 ID:ur7it59g] >>411 VCもあることだしファミコンでいいんじゃね?
418 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 05:12:36 ID:6uG82dMD] 高校でパソコン部を作りたいと申請したら 教師に「そんなおもちゃが一体何の役に立つんだ」と 即却下されたのもなつかしい
419 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 09:36:31 ID:S/a6iR+n] >>417 ファミコンだと、スーパーマリオ3やドラクエ3も含まれるんだぜ? ケータイアプリとかなら行けるのかな? やったことないから分からんのだが。
420 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 09:50:17 ID:ur7it59g] どんなタイトルでもいいだろ
421 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 11:52:23 ID:S/a6iR+n] そうか、別にそう思うならそれでいいんだが。
422 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 13:07:47 ID:IuPr0Cmy] >>416 俺もツクールに数百時間費やしたくちだが、今思うと凄いな。 アイデアは今でも思い浮かぶんだが、頭の中だけで終わってそれを表に出そうっていう気にならない。 誰かが作ってくれるならアイデアとかは言うんだけど自分でやるってなるとめんどくさくて。 ちなみにその数百時間かけたのはセーブデータぶっ飛んで電子の藻屑に\(^o^)/ 数百時間かけてすら、まだ1/5程度な完成度だったけど・・・
423 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 14:14:05 ID:+TNFSrzk] DXに関係ない話題がどうとかってかいてあったくせに、早速関係ない話題にあふれてる件
424 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 14:29:51 ID:/uwI++Tj] 2chなんてそんなもんさ
425 名前:名前は開発中のものです。 mailto:sage [2009/06/09(火) 14:45:39 ID:/EtnpSFu] どうとか言った人間と話題に出してる人間が別人だからこそだろ。
426 名前:名前は開発中のものです。 [2009/06/09(火) 23:50:55 ID:ggNV6tYD] DXライブラリで、選択肢並び替え問題を作っているんですが、ちょっと行き詰ってしまったので、質問させてもらいます。 プログラムとしては、選択肢を選んだ順番に配列に格納して、正しい解答と比較することで正誤判定をしています。 一応、選択肢を選んで決定するところまではできたのですが、正誤判定の部分?がうまくいかないんです。 正しい順に選択肢を選んでも、間違っているということになっているみたいです。 なぜでしょうか? あと4回目に選択肢を選ぶと、変な文字が表示されるのはなぜでしょうか? 自分の作ったプログラムです。 ヘッダファイルとメイン部分、会話(選択肢並び替え)部分に分かれています。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9402.cpp C言語をはじめて1年、DXライブラリをはじめて2か月くらいなので、やさしく教えてください。 お願いします。
427 名前:名前は開発中のものです。 mailto:sage [2009/06/10(水) 01:02:39 ID:EOc9oIq+] >>426 char input[5][1]; をグローバルにすればとりあえず動くと思う ところで、要素数1だったら配列の意味なくね? アドバイスとして、 ↓の関数あたりを使えばもう少しスマートに書けると思う sprintf、strcmp (C言語) DrawFormatString (DXライブラリ)
428 名前:名前は開発中のものです。 [2009/06/10(水) 15:37:12 ID:UXlA/6A3] >>427 inputをグローバル変数にしたら、うまくいきました。 アドバイスしていただいたことも参考にして、もう少しスマートなプログラムが書けるように努力します。 本当にありがとうございました。
429 名前:名前は開発中のものです。 mailto:sage [2009/06/10(水) 22:45:00 ID:kJPqJciV] はじめてだから優しくしてねって言うと かえって乱暴に扱われるってばっちゃが言ってた
430 名前:名前は開発中のものです。 mailto:sage [2009/06/10(水) 23:47:48 ID:yn44iXp9] こんなとこでじっちゃの性癖を暴露せんでもよかろう。
431 名前:名前は開発中のものです。 [2009/06/11(木) 23:55:55 ID:GA3GCHk+] int keiken; if(keiken==0)printf("童貞乙");
432 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 00:00:02 ID:ADvlYAyg] >431 初期化しとけ
433 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 00:04:48 ID:M4d3vxIH] >>432 こうですか?分かりません>< #define KEIKEN 0 if(KEIKEN==0)printf("童貞乙");
434 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 04:04:32 ID:Yy7W6LDG] こうでしょ int keiken=0; if(keiken==0)printf("童貞乙");
435 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 07:22:27 ID:9cqRM4P7] const int keiken=0; if(keiken==0)printf("童貞乙");
436 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 08:37:17 ID:yeEoVlcI] これだからプログラミングはやめられないw
437 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 11:39:23 ID:jHstWpts] int keiken = 0; keiken ++ ; keiken ++ ; keiken ++ ; keiken ++ ; if ( 1 ) printf ( "童貞乙" ) ; これで。
438 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 12:18:42 ID:xPu8mGZk] 雑談するにしても、せめてDrawFormatStringを使うぐらいには気を回してくれよ。
439 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 12:22:38 ID:Upl7Se9G] 動くわけねーと思ったら動いた。 インクリメントってスペースがあってもいいの?
440 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 12:33:12 ID:5rESS90A] 半角スペースは無視されるだろ
441 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 12:48:39 ID:l4TbPUJW] if(keiken) とか if(!keiken) ってみんなあんま使わない? 視認性重視で「==1」「==0」なのかな? 某神録のサイトでも今見たらそんな表記だった。
442 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 13:02:13 ID:jHstWpts] >441 よく使うと思うが、今回は単に>431に合わせただけじゃない? あとは掲示板で見やすい書き方というのはあるかもしれんね。
443 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 13:08:28 ID:AJoYy9jz] あんま面白くなかったけど、今回のは0回かどうかが重要だから あえて==0使ったんでしょ。 実際のコードでもそういうことはやる。
444 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 13:48:30 ID:6cWATceQ] >>441 0であることを強調するため。 あと文化圏の違いもある。 0が偽じゃない言語も多数存在するから、そういう言語出身の人は if(keiken)というコードは気持ち悪く感じる。 逆に生粋のC/C++の人はif(keiken==0)というのは冗長に感じる。 俺は簡潔性よりもわかりやすさを重要と考えてるから、==で比較する。 使う言語がC++だけじゃないってのもあるけど。
445 名前:名前は開発中のものです。 [2009/06/12(金) 13:57:03 ID:+pEtBUBP] www.youtube.com/watch?v=vYuqJPUIfRA こういうのDXライブラリで作ってるのかな
446 名前:名前は開発中のものです。 [2009/06/12(金) 13:58:09 ID:+pEtBUBP] >>441 while(!CheckHitKey(KEY_INPUT_ESCAPE)){ } おおこういう表記もできるのか
447 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 14:39:12 ID:Nk+ds+Ow] 変数自体の評価なら「==」で結ぶけど、 関数の戻り値なら>>446 みたいな感じで書くかな。
448 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 15:36:56 ID:CIdl30UY] 2値もしくはそれに準じるものなら>>446 3値以上なら(不)等号あるいはswitchを使うかな if (!strcmp(str, "hoge")) // 一致したら とかは気持ち悪い
449 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 16:05:58 ID:wLR5hiQv] スタイルは人それぞれ。自分に合ったやり方で書けば良いよ。
450 名前:名前は開発中のものです。 mailto:sage [2009/06/12(金) 18:56:18 ID:g9ISpJC5] if (0==keiken) やっぱこれは見づらいのかな
451 名前:441 mailto:sage [2009/06/12(金) 19:00:21 ID:l4TbPUJW] >>450 俺自身はそれ。 会社でfalse==keikenって書いたら!に修正されていたけど
452 名前:名前は開発中のものです。 mailto:sage [2009/06/13(土) 10:14:12 ID:yreqn12m] 具体的な数値や列挙が書いてあるだけマシ 世の中には条件式を省略しようとする輩がいるから
453 名前:名前は開発中のものです。 mailto:sage [2009/06/13(土) 10:24:26 ID:yreqn12m] だいたい if(hoge()){ … } じゃ返値をひとつだけ判定することができないじゃないの あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い hoge()の返値を絶対に増やさない!なんて自信満々に言える奴は少ないでしょ ==で結べば必ず1つの返値で動作するから安全
454 名前:名前は開発中のものです。 mailto:sage [2009/06/13(土) 13:01:19 ID:khmiiTOM] >>453 C++は多値返せないよ 戻り値のとり得る値が増減する、とエスパーすると、 関数の戻り値っていうのは、関数本来の意味を参照すると、 関数の作用そのもの、すなわち関数が実装する機能そのもの。 (わからないならSchemeやHaskellとか関数型プログラミング言語を一度触ってくれ) これが変更されるということは、すなわち関数の機能が変わったか、設計の錬度が全く足りてない (どんな機能を実装するかすらあやふやだった)かどちらか。 どちらにせよその変更は、その関数を使用するコード全体に波及する。 だから >あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い この指摘はずれてる。 繰り返しになるけど、戻り値の変更はそれを使用するコード全体に波及するから、 予期せぬ動作をする可能性が高い、じゃなくて、予期せぬ動作をしないようにコード を変更しないといけない。
455 名前:名前は開発中のものです。 mailto:sage [2009/06/13(土) 15:58:30 ID:MRDz7JnU] >>453 実装の修正は何度もやるとして インターフェースや振る舞いはなかなか変えないもんだ というか、戻り値の意味が2通りを超える時は 関数名も変えざるを得ない気がするが
456 名前:名前は開発中のものです。 [2009/06/15(月) 23:58:33 ID:FuxW1Dfe] Windows 7 のペイントでpng保存しても 透明色指定しても透明にならない bmp2pngが必要
457 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 01:46:16 ID:H4jkoMGr] 文字列を画面の中央に表示したいけど 何かいい方法あるかな? x座標を調整するの面倒だ
458 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:10:16 ID:1CAlzcIC] >457 自分は使ったことないんで分からないけど、 GetDrawStringWidth GetDrawFormatStringWidth というのはどう? で、長さを調べてxを調整して、文字列を出力するところまでを1つの関数にしちゃうの。
459 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:19:38 ID:qN6akUYZ] ドラクエみたいに停止してるキャラに足踏みさせるいい方法ないかな? countを0と1でオンオフしてSleep(300)とかで歩行と同じように調整はできたんだけど、 歩き出しが時々ぎこちないので悩んでます。sleepじゃなくていい方法が思いつかない
460 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:28:14 ID:H4jkoMGr] >>458 フォントを変えないならいける CreateFontToHandleで作ったフォントデータだと駄目っぽい >>459 countを範囲でオンオフ切り替えてみては if(count%40<20)//ドロー else //ドロー2 count++;
461 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:34:01 ID:wxVXqeT5] >>460 GetDrawStringWidthToHandleがあるじゃん
462 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 02:36:09 ID:H4jkoMGr] >>461 うわ・・・恥ずかしい・・ごめんなさい ありがとねん
463 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 03:45:39 ID:1CAlzcIC] >459 そもそもSleep使ったら何も出来なくなるんじゃ?
464 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 08:51:37 ID:mvp6g5dM] 歩行絵+右足踏み出し絵と左踏み出し絵を描けばいいだけじゃね?
465 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 09:09:09 ID:q6YxOHAd] while(ProcessMessage()!=-1){ ClearDrawScreen(); if(count<20) 右足が前に出てるキャラ表示 if(count>=20&&count<40)左足が前に出てるキャラ表示 ScreenFlip(); WaitTimer(10); count++; if(count==40)count=0; } うーんよくわからん
466 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 09:54:16 ID:1CAlzcIC] >465 基本的な考え方はそれでいいと思うよ。 あとせっかく答えてくれた>460の答えも読んどいた方がいいんじゃね?
467 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 10:06:16 ID:yTy6SiIo] >>465 基準FPS値決めて、フレーム数と秒が変換できるようにしてみるといい あとWaitTimer(10)とかいうのはジョークだよね?w
468 名前:466 mailto:sage [2009/06/16(火) 10:16:47 ID:1CAlzcIC] とりあえず>466の日本語がおかしいってのはスルーしてくれると嬉しい。 >>467 おや、見逃してたw もしかして>463(俺)の発言を勘違いしちゃったのかな……? だとしたらちょっと責任感が。
469 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 12:57:31 ID:zt3Tshey] >>467 たぶんWaitTimer等の関数を使わないと高速足踏みに見えると感じて、 こういう手段で自然に見えるようにしたんじゃないかな。 一秒でひとつの動作をループさせる必要はないからこれはあまり良くないと思うけど。
470 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 13:19:46 ID:1CAlzcIC] >469 count値20ごとに表示を変えてるみたいだし、それは大丈夫なんじゃないかしら?
471 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 14:04:12 ID:KbLsp5Ay] ScreenFlipで垂直同期信号待ちが行われているかどうかで変わってくるような。
472 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 14:17:30 ID:MjcTUWQv] WaitTimer使う位なら count<20 の値を増やした方がよくね
473 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 16:03:45 ID:rewLOGjy] 時分割で状態変移したいのなら、コルーチン使ってみては? と上級者ぶってみるわ
474 名前:459 mailto:sage [2009/06/16(火) 18:26:00 ID:qN6akUYZ] いろいろ意見ありがとう。 WaitやSleepは使わずにFPSとかFrameやらを使って試行錯誤してみます。 countを0と1でオンオフにしてたけど>>465 のようにフレームカウントにしてやってみます。
475 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 18:35:39 ID:1CAlzcIC] 別人だったんか!
476 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:35:34 ID:8GILQKQT] リフレッシュレートの概念がわからないと変なの書いちゃうぞ レートは60ヘルツかも100ヘルツかもしれないし 65とか75とか微妙な数値になることもある DXライブラリの教本にあるように書かないと、動作環境が変わった時に同じように動く保証がない 俺が以前に見た酷い例 FPSが60切ると点数がどんどん減る意味不明なゲーム しかもどんなアルゴリズムか知らんが、FPS60でも点数が減りっぱなし ああいう「自分の環境しか見ない」人間は駄目だな
477 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:40:46 ID:fYBFrBfu] ゲーム機のゲームってその辺固定だからなにも考えなくていいんだよなー。
478 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:56:34 ID:1CAlzcIC] >>476 と言っても、個人レベルの開発でどこまで他の環境を考えられるやら。 定番のアルゴリズムとかは書けるかもしれないけど、それだけじゃ意味ないし。 結局のところ「知らね」って言いきるしかできない。
479 名前:名前は開発中のものです。 mailto:sage [2009/06/16(火) 23:59:57 ID:+nd9Tj3k] 俺今作ってるゲームはリフレッシュレート無視しちゃってる。 ティアリングが気になるんだよなぁ。 他人が作ったゲームは60FPS超えるやつとかあるけど ティアリングあまり気にならないんだよな。どうやってんだろ。
480 名前:名前は開発中のものです。 [2009/06/17(水) 00:27:22 ID:gsrBiXQc] >>469 WaitTimer(10); 入れるとCPU使用率が下がる ただそれだけw
481 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 00:32:32 ID:s0zhQi6M] >>479 君みたいな人が駄目らしいよ 自分の環境しか見ない人間は駄目なんだってさ ていうかさ、FPSが60切ると点数がどんどん下がるゲームかどうか ソースもアルゴリズムも考えずにどうやって判別したのかねwプッw 偉いなぁこの人wプレイしただけでバグの原因分かっちゃうって>>476 は神だねwプッw
482 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 03:56:59 ID:moXGEW/H] 環境を合わせる方法としては 1,Sleepを使ってFPSを30ほどに落としてやる。 2,時間と同期をとる。 くらいしか思いつかない。
483 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 07:52:50 ID:zFwmddUq] 関係ないけど、テクスチャに描画する場合ってZバッファ効かないんだね
484 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 08:55:08 ID:Sg+3JQO3] リフレッシュレートをAPIを使ってある固定値に設定する
485 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 15:01:39 ID:v4ECr6VG] セガの新人教育の本の人いわく、 作りやすいのは固定フレーム、性能を活かしやすいのは可変フレーム。 自分は面倒なので、60固定前提でやってるんだが (1)タイマ(ミリ秒)を取得して1フレームの規定時間(16msec)が過ぎるまで待つ (2)モニタのVSYNCを待つ (3)モニタのリフレッシュレートを変更する の3パターン用意して、あとはユーザに適当に選んでもらおうかなと。 まずいかな?
486 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 18:17:49 ID:V4BAg+VP] ScreenFlip使えばFPS保たれるんじゃないの
487 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 18:47:03 ID:A2Hqv0+b] >ScreenFlip使えばFPS保たれるんじゃないの ・環境(グラボの設定)によっては垂直同期信号待ちがOFFになってる場合があるのでFPSは保たれない。 ・垂直同期信号待ちがONだとして、FPS保てる状態でも、 モニタのリフレッシュレートを60にしてたり70にしてたりってのはユーザーの好き好きなので、 作り手の望んだとおりのFPSになってくれるとは限らない。
488 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 20:28:42 ID:00woQzQy] めんどくさいからゲーム機のゲーム作ろうぜ
489 名前:名前は開発中のものです。 mailto:sage [2009/06/17(水) 20:53:25 ID:00woQzQy] www.gbadev.org/ www.pqrs.org/tekezo/gba/index.html.ja omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%C7GBA%A5%B2%A1%BC%A5%E0%B3%AB%C8%AF nocash.emubase.de/gbatek.htm belogic.com/gba/directsound.shtml
490 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 01:52:47 ID:lg5GVuaj] >>481 は得点表示も見れないようです
491 名前:名前は開発中のものです。 [2009/06/18(木) 04:16:26 ID:eqFlz8O1] 勝手にリフレッシュレート60に切り替える命令とかあればいいのに
492 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 04:54:12 ID:U/ILN7Qk] >>491 一応あるっしょ。
493 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 05:03:47 ID:4gTcdCic] 別に少々速度違ってもいいじゃない
494 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 05:07:59 ID:U/ILN7Qk] >493 アクションゲームのゲーム速度2割アップとか結構きついですぜ
495 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 07:25:22 ID:8Inai5Jq] DXライブラリ3Dってどうなったの? 開発中止?
496 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 09:48:52 ID:obCaTvEe] 60FPSのゲームを70FPSとか、とんでもないぜw
497 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 16:23:14 ID:FAWLSPyh] たまに弾幕シューティングが75FPSになったりするけど、 気づくのはいつもしばらくプレイしてからだった
498 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 16:53:46 ID:U/ILN7Qk] >497 気付かぬうちに難易度が上がってたり、タイミングが変わってミスを誘発させたりするって ちょっと怖いよな。
499 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:10:57 ID:4gTcdCic] 一般的に表示上のFPSが上がるとゲーム速度も上がるものなの? ってことは2次元アクションでいえば1フレーム毎の移動量が固定なのか。 自分自身も楽だからそういう作り方をしているけど… 例えばあるゲームで 60FPSだと重いのでコンフィグで30FPSに変更って場合は ゲーム速度そのものは変わらないものだと思っていた。
500 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:35:08 ID:u8KJWVMz] >>499 時間で処理、描画だけFPSで更新なら変わらないよ。 全体をFPS60処理だと60より上に上がらないようにしてるのが一般的かなぁ。 ツールで簡単に上げれたり、処理間に合わないとFPS下がって全体の速度も低下する。
501 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 17:56:28 ID:U/ILN7Qk] >499 フレームではなく時間単位で処理してるなら ゲーム速度云々の話題にすらならんと思うよ。
502 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 21:48:15 ID:3XyNBKLr] しかし時間単位で処理すると確実にティアリングが発生するので画質面で劣るという
503 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 21:57:55 ID:y4gPpvjp] そんなの関係なくバッドノウハウ使わない限り起きるだろw
504 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 22:12:42 ID:4gTcdCic] 発想を逆転させるんだ ユーザーをゲームに合わしちまえばいいんだ
505 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:01:35 ID:7QIAxIr+] まともにゲーム作ったことある人手あげて〜?
506 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:19:36 ID:cOrVzTjy] >>502 違うんじゃない? モニタのリフレッシュレートが60だろうが70だろうが時間単位で処理するからこそ スピード一定でティアリングも発生しないようにできるんでしょ。 垂直同期信号が切ってあるなら、そもそもティアリングは発生してあたりまえだろうし。
507 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:47:20 ID:3XyNBKLr] モニタの画面更新のタイミングを無視してメモリ上の画面データを書き換えると言うことだから 1画面分のデータの構築途中でそのメモリイメージが画面に表示されて画面上部と下部でフレームがずれるということだから ティアリングが発生するということじゃないの
508 名前:名前は開発中のものです。 mailto:sage [2009/06/18(木) 23:58:10 ID:cOrVzTjy] 「モニタの画面更新のタイミングを無視する」なら、時間単位で処理する意味ないでしょ? なぜ時間単位で処理する必要があるかって言ったら、 垂直同期信号待ちをして、ティアリングを起こさないようにしたいけど、 ユーザーのモニタのリフレシュレートが60なのか70なのかが判らない、からでしょ?
509 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:03:49 ID:Wkij18nv] 間違えた。逆だった。 実際の画面の更新途中でメモリ上の画面データが更新された場合に、描画済み画素と未描画画素でフレームがずれるためティアリングが発生する、だった。 要するにAPIでリフレッシュレートを60に設定して60前提で作ればよい。60に対応してないモニタを使ってるやつのことは知らない。
510 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:08:11 ID:AlkmRsbh] なんか「時間単位で処理」と「フレーム単位で処理」の認識が逆になってる気がするw
511 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:12:38 ID:s7w0uGNM] >509 FPS指定APIは過信してはいけない 上のほうにあるようにドライバ側の設定が優先される
512 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:22:34 ID:Wkij18nv] じゃあPC環境は糞
513 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:47:10 ID:pN8o6lEn] >509 「60以外は知らん」と言いきっちゃうのも、それはそれでアリな気がする
514 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 02:05:59 ID:7uKPrG8o] 最近は液晶が殆どだしそれもありだな
515 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 03:38:42 ID:AlkmRsbh] 液晶がどう関係するのか。
516 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 08:04:02 ID:huFKHnzQ] 一般的な普及価格帯のやつは選択肢が60Hzや59Hzしかない
517 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 09:00:27 ID:Dq7L9OoN] >>516 20世紀へお帰り下さい
518 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 09:40:02 ID:4AnMu6gm] 自己中心的なハード理論を押し付けるもんじゃない 動作環境をテキストに書いたら、それを満たすあらゆる環境で同じように動いてもらわないと困る デフォルトで不具合が出る可能性があるなら、設定で変えられるようにしなきゃ駄目 なるべくたくさんの環境でテストするのも大事
519 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 12:28:29 ID:8D0wDPEb] 難しいことしなくても、垂直同期かウェイトかはオプションで選べようにすれば問題ないだろ
520 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 12:57:07 ID:ciGq9GNb] 全くその通りだと思うんだが、 そういう選択式になってるゲームってほとんどみないよな? 普通はどうやってんだろ、ってのが話題の焦点じゃないかな。
521 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 15:25:14 ID:pN8o6lEn] >>517 実際、60Hz固定のモニタも多いんじゃね?
522 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 16:07:46 ID:L4Ogxl+D] 他に話題ねーのかよ 飽きた
523 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 16:47:37 ID:8D0wDPEb] 何か話したい話題があるなら自分から振れと
524 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 23:33:13 ID:Dq7L9OoN] >>521 だから帰れってww
525 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 23:50:46 ID:L4Ogxl+D] んー じゃぁDxLibの今後 俺はもう少し発展してくれてもいいと思う、3Dを強化して欲しいね
526 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:41:17 ID:ynTX3CaL] 無理じゃね 3D強化するなら作り直しレベルだろ
527 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:42:51 ID:FZJG9pXN] デスクリムゾンレベルなら作れるw
528 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 00:53:36 ID:gQS8hglY] 上からくるぞっ!気をつけろ!
529 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:03:05 ID:X3CDDO5o] >>526 いま3D機能作ってるって公式掲示板で言ってたけど・・・ 意外とみんなチェックしてないんだな
530 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:08:17 ID:ppcvkMn4] >>529 なん…だと?
531 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 01:49:27 ID:FZJG9pXN] 俺のクリムゾンは下からくる設定で作るわ
532 名前:名前は開発中のものです。 mailto:sage [2009/06/20(土) 02:34:40 ID:gQS8hglY] せっかくだから俺はこの赤い扉を選ぶぜ!!
533 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:15:20 ID:dtFx8GuN] Platinumっていうマップエディタで、15*20マスのマップを作って csv形式で出力して、読み込んで描画したいんだけど上手くいきません #include "DxLib.h" int WINAPI... { if( DxLib_Init() == -1 ) return -1 ; int mapchip[256]; char mapdata[15][20]; int filehandle; LoadDivGraph("a.bmp",256,16,16,16,16,mapchip); f = FileRead_open("a.csv"); FileRead_gets(mapdata,num,filehandle); このあとfor文でFileRead_getsで読み込んだ1行を15回くりかえして mapchipに入れていきたいんだけど・・・ FileRead_getsのnumに何を入れていいのかが??状態。 リファレンス読んでもメモリ領域のサイズて書いてあるけど・・・ 日本語おかしくてスマン
534 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:35:09 ID:ffHKmVPn] numはメモリ領域のサイズってリファレンスに書いてあるじゃん。 てか、a.csvの内容はどんな感じになってんの?
535 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:48:44 ID:aQAsxkjf] >>533 int mapdata[15][20],mapwidth= 0, mapheight= 0, mapchipwidth, mapchipheight, bitcount; int filehandle; char buf[1024]; filehandle = FileRead_open("a.csv"); if (filehandle==0){エラー処理} int gyoucount = 0,retucount = 0, iVal,layercount; while((FileRead_eof(filehandle) == 0)&&( gyoucount < mapheight+1 )) { FileRead_gets(buf, 1023, filehandle); if (gyoucount == 0){ sscanf_s(buf, "%d,%d,%d,%d,%d,%d", &mapwidth, &mapheight, &mapchipwidth, &mapchipheight, &layercount, &bitcount); }else{ while(retucount<mapwidth){ char *next_token; if (retucount==0){ iVal=atoi(strtok_s(buf, ",",&next_token)); }else{ iVal=atoi(strtok_s(NULL, ",",&next_token)); } mapdata[gyoucount-1][retucount] = iVal; retucount++; }} gyoucount++; retucount = 0; } FileRead_close(filehandle); if( ( gyoucount != mapheight+1 ) || ( retucount != 0 ) ){エラー処理}
536 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 02:49:49 ID:dtFx8GuN] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 3 3 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 3 3 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 3 3 3 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 0 2 2 0 0 0 0 2 2 2 2 2 2 0 0 0 0 3 3 0 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0が草原で1が川で2が森で3が山です 1行ずつ読み込んでchar chip[ ][ ]に入れて その番号をint型の数字に変換してmapchip[ ]で描画させたいんですが・・orz ごめん、メモリ領域のサイズってどうやって調べるの?
537 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 04:17:54 ID:jkwbtsZu] コーディングしたのはおまいさんだろ?
538 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 08:29:25 ID:vb/GsENJ] FileRead_gets(mapdata,sizeof(mapdata),filehandle);
539 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 09:37:49 ID:SurdRKYg] >>507 遅れたけど正確にはダブルバッファリングしてるからティアリングはおきないよ。 データの構築中に画面に表示される事は無い。 あと垂直同期を待ちつつタイマーで調整する事も可能。 具体的にはタイマーでfpsを調整すれば、ゲームが基準にするのはタイマーじゃなく、 一定間隔が保障されてるフレームを基準にすればおk
540 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 13:35:35 ID:QJhUeuVR] マップの縦横が固定長なら ifstream+For2重ループで読み込んでしまえば良い 都合のいいことに半角スペース無視ってくれるからね c++知らなければスルーしてよし
541 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 13:59:11 ID:E25maqZD] 垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの? 最期の2行の意味をくわしく。
542 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 14:24:01 ID:ZO5ct3aw] 可変レートの場合、 60の時は、前回の1/60秒後の世界を描くし50の時は1/50秒後の世界を描くんだろう。
543 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 14:40:01 ID:/SjwP+Lm] ググってると公式サイトのリファレンスに載ってない関数が時々出てくるんですけど、 そういうのが載ってる詳細なリファレンスは無いんですか?
544 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 15:01:10 ID:E25maqZD] 擬似コードでいいからプログラムで説明してくんない? 下記に追記する形で。 while(1){ main_loop(); flip(); }
545 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 15:55:05 ID:gvSWV/Tl] 1秒間に100ドット移動させたい時。 : ScreelFlip() 時間計測A(ミリ秒) : ScreenFlip() 時間計測B(ミリ秒) : 移動距離算出 100 * ( B-A ) / 1000 : ScreenFlip() 時間計測〜 って感じ?
546 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 17:22:04 ID:nC5CYBlY] ぼくのイメージではこんなだけど合ってる? 垂直同期が取れるなら while(1){ main_loop(); sleep until 垂直同期60hz; flip(); } 取れないなら A = GetTickCount(); while(1){ main_loop(); B = GetTickCount(); sleep(17 - ((B - A) % 17)); //1tick = 0.001秒, 17tick = 1/60秒と仮定 flip(); A = B; } ただ、こうするとsleepしてる時間が無駄だから…
547 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 17:24:40 ID:nC5CYBlY] 無駄を減らすために main_loop()の処理時間が十分に短いなら A = GetTickCount(); while(1){ do { main_loop(); B = GetTickCount(); } while (B-A < 17); flip(); A = B; } あるいはタイマーを使うか… A = GetTickCount(); while(1){ main_loop(); B = GetTickCount(); SetTimer(17 - ((B - A) % 17), flip()); A = B; } それとも描画と計算は別スレッドにするか…
548 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:10:23 ID:SurdRKYg] >>541 そうとは限らないよ。 まずfps制限と描画を完全にわけて考える。 fps制限は60に設定したとする。 int nowtime = GetNowCount(); static int oldtime = 0; static int frametime = 1000 / 60; int diftime = nowtime - oldtime; while(1) { if(diftime >= frametime) { oldtime = nowtime; break; } else { Sleep(1); nowtime = GetNowCount(); diftime = nowtime - oldtime; } } これで垂直同期しようがしまいが60で固定された。 1ループで1フレーム1/60秒が保障されたので、1秒で100ドットキャラを進ませたいのなら、60フレームで100ドット進ませればおk 5秒後に何かをしたいときも、5秒をタイマーで計測するんじゃなくて300フレーム後に行えばおk だから>>539 で「ゲームが基準にするのはタイマーじゃなく、一定間隔が保障されてるフレームを基準にすればおk」と書いた。 ただ、これだとスペック不足によって60fpsが出ない場合や、リフレッシュレートが60以外でかつ垂直同期を待った場合中途半端な同期によって60fpsが出ない場合(これは垂直同期を待たない事で解決出来る)、 フレームがゲームスピードの基準になっているのでゲームスピードが遅くなってしまう。(処理落ち) これはこれでおkならそのままでいいが、ゲームスピードだけは死守するのならフレームスキップ(コマ落ち)が必要になる。 この方法も色々あるので今回は割愛。
549 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:20:31 ID:E25maqZD] 結局ティアリング発生するじゃん
550 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:27:19 ID:SurdRKYg] せっかく説明したのになにその全然読んでないようなレスは。 ティアリングの話がしたいの? >垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの? これを解決したいの? どっちなの? てか548を読んで解決出来なかったの? 質問しといてなんなの。
551 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:38:53 ID:E25maqZD] ティアリングを発生させずにどんなリフレッシュレートのモニタでも同じ処理速度で動作させる方法があるかを聞いてる。
552 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:52:15 ID:dtFx8GuN] 14歳からのゲームプログラミング読めよ 書いてあるよ
553 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:52:45 ID:n8mlBebR] >>551 >>539 に書いてあんじゃん SurdRKYgがかわいそすぎる、援護するぜ んでぐぐったらすぐにわかりやすいのでてきたぞ ちょっとは自分で調べろ ttp://spitfire.client.jp/program/fps.html
554 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 20:55:52 ID:dtFx8GuN] 馬の耳に念仏だろうがな
555 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:15:08 ID:E25maqZD] なるほど。 リフレッシュレートをAPIで固定する、か リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する しかないわけか。
556 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:26:14 ID:nqKSgOSf] >>555 何が「なるほど」なんだか・・・ 548をどう読めば 「リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する 」 の説明になるんだよ 読む気がないなら質問なんてするな
557 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:33:30 ID:E25maqZD] >>548 は垂直同期を待たない事で解決出来るとか言ってるから話にならないじゃん ダブルバッファリングしてるからティアリングはおきないとか言ってるし。
558 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:41:05 ID:OYxJ3LRg] ダブルバッファリングとティアリングは関係ないよな。 垂直同期信号待ちしないと、裏画面と表画面切り替える瞬間にモニタ画面更新される事もあるから結局ティアリングは発生する。
559 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 21:59:20 ID:SurdRKYg] >>557 垂直同期を待たない事で解決出来るのは60fpsにならない場合の話だから下5行は読まなくていいよ。 しかもコマ落ちさせれば同期待ちでも解決出来るって書いてあるのに…。 120Hzのモニタで同期待ちするけど60fpsに制限すればゲーム速度も一定になるでしょ? 1フレームの移動量を変更するんじゃなく、移動量をフレームに合わせれば常に一定でしょ? >>558 flipする時はコピーするんじゃなくてVRAMの参照先を変えるだけだから、VRAM上のデータを書き換え途中って事は無いと思うけど。 だからどの瞬間においても描画途中で画面更新される事は無いと思うんだけど違うのかな? もちろんこれはティアリングの厳密な意味でのことなので、広義の意味の 画面のちらつき=ティアリング として使われる事についてはそれでいいけど。
560 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:03:54 ID:nqKSgOSf] >>559 残念だけど垂直同期を待たない場合はビデオカードがモニタに映像を送信している間でも 参照先のVRAMアドレスを変えてしまうからティアリングは発生する
561 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:08:13 ID:OYxJ3LRg] >>559 DXライブラリで裏画面への描きこみ、ScreenFlipってほとんどデフォだよね? これが君のいうダブルバッファリングでしょ? ScreenFlipの垂直同期信号待ちをOFFにして、 タイマーだけでスピード固定するようにして、フルスクリーンで動かしてごらん。 ティアリング一目瞭然だから。
562 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:11:13 ID:SurdRKYg] >>560 そうなんだ。どうもありがとう。 同期しない事によるちらつきは画面更新部分と非更新部分の時間がばらばらな事による現象かと思ってた。 モニタのVsync信号の方が偉くて、そのタイミングでflipした時は次のVRAMの更新先を強制的に参照するみたいな認識でいいのかな。
563 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:16:46 ID:SurdRKYg] >>561 ややや、ちらつくのは一目瞭然だけど、ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。 そのちらつきの原因は、更新部分と更新して無い部分の時間差によるものだと思ってた。 例えば背景が流れる画面の場合、1場面を■、次の場面を□とした場合、 ■□■□■□■□■□ と見えればちらつかないが、 ■■□■□□□■■□ のように見えるとちらついてみえると思うんだ。 でも>>560 のレスで、ティアリング自体も起きているとのことなので一応解決出来た。 これはもうちょっと自力で調べてみようと思う。
564 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:23:40 ID:OYxJ3LRg] 「垂直同期信号待ち」ってのは要するに画面が全部描き終わるまで待つって事だから。 描き終わって、次の画面が描き始められるまでの一瞬の間にVRAMのアドレスを切り替える、って事だね。 そうする事で初めてティアリングを防げる。 >>563 ちらつくというより画面が波打つ、と言った方がよかったかな。 >ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。 ぴったりには合わないとは言え、だいたい60FPSで固定しようとしてスピード調整してるわけだから ズレが生じるのも大体画面更新の同じタイミングになるわけ。 当然、人間の目にもはっきり判るよ。
565 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:40:54 ID:Fv4f33jD] >>563 固定フレームレートの2Dゲーははっきりとわかる キャラだけならともかく背景のスクロールもよくつかわれるからくっきりと 3Dとかで可変フレームレートだとわかりにくくなるかな でも2Dメインでしょ、DXライブラリ
566 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:52:23 ID:i9HN6tkr] 問) 垂直同期を待たずにティアリングを抑制する方法を答えよ 答) 垂直同期信号の発生周期をフリップのタイミングの合わせればよい
567 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:06:19 ID:FjFdKqe+] 誤字があるから△だな
568 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:09:10 ID:SurdRKYg] >>564 CRTの場合は走査線があるので画面の上半分と下半分で違う場合もあると思うんだけど、 液晶の場合は1画面をいっぺんに更新するわけだけど、それでも上半分と下半分で違うようなものになるってことなのですか? VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな? そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!? それってそもそもおかしくないですか? バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。 じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら "同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。 なのでやっぱり液晶の場合はティアリングは起きていないと思いますがどうでしょう? >>565 えと、だから、画面更新に合わせずに好き勝手にflipしたら、 ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。 だからちらつくように見えると思うんだけど、 肉眼でただちらつくように見えるからってそれはティアリングが起きてる証明にはなってないよ。
569 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:33:13 ID:E25maqZD] とりあえず3行以内に要約する癖をつけてくれ
570 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:41:01 ID:nqKSgOSf] >>568 >VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな? Yes >そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!? Yes >バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。 ? 何を言いたいのか良くわからないけど VRAMのデータをモニタに送るタイミングはPC側からは操作できない リフレッシュレートに依存する >じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら >"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。 縦解像度nの画面データをモニタに送る流れ 0lineを転送→水平同期期間→1lineを転送→水平同期期間→ nlineを転送→垂直同期期間→0lineを転送→水平同期期間 つまり、垂直同期間は1画面分のデータを転送した後にくるので、 「VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速い」 というのはそもそもありえないよ、nline分送る前に垂直同期期間に突入する事はないから・・・
571 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 23:45:26 ID:nqKSgOSf] 2点修正 >リフレッシュレートに依存する 厳密には設定した解像度とリフレッシュレートに応じて発生する 水平同期信号と垂直同期信号に依存する >0lineを転送→水平同期期間→1lineを転送→水平同期期間→ >nlineを転送→垂直同期期間→0lineを転送→水平同期期間 0lineを転送→水平同期期間→1lineを転送→水平同期期間→ (n-1)lineを転送→垂直同期期間→0lineを転送→水平同期期間 の誤り
572 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:07:43 ID:kame7wv0] >>569 おまえ顔真っ赤だぞ?
573 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:08:14 ID:1Ugl+7iQ] で
574 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:09:59 ID:ErP4dB7R] >>570-571 そういうことだったんですね。 詳しい説明どうもありがとうございます。 >VRAMのデータをモニタに送るタイミングはPC側からは操作できない >厳密には設定した解像度とリフレッシュレートに応じて発生する >水平同期信号と垂直同期信号に依存する ビデオカード側がモニタに送るタイミングを主導しているんだと思ってましたけど、そこが間違っていたようです。
575 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:14:49 ID:kAGY284T] >>568 >だから、画面更新に合わせずに好き勝手にflipしたら、 >ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。 >だからちらつくように見えると思うんだけど、 ちらつくっていうよりも、それはがたつくというか、コマ落ちとかそういう心配でしょ? ティアリングってのは君が言ってるように上と下の画像にズレが生じる現象だから、 横に対して線が入って(実際にはドット単位でずれてる)波打ってるようにみえる。 コマ落ちだったらこうは見えないはずでしょ? 実際にプログラム動かしてみてみれば一目瞭然だと思うんだが……。
576 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:17:48 ID:VZ3co5HH] >>552 14歳のやつ 計算式思い切り間違えているぞ。 実際にリフレッシュレートの違うモニタで確かめたから間違いない。
577 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 00:28:31 ID:XZV3fJ2J] あれ分母と分子逆になってるのかなあ
578 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 09:11:17 ID:4PYRYd3U] >>576 何がどう違うのか具体的に例をつけて書け 改良案も書け
579 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 14:34:23 ID:N6BYq6eh] >>578 ママにでも頼め。
580 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 15:54:58 ID:VZ3co5HH] >>578 自分で考える癖をつけよう。 適当な数字を入れて検証してみ。 明らかにおかしいのがわかるから。 どうおかしいのかわかれば治し方は自明だと思う。
581 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 17:39:07 ID:oZ+8nNkj] >>575 学生さんなのかな? デジタル写真に法的な証拠能力は無いわけだが
582 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 17:40:41 ID:pV5yAQzs] なんの話だw
583 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 18:16:54 ID:VZ3co5HH] どこの誤爆だw
584 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:45:11 ID:C5JJD30U] これが若さか。
585 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:51:20 ID:CIAC500Z] いいや幼さだ
586 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 20:51:55 ID:kame7wv0] 中年オヤジは黙っとけよクズ いい年こいて2chやってんじゃねえよカス
587 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:05:11 ID:CIAC500Z] こんなヤツもDXライブラリ使ってるのか……
588 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:10:13 ID:kame7wv0] 悪いの?使うのに制限あるなら教えてくれませんかね?
589 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:11:51 ID:CIAC500Z] 初心者向けライブラリのスレなんだし、カリカリしないでまったり行こうぜ?
590 名前:名前は開発中のものです。 [2009/06/22(月) 21:32:05 ID:6Vl6l2Pm] クソスレ晒しアゲ
591 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:58:40 ID:kame7wv0] まったく・・ オッサンにもなってゲームでも作ってんスかね?w
592 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 22:52:27 ID:wZqXAX7r] 世界のゲームプログラマーの殆どがオッサンですよ
593 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 23:27:33 ID:PR8N99oV] そもそもおっさんって何歳以上?
594 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 23:37:18 ID:6Vl6l2Pm] hideyoshi.2ch.net/test/read.cgi/lovesaloon/1235930554
595 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 00:57:26 ID:JW/qeXlf] DXライブラリはDixq氏のゲームプログラミングの館の影響で東方厨が流れ込んできてるからこんなのはゴマンと居るよ
596 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 01:04:40 ID:/wkYhisO] いちいち煽らない。
597 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:24:14 ID:eUvBMQ0G] おっさんでもガキでも宇宙人でも何でもいいから、 DXライブラリでおもしろいゲーム創っていこう。
598 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:52:25 ID:dhA25QDv] >>580 こういう奴は駄目だな…… デバッグ報告になってない 再現例も書けない奴は現場に出てこないでほしいと思う そもそも「適当な数字を入れたら」ってのは、「適当な数字が必ず入る」という前提なのか? プログラムの動作の中で「適当な数字」が入らざるを得ないような状況を説明できるのか? 例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが チート使ったらゲームがバグった、レベルの議論は論外だ こういう人に限って動的な数値に固定値を代入したりしてるんだから
599 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:57:56 ID:NMdhocxd] 自分で調べようともしないで、他人に訊けば答えが返ってきて当然と思う人間の方が 現場では嫌がられると思うぞ。
600 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 09:58:29 ID:NvkMU1Q4] >>598 わからないなら、わかりません教えてくださいって素直に言えばいいんだよ。
601 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 10:49:50 ID:4P883XyE] 嘘なら嘘でしたといったほうがいい
602 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 12:18:26 ID:A0fh8Dl0] 作ってて楽しいからゲーム製作してるんだろ? なんでこんなカリカリしてんのさ
603 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 12:28:04 ID:btxPW8HG] 分をわきまえず背伸びしてるから疲れてるんだろ
604 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 15:57:39 ID:+DVKp8CT] >>598 わからないなら素直にそういえばいいじゃない。 >例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが >>576 疑うならリフレッシュレート変えて実際に試してみ。
605 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 17:46:43 ID:ifo/8btq] ソース見せてくれたら第三者にも判断つくんだけどね。
606 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 22:32:28 ID:BZp72+wO] ここ現場じゃねーし 掲示板だし そもそも教えない奴にこそ性格に問題抱えてる事がほとんど
607 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 22:34:58 ID:BZp72+wO] わからない、とそいつが言ったら言ったで責めんの目に見えてるし ググレとかそれ以前のことでしょとか嫌味吐くのおまえらじゃん
608 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:13:33 ID:joZZV7Mo] フレーム単位で処理してモニタのリフレッシュレートに合わせて移動量を変えればリフレッシュレートによらず処理できることは分かるけど、 例えば、タイトル画面でスタートボタン押してから次の画面が表示されるまでの待ちの処理ってのはどうやってフレーム単位で処理すればいいんだろう。
609 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:19:45 ID:+iWMMldZ] >>607 これだけ色々答えてくれる場でなんでそういう考えに至るのか。 あまりにガキ過ぎる。
610 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:21:51 ID:UNSoodNB] そんなもん無視しろ
611 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 23:24:00 ID:ifo/8btq] >>608 どういう意味? 待ちの時間って、本当に何もしないって事? それともデータロードとかしてる時の事?
612 名前:名前は開発中のものです。 [2009/06/23(火) 23:53:01 ID:95CP5Nno] ゆとり乙 ガキは教えて貰うのが当たり前だと勘違いしてるから始末が悪い。
613 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 00:21:16 ID:9O2FRRtx] 移動量だけでなく待ちのフレーム数も可変にしないといけないとなるとちょっと面倒だな
614 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 00:45:52 ID:km6ob3xz] >>607 //14歳本より //リフレッシュレートの高い環境ほど1フレームあたりの移動量を小さくしfloatの配列にセットする void SetFrameRate() { float frametime = 0; unsigned int s = GetNowCount();//計算開始時刻をsに代入 for(int i=0; i<30; i++) { ScreenFlip(); unsigned int e = GetNowCount();//計測終了時間をeに代入 frametime += e - s ; s = e; } frametime = frametime/30;//30回採取した経過時間の平均を取る for(int i=1; i<20; i++) { idouryou[i] = i / frametime * 16.67;//←ここの式が間違い!自力で治そう! } } 解説文は間違っていないから単純ミスだろう 適当な数字を入れてみって言ったのは frametimeの値が小さくなればどうなるか式に入れて考えてみってこと 試すまでもなくこの式がおかしい事が判る筈
615 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:14:19 ID:OqjteeH5] FPS計測するとき同じミスよくやったなぁ
616 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:20:49 ID:zu36k+NF] 俺もそこおかしいと思ってずっと悩まされてた 答え言っちゃいけないのかな あそことあそこ入れ替えるでおk?
617 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 01:31:30 ID:km6ob3xz] >>616 うん。 それでおk。 ちなみに初版で気付いてラトルズに付属の葉書で出したが C++本でも後の版でも訂正されなかった。 サポートページに訂正箇所のpdfがあるが読んだら全然違う箇所のことだった。
618 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 02:15:36 ID:6DfYO0Sm] 14歳から〜って読んでる人結構いるんだな
619 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 10:34:44 ID:QnhT+AWI] 知らぬは、著者ただ一人だけ
620 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 15:00:37 ID:iWb66gX0] 「14歳〜」って読んだこと無いのだけれど、 これ買ったらDXライブラリの作者さんに何らかのお金が行くんだろうか? 行くなら買ってもいいかなあ。
621 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 19:31:31 ID:iPuVSgwO] >>616 何で答えを言っちゃいけないとかいう言葉が出るの?お前は? バカなの間抜けなの?なにがそんなに秘密にしたがんの?死ねば?
622 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:29:05 ID:2pcTgAck] 釣りだとわかってるけど笑ってしまったw
623 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:33:55 ID:cCHdRy2i] ティアリングに拘るよりやることがあるだろw 釣りであってくれw
624 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 20:53:30 ID:km6ob3xz] ネタじゃなかったら日本が滅ぶw
625 名前:名前は開発中のものです。 mailto:sage [2009/06/25(木) 00:07:29 ID:lGFh6/SQ] ティアリングサーガだな
626 名前:名前は開発中のものです。 mailto:sage [2009/06/25(木) 00:30:15 ID:z4Ht8mWs] こだわるのはプログラマの性だしなあ
627 名前:名前は開発中のものです。 [2009/06/28(日) 16:38:04 ID:Mn3+4Pod] 例えば class Enemy{}; と class Player{}; ってのがあったとして、両方とも座標用変数がpribate:になってる場合、両者の当たり判定はどうやって組んだらいいかな? あと、Enemyをたくさん出したい場合って、class Enemy型の配列をつくっていいの? それとも他になにか良い方法があるのかな? 今現在、練習を兼ねてミニゲームのようなものを作ってて行き詰っちゃって。 よかったら教えてください。
628 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 18:36:01 ID:zlbWct1+] 俺は面倒だからpublic でやってるけど まあ普通は getx(){return x;} という public なメンバ関数から座標を取得するのかな もう一方の方は俺はEnemy型のlist でやってるけど 配列でも別にいいんじゃないかな まあ俺みたいなへぼいのから聞くより出来る奴から聞いたほうがいいと思うが
629 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 18:52:38 ID:L4rlBUkj] Enemy中でplayer->touch_p(this->x,this->y)とかどうかな
630 名前:名前は開発中のものです。 [2009/06/28(日) 19:48:47 ID:Mn3+4Pod] >>628-629 返答ありがとうございます。 さあ当たり判定を作ろう。と思ったときに上記のことでつまづいて書き込ませもらったんだけど 返答があるまでちょこっとなにか加えようかなと思っていじってたら、上から降ってきたものが 地面についたとたん固まるという想定外の現象に見舞われて、コードの半分ほどを書き直す 羽目になってしまって。 いまだ復旧作業の途中なので、せっかく返答してくれたけどその知識を使うのはもう少しあとになりそうです。 とりあえず、HitEnemy()というメンバ関数を作って、Playerのポインタを渡す感じでいこうかと思ってます。 …出来ないかもしれないけど。返答ありがとうございました。
631 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 20:07:12 ID:FGL1jWKo] ポインタを渡しても直接値を参照することはできないから privateならget使うことになるんじゃないかな。 めんどいなら一時的にfriendしてやるとか。
632 名前:名前は開発中のものです。 mailto:sage [2009/06/28(日) 21:45:36 ID:J3SLmnCX] >privateになってる場合 って書いてあるけどprivateにする意味があるからprivateなんじゃないのかな。 参照したいならprivateにする意味がないって事なので、 publicにするかアクセサメソッド作ればいいのでは。 まあ後者がいいと思う。
633 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 00:05:45 ID:ExNjCSjV] 仕様がワカランからアレだけど、Enemy同士の当たり判定は必要ないのかな。 後、これも仕様がワカランからあれだけど Direction(方向)の情報とか必要ないのかな。
634 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 00:08:39 ID:0NdYoqqQ] シューティングだとそれらのことあまりやらないんじゃないか 無駄にそういうの増やすと負荷増やすだけだし ゲームによってはそういうこともやるだろうが
635 名前:名前は開発中のものです。 [2009/06/29(月) 23:41:07 ID:0tScVOcn] Enemy同士もPlayerと同じ方法で判定すればよくないか?
636 名前:名前は開発中のものです。 mailto:sage [2009/06/29(月) 23:46:20 ID:4d+M4K38] playerとenemyなら1対多だけど、enemyとenemyだと多対多になって 判定回数が飛躍的に増えるって事でしょう。
637 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 00:59:39 ID:2TdNpUsa] そもそも何でprivateなのか分かってんのかと 理屈がわかんなきゃ全部publicにしてもstaticにしてもいいじゃないかって話になる クラスの意味をまず勉強した方がいい
638 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 12:36:26 ID:YPE4/kWn] GraphLock と GraphUnLock って以前はリファレンスに載ってたと思うんだが、見つからない。 サンプルが見たかったんだけど、以前のリファレンスってもう見れないのか。 インターネットアーカイブはダメだった。
639 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 12:48:34 ID:EGHH7lwt] >>639 過去スレにそれっぽいものが www.2chsearch.jp/?b=gamedev&d=1224923873#kiji_828
640 名前:名前は開発中のものです。 [2009/06/30(火) 13:51:06 ID:A8eMVGin] タヒチで日本の即席めん大人気 リゾート地として知られる南太平洋のタヒチ(仏領ポリネシア)で、たつの市の食品メーカー「イトメン」が製造するインスタントラーメンが売り上げを伸ばしている。 ここ10年で輸出量が倍増しているほか、現地商社の依頼で2年前からカップめんの販売も始めるなどファンを増やしている。 イトメンによると、タヒチへの輸出量は1998年が155万食だったが、2008年には356万食に倍増。 神戸税関によると、神戸港の即席めんの輸出量は07、08年と連続で全国一。 うちタヒチへの輸出は08年が303トンで、同税関は「タヒチ向けはほとんどがイトメンの製品」という。 イトメンの即席めんがタヒチへ渡るようになったのは40年ほど前で、神戸の貿易会社がタヒチに住む中国人向けに輸出したのが始まりという。 タヒチには118の島に23万人が住む。今はシェア6割ほどを占め、イトメンが直接輸出している。 即席めんは、国ごとの味覚に合わせるケースが多く、現地生産が主流。 同社は日本で販売している「チャンポンめん」と味は同じで、パッケージを変え「ALL-IN-ONE」の商品名で販売しているが、現地でも受け入れられている。 人気が高い理由について、同社の伊藤充弘社長(53)は「香港製などライバルの製品が少ないためでは」と分析。 タヒチで日本の旅行会社現地法人で10年間働く日野到さん(36)は「日本のラーメンは最も品質が良くて人気。よく売り切れている。 長年、安定して輸入が続いているイトメンの商品が定着している」という。 伊藤社長は「最近は原料の高騰で利益はほとんどないが、親しまれている味を届け続けたい」としている。 www.kobe-np.co.jp/news/keizai/0002072011.shtml 【グルメ】タヒチで日本の即席めん「イトメン」が人気 tsushima.2ch.net/test/read.cgi/newsplus/1246257826/ 【イトメン】 イトメンのチャンポン麺 【総合スレ】 Part2 gimpo.2ch.net/test/read.cgi/nissin/1185419295/
641 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 14:07:23 ID:6Cj5H8P6] 貴重な小麦粉をインスタントラーメンなんかに使うな馬鹿たれ。
642 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 14:12:28 ID:IiroK7Eg] ここはニュー速じゃないぞ
643 名前:名前は開発中のものです。 mailto:sage [2009/06/30(火) 21:08:32 ID:O5h6+0gK] 私がニュー速だ。ここをあけろ!
644 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:09:56 ID:g4kBRgyq] DXLibを使う場合、全体を int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpc, int nC){ while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ 〜 } } こう言う風に作れって本に書いてあったんですが この構造と本格的なwinプログラムの場合のウインドウズプロシージャとかとの関係がイマイチわからないのですが どういう風になってるんでしょうか?
645 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:15:05 ID:UhT4qFyx] >644 関係ないと思っておk
646 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:21:01 ID:tzxPZ+Bo] 初めてDXライブラリ使った時、小難しいwinプログラムがなんでこんなツクールみたいになるのかと愕然としたよ
647 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 00:31:13 ID:9VzVKeVm] 俺も最初WinMainではウインドウ作成とメッセージループしかしちゃいけないと思ってた 知人がタイマーイベント仕掛けてWM_TIMERがきたときにループ処理してたからそういうもんだと思って疑わなかった
648 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 05:08:47 ID:aia3X3LP] BorlandC++BuilderやDelphiのソースを読むともっとビックリするよん。
649 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 09:35:30 ID:LrL8gFoC] 落ち目会社だしどうでもいい
650 名前:名前は開発中のものです。 mailto:sage [2009/07/01(水) 19:59:44 ID:eeCacGXj] >>646 きちんと関数化、ライブラリ化すれば難しいゲームでも綺麗に書けるってこと DXlibの機能には制限があるし、余計な機能もついているので、 最終的に自分で最適なライブラリを書くようになれるのがいいよ
651 名前:名前は開発中のものです。 mailto:sage [2009/07/03(金) 20:54:33 ID:BsjXjKQw] SetMainWindowTextが未定義関数扱いされるんだがどういうことなの・・・ 他の関数は普通に使える
652 名前:名前は開発中のものです。 mailto:sage [2009/07/04(土) 18:08:40 ID:p2ue3IYD] >>651 うちでは正常に動くが。ヘッダから消してしまったとか。
653 名前:名前は開発中のものです。 mailto:sage [2009/07/06(月) 22:42:09 ID:AVbDbUwf] ステータスバーってどうやって付けれるのよ? おせーて
654 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 01:56:14 ID:OgMSMAZ5] ファイルから再生する音楽のループ位置を設定することはできますか?
655 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 02:25:32 ID:94Ripojr] >>654 SetLoopPosSoundMemではだめなの?
656 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 02:58:22 ID:OgMSMAZ5] >>655 ありがとうございます。すみません、説明不足でした。 PlayMusicでストリーム再生し、ループ位置を設定したいのです。
657 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 11:53:36 ID:Qn1Es1Py] >>655 SetLoopPosSoundMemとSetCreateSoundDataTypeを使って解決しました。 ありがとうございました。
658 名前:名前は開発中のものです。 [2009/07/08(水) 22:05:37 ID:qTICtjjx] CPU Core 2 Duo 2.66GHz RAM 4GB GPU GeForce 9600M GT VRAM 2GB OS Windows Vista 64Bit DxLibで作られたソフトをこいつで動かすと、始めは60fpsでなめらかにも関わらず、 しばらくすると30fpsになるのはなぜなんだ? ガクガクするならまだしも、ぴったり30fpsなんだ。 またしばらくすると治ったりもするし、なにかひとつの関数が原因になってたりするのかな?
659 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 22:17:02 ID:i+ja7A8H] ScreenFlip()を2回呼んでいるとか
660 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 22:40:16 ID:uhEtjIe1] Vistaのいたずらじゃないかな? うちも24か30で安定、フルスクリーンだと60fpsありがとうございます状態。
661 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 23:16:39 ID:tUPC3dXe] なんか最近どっかで見たような質問だな……。
662 名前:名前は開発中のものです。 mailto:sage [2009/07/08(水) 23:26:07 ID:Sk8AIN2R] ビデオカードとそのドライバと設定だな 60、30、24ってよく見る数字だし
663 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 01:06:35 ID:h1wYunUV] 60hzに同期して描画したとする (1) 1フレームの処理が1/60秒未満なら1秒間に60回描画できる (2) 1/60秒以上2/60秒未満なら30回描画できる つまり瞬間的には30か60のどちらかになる 1のケースと2のケースが混ざったとすると長期的には平均することで30と60の間の値になりうる しかし大抵の場合は1フレームの処理が1/60秒で収まるか、あるいは超えるかで30と60に分かれる と予想
664 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 02:46:07 ID:IPUdantx] ていうか垂直同期信号待ちをしてるのかしてないのかを先に明記してくれないと。
665 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 22:24:55 ID:9TUAw73M] GPUの垂直同期をオフにしてもオンにしても結果が変わらず。 というか、GPUの設定をどう変えてもまったく同じ・・・
666 名前:名前は開発中のものです。 mailto:sage [2009/07/09(木) 23:12:54 ID:PnCCkvgD] もともとDXライブラリ側でOFFにしてるんじゃないの?
667 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 06:17:28 ID:On7fn4n8] 画像を半透明で描写する方法ってDXライブラリにありますか?
668 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 06:55:03 ID:aqVpLVfM] リファレンスも読めんのか…
669 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 09:02:40 ID:G7FiBYYu] あるよ。リファレンスにある。 全部読んでそれでもわからなかったらまたおいで。
670 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 12:51:04 ID:xhZ5jDJO] 座標ってxyで行うから構造体でセットにして扱うのってなんか不都合ある?
671 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 13:23:29 ID:Pbfo1cNY] 無いよ。 bullet[i].locate.x = 320; とか多重に扱うと見た目が重く感じるぐらい。
672 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 13:23:43 ID:GMEf2Yqs] 全然ないから、POINT を使うと良いよ。
673 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 15:09:18 ID:xhZ5jDJO] >>671-672 thx 多重に気をつけて、メンバ変数は極力そのクラス内で処理するようにしますわ
674 名前:名前は開発中のものです。 mailto:sage [2009/07/10(金) 23:17:50 ID:kvfVpi7w] EnemyManager.Small.Flying.Bullet[i].Location.x = GameCanvas.TopLayer.ViewObject.Set(320); とかなら、ちょっとは考えろよwwとか思うけど。 普通に組んでる限りじゃ、そんな気にする必要はないかと。 どうしても気になるなら、POINTなりをpublicで継承すりゃ、 bullet[i].x=320にできるし、どうせゲームだからこれで問題無いでしょ。
675 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 01:55:20 ID:UeAE0WWV] アクセス権が気になるなら参照を返すアクセサ作ればいいしな bullet[i].x()=320; これくらいなら見た目もタイプ量も許容範囲だろ
676 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 01:56:20 ID:UeAE0WWV] あ、もちろんインライン展開される書き方前提でな
677 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 07:49:08 ID:wBBMdddU] そういったセットになり易いものって他にどんなのがあるかな?
678 名前:名前は開発中のものです。 mailto:sage [2009/07/11(土) 18:21:58 ID:SvZlB+M+] セットって?
679 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:20:59 ID:wRlAP6qv] たまにタスクが応答なしになるという原因不明のバグに悩まされ 再起動してみると普通に実行されるのは何だろう
680 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:40:19 ID:mFQZCpWd] >>679 何を言いたいのか分らんが・・・ (エスパー希望の相談なのか、只の雑談なのか、愚痴なのか?) とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、 単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・) だろう。 とりあえず、printfを色んな所に仕込んでおいて、デバックを掛けるとかするのが基本。 怪しい所がどうみてもライブラリ側だったら、公式に書き込めばいいし、 そうでないなら、再現性を高めて、その変な挙動をここででも、公式ででも聞いてみればいい。 大概は、配列でindexが超えて・・・・とか、switchでbreak;が抜けてて・・・とか if文の後に変なモノがあって、ifでの抜けだしが効かなくなってたりとか、 {}の対応が微妙にずれてて・・・とか、初期化してないのを使っていて、タイミング次第で・・・とか (後は、WindowsUpdateしてなさ過ぎて、リターンが遅れてるのを応答なしに解釈されてるとかもあるか、)
681 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 04:49:20 ID:wRlAP6qv] >とりあえず、タスク がタスクマネージャーとかのタスク(application)の事なら、 その通り >単純にどっかが無限ループに嵌ったか、画面書き換えの部分を通らなくなったか(orキー入力の部分を・・・) >だろう。 そういった部分は見当たらなかった 何せOSを再起動させてそのプログラムを再び実行させたら何の問題もなく動いたのですからプログラムに原因があるとは思えないのですが
682 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 05:07:49 ID:pOq3rm7P] そういう現象が出てるのが君だけなんだから君のプログラムに問題があるか、 あるいは君だけが体験できるくらいレアな現象って事になるだろう? 調べる事ができるのは君だけなんだから 素直に>>680 の忠告に従って、きちんと調べていけばいい。 「これで合ってるはず」なんて余計な「思い込み」はデバッグ作業の邪魔にしかならないぞ。
683 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 05:36:27 ID:mFQZCpWd] >>681 それだけの事で、プログラムに問題があるとは思えないって・・・・ とりあえず、 初期化なしでつかってる場合にはOS再起動とかで簡単に変わるし、 時間取得なんかをちゃんと処理してないと、 日にち跨ぎや時間跨ぎで、発生したりしなかったりする。 >>682 も言うとおり、思い込みよりも手を動かしてデバックしなぁ。 プログラムは書いた通りに動いても、思った通りには動くとは限らないんだからさぁ。
684 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 06:46:29 ID:wRlAP6qv] だってデバッグしたけど分んないんだもん まあ動くようになった訳だからそのまま何事もなかったかのように過ぎていくのだろう
685 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 07:14:55 ID:MgrfsfEm] forやwhileで使ってる変数の初期化忘れあたりが怪しいけどどうなんだろうな
686 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 07:53:46 ID:wRlAP6qv] それはないと思うがなあ その可能性のあるコードって、(実行時に処理を通ってるコードの中で) while( (!ProcessMessage()) && (!keybuf[KEY_INPUT_ESCAPE]) ) しかなかったんだが(変な書き方でスマソ) 確かに keybuf はグローバル変数にしてしまってるし char keybuf[256] = {0}; で初期化したつもりになってるけどどうなんか分らん まあ動くようになったし確認しようにももうできないからな、動くから まあ良しとして続けるしかないな
687 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 08:07:50 ID:1FTDe9TM] こうしてバグが量産され、ついにはうんともすんとも動かなくなりねあげる姿が
688 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 09:43:25 ID:MgrfsfEm] 裏画面の内容をテクスチャにコピーする関数ってあったっけ?
689 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 20:58:42 ID:2Fk/wASW] 「無いと思う」とかじゃなくて確かめないと。 プログラムに思い込みは絶対あかん。
690 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 23:37:46 ID:wRlAP6qv] だって動くようになったから確かめようがないじゃん この先動かなくなる可能性ないわけではないが そうなったところでこれ以上バグは見つからんだろうな、俺の力では
691 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 00:00:28 ID:MHxGaYOY] だからprintfとかで一つ一つ処理の中身を吐き出して見るんじゃん。 外見上動いてても、バグがあれば意図してないデータが含まれてる。
692 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 01:08:24 ID:ouOmT7td] うーん、やっぱりバグがあるとはどうしても思えないし 多分printfとかで一つ一つ処理の中身を吐き出して見てもどの道今の俺の能力では バグを発見できるとは思えないから忠告はありがたいがこのままいくことにするわ 以前も同じようなこと何回かあったしそんときもちゃんと完成まで漕ぎ付けているし
693 名前:名前は開発中のものです。 [2009/07/15(水) 01:17:22 ID:Pli3pE87] ID:wRlAP6qv ID:ouOmT7td お前さ、そんなスタンスなら、なんでわざわざここに書き込んだわけ?はじめから書き込むなよ。 なに、構って欲しかった?わざわざお前の書き込みに一生懸命考えてレスしてくれた 人達に失礼だと思わないの?
694 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 01:49:11 ID:9zT2ADv7] 実際問題、再現性のないバグを修正するのは難しいよ。 プログラムを書いた本人に見当がつかないなら、他人の経験に頼るのも良いと思うよ。 自分がそんなバグにぶち当たったとしても根気だけで調べようとは思わないな。 時間が余ってるなら別だけど。 で、他人の立場から言うと、あれだけの情報で問題のありそうな点を指摘するのは無理だ。 アドバイスとしてはバグ発見を諦めるのではなく自分用バグリストを作ってそこに追加しろ。
695 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:09:56 ID:ouOmT7td] 何かヒント得られると思って… でアドバイス通りに考えてみたけど駄目だった
696 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:15:50 ID:oAaV9htY] >>695 そうか、お疲れ。 コード晒す勇気があれば、案外デバックしてくれる人が居るとおもうけど… (自分一人だと考えがなかなか間違いに気付きにくいからコードレビューは有効だと思う) 「アドバイス通りに考えてみた」ってのは、 もちろん、printfとかでデバック情報をポコポコ吐き出させたけど、バグらしき場所が見あたらなかった って意味だよね。念のため。
697 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 02:28:23 ID:HAQqwNAf] ソースうpしろ 無理なら帰れ
698 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 06:33:25 ID:jzF+qqts] 最小のコードを切り出してる最中に問題が解決することって結構あるよね? 俺だけ?
699 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 07:55:06 ID:OJRObvUW] あるある 意外とバグって見当つけてたとこ以外にあったりするもんなんだよなぁ
700 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 08:38:43 ID:MHxGaYOY] >>696 >>692 でデバッグしてないと言ってるじゃん。
701 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 10:08:04 ID:kzUIqF8J] バグを直接見つけようとしないで、確実にそのバグを再現できるようにするのが第一歩
702 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 10:45:30 ID:jzF+qqts] >>701 分かる分かるw そしてバグを再現させるのは非プログラマに丸投げする俺
703 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 11:25:55 ID:aCtz8rQi] で少しずつ条件を変えてあたりをつけていく。
704 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 20:48:39 ID:vgHuQMIa] おまえら仕様書切らないから テストも作れないし そもそもバグなのか想定なのかも混乱するんだろ?
705 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 21:06:50 ID:SOTm+sdF] 分け入っても分け入ってもバグの山
706 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 21:09:53 ID:MHxGaYOY] 仕様書、製造終了してから書いた記憶しかないなぁ…
707 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 23:03:43 ID:MZkEPg1i] >>704 最終的にうまく動作するものが仕様です。 どだい、仕様書でバグが防げると思ってる法が異常。 仕様書の想定だろうが、結果駄目ならバグだろ!
708 名前:名前は開発中のものです。 mailto:sage [2009/07/15(水) 23:17:51 ID:OJRObvUW] 個人製作だし仕様書なんて全部脳内の香港式です 仕様の段階でバグ出すレベルの人はちょっとヤバイ。
709 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 00:10:27 ID:ZK0MxNzH] 脳内でまとめようとして、てこずるものを 紙に書いてみたらあっさり解決ってのはよくあることだけどな。
710 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 03:15:22 ID:1/ar+JW7] そういえば話はずれるけど、「仕様を全てきっちり書いて、それを紙に印刷しておく のが重要なんです!」と力説する新人が入った時を思い出した
711 名前:名前は開発中のものです。 [2009/07/16(木) 10:03:06 ID:qgWixxR7] 人それぞれで、 仕様書がなければダメになる人とそうでない人がいる。 始めた時は正しい方向に向かっていたが、 出来上がった時には違った方向を向いている、 世の中にはそんな人も多くいる。 チームで進めるとき、意思の統一が重要で 依頼しても、出来上がりが違うものになるのは困り者。 人それぞれなので、きちんとできるひともいるので、そのような人は不要と言われる
712 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 10:53:13 ID:glHWB671] もし、違うものが出来上がってきたら、 「言った、言わない」の問題になってしまうから あらかじめ、ちゃんと紙にして保存しておくって事だろう。 できるできないの問題じゃないよ。 自分のため、相手のための保険みたいなもんだ。
713 名前:名前は開発中のものです。 [2009/07/16(木) 11:11:34 ID:qgWixxR7] 掛け捨て保険ではない。 チームで行う時の基盤になる、開発ドキュメントとして 取り扱い説明書として、保守業務の基準として必須のものである。
714 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 11:30:46 ID:Frg8+T60] チームでやるなら仕様書必須 作り方が違うだろ ttp://marupeke296.com/DXCLS_BottumUpStructingOfClass.html
715 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 13:48:32 ID:JxCE3uCo] コメント見ただけで仕様が把握できるようなソースが書けるようになりたい いつかは。
716 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 16:20:01 ID:MA5d2Bm1] コメント書かなくても把握できるソースが理想かな。
717 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 16:29:44 ID:K0RdyJ0x] どうも英語のコメントは読むのも書くのも苦手で……
718 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 17:36:09 ID:sfuED1R6] 悪ノリではっちゃけたコメント書いてるのは俺だけではないはず
719 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 21:20:58 ID:0qzmxnba] >>715 ダウト 仕様はソースと答え合わせする為のもの ソースみて内容がわかるのと、本来どうあるべきなのかは別問題
720 名前:名前は開発中のものです。 mailto:sage [2009/07/16(木) 22:04:34 ID:sfuED1R6] そうか個人製作の場合ととチーム製作の場合と仕様書と仕様と仕様バグとバグを はっきり切り分けないで話してるからこんなにカオスなのか
721 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 09:45:51 ID:iPNwCeP8] みんな自分の話してるだけだからな
722 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 09:47:37 ID:ZC/cxW1d] メンバ関数でモジュール化するだけだよ、基本的には それにコメントは確かに大事だが 関数名をgetScreenFrameParSecondみたいにきちんと書けば、仕様が明らかにわかる クラス・変数名も同じ 例えばiteratorをitとか省略して書くのはダメ タイプ速度は速くなるが、後のコーディングで詰まるから、作業は全く速くなってない。むしろ遅くなる 省略しなければiteratorという言葉を知らない他人が見ても、ググれば意味がわかる あとは、日本語で名前つける人がいるけど ネットに和英辞書あるんだから使ってほしい 英語の勉強になるし国際化にも対応できる
723 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 10:08:40 ID:fic4arti] そこまで欧米コンプレックス持ってないし…。 国外にソース晒すほど立派なもん作れるなんてうぬぼれてない。
724 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 10:48:52 ID:XzHK2st6] 自分で分かりやすいのが一番
725 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 11:36:53 ID:71PbqEZA] 趣味の範囲内だし態々・・・
726 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 14:37:53 ID:AtGtaSaV] 熊々翻訳しなきゃわからないレベルの英単語は使わないかな
727 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 14:42:09 ID:vX9OmGXP] FileHandle ofh ( FileName, ">" ); とかは問題ないと思うけどな。宣言のクラス名で大体分かるし。 宣言が遠すぎて分からんような関数ならその時点で問題だし。
728 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 15:20:17 ID:vX9OmGXP] というか、「ローカルスコープの」識別名は短いのが主流な気がするんだけど。 定番の良書とかでも普通みんなそうだし、Linuxカーネルみたいな大物ソースでも そうだし。 結局、識別名だけで理解できる情報は限られるのも現実。そうでなければ、それこそ アプリケーションハンガリアンなんかを全識別名に徹底すれば最高なのかもしれない けど、実際は関数エントリにはしっかりした出入り仕様のコメントが欲しい訳で。 まぁ、スレ違いなんだけどね。 正直、D3DXのせいで、「扱いやすくする」という使命のラッパーライブラリの系統 は居場所を失ってるから、このスレの居場所も同様によく分からないんだよなぁ。
729 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 15:37:38 ID:/TZL4Vnl] ∩___∩ | ノ ヽ / ● ● | クマ知ってるか。 | ( _●_) ミ 出雲地方では、木と岩と水の在る場所を「熊々しい谷」と呼ぶ。 彡、 |∪| 、`\ 「熊々しい」とは、神々しいの意味だ。 / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
730 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:02:14 ID:Z3s3jxcY] >>722 レベルの長文関数名を記述すると 引数がある場合とかに 複数行にわたってしまって なんだか見づらくならない? 今まで見たソースだとgetScrFPS程度には略してるけど おまえらどうなの?
731 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:12:33 ID:3aIuRMAB] 略すと判んなくなる時以外は略してる。
732 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:12:54 ID:a1yK0hIN] 目的や用途によって使い分けてる。
733 名前:名前は開発中のものです。 [2009/07/17(金) 22:29:41 ID:PpX+kDe1] クラスの中に座標XとYをまとめてクラスか構造体にしておいて、他の関数などに渡すときに ひとつのGetPos()って関数で渡すにはどうしたらいいかな? 考えてみたんだけど、どうしても一つでいろいろなところで使える方法がみつからないんだよ。 まだプログラム経験が短いもんで。
734 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 22:47:07 ID:a1yK0hIN] 構造体を返せばいいと思うけど、そういうことではない?
735 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:03:35 ID:TRJ/ynqn] まあ状況によるけど。 基本Getは単一変数を返す方がいい。 内部の構造体のデータを返すのは間違っている。 その場合はとるのではなく、チェックしてもらう。 bool chk_XXXX (pos *dat); が正しい。 で、この関数はインラインであれば、スピード的には何の問題も無い。 考え方が逆。
736 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:06:22 ID:TRJ/ynqn] 補足、クラス内のデータの処理はそのクラスの関数で行う! これ基本中の基本
737 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:31:36 ID:cB4HhxMP] 皆が何言ってるかさっぱりわかんないぜ! でもゲームは作れてるぜ!
738 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:36:29 ID:iPNwCeP8] FPSはそれ自体で意味がわかるから使うけどScrは無いわ
739 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 00:03:32 ID:pCmtYAM2] class A があって xが public なメンバの場合 A.xでアクセスするのと private の場合 getx(){return x;} でアクセスするのと速度変わらんのか
740 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:04:35 ID:QevxnE5g] >>739 詳しい事はしらんが、常識的な範囲でコンパイルを考えれば、 最適化が普通だったら遅くなる理由は無いと思う。 最適化をしないなら、クラスから関数のアドレスに飛んで、 そこで値:xを取得して、それをどっかに格納な分 遅くなるんだろうけど・・・。
741 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:54:43 ID:UXbVEGUE] >>740 ちょっと違う getx(){return x;} がクラスの中に書かれ、そのクラスがヘッダーファイルなら。 インライン展開されるので aa = getx(){return x;} || aa = A.x と同じ 最適化は関係ない
742 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:56:36 ID:UXbVEGUE] あ、ちょっとまて、C++のみの話な、他の言語は知らん
743 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 10:41:55 ID:PwgwIsF1] それはヘッダに直接定義書いてるからinline付いてるだけじゃね ソース側で定義でもinlineつけて展開できるなら同じじゃないっけか 後、クラス内での処理はインラインしてくれるのが普通だったきがする メンバ関数内で別のメンバ関数呼び出して処理とか まー、>>736 か
744 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:09:33 ID:xlxZEQtn] インスタンスが確保されてる状態なら、参照を返せばいい。 class Foo { Pos pos_; public: Pos& GetPos() { return pos_; } const Pos& GetPos() const { return pos_; } }; スコープの外側にインスタンスを返すなら、参照渡しじゃ無理なので、コンパイラの NRVOに期待して、例えば以下のように書くことになる。 inline Pos GetPos() { Pos result; /* code */ return result; } NRVO非対応でRVOだけ対応のコンパイラだと、 inline Pos GetPos() { /* code */ return Pos( /* code */ ); } こういうコードじゃないと>>741 の言うような最適化は掛からない。 コンパイラーメーカーもC++標準化委員会もNRVOが掛かるように頑張ってるはずだが、 実装状況はコンパイラによってまちまちなんで調べてくれ。多分検索すればすぐ分かる。 VC++なら2005からNRVO行けるっぽい。/O1くらいでもNRVOは掛かる模様。 プロファイラで後から最適化ってのも常道だけど、I/F設計段階の話はそうもいかないし なぁ。 まぁ、俺なら基本的には参照渡し、リターンで解体される自動変数なら値渡しで返して、 後者がボトルネックになるならインライン化でたぶんNRVO発動でおk、って書く。で、 「この設計だと遅そうだしポインタ渡そう」って言われたら、実際どうなるか興味ある んでベンチでも書いたり、ついでに↓みたいなのも一緒に見たりしながら相談する。 msdn.microsoft.com/en-us/library/ms364057 (VS.80).aspx
745 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:20:17 ID:xlxZEQtn] >>744 補足 スコープの外に「自動」インスタンスを返すなら、だな。 つーか、二つめと三つめは最初の質問のシチュエーションから逸脱してるな。すまん。 まぁでも、メンバ関数でもNRVOは重要なんで、仕組みは知っておいた方が。
746 名前:名前は開発中のものです。 [2009/07/19(日) 05:29:35 ID:TXlg+NUw] //●ジャンぷ if(key & PAD_INPUT_B){ for(double t=0; t<10; t=t+0.1){ int vo = -60; int ay=10; jikidata.y = vo * t + 1/2 * ay * t*t + jikidata.y; WaitTimer( 1000 ); jikidata.ghandle = LoadGraph("media\\imgbb4792ea7ec6f3d_frame_0009.bmp"); } } DXライブラリを使ってアクションゲームのジャンプをプログラムしたいんですが これで実行すると、キャラが止まったり、動かなくなってしまうんですが、どこを改変すればいいんでしょうか?
747 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 05:51:18 ID:EpiDWLJN] >>746 正直どこにつっこめばいいかわからないので 公式のサンプルを参考にすればいいとだけ言っておく homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N2
748 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 11:01:02 ID:7iXtFi1U] WaitTimerは使っちゃだめれす><
749 名前:名前は開発中のものです。 [2009/07/19(日) 21:11:12 ID:mJh1WCZZ] フラッシュマン
750 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:05:51 ID:pleKhZHB] >>748 リアルタイム処理で使うのは駄目に決まってるな フェードアウト後の待ち時間とかに使うのが正しい でも個人的にはウェイト系の関数やら処理体系作って、それを使えばいいと思う while(……){ //ここにwaitから切り放したい処理を書く //例えば、ゲームは止まっても風景は動かしたい //処理ごとにwaitを分ければさらに色々なことができる if(waitFlag==FALSE){ //ここにwait前にやりたい処理を書く //waitTime、waitFlagは本来条件式で設定するのが望ましい waitTime=1500;//1500ミリ秒=1.5秒 waitFlag=TRUE; }else{ if(1ミリ秒経過したら){ waitTime--; } if(waitTime==0){//1.5秒経った waitFlag==FALSE; }else{ //waitTime=0未満;を描いたな?と怒る //エラーフラグを大量に埋めるのは開発の最適化とアンチートに役立つ } } } こんな
751 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:09:47 ID:pleKhZHB] 最後のとこはelse if(waitTime<0)だた
752 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 18:56:48 ID:u2THICPq] ジャンプするたびに画像をロードしまくってどうする
753 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 23:05:51 ID:hrqPLvNB] >>750 これならどの環境でもキッチリ結果が出るね カウンタ回すしかやったことないから参考になるわ だけどアクションとかだと遅延おきてカクカクにならないかな
754 名前:名前は開発中のものです。 mailto:sage [2009/07/22(水) 14:20:11 ID:23EfZ5Te] 同じフォルダ内にあるTTFフォントを使って文字列描画したいんですけどそれはDXライブラリでできますか? フォントのファイル名を指定して読み込みするような関数が見つからなくてどうすればいいか困ってるんですが
755 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:22:02 ID:w7s2/iav] なんかソレっぽいサンプルどっかで見かけたような気が……
756 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:49:57 ID:w7s2/iav] ごめん適当なこと言った DXライブラリでは出来ないような気がする でもフォントファイルを一時的に開くプログラムがあれば通常のフォントと同じように 名前の指定だけで使えるはず……
757 名前:754 mailto:sage [2009/07/23(木) 02:35:05 ID:M1f3xhTA] ありがとう!!探してみて解決したよ!! 結果はWin32APIのAddFontResourceEx関数を使えば一時的にTTFファイルからフォントリストに登録できるみたい 第二引数に0x10(FR_PRIVATE)を渡せばそのプロセスだけで使えるようになるぽ 使い終えたらRemoveFontResourceExで開放する必要もあるみたい。登録時とまったく同じ引数で呼び出す必要あり AddFontResourceEx("hoge.ttf", 0x10, 0); // これでhogeフォントを登録。DxLibのEnumFontNameでも表示されるはず。 RemoveFontResourceEx("hoge.ttf", 0x10, 0); // 削除。引数を↑と同じにしないといけないらしい いくらDxLib関係でググっても見つからなかったので少々冗長気味に解説してみたよ 正直この機能はDxLibにラップされてても違和感無いと思うんだけど
758 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 03:39:18 ID:8ujD6dNo] 確かに自動対応してもいいレベルではある
759 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:34:58 ID:PImKyCUU] 暗転ってどうやってやってる?
760 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:51:01 ID:tLjhSV6z] 普通に画像を表示して、その上にかぶせるように真っ黒な画像を少しずつ濃くしながら表示。 完全に濃くなったら、表示する画像を切り替える。 真っ黒な画像を少しずつ薄くしながら表示する。完全に薄くなったら、以後、真っ黒な画像は表示しない。 これでいいと思う。
761 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 23:37:10 ID:JVsH2uDi] SetDrawBlendModeとDrawBoxでやってるな。
762 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 02:52:41 ID:sonMl0Vt] これ一旦止めた音楽止めた場所から再開させることできないのか
763 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 03:42:20 ID:nwWosEk7] できるけど Dxlib.h内を、サウンドハンドルの再生位置で検索
764 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:08:03 ID:sonMl0Vt] ありがとうございます やってみました PlaySoundMem でやってるときは GetSoundCurrentPosition で取得すればいいのかな でやってみましたが GetSoundCurrentPosition がいくら再生してるときでも0しか返ってこないのですが ちゃんと引数に正しい SoundHandle 入れてますよ
765 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:20:10 ID:nwWosEk7] ごめん、検証してなかった PlaySoundMemのTopPositionFlagを0にすれば 取りあえずは途中から再生できるはず
766 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 06:13:08 ID:sonMl0Vt] ありがとうございました、できました
767 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 08:59:47 ID:5C3gkZxn] DXライブラリ卒でD3D9使ってるけど、久々にDXライブラリ時代のソース引っ張り出して ちょっと懐かしかった。pchも使ってなかったんだなぁとか。 つーかpch使ってない奴も多そうだから勝手に手順説明するぜ。 1. プロジェクト→新しい項目の追加→ヘッダーファイルでstdafx.hをプロジェクトに追加 2. プロジェクト→新しい項目の追加→C++ファイルでstdafx.cppをプロジェクトに追加 3. DxLib.hや標準ライブラリなど、自作でない巨大ヘッダのinclude文を*.cppから全部削除して、 代わりにstdafx.hの中に全部突っ込む(自作ヘッダは普通に*.cppで各自includeする方がいい) /* stdafx.hの例 */ #pragma once #include <DxLib.h> #include <string> using std::string; /* ここまで */ 4. 全ての*.cppの最初に#include "stdafx.h"を書く(コメントは前に入れてもおk) ちなみにstdafx.cppは、#include "stdafx.h"の一行だけでおk 5. ソリューションエクスプローラでプロジェクト名を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを使用する (/Yu)」に変更する 6. ソリューションエクスプローラで「stdafx.cpp」を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを作成する (/Yc)」に変更する これで、stdafx.hを変更する時以外は、ビルド速度がかなり劇的に上がるはず。 大した作業にはならないはずだから一度試すといい。
768 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 09:09:49 ID:5C3gkZxn] ああ、気付きにくいかもしれないことを補足。 自作ヘッダから<string>とか<math.h>とか使いたい場合も、「必ず全ての*.cppの最初で stdafx.hがインクルードされる」という規則だから、結局は自作ヘッダがインクルードされる 時点ではstdafx.hが既に読み込み済みになってる。 なので、自作ヘッダに#include <string>とか書く必要も無し。自作ヘッダで使いたい標準の ライブラリなんかのincludeも、全部stdafx.hに逃がせばおk。
769 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 17:40:08 ID:JWiEj2kH] これは便利そうですね デメリットとかはありますか?
770 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 18:12:52 ID:HmqJ54co] 今の俺には何のことだかさっぱりだがメモっておく
771 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 19:26:36 ID:5C3gkZxn] デメリットは思い当たらないなぁ。 「使いたい外部ライブラリのヘッダを全部何も考えずにstdafx.hに入れまくれ」 「全てのcppファイルの頭でstdafx.hをインクルードしろ」 ってルールが縛りといえば縛りだけど、むしろ楽になるだけだと思う。コンパイルも 別次元に速くなるし。 原理的には、stdafx.hの中身をコンパイルし終わったとこでいったん止めちゃって、 中間情報として拡張子pchのファイルに保存しておき、*.cppをコンパイルする時に その情報を使い回して、#include "stdafx.h"まで読み飛ばして、それ以降のソース だけコンパイルするイメージ。実際に内部がどう動いてるかは知らないけど。 なので、cppの頭で#include "stdafx.h"を入れ忘れると、 「プリコンパイル済みヘッダーの検索中に予期せぬ EOF を検出しました」 とか言われる。 stdafx.hの中には、C++のソースなら何書いても多分平気だから、大抵の使い方には 対応できると思われ。あまり頻繁に書き換えると、そのたびにpch作り直しで効果が 薄まるけど、自作ヘッダでも「更新少ない」「かなり色々なソースから参照される」 みたいな奴はstdafx.hに入れちゃってもいいと思う。
772 名前:名前は開発中のものです。 [2009/07/25(土) 15:25:58 ID:3qZ+q5uI] 当たり判定はこうすればいい。 プレイヤーキャラクターを移動させたければこうすればいい。 といった部品部品は作れるけど、いざゲーム自体を作ろうとなったら全然作れないんだ。 いったいどうしたらいいのかな・・・?
773 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:36:28 ID:hVdocGyY] その部品を組み立てればゲームになるはずなんだが 一体何が問題なんだ? それを言わずして質問されてもわかるはずがない。
774 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:37:45 ID:tEWYFYw5] >>772 とりあえず目標を決めてはどうか。 ただし、あまり大作でも作れなきゃ意味がないので、 初期の携帯電話用ゲームや、初期のファミコン、インベーダゲーム、倉庫番あたりを目指す。 矢印キーだけ、せいぜいそこにボタン1個くらいで遊べるゲームが楽でいい。 目標が決まったら、それを「部品」に分解する。 うまく部品単位になればお前さんの勝利。
775 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 17:05:50 ID:OnXN/lFa] 綺麗な部品作りの楽しさとゲーム作りの楽しさは、何というかちょうど90度くらい ずれた方向性がある。両方うまい人はすごくいい。 最初の一歩はとにかく単純に、ゲーム内容どうでもいいから一本のゲームとして 成り立ってる物を作る、つーこと。極端な話、全部WinMain()に入ってても一向に 構わない。(綺麗な部品作りに慣れてるならそうはならないだろうが) 部品は必要性を実感してから作る方が最適になりやすい。いわゆるシーズじゃなく ニーズで作る。先に需要を予測して部品を作る、ってのはほどほどにすべき。 で、「クソゲー作ってもなぁ」と思うなら、いっそ最初から真面目に本気ゲーを 作り始めてしまっても全然問題ない。
776 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 08:48:42 ID:Hw5xOpYa] 個々の部品の作り方が分かっていても、それらを全部組み合わせて、うまく動くようにするのは結構大変。 特にシーンやリソースの管理が入ってくるとかなり面倒になる。 そういう点ではやっぱり最初は1面のみの単純なゲームから始めた方がいいね。 プログラムが大きくなればなるほどバグ取りも大変になるから、最初は小規模から始めた方がいい。 自分はいつも最初からあれこれ入れようとして墓穴を掘ってる。
777 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:40:31 ID:AWfgbmGQ] プログラムを書く能力とゲームを組み立てる能力は、全くの別物 紙にステータスを書いて遊ぶとか、人形をいじって遊ぶとか そういうアナログな手法でイメージを立てて設計する 何も考えずにプログラムを先に書くのは意味がない。 ゲームを考える(妄想する)、ゲームを作る、ゲームを遊ぶ この3つのどれが欠けてもうまくいかない まず面白いシステムや世界観を考える 次にプログラム、シナリオ、絵、音楽などで形にする 最後に完成品を遊び倒して面白いゲームに近付ける ゲームは工業製品だから、作り手の職人気質がもろに出るよ
778 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:57:44 ID:aBNM0ylQ] >>772 は単に大枠の設計が分からないとかそういうことなんじゃね? >>776 のいうシーン管理とかそういう骨組みの構造とか
779 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 23:48:51 ID:AGlm2m1e] stdafx.hにいれた上で、そのソースに必要なヘッダはあえて書くソースに書くようにしてる
780 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:01:10 ID:GCep4g8b] 俺は何も考えずにいきなりプログラム作るぞ。 特に最初のうちは、あんまり考えないほうがいいと思うんだけどな。 緻密に設計していくのは、ミニゲームを何本か完成させた後のほうがいいと思う。
781 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:11:13 ID:bEbQPsi9] 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに 肥大化してゲームになってる。
782 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:16:38 ID:VenKtjMK] 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに 肥大化してまとまらなくなってやめる。
783 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:30:42 ID:aQ/IFL1X] 俺は「これできるかな? ……できない。んじゃこれはできるかな……? できない……」とかやってるうちに 肥大化することなく寝る。
784 名前:名前は開発中のものです。 [2009/07/27(月) 01:20:08 ID:VJq6W4rL] >>781-783 フイタwwwww
785 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 01:49:38 ID:pfTBKVpb] >>781-783 がそれぞれ昔の俺、少し昔の俺、今の俺な件
786 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:39:26 ID:GaH2TMCV] 昔はコードが汚いだとか構造が嫌だとかの細かいことが気にならなかった 今はゲームが完成しない
787 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:44:35 ID:aJcGKYvD] 習作はできるが完成はできん
788 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:01:02 ID:sP35fefq] > 「○ ○の作り方」という本を読んで「この本に××が足りない」と考え、 > そこで今度は××に冠する解説をよみ「これには△△が抜けている」という印象をもち、 > そしてなかなか自分のゲームが完成しない、というパターンに陥った人は少なくないでしょう。 > さまざまな技術書や解説書、入門書を読みつくし、最先端技術に精通しているはずなのに > 自作アプリケーションがほとんど作れないというのは、決して珍しくありません。
789 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:53:03 ID:CBwVvngl] そういうのを「頭でっかち」というんだな。
790 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 13:31:26 ID:1REfJ+es] どこの引用なんだ
791 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 17:02:26 ID:cEG3tUqV] 本を読めば作れると考えるのが間違い
792 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 21:15:32 ID:C0govEpu] 昔どっかのゲームクリエイターが「やってみるのが一番勉強になる」的なこと言ってたから 俺はそれを胸に頑張ったよ…。
793 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:14:17 ID:aJcGKYvD] 男は度胸 何でも試してみるもんさ
794 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:41:51 ID:1REfJ+es] 女は豊胸?
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 でもやっぱウィンドウのほうがやりやすいゲームとかあるよ