DXライブラリ 総合スレッド その5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/12/04(金) 16:49:13ID:7SKA4I5zGUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
【公式】
http://homepage2.nifty.com/natupaji/DxLib/
【過去スレ】
DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
http://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
0009名前は開発中のものです。
2009/12/05(土) 14:14:45ID:Sya3hEP4ゲームのエフェクトで画面全体をくるくる回したりしたいんだけど
0010名前は開発中のものです。
2009/12/05(土) 14:22:43ID:UtZjONga動くんだったら計算させて自前で回転描画すればいいだけだし。
0011名前は開発中のものです。
2009/12/05(土) 15:12:47ID:GsjhaCrH0012名前は開発中のものです。
2009/12/05(土) 15:15:49ID:UZumt6OGアニメーションxファイルで出せよww
MQOはモーションつかないから連番で出すしかない
0013名前は開発中のものです。
2009/12/05(土) 16:02:55ID:gqFDk2ay0014名前は開発中のものです。
2009/12/05(土) 16:14:43ID:IYliNqS40015名前は開発中のものです。
2009/12/05(土) 16:24:59ID:rsncbGmtこれのデスクトップの広さ 1024x768 の方を取得する方法について教えて下さい
0016名前は開発中のものです。
2009/12/05(土) 16:51:52ID:z1L4m3AmGetSystemMetrics(SM_CXSCREEN);
とかで
0017名前は開発中のものです。
2009/12/05(土) 17:17:35ID:rsncbGmtありがとうございました
0018名前は開発中のものです。
2009/12/05(土) 19:31:08ID:GsjhaCrH0019名前は開発中のものです。
2009/12/06(日) 00:09:46ID:AxjxjhaV結局普通にグローバル使った方が楽なことに気付いた
(全てスタティックが駄目というわけではないが)
グローバルでも名前空間とか使えば局所性もある程度保てるんじゃないかなあ
0020名前は開発中のものです。
2009/12/06(日) 00:10:45ID:wryxppBn0021名前は開発中のものです。
2009/12/06(日) 10:11:40ID:+RNAMjqxクラスで雁字搦めにして書かない限りグローバル変数使ったほうが分かりやすい
0022名前は開発中のものです。
2009/12/06(日) 10:20:30ID:AO9SCSiS「やっぱグローバルやめときゃよかった」ってなる。
0023名前は開発中のものです。
2009/12/06(日) 10:33:36ID:+HYK3UFu0024名前は開発中のものです。
2009/12/06(日) 10:48:26ID:goldsq2u>>22のようなことを考えるとグローバルの方がマシ
0025名前は開発中のものです。
2009/12/06(日) 11:12:16ID:Vlb8mlu0なんで?
0026名前は開発中のものです。
2009/12/06(日) 12:19:26ID:jMxq/kh5SetRestoreGraphCallbackに登録する関数で使う変数のために
とりあえず読み込み用クラスのポインタをグローバルなポインタ作ってそこに渡して動作させてる
他に良い方法ない?
0027名前は開発中のものです。
2009/12/06(日) 14:27:31ID:vkleFuhi文字の後ろに・が一緒に表示されるという怪現象が……。
なんだこれ?
まあ、たぶん俺のコードのどっか悪いんだろうが。
0028名前は開発中のものです。
2009/12/06(日) 14:53:59ID:P3Xq2+aMグローバルばかりでやってたがそうでもないのかな
0029名前は開発中のものです。
2009/12/06(日) 15:10:27ID:AxjxjhaV全角だと1バイト分読み込んだ時に正しく認識されないから
全角の場合は2バイト分読み込ませればいいんじゃないかな
0030名前は開発中のものです。
2009/12/06(日) 15:34:50ID:L7OXdhxz配布するときにDXライブラリをインストールしていないPCでも
起動できるような配布の方法はあるのだろうか
よくわかんないけどDXライブラリランタイムみたいなのがあれば、
それを一緒に配布するみたいな方法とかある?
それとも配布するプログラムとは別にDXライブラリをインストールしてもらうしかないのだろうか。
0031名前は開発中のものです。
2009/12/06(日) 15:39:03ID:bw4St35Rよくわかんないけどたぶん上の[Debug]を[Release]に変えて
出てきたReleaseフォルダを配布すればいいと思う
0032名前は開発中のものです。
2009/12/06(日) 15:43:00ID:ez8iS4soダイナミックなDxLibがあるのかわからんけど自作とかしたならその場合はDLLも配布しないといけない
0033名前は開発中のものです。
2009/12/06(日) 15:43:02ID:CJZjyivEDXライブラリは関数の集合だから、ランタイムパッケージは必要ないんじゃないの?
プログラムが実行ファイルにされるときにすべてC言語からアセンブリ言語にされるはず。
相手に準備が必要なものがあるとすればDIRECTXなんじゃないかな。
0034名前は開発中のものです。
2009/12/06(日) 15:43:31ID:vkleFuhiお、直った!
ありがとー。
STLのstring使ってるんだけど、itretorひとつ進めても、
2バイト文字だとふたつ進めたとこからやらないとだめなんだな……勉強になった。
0035名前は開発中のものです。
2009/12/06(日) 15:44:56ID:vkleFuhiIDEのサポートに頼りっきりはこれだから……。
0036名前は開発中のものです。
2009/12/06(日) 16:16:24ID:L7OXdhxz配布ファイル自体の作り方もわかった。ありがと。(早速、フォルダを作成したら、画像ファイルだけは、出来上がったフォルダに手動で追加することになるみたい。)
>>32 ダイナミックなDxLibというのはよくわかんないけど、多分そこまで複雑な機能を使いこなしてないから、
DLLの心配はしなくていいととりあえず思う。
>>33 DIRECTXの準備が必要ということか。
これは、さすがにインストールしてもらうしかないということだね。
これでとりあえずプログラムの配布ができそう。ありがと。
0037名前は開発中のものです。
2009/12/06(日) 16:18:32ID:RsTxI8HkReleaseフォルダの中身だけでおk
0038名前は開発中のものです。
2009/12/06(日) 16:29:03ID:AxjxjhaVまあ普通は[Release]だろうが
003930
2009/12/06(日) 16:48:28ID:L7OXdhxzありがとう!!
0040名前は開発中のものです。
2009/12/06(日) 17:10:59ID:bw4St35Rそういえばアレ何が違うの?
あとDXライブラリ使ったらReadmeに使ったって書かなきゃダメ?
0041名前は開発中のものです。
2009/12/06(日) 17:29:11ID:+RNAMjqxそのままデバッグが入るか否か 少し重くなる
readmeは要らん ただしソースを配布するなら必須
0042名前は開発中のものです。
2009/12/06(日) 17:50:49ID:bw4St35Rありがとー
0043名前は開発中のものです。
2009/12/06(日) 18:03:42ID:vkleFuhi0044名前は開発中のものです。
2009/12/06(日) 18:15:43ID:+RNAMjqx0045名前は開発中のものです。
2009/12/06(日) 19:38:55ID:EqSux42R/****** 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;
}
0046名前は開発中のものです。
2009/12/06(日) 23:30:09ID:vkleFuhiどうもありがとうございますー。
色々考えてみた結果、マルチタスクに手を出さないとダメっぽいということがわかったので、
なんとか実装するか。
0047名前は開発中のものです。
2009/12/06(日) 23:59:28ID:jMxq/kh50048名前は開発中のものです。
2009/12/07(月) 00:00:23ID:QTWxMRN00049名前は開発中のものです。
2009/12/07(月) 00:44:06ID:yr1Q4g2a0050名前は開発中のものです。
2009/12/07(月) 12:52:27ID:qjhIwQdC0051名前は開発中のものです。
2009/12/07(月) 13:02:56ID:5mIc7NoF試験的に、ゲームのプレイ動画を撮ろうと思ったんだが、DXライブラリ3.xで作ったゲームを録画しようとしても全く録画できない。
画面が映らないというより、プロセスを正しく取得できていないような感じ。
ちなみに手元の2.25cだと、ゲームプログラムは弄らずにキャプチャー出来た。(3D機能は未使用)
に多様な状況になったひとっている?
自分の環境が悪いのか、キャプチャーソフトが悪いのか、ライブラリ側の都合なのか調べたい。
OS:WindowsXP SP3
キャプチャーソフト:アマレコ・ライト、Dxtory、DxRec
参考ページ: ttp://www18.atwiki.jp/live2ch/pages/153.html#id_439db353
0052名前は開発中のものです。
2009/12/07(月) 13:45:13ID:SKodZ2cg同じボタンでやるとします。
この場合あるボタンを押すと勝手にAだけでいいのにBまで処理されて
しまいます。Aで止めて、もう一度同じボタンでBの処理をさせる
にはどうすればいいの? お願いします。
0053名前は開発中のものです。
2009/12/07(月) 13:52:55ID:QTWxMRN0WMEでやったらどうなる
範囲指定でやったらどうなる
というか仕様的なことならむしろ本家に行った方がいいと思うが
>>52
連続ってどういうこと?
押しっぱなしじゃなくて連打させたいという意味なら
・キーを押すとONになるフラグを作る
・キーを離すとそのフラグはOFFになる
・キーがOFFの場合しかキーを押したときに処理が行われない
というようにする
0054名前は開発中のものです。
2009/12/07(月) 14:15:07ID:SKodZ2cgCheckHitKey関数しか知らないんで 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;
こんな感じですか?
非効率なような気がします。いい案があればおしえてください。
ちなみにシューティングじゃないんで連打はないです。
0055名前は開発中のものです。
2009/12/07(月) 14:30:14ID:QTWxMRN0なんでそうなるんだよ
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は効率悪いからやめておけ
0056名前は開発中のものです。
2009/12/07(月) 14:43:37ID: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でレスされてるのに気付いたが
ほぼ同じだが投稿しちゃう
0057名前は開発中のものです。
2009/12/07(月) 14:44:31ID:GvCDZJ6Fの↑は>>54を指すので
0058名前は開発中のものです。
2009/12/07(月) 14:44:45ID:qjhIwQdCif (( btn ) && ( ! isPush )) {
switch ( step ) {
case 1 :
doA ( );
step ++;
break;
case 2 :
doB ( );
step ++;
break;
・
・
・
}
}
isPush = btn ;
0059名前は開発中のものです。
2009/12/07(月) 15:00:21ID:SKodZ2cg制御する変数を使わないとやはり難しいみたいですね。
参考にします。
0060名前は開発中のものです。
2009/12/07(月) 16:30:58ID:eqdM01iGunsigned 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フレームごとにイベント、とかできる(シューティングの等間隔のショット処理とかで使える)
}
0061名前は開発中のものです。
2009/12/07(月) 17:30:41ID:03D0QZSjhttp://pc11.2ch.net/test/read.cgi/gamedev/1238429676/315
315 名前:名前は開発中のものです。[sage] 投稿日:2009/06/02(火) 21:23:19 ID:CgQN485t
>キー入力
自分が使ってるルーチンのコードを記事にまとめました
http://d.hatena.ne.jp/kokarage/20090602/p2
0062名前は開発中のものです。
2009/12/07(月) 20:24:23ID:5mIc7NoFさすがにDXライブラリのサイトで
「○○というソフトを使っても動きません!」という質問はできないだろうw
DXライブラリ側に原因があるなら別だが。
WMEはMSのやつかな。
動画作成に関しては今日初めてやったので詳しくないんだ、すまん。
0063名前は開発中のものです。
2009/12/07(月) 20:49:26ID:QTWxMRN02.25で出来て3.xで出来ないならライブラリ側の原因である可能性が多いだろ
とりあえず色んな方法でキャプチャして、上手くいかなかったら本家行き
まあ、WME+SCFH_DSFでは問題なくキャプチャ出来たが。
0064名前は開発中のものです。
2009/12/08(火) 02:54:12ID:CEeKe2FB余程多くのキー使うのならともかく普通は押し続けの判断したいキーだけでいいんじゃないのか
まあ今のマシンなら全部やっても負荷的には問題ないのかも知れんが
0065名前は開発中のものです。
2009/12/08(火) 08:20:15ID:bmgyrVLx「何フレーム入力されているか」が解るようにしておけば、ボタン関連の操作は「1フレーム目」または、「キーを離したフレーム」で処理すれば
連続で不必要な処理まで進んでしまう事がありません。
例えば本家のGetHitKeyStateAllを自分で使いやすいようにしたのが
GetHitKeyStateAll_2関数です。こんな感じで使えます。
(→コードは次へ)
この例ではエンターの入力時間によって処理を分岐しています。
キーの入力状態を格納する変数がint型なので
_2関数をさらに「離された時マイナスのカウントをする」ようにすれば
離されてからのフレーム数も解ると思います。
・・ところでコードを見やすいように字下げする方法無いんでしょうか;
0066名前は開発中のものです。
2009/12/08(火) 08:21:20ID: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;
}
0067名前は開発中のものです。
2009/12/08(火) 10:08:46ID:ziZ5aZky0068名前は開発中のものです。
2009/12/08(火) 11:20:05ID:U9efz6mVttp://fatalita.sakura.ne.jp/CGI/OKCode/index.html
0069名前は開発中のものです。
2009/12/08(火) 15:24:53ID:oCon0Lhkグラフィックハンドルを直接指定して描画処理をする方法がわからなくて困っています。
GetDrawScreenGraphを使っていったんウラ画面に描画したものを、空のグラフィックにコピーしようとしたのですが
ウィンドウサイズより大きいところに描画されたものはコピーされないみたいでダメでした。
どなたかこの問題を解決できる方はいませんでしょうか?
0070名前は開発中のものです。
2009/12/08(火) 18:10:50ID:EpEGhfoBウィンドウサイズ以上にできるかどうかは知らん。
しかしマップチップ敷き詰めたとしても、どうせ表示サイズ以上には表示できないんだし、
普通に毎フレーム描画でいいと思うが。
まぁ全マップを拡大縮小回転とかガンガンやるならちとずれそうで怖いが。
0071名前は開発中のものです。
2009/12/08(火) 19:18:27ID:oCon0Lhkありがとうございます、いろいろ調べてきます!
2Dアクションゲームを作ってましてとりあえずマップ全体をメモリに描画しといて
スムーズなスクロールをしようと思ってました。
0072名前は開発中のものです。
2009/12/08(火) 19:27:56ID:EpEGhfoB普通に毎フレーム描画でいくべきだと。
よほどヘボなPC使うか、プログラムがヘボでないかぎり
スムースさに変わりはない。
0073名前は開発中のものです。
2009/12/08(火) 19:37:02ID:oCon0Lhkそうですか。
しかし自分の知識不足でどうやって毎フレーム描画でドット単位のスクロールをすればいいのかわからなくて
ttp://www.harukitchen.com/rpg_programming/06/06.htm
ここのサイトを参考にしてるんですけど、この方法だと結局ウィンドウサイズ以上の大きさの描画が必要になるし
どなたか知恵を貸していただけないでしょうか?
0074名前は開発中のものです。
2009/12/08(火) 19:45:37ID:B6+BeJXVウィンドウサイズ以外の描画がしたくないならカメラ座標に映らない座標のオブジェクトは描画しなくていいだけだし、
確かdirectXの仕様で画面外は省略されてた気がする
DXライブラリならオリジナルの描画関数作ってDrawRotaGraphなりに飛ばしてやるのがお勧め
0075名前は開発中のものです。
2009/12/08(火) 19:46:26ID:EpEGhfoBキャラクターの表示はできる?
それをドット単位で動かせる?
それができるならマップもできよ。
マップったって、結局マップチップというキャラクターを並べて表示してるだけだからね。
ドット単位で表示ずらせばいいだけ。
んでもって、画面表示されない位置のマップチップは描画しなければいい。
0076名前は開発中のものです。
2009/12/08(火) 20:11:36ID:oCon0Lhkキャラクタの表示もドット単位の移動もできています。
自分の頭の中では
1,ウィンドウサイズより一回り大きいグラフィックハンドルにマップチップを敷き詰める
↓
2,そこから必要な場所だけを切り取って表示する
という流れしか考えられません(´・ω・`)
しかしこれだと1のステップがクリアできなくてダメだし
簡単にアルゴリズムをアドバイスしていただけないでしょうか?
0077名前は開発中のものです。
2009/12/08(火) 20:19:13ID:oCon0Lhkマップチップを敷き詰めるはじめる座標を(-32-[主人公の座標.x]%32,-32-[主人公の座標.y]%32)
にしてあげて、主人公の座標から必要なマップチップの情報をウィンドウサイズより一回り大きく取り出してあげて
それを描画すればいいんですよね!!
0078名前は開発中のものです。
2009/12/08(火) 20:32:31ID:DQdomlYR0079名前は開発中のものです。
2009/12/08(火) 20:35:04ID:EpEGhfoB0080名前は開発中のものです。
2009/12/08(火) 20:39:47ID:oCon0Lhk今プログラム組んでみたら上手くいきました:)
ありがとうございました、これからもよろしくお願いします。
0081名前は開発中のものです。
2009/12/08(火) 20:40:20ID:EpEGhfoB「主人公の位置」じゃなくて「カメラの位置」で考えてね。
基本的に主人公の位置とカメラの位置は同じだけど、
マップ端に行った時は違ってくるから。
0082名前は開発中のものです。
2009/12/08(火) 20:55:01ID:8T1WO6NwなんかC++&DxLibがちょっと使えるレベルの人間にふさわしい本とかないすかね
0083名前は開発中のものです。
2009/12/08(火) 21:05:16ID:B6+BeJXVアクションゲームアルゴリズムマニアックスとか?
0084名前は開発中のものです。
2009/12/08(火) 21:09:08ID:EpEGhfoB俺だってC++とDxLibがちょっと使える程度だが、ちょっと使える程度のものを作るには不自由ないぞ。
C++&DxLibで何がしたいのか次第でしょ。
0085名前は開発中のものです。
2009/12/08(火) 21:33:24ID:8T1WO6Nw最終的にはシレンっぽいのを作りたいんだが、その前になんか根本的な部分が抜けてるような気がしたんだ
0086名前は開発中のものです。
2009/12/08(火) 21:47:15ID:trfhK022作りたい物だったらモチベーションも保ちやすいし勉強にも身が入る
わからなさ過ぎると嫌になるかもだけど
0087名前は開発中のものです。
2009/12/08(火) 21:47:25ID:B6+BeJXVほらよ
あとは作るしかない
ゲーム作りのノウハウは他人に教えてもらうのではなく経験で身につけるもの
0088名前は開発中のものです。
2009/12/08(火) 22:23:40ID:nVGvorfQプログラムの基礎を勉強したいのか、
プログラムはわかるが、ゲーム作りの基礎を勉強したいのかでまた違ってきそうだね。
ちなみに俺は独学でゲーム作りしてきたから、ゲームは作れても基礎が全然できてねぇ;;
俺も勉強しなおすかな……。
0089名前は開発中のものです。
2009/12/08(火) 23:54:13ID:JpJMUeIi読んでみるといいかもね。あとはデータ構造、基本的なアルゴリズム、
デザインパターンあたりがわかると、汎用性があるかな。
でもまあ、趣味でやるなら勉強と思ってやることはないと思うぞ。
問題を解決しようとして見つけた情報の中で、便利そうなのがあったら
その周辺を重点的に調べる、で結構いろいろできるようになる。
ところでDXライブラリって、core以外のソースは公開されていないよね?
掲示板ちょっとみたら、ソース公開に関する質問はスルーされていたので、
全て公開するかは未定ってところかな。
0090名前は開発中のものです。
2009/12/09(水) 00:17:14ID:5fGPGOQD知りたいのはアニメーションの統一的な制御法とか、膨大(になりそうな)画像やデータファイルの生成・管理法とか
この辺がうまくできなくてコードに直接埋め込んじゃってるからどんどんスパゲッティになっていってわけわからなくなるんだと思う(たぶん)
0091名前は開発中のものです。
2009/12/09(水) 00:20:33ID:q6H67G0jデータの設計や管理などの方がずっと重要
0092名前は開発中のものです。
2009/12/09(水) 00:31:54ID:oBlr8zOS今書いてるコードがスパゲッティになるかどうかは、ゲームを完成させるまで分からない。
幾つもゲームを作りながら、「この書き方だと後々こういうケースにハマって困る」というのを学んでいく
そうやって最適化されていくもんだよ
そこら辺に落ちてるゲームの作り方的な例は最初から最適化されてることが多いが、
何故そのように最適化されてるのか述べてるものはほとんどない
そういう意味も考えながらだと上達が早いと思う
0093名前は開発中のものです。
2009/12/09(水) 00:47:35ID:f8b9o6Brstlとboost使った自作のデータ管理クラスでなんとかなってるよ。
配列の番号とかいちいち覚えてられねーよwwwってことで。
ファイル名と画像なら表示されてるレイヤとか指定すれば色々操作できる仕様。
ただ、俺ゲームどころかまともに作るのすらはじめただから正解かどうかはわからん。
基底クラスのデータ管理で使ってるのは、unordered_map。
0094名前は開発中のものです。
2009/12/09(水) 01:30:17ID:+dPnel+v同じにおいを感じるッ!
ゲームの設計に多少時間をさくのがいいんじゃないかな。
シーケンス制御とか、どのクラスがデータを持つのかとか。
俺もとりあえず動くもの作ってみてあれこれ機能つけたしてくってしてたけど
ちょっと規模が大きくなるとワケワカメになってきたから
丁寧に設計してみようと勉強&作成中。
「ゲームプログラマになる前に覚えておきたい技術」って本、高いけど
その辺の要求に答えてくれてる気がする。
あ、DxLib使ってないけど、読めばより使いこなせるようになると思うよ。
0095名前は開発中のものです。
2009/12/09(水) 01:41:52ID:OFLUsKk50096名前は開発中のものです。
2009/12/09(水) 01:44:54ID:uL4RaiqG俺は使わずにやれてるし、ある程度使わずにやってみずして必要性実感できるものかね
デザパタ学んでからやるべきものかね
ある程度C++使ってから見てみると多少参考にはなるけど
0097名前は開発中のものです。
2009/12/09(水) 01:46:31ID:LrcOl5Bl0098名前は開発中のものです。
2009/12/09(水) 06:23:23ID:kFKKgCNe適当に作る
↓
設計に無理があって、どこかで詰まる
↓
作り直しになる
↓
最初よりマシになるがそれでも設計に無理があってどこかで詰まる
↓
作り直しになる。しかも作り直してる最中にまた詰まることがなんとなく分かる。
だが、具体的にどう詰まるのかは分からないし、その解決策も現スキルでは分からない。
↓
どうせまた作り直すことが分かってしまうとモチベが下がる。
↓
今のところ、この繰り返しでいずれゲームの作り方が身につくと信じて
程ほどに考えて、手を止めすぎないようにしている。
0099名前は開発中のものです。
2009/12/09(水) 06:50:15ID:aw1FDcJg途中で良い設計が思いついたり、飽きてしまうこともあるけれど、
まずはどんなミニゲームでもいいから、とりあえず完成させるべき。
昔の電子ゲーム(ゲーム&ウォッチ)みたいな単純なゲームなら
悩んだり飽きたりする前に、それこそ勢いだけで完成しちゃう場合も。
0100名前は開発中のものです。
2009/12/09(水) 08:10:26ID:cydXuseL俺の自己紹介文をなぜ書けるw
0101名前は開発中のものです。
2009/12/09(水) 13:02:55ID:zYgTW+cQ書いてみたりすると案外プログラム書けて俺スゲーと思うはず
ゲームって作りたいもののイメージが先行して
それを実現するために要求される技術が高すぎるからorzになりやすい
0102名前は開発中のものです。
2009/12/09(水) 14:56:36ID:njV6Yik+そろそろちゃんと基礎からやっとくかーとか思って言語の基礎から説明してくれてる解説サイトを見てみたら
C言語に関しては勉強する部分があんまり残ってなかった
0103名前は開発中のものです。
2009/12/09(水) 15:09:50ID:cydXuseL読んだときにニヤニヤする
0104名前は開発中のものです。
2009/12/09(水) 23:48:43ID:Wiib7oc4あ
あa
あaい
あaいi
と一文字ずつ表示させていく方法について教えて下さい
0105名前は開発中のものです。
2009/12/10(木) 00:24:34ID:qpivaZnnその文字がASCII(1バイト)文字か、そうでないか(2バイト)を関数で判断
それからstringまたはchar型の変数aに代入
→1バイト文字なら、DrawFormatString(a,%s)
→2バイト文字なら、Forループと文字幅関数を組み合わせて文字を横に表示
とかやった記憶がある。
0106名前は開発中のものです。
2009/12/10(木) 11:23:34ID:o5AOUra2新規プロジェクトからDXライブラリを使う場合
どのようにつかったらいいの?
単にプロジェクトに追加すべきファイル_VC用の内容をコピーして
新規プロジェクトで作ったフォルダーに入れただけではリンクでエラーが
でます。新規プロジェクト作成からDXライブラリを使ったコンパイルまでの
流れを易しく教えてください。
0107名前は開発中のものです。
2009/12/10(木) 11:29:59ID:hZmtje4B公式のこれはちゃんと読みながら設定した?
0108名前は開発中のものです。
2009/12/10(木) 12:20:31ID: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) で定義されています。
■ このスレッドは過去ログ倉庫に格納されています