- 1 名前:名前は開発中のものです。 mailto:sage [2009/12/04(金) 16:49:13 ID:7SKA4I5z]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/
- 29 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 15:10:27 ID:AxjxjhaV]
- それ文字1文字1文字ずつ表示させるって言う意味かな
全角だと1バイト分読み込んだ時に正しく認識されないから 全角の場合は2バイト分読み込ませればいいんじゃないかな
- 30 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 15:34:50 ID:L7OXdhxz]
- DXライブラリを使ってVC++2008EEでプログラムを作ったんだけれど、
配布するときにDXライブラリをインストールしていないPCでも 起動できるような配布の方法はあるのだろうか よくわかんないけどDXライブラリランタイムみたいなのがあれば、 それを一緒に配布するみたいな方法とかある? それとも配布するプログラムとは別にDXライブラリをインストールしてもらうしかないのだろうか。
- 31 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 15:39:03 ID:bw4St35R]
- >>30
よくわかんないけどたぶん上の[Debug]を[Release]に変えて 出てきたReleaseフォルダを配布すればいいと思う
- 32 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 15:43:00 ID:ez8iS4so]
- DxLibはスタティックライブラリだから使うほうはべつになにもいらない
ダイナミックなDxLibがあるのかわからんけど自作とかしたならその場合はDLLも配布しないといけない
- 33 名前:名前は開発中のものです。 [2009/12/06(日) 15:43:02 ID:CJZjyivE]
- >>30
DXライブラリは関数の集合だから、ランタイムパッケージは必要ないんじゃないの? プログラムが実行ファイルにされるときにすべてC言語からアセンブリ言語にされるはず。 相手に準備が必要なものがあるとすればDIRECTXなんじゃないかな。
- 34 名前:名前は開発中のものです。 [2009/12/06(日) 15:43:31 ID:vkleFuhi]
- >>29
お、直った! ありがとー。 STLのstring使ってるんだけど、itretorひとつ進めても、 2バイト文字だとふたつ進めたとこからやらないとだめなんだな……勉強になった。
- 35 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 15:44:56 ID:vkleFuhi]
- iteratorだった。
IDEのサポートに頼りっきりはこれだから……。
- 36 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 16:16:24 ID:L7OXdhxz]
- >>31 Releaseの使い方もわかってなかったから、
配布ファイル自体の作り方もわかった。ありがと。(早速、フォルダを作成したら、画像ファイルだけは、出来上がったフォルダに手動で追加することになるみたい。) >>32 ダイナミックなDxLibというのはよくわかんないけど、多分そこまで複雑な機能を使いこなしてないから、 DLLの心配はしなくていいととりあえず思う。 >>33 DIRECTXの準備が必要ということか。 これは、さすがにインストールしてもらうしかないということだね。 これでとりあえずプログラムの配布ができそう。ありがと。
- 37 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 16:18:32 ID:RsTxI8Hk]
- >>30
Releaseフォルダの中身だけでおk
- 38 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 16:29:03 ID:AxjxjhaV]
- 別に[Debug]でもよくね?
まあ普通は[Release]だろうが
- 39 名前:30 mailto:sage [2009/12/06(日) 16:48:28 ID:L7OXdhxz]
- >>31、32,33
ありがとう!!
- 40 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 17:10:59 ID:bw4St35R]
- >>38
そういえばアレ何が違うの? あとDXライブラリ使ったらReadmeに使ったって書かなきゃダメ?
- 41 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 17:29:11 ID:+RNAMjqx]
- >>40
そのままデバッグが入るか否か 少し重くなる readmeは要らん ただしソースを配布するなら必須
- 42 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 17:50:49 ID:bw4St35R]
- >>41
ありがとー
- 43 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 18:03:42 ID:vkleFuhi]
- DXライブラリって音のフェードインとかには対応してないっぽい?
- 44 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 18:15:43 ID:+RNAMjqx]
- 自分で作れよ
- 45 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 19:38:55 ID:EqSux42R]
- ChangeVolumeSoundMem関数使えば簡単に実装出来ますよ。例えば
/****** Zキーを押すとフェードアウトを始める *******/ /****** test.wavはサンプルプログラム実行用フォルダ参照 *******/ #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 Flag=0, Vol=255, SoundHandle = LoadSoundMem("test.wav"); PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ); while( !ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE) ){ if( CheckHitKey(KEY_INPUT_Z) ){ Flag = 1; } if( Flag ){ Vol -= 2; ChangeVolumeSoundMem( Vol, SoundHandle ) ; if( Vol < 0 ){ Flag = 0; Vol=0; } } clsDx(); printfDx("Vol = %d\n",Vol); ScreenFlip(); } DxLib_End(); return 0; }
- 46 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 23:30:09 ID:vkleFuhi]
- >>45
どうもありがとうございますー。 色々考えてみた結果、マルチタスクに手を出さないとダメっぽいということがわかったので、 なんとか実装するか。
- 47 名前:名前は開発中のものです。 mailto:sage [2009/12/06(日) 23:59:28 ID:jMxq/kh5]
- DxLibはマルチスレッド非対応じゃないっけか
- 48 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 00:00:23 ID:QTWxMRN0]
- 普通に出来るしマルチタスクとマルチスレッドは違う
- 49 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 00:44:06 ID:yr1Q4g2a]
- すまんかった
- 50 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 12:52:27 ID:qjhIwQdC]
- なぁに気にすろな
- 51 名前:名前は開発中のものです。 [2009/12/07(月) 13:02:56 ID:5mIc7NoF]
- 本家で質問するわけにもいかないので、こっちで。
試験的に、ゲームのプレイ動画を撮ろうと思ったんだが、DXライブラリ3.xで作ったゲームを録画しようとしても全く録画できない。 画面が映らないというより、プロセスを正しく取得できていないような感じ。 ちなみに手元の2.25cだと、ゲームプログラムは弄らずにキャプチャー出来た。(3D機能は未使用) に多様な状況になったひとっている? 自分の環境が悪いのか、キャプチャーソフトが悪いのか、ライブラリ側の都合なのか調べたい。 OS:WindowsXP SP3 キャプチャーソフト:アマレコ・ライト、Dxtory、DxRec 参考ページ: ttp://www18.atwiki.jp/live2ch/pages/153.html#id_439db353
- 52 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 13:45:13 ID:SKodZ2cg]
- キーボードでAの処理からBの処理へと連続で
同じボタンでやるとします。 この場合あるボタンを押すと勝手にAだけでいいのにBまで処理されて しまいます。Aで止めて、もう一度同じボタンでBの処理をさせる にはどうすればいいの? お願いします。
- 53 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 13:52:55 ID:QTWxMRN0]
- >>51
WMEでやったらどうなる 範囲指定でやったらどうなる というか仕様的なことならむしろ本家に行った方がいいと思うが >>52 連続ってどういうこと? 押しっぱなしじゃなくて連打させたいという意味なら ・キーを押すとONになるフラグを作る ・キーを離すとそのフラグはOFFになる ・キーがOFFの場合しかキーを押したときに処理が行われない というようにする
- 54 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 14:15:07 ID:SKodZ2cg]
- >>53
CheckHitKey関数しか知らないんで key=0; if(CheckHitKey(KEY_INPUT_TAB)==1 && key==0) 処理A,key=1; if(CheckHitKey(KEY_INPUT_TAB)==0 && key==1) key=2; if(CheckHitKey(KEY_INPUT_TAB)==1 && key==2) 処理B, key=0; こんな感じですか? 非効率なような気がします。いい案があればおしえてください。 ちなみにシューティングじゃないんで連打はないです。
- 55 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 14:30:14 ID:QTWxMRN0]
- >>54
なんでそうなるんだよ bool key=FALSE; int hoge=0; if(CheckHitKey(KEY_INPUT_TAB)==1) { if (!key) { key=TRUE; if (hoge==0) 処理A else 処理B hoge++; } else key=FALSE; あとCheckHitKeyは効率悪いからやめておけ
- 56 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 14:43:37 ID:GvCDZJ6F]
- ↑より効率いいやり方ってそうないと思うが
あと、例だからかもしれないが、↑だと処理B→Aが続けて処理されると思うので int state = 0; int tab_push = 1; 〜〜〜〜〜〜〜〜〜〜〜〜〜〜 if(CheckHitKey(KEY_INPUT_TAB)==1 && tab_push = 0;) { tab_push = 1; if(state = 0) { 処理A; state = 1; } else { 処理B; state = 0; } // ↑この辺はswitchなりなんなり(処理が2つだけじゃなくたくさんある場合とか) } if(CheckHitKey(KEY_INPUT_TAB)==0) tab_push = 0; // ↑if(CheckHitKey(KEY_INPUT_TAB)==0 && tab_push = 1) としても変わらない とここまで書いてすでに>>55でレスされてるのに気付いたが ほぼ同じだが投稿しちゃう
- 57 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 14:44:31 ID:GvCDZJ6F]
- あ、「↑より効率いいやり方ってそうないと思うが」
の↑は>>54を指すので
- 58 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 14:44:45 ID:qjhIwQdC]
- >>54
if (( btn ) && ( ! isPush )) { switch ( step ) { case 1 : doA ( ); step ++; break; case 2 : doB ( ); step ++; break; ・ ・ ・ } } isPush = btn ;
- 59 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 15:00:21 ID:SKodZ2cg]
- みなさんありがとうございます。
制御する変数を使わないとやはり難しいみたいですね。 参考にします。
- 60 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 16:30:58 ID:eqdM01iG]
- 状況がよくわからんが一回の入力で連続して押したと判定されるのがいやということかな?だったら↓が汎用的だと思う
unsigned count[256] = {0}; while(true) { //メインループ char buf[256]; CheckHitKeyAll(buf); for(int i = 0; i < 256; ++i) if(buf[i] == 1) ++count[i]; else count[i] = 0; //押しっぱなしならカウント数をインクリメントして保存、押されてないとゼロにもどる if(count[KEY_INPUT_XXX] == 1) DoSometing(); //カウントが1のとき、つまりボタンが押された最初のフレームのみ反応! // if(count[KEY_INPUT_YYY] % 10 == 0) DoSometing(); //応用して押しっぱなし中なら10フレームごとにイベント、とかできる(シューティングの等間隔のショット処理とかで使える) }
- 61 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 17:30:41 ID:03D0QZSj]
- DXライブラリ 総合スレッド その3
pc11.2ch.net/test/read.cgi/gamedev/1238429676/315 315 名前:名前は開発中のものです。[sage] 投稿日:2009/06/02(火) 21:23:19 ID:CgQN485t >キー入力 自分が使ってるルーチンのコードを記事にまとめました d.hatena.ne.jp/kokarage/20090602/p2
- 62 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 20:24:23 ID:5mIc7NoF]
- >>52
さすがにDXライブラリのサイトで 「○○というソフトを使っても動きません!」という質問はできないだろうw DXライブラリ側に原因があるなら別だが。 WMEはMSのやつかな。 動画作成に関しては今日初めてやったので詳しくないんだ、すまん。
- 63 名前:名前は開発中のものです。 mailto:sage [2009/12/07(月) 20:49:26 ID:QTWxMRN0]
- >>62
2.25で出来て3.xで出来ないならライブラリ側の原因である可能性が多いだろ とりあえず色んな方法でキャプチャして、上手くいかなかったら本家行き まあ、WME+SCFH_DSFでは問題なくキャプチャ出来たが。
- 64 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 02:54:12 ID:CEeKe2FB]
- 一々全部のキーに対して押し続けたかどうか判断する必要あるのか
余程多くのキー使うのならともかく普通は押し続けの判断したいキーだけでいいんじゃないのか まあ今のマシンなら全部やっても負荷的には問題ないのかも知れんが
- 65 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 08:20:15 ID:bmgyrVLx]
- キー入力関連はゲームだとよく使うし、関数化しておくと便利ですよ。
「何フレーム入力されているか」が解るようにしておけば、ボタン関連の操作は「1フレーム目」または、「キーを離したフレーム」で処理すれば 連続で不必要な処理まで進んでしまう事がありません。 例えば本家のGetHitKeyStateAllを自分で使いやすいようにしたのが GetHitKeyStateAll_2関数です。こんな感じで使えます。 (→コードは次へ) この例ではエンターの入力時間によって処理を分岐しています。 キーの入力状態を格納する変数がint型なので _2関数をさらに「離された時マイナスのカウントをする」ようにすれば 離されてからのフレーム数も解ると思います。 ・・ところでコードを見やすいように字下げする方法無いんでしょうか;
- 66 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 08:21:20 ID:bmgyrVLx]
- /****** エンターキーをおした瞬間だけ四角形を描画する *******/
#include "DxLib.h" int GetHitKeyStateAll_2(int KeyStateBuf[]){ char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++; else KeyStateBuf[i]=0; } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ int Key[256]; ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){ DrawFormatString(0,0,GetColor(255,255,255),"%d",Key[KEY_INPUT_RETURN]);//エンター入力カウント if(Key[KEY_INPUT_RETURN]==1)//今の瞬間押されたら DrawBox(0,0,640,480,GetColor(255,255,255),TRUE);//画面全体を白い四角で表示 ScreenFlip(); } DxLib_End(); return 0; }
- 67 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 10:08:46 ID:ziZ5aZky]
- 実際の入力と、返ってくる値は切り分けた方が便利かもね
- 68 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 11:20:05 ID:U9efz6mV]
- >>65
ttp://fatalita.sakura.ne.jp/CGI/OKCode/index.html
- 69 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 15:24:53 ID:oCon0Lhk]
- MakeGraphでウィンドウサイズより大きい空のグラフィックを作成して、そこにマップチップを敷き詰める処理をしたいのですが
グラフィックハンドルを直接指定して描画処理をする方法がわからなくて困っています。 GetDrawScreenGraphを使っていったんウラ画面に描画したものを、空のグラフィックにコピーしようとしたのですが ウィンドウサイズより大きいところに描画されたものはコピーされないみたいでダメでした。 どなたかこの問題を解決できる方はいませんでしょうか?
- 70 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 18:10:50 ID:EpEGhfoB]
- 描画先にグラフィックハンドルを指定したらそこへ描画できるって話をうろ覚え。
ウィンドウサイズ以上にできるかどうかは知らん。 しかしマップチップ敷き詰めたとしても、どうせ表示サイズ以上には表示できないんだし、 普通に毎フレーム描画でいいと思うが。 まぁ全マップを拡大縮小回転とかガンガンやるならちとずれそうで怖いが。
- 71 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 19:18:27 ID:oCon0Lhk]
- >>70
ありがとうございます、いろいろ調べてきます! 2Dアクションゲームを作ってましてとりあえずマップ全体をメモリに描画しといて スムーズなスクロールをしようと思ってました。
- 72 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 19:27:56 ID:EpEGhfoB]
- その目的なら止めた方が良いと思う。
普通に毎フレーム描画でいくべきだと。 よほどヘボなPC使うか、プログラムがヘボでないかぎり スムースさに変わりはない。
- 73 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 19:37:02 ID:oCon0Lhk]
- >>72
そうですか。 しかし自分の知識不足でどうやって毎フレーム描画でドット単位のスクロールをすればいいのかわからなくて ttp://www.harukitchen.com/rpg_programming/06/06.htm ここのサイトを参考にしてるんですけど、この方法だと結局ウィンドウサイズ以上の大きさの描画が必要になるし どなたか知恵を貸していただけないでしょうか?
- 74 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 19:45:37 ID:B6+BeJXV]
- 別にその方法で間違ってない
ウィンドウサイズ以外の描画がしたくないならカメラ座標に映らない座標のオブジェクトは描画しなくていいだけだし、 確かdirectXの仕様で画面外は省略されてた気がする DXライブラリならオリジナルの描画関数作ってDrawRotaGraphなりに飛ばしてやるのがお勧め
- 75 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 19:46:26 ID:EpEGhfoB]
- えーとね。
キャラクターの表示はできる? それをドット単位で動かせる? それができるならマップもできよ。 マップったって、結局マップチップというキャラクターを並べて表示してるだけだからね。 ドット単位で表示ずらせばいいだけ。 んでもって、画面表示されない位置のマップチップは描画しなければいい。
- 76 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:11:36 ID:oCon0Lhk]
- >>74,>>75
キャラクタの表示もドット単位の移動もできています。 自分の頭の中では 1,ウィンドウサイズより一回り大きいグラフィックハンドルにマップチップを敷き詰める ↓ 2,そこから必要な場所だけを切り取って表示する という流れしか考えられません(´・ω・`) しかしこれだと1のステップがクリアできなくてダメだし 簡単にアルゴリズムをアドバイスしていただけないでしょうか?
- 77 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:19:13 ID:oCon0Lhk]
- 書き込んだ瞬間に何故かひらめいた
マップチップを敷き詰めるはじめる座標を(-32-[主人公の座標.x]%32,-32-[主人公の座標.y]%32) にしてあげて、主人公の座標から必要なマップチップの情報をウィンドウサイズより一回り大きく取り出してあげて それを描画すればいいんですよね!!
- 78 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:32:31 ID:DQdomlYR]
- その通り
- 79 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:35:04 ID:EpEGhfoB]
- おめでとう。それが解れば大丈夫だ。
- 80 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:39:47 ID:oCon0Lhk]
- 皆さん大変おさがわせしました。
今プログラム組んでみたら上手くいきました:) ありがとうございました、これからもよろしくお願いします。
- 81 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:40:20 ID:EpEGhfoB]
- あ、そうそう、君が>>73で示したサイトにもあるけど
「主人公の位置」じゃなくて「カメラの位置」で考えてね。 基本的に主人公の位置とカメラの位置は同じだけど、 マップ端に行った時は違ってくるから。
- 82 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 20:55:01 ID:8T1WO6Nw]
- DxLib使えるだけじゃ無理だと悟った
なんかC++&DxLibがちょっと使えるレベルの人間にふさわしい本とかないすかね
- 83 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 21:05:16 ID:B6+BeJXV]
- 何作りたいのかにもよるが
アクションゲームアルゴリズムマニアックスとか?
- 84 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 21:09:08 ID:EpEGhfoB]
- >DxLib使えるだけじゃ無理だと悟った
俺だってC++とDxLibがちょっと使える程度だが、ちょっと使える程度のものを作るには不自由ないぞ。 C++&DxLibで何がしたいのか次第でしょ。
- 85 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 21:33:24 ID:8T1WO6Nw]
- 特定ジャンルのゲームというより、共通の基礎的な部分を勉強したい
最終的にはシレンっぽいのを作りたいんだが、その前になんか根本的な部分が抜けてるような気がしたんだ
- 86 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 21:47:15 ID:trfhK022]
- 試しにシレンっぽいの作ってみたら何が足りないかわかんじゃね
作りたい物だったらモチベーションも保ちやすいし勉強にも身が入る わからなさ過ぎると嫌になるかもだけど
- 87 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 21:47:25 ID:B6+BeJXV]
- www.kumei.ne.jp/c_lang/
ほらよ あとは作るしかない ゲーム作りのノウハウは他人に教えてもらうのではなく経験で身につけるもの
- 88 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 22:23:40 ID:nVGvorfQ]
- >共通の基礎的な部分を勉強したい
プログラムの基礎を勉強したいのか、 プログラムはわかるが、ゲーム作りの基礎を勉強したいのかでまた違ってきそうだね。 ちなみに俺は独学でゲーム作りしてきたから、ゲームは作れても基礎が全然できてねぇ;; 俺も勉強しなおすかな……。
- 89 名前:名前は開発中のものです。 mailto:sage [2009/12/08(火) 23:54:13 ID:JpJMUeIi]
- プログラムの基礎に不安があるなら、C++だったらeffective C++とかを
読んでみるといいかもね。あとはデータ構造、基本的なアルゴリズム、 デザインパターンあたりがわかると、汎用性があるかな。 でもまあ、趣味でやるなら勉強と思ってやることはないと思うぞ。 問題を解決しようとして見つけた情報の中で、便利そうなのがあったら その周辺を重点的に調べる、で結構いろいろできるようになる。 ところでDXライブラリって、core以外のソースは公開されていないよね? 掲示板ちょっとみたら、ソース公開に関する質問はスルーされていたので、 全て公開するかは未定ってところかな。
- 90 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 00:17:14 ID:5fGPGOQD]
- eff c++はもう読んだし、デザインパターンもある程度知ってる
知りたいのはアニメーションの統一的な制御法とか、膨大(になりそうな)画像やデータファイルの生成・管理法とか この辺がうまくできなくてコードに直接埋め込んじゃってるからどんどんスパゲッティになっていってわけわからなくなるんだと思う(たぶん)
- 91 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 00:20:33 ID:q6H67G0j]
- うんゲームって極論すればプログラム自体はどうでもいいんだよね
データの設計や管理などの方がずっと重要
- 92 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 00:31:54 ID:oBlr8zOS]
- >>90
今書いてるコードがスパゲッティになるかどうかは、ゲームを完成させるまで分からない。 幾つもゲームを作りながら、「この書き方だと後々こういうケースにハマって困る」というのを学んでいく そうやって最適化されていくもんだよ そこら辺に落ちてるゲームの作り方的な例は最初から最適化されてることが多いが、 何故そのように最適化されてるのか述べてるものはほとんどない そういう意味も考えながらだと上達が早いと思う
- 93 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 00:47:35 ID:f8b9o6Br]
- ぶっちゃけ、デザインパターンようしらんが、
stlとboost使った自作のデータ管理クラスでなんとかなってるよ。 配列の番号とかいちいち覚えてられねーよwwwってことで。 ファイル名と画像なら表示されてるレイヤとか指定すれば色々操作できる仕様。 ただ、俺ゲームどころかまともに作るのすらはじめただから正解かどうかはわからん。 基底クラスのデータ管理で使ってるのは、unordered_map。
- 94 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 01:30:17 ID:+dPnel+v]
- >>85
同じにおいを感じるッ! ゲームの設計に多少時間をさくのがいいんじゃないかな。 シーケンス制御とか、どのクラスがデータを持つのかとか。 俺もとりあえず動くもの作ってみてあれこれ機能つけたしてくってしてたけど ちょっと規模が大きくなるとワケワカメになってきたから 丁寧に設計してみようと勉強&作成中。 「ゲームプログラマになる前に覚えておきたい技術」って本、高いけど その辺の要求に答えてくれてる気がする。 あ、DxLib使ってないけど、読めばより使いこなせるようになると思うよ。
- 95 名前:名前は開発中のものです。 [2009/12/09(水) 01:41:52 ID:OFLUsKk5]
- おいしくない創作料理を作るようにクソゲーは作ることに意義がある
- 96 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 01:44:54 ID:uL4RaiqG]
- 俺もデザパタなんて必須のものかね
俺は使わずにやれてるし、ある程度使わずにやってみずして必要性実感できるものかね デザパタ学んでからやるべきものかね ある程度C++使ってから見てみると多少参考にはなるけど
- 97 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 01:46:31 ID:LrcOl5Bl]
- 口より手を動かせ
- 98 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 06:23:23 ID:kFKKgCNe]
- 俺の状態
適当に作る ↓ 設計に無理があって、どこかで詰まる ↓ 作り直しになる ↓ 最初よりマシになるがそれでも設計に無理があってどこかで詰まる ↓ 作り直しになる。しかも作り直してる最中にまた詰まることがなんとなく分かる。 だが、具体的にどう詰まるのかは分からないし、その解決策も現スキルでは分からない。 ↓ どうせまた作り直すことが分かってしまうとモチベが下がる。 ↓ 今のところ、この繰り返しでいずれゲームの作り方が身につくと信じて 程ほどに考えて、手を止めすぎないようにしている。
- 99 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 06:50:15 ID:aw1FDcJg]
- 決して他人にアドバイス出来るような身の上ではないけれど、1つだけ。
途中で良い設計が思いついたり、飽きてしまうこともあるけれど、 まずはどんなミニゲームでもいいから、とりあえず完成させるべき。 昔の電子ゲーム(ゲーム&ウォッチ)みたいな単純なゲームなら 悩んだり飽きたりする前に、それこそ勢いだけで完成しちゃう場合も。
- 100 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 08:10:26 ID:cydXuseL]
- >>98
俺の自己紹介文をなぜ書けるw
- 101 名前:名前は開発中のものです。 [2009/12/09(水) 13:02:55 ID:zYgTW+cQ]
- ちょっとした作業を自動化するバッチ処理をスクリプト言語で
書いてみたりすると案外プログラム書けて俺スゲーと思うはず ゲームって作りたいもののイメージが先行して それを実現するために要求される技術が高すぎるからorzになりやすい
- 102 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 14:56:36 ID:njV6Yik+]
- 俺もなんとなくC++のサンプルが載ってるとこからコピペで動かしながらゲーム作ってて
そろそろちゃんと基礎からやっとくかーとか思って言語の基礎から説明してくれてる解説サイトを見てみたら C言語に関しては勉強する部分があんまり残ってなかった
- 103 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 15:09:50 ID:cydXuseL]
- eff c++的な本やデザパタ本の境地に地力で達していると
読んだときにニヤニヤする
- 104 名前:名前は開発中のものです。 mailto:sage [2009/12/09(水) 23:48:43 ID:Wiib7oc4]
- DXライブラリで"あaいiuうeえお"という文字列を
あ あa あaい あaいi と一文字ずつ表示させていく方法について教えて下さい
- 105 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 00:24:34 ID:qpivaZnn]
- 1文字づつ読み込み、
その文字がASCII(1バイト)文字か、そうでないか(2バイト)を関数で判断 それからstringまたはchar型の変数aに代入 →1バイト文字なら、DrawFormatString(a,%s) →2バイト文字なら、Forループと文字幅関数を組み合わせて文字を横に表示 とかやった記憶がある。
- 106 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 11:23:34 ID:o5AOUra2]
- 超初心者です。
新規プロジェクトからDXライブラリを使う場合 どのようにつかったらいいの? 単にプロジェクトに追加すべきファイル_VC用の内容をコピーして 新規プロジェクトで作ったフォルダーに入れただけではリンクでエラーが でます。新規プロジェクト作成からDXライブラリを使ったコンパイルまでの 流れを易しく教えてください。
- 107 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 11:29:59 ID:hZmtje4B]
- ttp://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html
公式のこれはちゃんと読みながら設定した?
- 108 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 12:20:31 ID:o5AOUra2]
- 設定したつもりで、下のようにエラーでます。
なぜなのか分かりません。 1>リンクしています... 1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
- 109 名前:108 mailto:sage [2009/12/10(木) 12:26:42 ID:o5AOUra2]
- 単に今まで人が書いたソース(DX経由)を上書きしたり消したりしていましたが、
単にそれを新規プロジェクトに移したいだけなんですけど、 よく分からないです・・・。
- 110 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 12:57:31 ID:1HVns5Nx]
- おそらく
プロジェクト→設定→C/C++タブ→カテゴリをコード生成にする 使用するランタイムライブラリをマルチスレッド(デバッグ)にする (このとき左の方の設定の対象がWin32 Debugになっている場合) それをやったら左の方の設定の対象をWin32 Releaseに変えて、 使用するランタイムライブラリをマルチスレッドにする →OKボタンを押せばおk
- 111 名前:108 mailto:sage [2009/12/10(木) 13:01:44 ID:o5AOUra2]
- >>107
>>110 アドバイスから先程できました。 >>110さんがいってる通り、プロジェクトのプロパティは毎回 設定しなおさなきゃならないんですね。一度やったから継続 されるものだと思っていました。ありがとうございました。 今までの疑問が解決されました。
- 112 名前:名前は開発中のものです。 mailto:sage [2009/12/10(木) 23:02:01 ID:XglTjGxz]
- >>108
www.play21.jp/board/formz.cgi?action=res&resno=43733&page=&id=dixq&rln=43742 ここに同じ質問があります
- 113 名前:名前は開発中のものです。 mailto:sage [2009/12/11(金) 23:03:13 ID:Iqulp5dV]
- 描画領域のクリッピングってできないんだろうか
- 114 名前:名前は開発中のものです。 mailto:sage [2009/12/11(金) 23:42:17 ID:HuvsxFxE]
- 出来る
- 115 名前:108 mailto:sage [2009/12/12(土) 00:31:17 ID:E1BPSoBb]
- 画面の最大化ってどうしてます?
ChangeCallback使ったらの画像ハンドルはすべてグローバルにしなきゃならないの?
- 116 名前:名前は開発中のものです。 mailto:sage [2009/12/14(月) 00:33:25 ID:8p9lCz90]
- 画像管理クラスみたいなのを作って
そいつにフルスクリーンにされた、という情報を通知してやるとか
- 117 名前:名前は開発中のものです。 mailto:sage [2009/12/14(月) 01:18:53 ID:UpilfluK]
- 最大化ってやっぱフルスクリーンの事なのか。
- 118 名前:名前は開発中のものです。 mailto:sage [2009/12/15(火) 12:51:33 ID:RIHdLK0r]
- 自分好みのサウンドノベル作ろうと思ったのですが、ノベルって60fpsもいらなくてフレームレート下げたいと思ってます。
しかしどのようにやればいいのかよくわからず困っています。 何か調整する関数などないでしょうか?
- 119 名前:名前は開発中のものです。 mailto:sage [2009/12/15(火) 13:11:08 ID:CgintmXt]
- フレームレート下げる理由はなに?
画像更新の回数を減らすため? もしそうならフレームレート関係なく、画像更新しなきゃ済む事でしょう。 キー入力処理だけループさせて適当にSleepでもはさんでおけばいいんじゃない?
- 120 名前:名前は開発中のものです。 mailto:sage [2009/12/15(火) 14:01:22 ID:RIHdLK0r]
- なるほど!ありがとうございます
- 121 名前:名前は開発中のものです。 mailto:sage [2009/12/15(火) 22:43:42 ID:9aF+TrWP]
- わざわざフレームレートを下げる必要があるのでしょうか?
サウンドノベルでも画面の切り替わりであったり、 何らかのエフェクトであったり、後から60FPSで滑らかに表示させたくなるかもしれないので、 60FPSで作っておいて損はないと思うのですが。 もし60FPSにするなら、1フレーム(ループ1周)の時間を計っておき 1/60秒(16.6666...ms)になるまで待機させます。 30FPSなら1/30ですね。 しかしSleep関数は指定した時間「以上」待機してしまうので、 正確にFPSを制御したいなら、少し工夫が必要です。 大した工夫ではありませんが、前回の誤差を次回で修正するような作業が必要です。 モニタは60FPSが一般的で、裏画面描画なら、何もしなくても60FPSになります。 ですから、試してみて待機関数が正常に動作していると勘違いしがちですので、 お気をつけて
- 122 名前:名前は開発中のものです。 mailto:sage [2009/12/16(水) 07:34:00 ID:nhTnsvqc]
- グルグル回しっぱなしの方が楽だな。
カーソルの点滅とか地味に動かすところもあるのにそこだけ描き換えるのも面倒。
- 123 名前:名前は開発中のものです。 mailto:sage [2009/12/16(水) 18:27:09 ID:GKpjO21V]
- 下手に部分描画頑張っても画像崩れ対策とかが面倒だしな
最近のPCの性能にまかせて60回更新余裕です
- 124 名前:名前は開発中のものです。 mailto:sage [2009/12/16(水) 18:44:25 ID:CpLVLwh1]
- まぁまぁ。
CPU使用率とかメモリアクセス減れば電気代節約にもなるだろうし(?) 色々挑戦する分にはいいんじゃないかな。
- 125 名前:名前は開発中のものです。 mailto:sage [2009/12/16(水) 18:52:02 ID:O9VqeVrK]
- ゲーム中の状態異常としてFPS強制低下を組み込もうと考えた事はあるわ
- 126 名前:名前は開発中のものです。 mailto:sage [2009/12/16(水) 19:20:23 ID:zY3Wrvaf]
- 俺のゲーム、30fpsだ
- 127 名前:名前は開発中のものです。 mailto:sage [2009/12/18(金) 18:57:42 ID:1+hLha67]
- すいません。
DXライブラリのド初心者です。>< 2Dアクションでキャラが歩いてる感じの表現をだしたいのですが。 どうすればいいでしょうか?? 詳しいサイトを教えていただけるだけでもうれしいです>< おねがいします><
- 128 名前:名前は開発中のものです。 mailto:sage [2009/12/18(金) 19:09:02 ID:B2G1gHKW]
- dixq.net/g/#0
- 129 名前:名前は開発中のものです。 mailto:sage [2009/12/18(金) 19:16:05 ID:fEqZwGFp]
- >127
RPGの歩いてる感じであれば上のサイトでも書いてありますが、 2Dアクションとなると少し違うかも知れませんね。 歩いてる感じといっても、描画だけできればいいのか、 地面とのあたり判定を求めて描画するのかなどで 回答は色々変わってくると思いますが、とりあえず描画だけすればいいんですかね? アクションゲームは初めて作るゲームとしてはとても難しいと思いますよ。 特に斜め坂、曲面大地とか作らないといけなくなると マップ管理とかも結構面倒です。 で、描画だけすればいいのであれば、 いくつか歩行グラを読み込んでループ描画すればいいのではないでしょうか?
|

|