DXライブラリ 総合スレッド その12
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2012/02/23(木) 21:35:32.53ID:Si08WDH/ゲームのグラフィックを比較的容易に描画する事のできる、
「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/
DXライブラリ 総合スレッド その5
http://pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
http://hibari.2ch.net/test/read.cgi/gamedev/1267108154/
DXライブラリ 総合スレッド その7
http://hibari.2ch.net/test/read.cgi/gamedev/1286180687/
DXライブラリ 総合スレッド その8
http://hibari.2ch.net/test/read.cgi/gamedev/1301818631/
DXライブラリ 総合スレッド その9
http://hibari.2ch.net/test/read.cgi/gamedev/1310904069/
DXライブラリ 総合スレッド その10
http://hibari.2ch.net/test/read.cgi/gamedev/1313655495/
DXライブラリ 総合スレッド その11
http://toro.2ch.net/test/read.cgi/gamedev/1322844235/
0726名前は開発中のものです。
2012/05/15(火) 00:21:21.90ID:I2SNujz00727名前は開発中のものです。
2012/05/15(火) 01:02:26.15ID:3TH09wJu俺の知ってる部活と違う。クーラーしか共通点がない。
全員でエロゲのセーブデータ解析&先公から頼まれた市販ソフトのコピー遂行。
解析データは投稿。>>725はどこの世界に生きてたんだよ・・・
0728名前は開発中のものです。
2012/05/15(火) 01:09:35.50ID:G9xvbrPp俺もdoubtだわw
「パソコン」が通称だった時代は、まだ全く身近じゃなかったんじゃないか?
サッカー部に女子がまとわりついてるってんなら分かるが。
あと、
>Shock Priceの500円の脱出ってゲーム
アマゾンのユーザレビューでボロクソ言われてんなww
0729名前は開発中のものです。
2012/05/15(火) 02:01:02.79ID:G9xvbrPpスマソ
0730名前は開発中のものです。
2012/05/15(火) 02:28:36.70ID:I26iNYfr0731名前は開発中のものです。
2012/05/15(火) 04:55:54.75ID:l3PfYtxB老害教師に鼻で笑われたなー
0732名前は開発中のものです。
2012/05/15(火) 06:22:59.75ID:WoSDo/nx0733名前は開発中のものです。
2012/05/15(火) 08:27:06.44ID:n+C8wzG1GPの館に書いてあったんだが
0734名前は開発中のものです。
2012/05/15(火) 08:46:09.63ID:P26WoJ+Efor:初期化式と再初期化式が省略可能だが余分
do〜while:初回無条件に実行が必要じゃない
goto:基本的に使用は避ける
無駄が無いからwhileを使う
0735名前は開発中のものです。
2012/05/15(火) 10:45:28.39ID:/AN6bfUC0736名前は開発中のものです。
2012/05/15(火) 11:24:27.70ID:7q5MiGtI0737名前は開発中のものです。
2012/05/15(火) 13:32:48.02ID:DvZhu9E1趣味でやる分には好きにすればいいと思うよ
0738名前は開発中のものです。
2012/05/15(火) 15:26:41.12ID:WoSDo/nx0739名前は開発中のものです。
2012/05/15(火) 15:36:07.96ID:7MbmXZQt0740名前は開発中のものです。
2012/05/15(火) 17:48:29.94ID:K4tOkwgR0741名前は開発中のものです。
2012/05/15(火) 18:39:55.59ID:WoSDo/nxfor(int i=0; i<5; i++){}
for(Type object : array){}
for(true){}
{}for(true)
0742名前は開発中のものです。
2012/05/15(火) 20:11:20.70ID:jK/Ti//s宗教寄りな個々の拘りの問題で、出来上がる物にそこまで影響してこないでしょ
>>736 がそう思う理由を聞きたい。普段から殆ど使わないけど、なにかか不味かったけ?
0743名前は開発中のものです。
2012/05/15(火) 20:18:12.31ID:FJN+ySbI0744名前は開発中のものです。
2012/05/15(火) 20:30:17.74ID:Q/+zfBD60745名前は開発中のものです。
2012/05/15(火) 21:38:56.48ID:NycYNCvV二次元上の点をランダムな点(ただしPCの半径n以外)を得るコードの時に人生で初めて
0746名前は開発中のものです。
2012/05/15(火) 21:42:25.47ID:I2CLfunR0747名前は開発中のものです。
2012/05/15(火) 22:14:03.49ID:AbQ+Urgd処理;
if(エラーチェック1) break;
処理;
if(エラーチェック2) break;
処理;
return;//正常終了
}while(false);
エラー処理
return;
これでgoto要らず・・・
0748名前は開発中のものです。
2012/05/15(火) 22:15:08.62ID:SjeSUqBD0749名前は開発中のものです。
2012/05/15(火) 22:34:26.99ID:AbQ+Urgdsend(to, from, count)
register short *to, *from;
register count;
{
register n=(count+7)/8;
switch(count%8){
case 0: do{ *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n>0);
}
}
0750名前は開発中のものです。
2012/05/16(水) 01:14:43.27ID:E/82p3zmなんだこれは
0751名前は開発中のものです。
2012/05/16(水) 01:33:14.92ID:E/82p3zm他で作った好きな要素数の配列をnewしてアドレス変数をポンポン交換してって
使い終わったやつはdeleteで開放
で擬似的に動的配列になるかね
日本語意味不明だけど解読してくれると嬉しい
0752名前は開発中のものです。
2012/05/16(水) 01:53:38.37ID:uCI89rGL動的配列のvectorじゃだめなん?
0753名前は開発中のものです。
2012/05/16(水) 03:41:31.70ID:veKNCjZ1基本を抑えずvector使っても結局詰まるよ。
0754名前は開発中のものです。
2012/05/16(水) 04:11:42.74ID:xN96LXhW何も考えずにvector使えばいいよ
0755名前は開発中のものです。
2012/05/16(水) 20:28:31.12ID:veKNCjZ10756名前は開発中のものです。
2012/05/16(水) 21:05:20.10ID:Zs3i0kMOさっさとvector使えばええやん
C++ STL vectorとかでぐぐれば資料もたくさんあるから、必要な情報も得やすい
0757名前は開発中のものです。
2012/05/16(水) 21:17:43.67ID:xcEAC60x0758名前は開発中のものです。
2012/05/16(水) 21:22:50.79ID:xcEAC60xこの時わざわざ
class Constructor{
private:
int x,y,z;
public:
Constructor(tmpx,tmpy,tmpz){
x=tmpx;
y=tmpy;
z=tmpz;
}
}
って名前変えて一個ずつ代入していくのが面倒なんだけど、この方法しかないの?
Constructor(x,y,z){}
が出来るならいいんだけど
0759名前は開発中のものです。
2012/05/16(水) 21:52:32.82ID:Ii6Gjokaとかどうよ
0760名前は開発中のものです。
2012/05/16(水) 22:06:52.36ID:xcEAC60xtmpとか無くしたい
x→tmpx→x
↓
x→x
0761名前は開発中のものです。
2012/05/16(水) 22:10:09.69ID:DWTPf8LXこういうのってC++でもできるよね?
0762名前は開発中のものです。
2012/05/16(水) 22:13:40.69ID:xcEAC60x0763名前は開発中のものです。
2012/05/16(水) 22:22:46.08ID:GI6piSjh0764名前は開発中のものです。
2012/05/16(水) 22:23:30.21ID:aRUZ3+na0765名前は開発中のものです。
2012/05/16(水) 22:30:48.24ID:uOBgzP4Uprivate:
int x,y;
public:
point()
{
*this = point(x,y);
}
point(int x,int y) : x(x),y(y)
{
}
};
ってダメかね
0766名前は開発中のものです。
2012/05/16(水) 22:54:49.23ID:vXiMaXO2内部変数とアクセッサ・引数用の変数ネーミングのルールを作る。
内部変数は省略形で書き易く、アクセッサ・引数用は分かりやすく。
それ以上気にすると先に進まん。
なんかいい方法があれば後で直せば良いや、くらいで。
0767名前は開発中のものです。
2012/05/16(水) 23:53:20.10ID:O28tHfhr安全っつーか、thisつけないとアクセスできないでしょ
0768名前は開発中のものです。
2012/05/17(木) 00:12:52.18ID:lbGUPy7y変数は構造体の中にまとめる
変数が増えても構造体をいじるだけでいい
typedef struct xyz
{
int x;
int y;
int z;
}stXYZ;
class Constructor
{
private:
stXYZ xyz;
public:
Constructor(stXYZ *pstTmp)
{
memcpy(&xyz,pstTmp,sizeof xyz);
}
};
//呼び出し側
stXYZ stTmp = {1,2,3};
Constructor constructor(&stTmp);
0769名前は開発中のものです。
2012/05/17(木) 00:24:19.25ID:Jj8o5dc4(・δ・`)
0770名前は開発中のものです。
2012/05/17(木) 04:59:40.80ID:4FnschNb初期化子リストじゃだめなの?
class foo
{
public:
foo (int x, int y) : x(x), y(x) {}
private:
int x,y;
};
0771名前は開発中のものです。
2012/05/17(木) 08:20:02.90ID:XdhnKfWC0772名前は開発中のものです。
2012/05/17(木) 09:51:33.09ID:Jj8o5dc40773名前は開発中のものです。
2012/05/17(木) 10:48:59.52ID:72LABUA90774名前は開発中のものです。
2012/05/17(木) 12:18:20.00ID:kt0acN7f0775名前は開発中のものです。
2012/05/17(木) 12:51:45.63ID:XdhnKfWCvisual studio c++ 専用だけどpropertyという機能もある
0776名前は開発中のものです。
2012/05/17(木) 16:09:41.33ID:jk5kVr/j安心しろ、俺もだ
0777名前は開発中のものです。
2012/05/17(木) 16:36:03.67ID:LEC6LKtfメンバ関数作って使い方の感覚得るとかいんじゃね
0778名前は開発中のものです。
2012/05/17(木) 17:43:23.17ID:ucuijB6CC言語は入門書一冊熟読した
知識はそれだけです
0779名前は開発中のものです。
2012/05/17(木) 17:53:24.70ID:A/eH0jcf0780名前は開発中のものです。
2012/05/17(木) 18:19:27.36ID:Le624jWkあの滑らかなジャンプの曲線の動きとか作るのすげー勉強になるし、実際に動いてるの見ると楽しい
0781名前は開発中のものです。
2012/05/17(木) 18:25:10.94ID:sA5HBbyr作りたいもの作ればいいよ。
作りたいものがなければ違うことやればいいと思うよ
0782名前は開発中のものです。
2012/05/17(木) 18:42:01.27ID:Lq82mTDsともかく、DxLibとC言語で簡単なゲーム作る本があるから探して買うか図書館で借りるかして試してみればいいよ。
0783名前は開発中のものです。
2012/05/17(木) 18:44:31.06ID:CIWlPPKp0784名前は開発中のものです。
2012/05/17(木) 19:04:17.83ID:1miPR200実際に動かして見てやっと理解できる。
0785名前は開発中のものです。
2012/05/17(木) 21:17:20.29ID:MVax3Amg次のサンプルプログラムを1個改造して、
気に入ったのがあったら沢山改造して、というのを繰り返して身に着けたな
0786名前は開発中のものです。
2012/05/18(金) 00:14:29.29ID:4zRGqSRrこのサイトのソース読みながら覚えたいのですが
RPG.vcprojをドラッグアンドドロップして
vc++2008に変換しようとすると
「ゲームファイルの初期化に失敗しました」と何度試しても出ます。
VC++2010は低スペなので使えないのですがどうすれば変換できるのでしょうか
もしダメならこれ以外でVC++2008で公開されているrpgのサンプルがあれば教えてください
お願いします
0787名前は開発中のものです。
2012/05/18(金) 00:56:44.66ID:Kw1eEMY10788名前は開発中のものです。
2012/05/18(金) 00:58:13.40ID:gx1xQNnDそれ以外に開放手段はありません
0789名前は開発中のものです。
2012/05/18(金) 00:59:03.38ID:Kw1eEMY10790名前は開発中のものです。
2012/05/18(金) 00:59:42.96ID:mamO/m7+解放する必要があるなら、
配列へのポインタで変数を確保してnewでヒープを確保、
必要になったらdeleteすればok
0791名前は開発中のものです。
2012/05/18(金) 00:59:50.88ID:Kw1eEMY1ありがとうございます
0792名前は開発中のものです。
2012/05/18(金) 01:00:56.05ID:mamO/m7+関数内で宣言されるstatic変数はスコープは関数の内部のみ。
従って別物。
0793名前は開発中のものです。
2012/05/18(金) 01:04:36.26ID:Kw1eEMY1なんかよくわからないので具体的にコード書いてくれると嬉しいです。
・配列arrの引数m分だけ要素数を持つint型配列を引数&pに作成する関数
とかだとわかりやすくて自分が喜びます。
図々しくてすみません。
0794名前は開発中のものです。
2012/05/18(金) 01:05:51.71ID:Kw1eEMY10795名前は開発中のものです。
2012/05/18(金) 01:20:06.21ID:mamO/m7+//えーと、
// 適当な配列
int[] arr = {0,1,2,3,4,5,6,7,8,9,}
void dynamic_array(int*& p, int length)
{
//lengthnこのintを確保
p = new int[length];
// arrからコピー
for(int i = 0; i < length; ++i)
{
p[i] = arr[i];
}
}
// pを解放するときは、
// delete[] p;
0796名前は開発中のものです。
2012/05/18(金) 02:44:50.20ID:g6CQrJUG>>795 のSTL版
#include <vector>
void dynamic_array(int*& p, int length)
{
auto v = std::vector<int>(length);
p = v.data();
}
0797名前は開発中のものです。
2012/05/18(金) 12:33:49.02ID:AXglkRe50798名前は開発中のものです。
2012/05/18(金) 12:39:42.25ID:aBuN5zeL0799名前は開発中のものです。
2012/05/18(金) 12:52:20.63ID:tTxAGc55C++についてもよくわかってなかったりするからつい、だろうね。
他のスレだと”DXライブラリに頼らなくていい人”ばかりに思えて気後れする。
0800名前は開発中のものです。
2012/05/18(金) 14:58:56.44ID:AqX5CuAidynamic_array終了時に開放されね?
>>787が単にヒープに置きたいということでなければ>>795の方法しかないと思う
もしくはvector自体new/deleteするか
0801名前は開発中のものです。
2012/05/18(金) 21:35:11.00ID:0qQFV47b0802名前は開発中のものです。
2012/05/18(金) 22:52:22.12ID:Avt8/Znc>vector自体new/delete
スマポをnewするとか意味ないだろ。
>>796はドヤ顔でSTL勧める本人がSTLを理解してなかった良い例。
0803名前は開発中のものです。
2012/05/19(土) 00:27:03.52ID:VD4oJ3BEメモリはわずかながら消費されていくと思うんだけど、
それってnewが繰り返されてるってことだよね。
アクション性の高いゲームでメインループ内でnewとか使っていいのかな。
普段は軽い処理でも、メモリ確保と開放が絡むと、どこかでカクついたりしないか心配。
気にせずやってるけどカクつきなんて発生したことないよ、ということなら安心なんだけど。
0804名前は開発中のものです。
2012/05/19(土) 00:28:28.08ID:r1qEY4jZDXライブラリでパソコンで動くゲームって当たり前だが
そういうのが逆に新鮮じゃね?
0805名前は開発中のものです。
2012/05/19(土) 00:49:21.53ID:TBtSNI4jもしも、メインループで毎フレームほど行なうっていうのなら、
そういう処理を行なう事自体を、見直す必要があると思うけど。
0806名前は開発中のものです。
2012/05/19(土) 01:02:15.71ID:a+urZXjQ0807名前は開発中のものです。
2012/05/19(土) 01:10:30.26ID:ZOsD1vO4new deleteが重いというけど、なにをnew deleteするかでまた違うのよ。
new int とか new char[32] みたいに1回で終われば気にするほどでもない。
new Hoge で Hogeのコンストラクタの中でまたたくさん new() よばれているような
階層深く大きいクラスのnew, deleteが重いから、
その場合だけオブジェクトプールを検討すればいい。
0808名前は開発中のものです。
2012/05/19(土) 01:27:35.13ID:QmsbQiPL設定されたキャラクターの数だけ配列を宣言する形なんだけど
配列用ポインタを持たせたら、参照先が使い捨てになる。
で、動的に配列の要素数を操作すればポインタで使い捨てじゃなくてもいいんじゃないかと
0809名前は開発中のものです。
2012/05/19(土) 02:35:24.88ID:ZOsD1vO4最大数分のメモリを確保しっぱなしにするって話だろ?
それができる(普通な)規模のステージならそれがいい。
ステージだとかシーンと呼ばれる単位で一括確保・解放できればそれがベスト。
0810名前は開発中のものです。
2012/05/19(土) 09:17:44.64ID:9Hyd3HTN全部メモリ確保してもいいともうけどな
0811名前は開発中のものです。
2012/05/19(土) 10:43:57.82ID:lxOdfsYj一定サイズ以下ならただのプールからの切り出しだし。
0812名前は開発中のものです。
2012/05/19(土) 10:46:39.32ID:VD4oJ3BEオブジェクトはゲーム起動時に最大数をメモリ確保してある前提だったりする。
そこで、mapにinsertするpairが仮にintとポインタだったとして、
insertのときにそのintとポインタ分の小さいnewが起動するし、
eraseのときにはそれがdeleteされると思う。
で、その回数が膨大になったとき、GCみたいな時間くう処理が起動して
カクついたら困るなーと。特にアクション性の高いゲームだと。
たとえばメモリを新たに大量確保する処理が起動して時間くうとか。
そんなものは発生しない、なら、安心してコンテナ使ってゲーム作れるんだけど。
アクション性の高いゲームでも普通にコンテナ使うのが定番だよ、ということなら安心なんだけど、
そのあたりよくわからなくて。
0813名前は開発中のものです。
2012/05/19(土) 11:09:09.97ID:ArUyj87Z具体的なコードがわからないんだよ
class RoundAdmin{
Character character[];
RoundAdmin(int i){
for(int t=0;t<i;t++){
character[i] = new Character;
}
}
}
0814名前は開発中のものです。
2012/05/19(土) 11:09:37.11ID:ArUyj87Z0815名前は開発中のものです。
2012/05/19(土) 11:24:53.82ID:8/80f/4qメモリを確保する時間よりも、メモリが確保できるかどうかが問題だな
コンテナが定番かどうかはこういうのが詳しい
ttp://d.hatena.ne.jp/i-saint/20101012/1286822888
個人・小規模でPCゲー製作ならSTLで充分かと
0816名前は開発中のものです。
2012/05/19(土) 11:38:54.28ID:ArUyj87Zイメージとしてはこれができたら楽なんだ
winmain(~~~~~){
int state;
while(error()){
switch(state){
case 0:
RoundAdmin RAdmin=new RoundAdmin();
break;
case 1:
state=RAdmin.Func();
break;
case 99:
delete RAdmin;
break;
}
}
}
0817名前は開発中のものです。
2012/05/19(土) 11:52:46.30ID:aIMhivPJ0818名前は開発中のものです。
2012/05/19(土) 12:00:09.24ID:gXEjt6C90819名前は開発中のものです。
2012/05/19(土) 12:22:43.39ID:VD4oJ3BEありがとう。参考になる
自分はまさに個人・小規模でPCゲー製作だから、
out of memoryの心配だけはないんだよな
0820名前は開発中のものです。
2012/05/19(土) 12:24:45.52ID:HSIQMcFD0821名前は開発中のものです。
2012/05/19(土) 12:49:35.26ID:JpqeYW60ポリモーフィズムと言え。ややこしい
0822名前は開発中のものです。
2012/05/19(土) 12:58:30.97ID:zRojJiygOGRE3DのAdvancedOgreFrameworkがシーンの使い分けを解りやすく実装してるよ
仕組みだけなので2Dでも十分使える、ただ3DゲームならOGRE3D使ったほうがDXライブラリより楽だけど
0823名前は開発中のものです。
2012/05/19(土) 13:12:00.32ID:dlfQry7wそういえばこの間、少し大きめの構造体の配列を用意しようとしたんだけど
STRUCT_HOGE hoge[1024];
だと実行時エラーで、
STRUCT_HOGE *hoge = new STRUCT_HOGE[1024];
だと問題なく動くってことがあった。
頭では理解してたけど、実際遭遇したのは初めてだった。
0824名前は開発中のものです。
2012/05/19(土) 13:46:07.27ID:PlH7X2T2初心者が良くやるミスだね
0825名前は開発中のものです。
2012/05/19(土) 14:26:49.52ID:1CGbweqQ■ このスレッドは過去ログ倉庫に格納されています