トップページgamedev
996コメント293KB

DXライブラリ 総合スレッド その10

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2011/08/18(木) 17:18:15.54ID:vXmrN4yD
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「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/
0897名前は開発中のものです。2011/11/25(金) 17:36:20.43ID:iXddPxkH
グローバル変数は絶対悪だってのは一部の職業プログラマの宗教みたいなもんだから無視していいよ
自分の管理しやすい方でやればいい
0898名前は開発中のものです。2011/11/25(金) 17:39:12.68ID:BAy23hAg
>>897
やったー
ありがとうございます
0899名前は開発中のものです。2011/11/25(金) 17:44:22.70ID:1SzTAqNb
Bufの内容をいろんな関数で参照したいならグローバルや静的変数でいいよ
1関数内で収まるなら256バイト位ならスタック上のローカル変数で十分
その変数が必要ないソースから見えなきゃグローバル変数は絶対悪でもない
0900名前は開発中のものです。2011/11/25(金) 18:14:44.87ID:GB5t8CRi
>>896
出来る限り変数のスコープは小さく保つべき。
同じ変数を使いまわすと今その変数に何の値が入ってるのか把握するのが難しくなり、思わぬバグを引き起こす。
特に初期化し忘れを防ぐために可能ならば宣言と同時に初期化値を代入するのが望ましい。

ちなみにメモリの確保と解放は確かに多少重くなるかもしれんが、
最近のコンパイラは最適化が優秀でそういうのは勝手にやってくれるため気にする必要は全く無い
0901名前は開発中のものです。2011/11/25(金) 18:17:36.24ID:9+8knjT5
将来的にキーコンフィグ(入力キー設定、キーバインド)の変更をしないならそれでもいいかもね
色々変更するかもしれないなら、コマンドクラスを作ったほうが保守性が高いんじゃないか?
0902名前は開発中のものです。2011/11/25(金) 18:48:39.04ID:X/JXm5DV
グローバル変数作り過ぎると後で痛い目みるからほどほどにな…

ソースは俺
0903名前は開発中のものです。2011/11/25(金) 19:50:24.03ID:girb6CSA
頻繁に使うから〜というのは確かに正しいけど、
全体の何%だよ!って部分を少しだけ速くしたところで、見た目に変わることがないというのも、やっぱり正しいと思うよ。
0904名前は開発中のものです。2011/11/25(金) 20:07:31.31ID:iXddPxkH
グローバル変数管理ツールを作ればいいのさ
0905名前は開発中のものです。2011/11/25(金) 20:16:08.85ID:0IE6eIFl
グローバル変数使うなってのは幾多のプログラマが痛い目にあった上で生まれた教訓
自分で問題点が分からないのなら実際にやってみた上で判断すればいいと思う
歴史に学ぶか経験に学ぶか、だな
0906名前は開発中のものです。2011/11/25(金) 20:27:54.71ID:D4NDQSDv
>>896 キー入力の状態ならグローバルでいいと思う。
0907名前は開発中のものです。2011/11/25(金) 20:31:32.79ID:Aue2OhIn
プログラム初心者だからこういう話すごい参考になる

配列に値を一括で入れたい場合って宣言のときしか無理だよね
こういうのはグローバルにしてもいい?
それともコンストラクタか何かでループで入れていった方がいい?
0908名前は開発中のものです。2011/11/25(金) 20:39:02.38ID:YLcAYCYj
>>896
calss KeyStatus {
private:char Buf[ 256 ] ;
public:getHitKeyStateAll(){GetHitKeyStateAll( Buf ) ;} ;
public:char getKeyBuf(int key_input){return Buf[ key_input]; }
};
とりあえずこうしとけ、クラスはグローバルにしていいから
0909名前は開発中のものです。2011/11/25(金) 21:53:03.64ID:8iac4M0d
ちょっとテストさせてください
0910名前は開発中のものです。2011/11/25(金) 22:04:45.85ID:OU9WDBg2
3つ教えてください。
よろしくお願いします。

(1)
ウィンドウの右上の「×」や「Ctrl+Alt+Del」で強制終了した際に、「DxLib_End();」を実行するにはどうすればいいのでしょうか?
このような場合は、「DxLib_End();」をしなくても良かったりしますか?
今のところは異常を見たことがありませんが。

(2)
ウィンドウモードで起動して、ウィンドウを動かせるようにしたいのですが、どうすればいいですか?
「玉当てゲーム」のソースコードを読んでみているのですが、そういう設定を行う関数を呼んでいるところを見つけられないです。
関数か、ソースコードの行番号か、教えていただけませんか。

(3)
「SetWindowSize」という関数がヘッダにありました。
リファレンスには載っていません。使ってほしくない関数なのでしょうか?
09119102011/11/25(金) 22:06:08.08ID:OU9WDBg2
(2)の質問は、「ウィンドウを動かせるようにしたい」が訊ねたいところです。
言葉足らずですみません。
0912名前は開発中のものです。2011/11/25(金) 22:21:40.39ID:hjCazteI
普通はBufは外部に公開せずに
is_push_key();
みたいな関数経由で中でBufを見るかな
0913名前は開発中のものです。2011/11/25(金) 22:32:39.23ID:RwVxSi+4
>>903
>見た目に変わることがないというのも、やっぱり正しいと思うよ。

見た目変わらないというのはそうかもしれないが、見た目以外は変わるのも正しい
以前にも言ったかもしれないが「そんな事しなくてもいまどきのPC性能なら問題ねーよ」と
よく言われるような事を実装したところ、確かに見た目は変わらなかったが
それまでうるさかったCPUファンが急に静かになった、ということがあった。
だから俺は「たとえ0.01%だろうと軽くするほうが正しい」と確信を持って主張する。
むしろ「やらなくても一緒だ」と主張する人達は実際に試して比較してもいないんだろうと思ってる。
(前述の件とは別件でそういう主張する人達に、実際に計測した結果を示して
 それぞれの環境でも計測してくれるよう頼んだところ急に黙り込んだという事があった)
0914名前は開発中のものです。2011/11/25(金) 22:36:50.46ID:b5Tmlmkb
>>907
用途に因るがテーブルとして持ちたいならconst付ければOK

>>910
1. 終了時に何か特殊な動作をさせたいならそういう関数はあるがDxLib_End()を呼びたいだけなら気にする必要は無い

2. ウインドウを動かすって何?
ウインドウの位置を決める関数なら

// ウインドウモードのウインドウの位置を設定する( 枠も含めた左上座標 )
int SetWindowPosition( int x, int y ) ;

3. 説明省いてるだけで普通に使って良し
0915名前は開発中のものです。2011/11/25(金) 22:41:14.57ID:5Y0bAE1t
(1)このあたり?
SetWindowUserCloseEnableFlag
SetDxLibEndPostQuitMessageFlag
0916名前は開発中のものです。2011/11/25(金) 22:42:19.50ID:b5Tmlmkb
>>913
>だから俺は「たとえ0.01%だろうと軽くするほうが正しい」と確信を持って主張する。
その主張が出来るのはコンパイラ毎の最適化の内容を熟知してアセンブラ叩ける奴だけ
組み込みには正義だろうよ
普通の開発ではソースコードがやたら難読化して要らぬバグを引き起こす事がほとんど
0917名前は開発中のものです。2011/11/25(金) 22:44:21.25ID:8iac4M0d
>>910
>ウィンドウの右上の「×」や「Ctrl+Alt+Del」で強制終了した際に、「DxLib_End();」を実行するにはどうすればいいのでしょうか?
「×」を押すなどして強制終了されるときはProcessMessage()が-1を返すので、そこで分岐すればOKだった気がする。


>ウィンドウモードで起動して、ウィンドウを動かせるようにしたいのですが、どうすればいいですか?
DxLib_Init()を呼ぶ前にChangeWindowMode( TRUE );を追加すればOK

ウィンドウサイズはここを読んでみるといいかもしれません。
ttp://www.play21.jp/board/formz.cgi?action=quote&resno=57924&id=dixq&lognum=177

私の見当違いだったら申し訳ない・・・。
09189172011/11/25(金) 22:45:13.87ID:8iac4M0d
うわああ
リロードすればよかったorz
09199102011/11/26(土) 01:00:02.64ID:OK82FRmW
皆さんレスありがとうございます。910です。
>1. 終了時に何か特殊な動作をさせたいならそういう関数はあるがDxLib_End()を呼びたいだけなら気にする必要は無い
そうでしたか。呼ばずに終了すると、何かとてつもないことになる、とどこかで見た気がしたのですが、妄想だったようです。

>SetWindowUserCloseEnableFlag
>「×」を押すなどして強制終了されるときはProcessMessage()が-1を返すので、そこで分岐すればOKだった気がする。
おぉぉ!勉強になります。

>3. 説明省いてるだけで普通に使って良し
ありがとうございます。リファレンスだけではなく、ヘッダも読むようにします。

(2)についてなのですが、私が作ったプログラムでは、タイトルバーをつかむことも、×を押すことも出来ない、というか、ウィンドウ内にマウスアイコンが入るとマウスアイコン表示が消えてしまいます。
何を言っているかわからないと指摘を受けたので、「DrawTriangle3D」のサンプルに対して、「ChangeWindowMode(TRUE);」を追記して試したところ、普通にウィンドウバーをつかむことができ、移動も×も出来ました。
どうも、おかしなことになっているようです。チェックしてみます。

ここはとても暖かいスレッドですね。また、どうぞよろしくお願いします。

0920名前は開発中のものです。2011/11/26(土) 01:14:20.19ID:hoqn6g74
>>913
そりゃ速度を改善する行為なんだから正しいさw
「やるだけ無駄」って言うやつや、実測値を見て黙るやつなんて、元からPG以外の人間なんじゃないの?

0,1%の改善を狙うよりも *先に* 他のところを高速化したほうが良いんじゃないの?とか、
ソースを難読化、定番から外れるような作り方をするだけのメリットがあるの?とかさ。


ただ、特に悪意があるわけじゃないんだけど、
冷静にツッコミを入れたり、事実のみを言ったりすると、敵対してると思われることはあるよね…。
0921名前は開発中のものです。2011/11/26(土) 01:31:44.66ID:jFrD62uW
CPUファンの回転が変わるレベルの負荷の違いが出るなら、効率に激しい違いがあったはずで
ここで「たとえ0.01%だろうと軽くするほうが正しい」と結論が出るのは変だろw
0922名前は開発中のものです。2011/11/26(土) 01:37:10.00ID:hoqn6g74
>>921
それもそうだw
誰もが見逃してたけど、致命的な部分がその0.1%から見つかることもある、くらいか?
0923名前は開発中のものです。2011/11/26(土) 02:27:57.61ID:DhGX758L
関係ないけどメーカー品のノートでCPU負荷が1桁%なのに常時60度近いのはどこかおかしいと思っていいんだろうか
0924名前は開発中のものです。2011/11/26(土) 10:13:58.10ID:OEZEPVDp
埃詰まってんじゃね
二年くらい使うとよくあること
0925名前は開発中のものです。2011/11/26(土) 23:17:39.27ID:QH0bOgq0
ウィンドウサイズ変更したらそれにバックバッファのサイズを合わせるような挙動させたいんだけど

GetWindowCRect( &Rect ) ;
if( Rect.bottom - Rect.top != WinY | Rect.right - Rect.left != WinX )
{
WinX = Rect.right - Rect.left;
WinY = Rect.bottom - Rect.top;
SetGraphMode(WinX,WinY,32);
}

このコードだとウィンドウサイズが次々変化してしまうんだが
何がおかしいのか分からん
0926名前は開発中のものです。2011/11/26(土) 23:44:57.27ID:2yTQNpig
とりあえず、SetGraphModeはせずに
それぞれの数値表示させてみればわかるんじゃないかな?

知らんからわからんが、GetWindowCRectのright,bottomって「右下の座標」を返すんだよな?
だとしたら640*480なら639,479だったりするんじゃないのかな。
0927名前は開発中のものです。2011/11/26(土) 23:59:51.82ID:OK82FRmW
DXライブラリの関数は、「DxLib」という名前空間に入っているじゃないですか?
「namespace DxLib{}」

でも、「DxLib::」と書かなくても使えますよね?
ヘッダのどの部分がそのようにしているのですか?

と、ここまで書いてみて、ヘッダを眺めていたのですが、ファイルの最後の方に書いてある「using namespace DxLib ;」ですよね?
おぉ、納得。
これは初心者がとっつきやすくするためでしょうか?
確かにc言語しか知らなかった私が、「DxLib::DxLib_Init()」とか書かれたら、盛大に挫折したと思います。
他に何か良い点があれば、せっかくなので教えて欲しいです。
0928名前は開発中のものです。2011/11/27(日) 00:47:50.41ID:hpd7z3rf
>>927
ヘッダファイル読むと、結構世界が変わるんだよねー。
向こうでは、ちょっと厳しい言い方になってしまってすまない。

ご想像通り、DXライブラリは基本的にC++用のライブラリだが、
C言語だけの知識だけでも使えるような設計になっている。これは昔から変わっていないはず。

そういった設計思想に従い、最初は名前空間なんかも用意してなかったと思うんだけど、
作者さん自身も、VisualStudioのクラスビューが使い物にならないと感じていたらしい。
たぶん規模が大きくなると追加しにくくなるし、他にやりたい機能もあるだろうし、ということで後回しになってたんだろうね。

しかし、そこは仕事の早いことで有名なDXライブラリ作者さん。
BBSで名前空間の要望が出された直後、テスト版ライブラリにて実装してしまったという。

で、確か2.25cあたりから、名前空間が設定されるようになった。
using〜 がセットで記述されているのは、ライブラリとしての互換性を維持するためというのもある。
0929名前は開発中のものです。2011/11/27(日) 04:02:26.21ID:ebscUfh5
どうしよう

FFTとかタクティクスオウガみたいな2.5Dのゲームのシステムを
DXLibで作るのってとてつもなく難しそうなんだけど・・・
0930名前は開発中のものです。2011/11/27(日) 04:08:43.98ID:OmS8bxuY
そうでもない
だってFFTのアレは奥行きを考慮せずに3Dで描画してるだけだもの
0931名前は開発中のものです。2011/11/27(日) 04:11:28.82ID:ILIUqM7T
素材を用意するのが大変なだけでコーディングは簡単だろうが
ちょっとググればいろんな言語でサンプルコードまで出てくるのにDxLibに責任転嫁するとかもうね
0932名前は開発中のものです。2011/11/27(日) 04:13:24.75ID:OmS8bxuY
いやそこまで言わんでもいいだろw
多分補助ライブラリなしでクォータビューをやるのが大変そうって意味だと思う
0933名前は開発中のものです。2011/11/27(日) 05:01:37.89ID:Dmi7YjZ+
クォータービューってただの2Dじゃん。
2.5Dなんて考えるから難しそうに思えるだけ。
発想の転換ができてない。
ファミコンですらできてた事なんだからできないはずがない、と思って頭をひねればいい。
0934名前は開発中のものです。2011/11/27(日) 05:07:42.13ID:Dmi7YjZ+
ついでに言うと、素材的にもクォータービューは易しい部類。
トップビューだと、上下横の3種の素材が必要だが
クォータービューだと、斜め奥向き、斜め手前向きの2種だけで済む。
(無論8方向方式だと話は別だが)
0935名前は開発中のものです。2011/11/27(日) 06:04:04.91ID:OmS8bxuY
斜め向きのドットって正面や真横と違って絵心ないと打てないけどな
0936名前は開発中のものです。2011/11/27(日) 06:10:34.11ID:Dmi7YjZ+
ああ、それは確かに。
でもパース考えなくていい(というより考えちゃいけない)分
普通の絵よりは難易度下がるよね。
0937名前は開発中のものです。2011/11/27(日) 12:04:59.96ID:ebscUfh5
FFTは3D使ってるの?
そういえばマップが回転できるし

クオタービューだと思ってた

0938名前は開発中のものです。2011/11/27(日) 12:08:36.95ID:rzpnQ2GY
3D技術とか言っても結局は画面上のドット列に全部変換されちゃうんだから、
内部がどうなってるとかあんまり考える必要はないと思うよ
0939名前は開発中のものです。2011/11/27(日) 12:09:49.04ID:bWgxc/Sq
FFTはマップ(地形)だけがポリゴンで、後は全部2Dじゃないの?
0940名前は開発中のものです。2011/11/27(日) 12:43:33.32ID:ebscUfh5
>>939
ああ、複合してるのか
それは俺には無理っぽい

とりあえず、ポリゴンなしで作ってみるとしよう
サンクス
0941名前は開発中のものです。2011/11/27(日) 13:19:06.73ID:uvGu1O5g
まあどうせ半端なサンプル作ってエタるだけだろうから
難しさを心配してもしゃーないだろ
0942名前は開発中のものです。2011/11/27(日) 14:39:58.77ID:riAOuRuW
ラクガキショータイムくらい割り切って作る手もある
0943名前は開発中のものです。2011/11/28(月) 06:37:15.23ID:9qyN3uEA
ProcessMessageの使い方なのですが、
例えば、専用のスレッドを起動して、他のスレッドが通常継続中である限り、秒間60回程度動かす、といった使い方でもよいのですか?
これからメッセージループについて資料を漁ろうと思いますが、いまいち意味がわからないです。
0944名前は開発中のものです。2011/11/28(月) 09:45:53.84ID:9PA9AeWa
今のバージョンでやったことあるけど
描画でおかしい動作が見受けられたため
私は諦めました
0945名前は開発中のものです。2011/11/28(月) 10:46:40.94ID:SQA41oy8
ウィンドウメッセージをディスパッチするために使うだけだから
好きなようにしたらいい、メッセージが無けりゃたんに戻ってくるだけだし。
0946名前は開発中のものです。2011/11/28(月) 10:50:40.44ID:F666hCcs
DXライブラリのProcessMessageは中でいろいろやってそうなイメージなのであんまりそういうふうには使いたくないなあ
中身ソース見てないから知らないけど
0947名前は開発中のものです。2011/11/28(月) 11:04:54.17ID:9PA9AeWa
マルチスレッドで他の関数との連携がおかしいみたいだから本番ではやらない方がいいです
ただし、一度やってみる価値はあります
0948943=9102011/11/28(月) 21:12:59.17ID:9qyN3uEA
>>943です。>>910でもあります。
皆さんレスありがとうございます。
とりあえず試しで、スレッドを追加して、秒間60回程度ProcessMessageしてみましたが、
Windowのタイトルをつかむことすら出来なかったりな状況は変わりませんでした。
画面の更新は出来るし、CPU使用率もほとんど上がってないのですが…。
画面更新してない停止状態のときは、別のウィンドウが上にくると、その色に塗りつぶされちゃいます。わけわかめ。
スレッド自体は10位起動しているが、描画をするしてるのは主に描画用の1スレッドだけなんだがなぁ…。
つд`)
マルチスレッドはだめだ!
いや、そんなばかな。あばばばば。
0949名前は開発中のものです。2011/11/28(月) 21:42:37.86ID:uCsl9daM
メッセージキューは各スレッドごとに作成される
=ウィンドウを作成したスレッドでメッセージ処理をしないとならない

Windowsの基本な
0950943=9102011/11/28(月) 21:51:22.62ID:9qyN3uEA
でけたーよ!
当たり前なのかも知れないですけど、後進の役に立てばとおもい、スレ汚ししていきます。
@DxLib_Init() は、描画を行うスレッドでおこなう。DXライブラリのウィンドウはそのスレのもの。
 (これは、Win32APIに詳しい人なら当たり前にわかることなのかも?)
AProcessMessage() は、ウィンドウの持ち主=描画を行うスレ=DxLib_Init()をしたスレが行う必要がある。
 (他のスレにやらせても、意味ないくさかった。)
B描画を行う内容がなくても、最新の内容orすっからかん で描画(ScreenFlip()とか)しないと画面更新されないのね。
 (そういうものだと言われれば納得だけど、自動で最新を維持してくれるのかと妄想してた。)
C描画スレが管理している裏画面へ別スレッドに書き込みを委譲するのは試していない。
 (けど、気になるからそのうちやるかも。)

サーセンでした。ありがとうございました。
0951943=9102011/11/28(月) 22:05:25.03ID:9qyN3uEA
>>949
どもです。

ということは、もしかして、
DxLib_Init()したスレで何とかしてMessageProcess()できれば、
描画スレとは別でもいいってことですかね。今度試してみよう、今日は疲れた。
0952名前は開発中のものです。2011/11/28(月) 22:19:27.20ID:A9iTiZ3A
>>951
うろ覚えだけど、それって公式の掲示板の過去ログになかった?
「スレッド」で検索して、、、わしも昔マルチスレッド+DX ライブラリのわなにはまった。
0953名前は開発中のものです。2011/11/29(火) 00:31:56.08ID:c68IVOZB
3dゲーム作りたくてUnityのjavascriptのコード勉強してたんだが
なんか見たことないオブジェクトとプロパティが多すぎて、使いこなせるわけがない

DXlibでも3dできるからこっちにしようか迷ってる
0954名前は開発中のものです。2011/11/29(火) 00:45:59.99ID:W1qfXSqu
unityとDXライブラリじゃ大分違うぞ
前者はゲームエンジンだし
0955名前は開発中のものです。2011/11/29(火) 02:00:50.86ID:1OufULBQ
OpenGLでもDirectXでもBlenderでもPhysiXでもODEでもいいから
迷わずインスコして手を動かしてなんか作れ
言語を選ぶのはそれからだ
0956名前は開発中のものです。2011/11/29(火) 10:27:01.33ID:6DNMifKq
3dゲームはモデル自作するのが難易度高すぎる
それさえ出来れば後はなんとかなるんだが
0957名前は開発中のものです。2011/11/29(火) 10:31:22.65ID:E9cixHcQ
フリーでこれといった定番ツールがないのがつらいね
そもそも選択肢がメタセコイアかブレンダーぐらいしかない
有料でも使えそうなのは高いのばかり
0958名前は開発中のものです。2011/11/29(火) 12:08:06.95ID:9GvbSTd1
メタセコにはモーション生成機能がないから外部ツールが必要になるしな
0959名前は開発中のものです。2011/11/29(火) 12:12:42.35ID:c68IVOZB
まじか、俺と逆じゃないか

メタセコで遊び半分で龍とか妖怪とか色々作れて、モデリングとか楽しいわとか思ってたのに
いざこれをUnityで使うとなると、2Dゲームの様には行かなかった

まあ、でもなんとなく分かってきた感じはあるからもう少し頑張ってみるわ
つかUnityはスクリプトでクラス継承しすぎなんだよ、ボケ
0960名前は開発中のものです。2011/11/29(火) 12:16:25.82ID:6xrRYLVJ
メタセコでもプラグインを使ってFBX形式のファイルの編集・入出力はできるそうだよ。
0961名前は開発中のものです。2011/11/29(火) 12:16:45.40ID:AQofl8BG
モデリングとアニメーションぐらいならBlenderで十分すぎるけどな
ちょっとしたゲームエンジンとか物理演算いれると難易度上がるし
DXライブラリで利用しずらいけど
0962名前は開発中のものです。2011/11/29(火) 15:23:27.75ID:Pe8/Zu5M
ウィンドウがアクティブじゃない状態でも画面の更新を行うようにするにはどうすればよいでしょうか?
という質問をしようとして、ヘッダファイルを覗いたところ、SetAlwaysRunFlag()をみつけました。
本当にありがとうございました。

関数の戻り値なんですが、Get系じゃないものは、
正常:0
異常:0じゃない
というくらいでOKですか?
これもヘッダをかなり覚える必要があるのでしょうか?
0963名前は開発中のものです。2011/11/29(火) 16:10:23.93ID:oCb3GT8y
覚える必要はない。調べる癖をつけよう。
大体は公式サイトにあるだろうし。
0964名前は開発中のものです。2011/11/29(火) 17:50:44.24ID:woc2O05s
そういえばDXライブラリって関数名から直接解説ページに飛べるようなものがないよね
あってもよさそうなんだが
0965名前は開発中のものです。2011/11/29(火) 18:02:57.53ID:OYPVNw+c
公式サイトに関数リファレンスがあるじゃないか
0966名前は開発中のものです。2011/11/30(水) 00:49:23.03ID:e5eHbRnz
DXlib使って得たノウハウというかスキルっていうのは、他のゲーム制作ライブラリとか
エンジンとかで活かせるものなのかね?

0967名前は開発中のものです。2011/11/30(水) 00:53:09.43ID:siAw3bpN
なんで活かせないと思うんだ
DXライブラリは描画だけしかしないし、他の環境に移ったときにも身につけた技術を活かせるのをウリにしてる
関数一つで描画できるからライブラリ色が薄い

むしろ他ライブラリで身につけた技術ほど他に活かせない
なぜならガッチガチに独自仕様で固めてるから。
描画するならこのクラスに命令飛ばせーだの角度は256が最大の独自形式で指定してな!だの
0968名前は開発中のものです。2011/11/30(水) 12:09:31.75ID:KoxRdVm8
描画しかしないのはいいところだと思うけどたまに描画以外もして欲しくなる
セーブデータ作りとか
自前だと破損調べるのとか面倒で
0969名前は開発中のものです。2011/11/30(水) 12:39:30.09ID:4B3OKb0l
そんなの一度作ったら使い回せばええやん
0970名前は開発中のものです。2011/11/30(水) 12:52:41.70ID:3oPNQCX+
セーブの破損チェックってなんのためにするの?
0971名前は開発中のものです。2011/11/30(水) 13:27:53.54ID:NhGul0e7
改変の検出なら簡単に実装できるチェックサムとかCRCでチェックでいいし
拡張子変えただけのZIPにして処理を丸投げでも十分すぎる
0972名前は開発中のものです。2011/11/30(水) 15:07:01.63ID:DDM/+rbC
そういうのって必要なんだろうけど
まず「俺のゲームのデータ改変してまで遊んでくれるやついねーだろうな」
という気持ちが先立つわ。
0973名前は開発中のものです。2011/11/30(水) 17:09:20.30ID:rIlC0MtK
チェックサムの実装なんて超簡単だろーが。ちょっとは勉強しようず
0974名前は開発中のものです。2011/11/30(水) 17:12:03.42ID:OwyyYVWt
某有名アクションゲームサークルでさえセーブデータはメモ帳で適当に値弄っただけで改変できるのに
0975名前は開発中のものです。2011/11/30(水) 17:16:03.46ID:DDM/+rbC
別にチェックサムが難しいとは言ってねーべ。
チェックサムと聞くと昔雑誌のマシン語プログラムを
バイナリエディタでせこせこ入れては暴走させて
ちまちまチェックサム確認してた思い出が頭をよぎるだけで。
0976名前は開発中のものです。2011/11/30(水) 17:16:42.06ID:3oPNQCX+
「セーブデータが簡単にいじれちゃうゲームは萎える」っていう人がもしいるなら必要かもしれないけど
そういう人っているのかな?
0977名前は開発中のものです。2011/11/30(水) 18:04:50.04ID:rLIwVb2D
「むしろ弄ってくれ」がスタンスなオイラはiniファイルにセーブ。
まあ、ハイスコアと隠しステージ出現フラグくらいしか無いけどな。

[Game]
HighScore=10000
SecretLevel=1
Debug=0

こんな感じで。
0978名前は開発中のものです。2011/11/30(水) 18:18:16.55ID:shPTgyIh
>>976
自分がプレイ中のゲームで厨房が改造の話を始めたりすると俺は萎えるけど
そもそも起動中プロセスのメモリいじくれば何でもできちゃうからなー
0979名前は開発中のものです。2011/11/30(水) 19:32:48.28ID:1kartXUk
四角をランダムに傾けたいのですが、どんな方法がありますか?
GetRand(360)と<math.h>をランダムに傾けたいのですがインクルードし、三角関数で頂点を求め・・・
というのは思いつきますが、かなり面倒です。

具体的には↓の動画(素人の実況なので、苦手な方はお手数ですがミュートをお願いします)
http://www.nicovideo.jp/watch/sm13480051
の6:17秒の標的をロックオンした時のエフェクトを作りたいと思っています。
0980名前は開発中のものです。2011/11/30(水) 19:47:24.87ID:rLIwVb2D
>>979
面倒なら、画像として用意しておいて DrawRotaGraph しちゃえば?
0981名前は開発中のものです。2011/11/30(水) 20:05:21.03ID:1kartXUk
>>980
あ、なるほど。こういう使い方ができるのですね
ありがとうございます
0982名前は開発中のものです。2011/11/30(水) 20:30:44.91ID:7fBGf6TY
>>979
ランダムと言うよりは、四角形を回転させながら縮小させている気がする。
位置とタイミングがずれてるのが重なってるからそう見えてるだけで。
0983名前は開発中のものです。2011/11/30(水) 20:38:21.81ID:1kartXUk
>>982
あ、ホントですね。こういうののほうがカッコイイのかなぁ
エフェクトは難しいですね
0984名前は開発中のものです。2011/11/30(水) 20:45:46.65ID:QKMdxPPN
>>979
四角のグラフィックを用意して、DrawRotaGraphで回転させれば良い感じになりそう。
0985名前は開発中のものです。2011/11/30(水) 20:53:00.87ID:OwyyYVWt
面倒って、一度関数化すればいいだけじゃ……?
0986名前は開発中のものです。2011/11/30(水) 23:25:41.92ID:F64/yx6U
>>979
正方形なんだからかなり面倒どころか一番単純じゃない?
現在三角関数がわからないから三角関数の理解が面倒臭いという意味かな?
ぶっちゃけ中心点からランダムなx方向、y方向の距離を取ってやって、
符号変えたりx方向とy方向を入れ替えてやったりすりゃ計算すらしないで正方形の頂点4つ作れるじゃん。

後エフェクトがかっこいいかどうかは少し突っ込みどころ。
0987名前は開発中のものです。2011/12/01(木) 14:08:24.04ID:Yep5bMoD
キーがどれか押されていると関数を実行ということをしたいのですが、
コードが冗長になって困っています
現在は↓のような感じです。

/*キー押下状態の配列*/
char Buf[ 256 ] ;
/*F8キーを押下 処理1*/
if( Buf[ KEY_INPUT_F8 ] == 1 )
{
syori1();
}
/*F7キーを押下 処理2*/
if( Buf[ KEY_INPUT_F7 ] == 1 )
{
syori2();
}
/*F6キーを・・・

これらをまとめたいのですが、何かいい方法はありますか?

/*理想*/
if(・・・ Buf[ KEY_INPUT_F7 ] == 1 || Buf[ KEY_INPUT_F8 ] == 1 || Buf[ KEY_INPUT_F9 ] == 1 ・・・ )
{
syorix();
}

・・・ Buf[ KEY_INPUT_F7 ] == 1 || Buf[ KEY_INPUT_F8 ] == 1 || Buf[ KEY_INPUT_F9 ] == 1 ・・・
の部分をまとめたいのです
それとも
syorix(Buf);
と言う風に配列を渡し、関数を毎回実行するものなのでしょうか
0988名前は開発中のものです。2011/12/01(木) 14:15:29.74ID:cOSg0SVs
関数ポインタ使えばなんとかなりそうじゃね?
0989名前は開発中のものです。2011/12/01(木) 14:26:41.93ID:Yep5bMoD
>>988
ありがとうございます
関数ポインタ挑戦してまみす
0990名前は開発中のものです。2011/12/01(木) 15:32:29.24ID:3DnzThw0
理想とする処理だとsyori1とsyori2の優先順位や両方とも実行させるのかが曖昧じゃね?
syorix(Buf)は最初の処理が関数化されただけかもしれないが結局は細かく分けると一番いい気がする
同じ優先度のキーコードと関数ポインタの構造体配列を作りループで回すと
斜めとか同時押し処理は面倒だけど綺麗にはなるのかも
0991名前は開発中のものです。2011/12/01(木) 22:52:49.54ID:8OKTnJs1
別ファイルにおいてあるキー取得関数がうまく反応しません。
どうしたらいいでしょうか?

Key[256];
int keyclip(){
char tkey[256];
GetHitKeyStateAll(tkey);
for(int i=0;i<256;i++){
if(tkey[i]!=0){
Key[i]++;
}else{
Key[i]=0;
}
}
}

int inputkey(char input){
return Key[input];
}

↑別ファイル
呼び出し
if(inputkey(KEY_INPUT_W)%=2){}

エラーで左側のオペランドが左辺値になってませんといわれます

KEY_INPUT_Wの定義がD_DIK_Wとかいう文字列?なんですが、これは一体どうしたら
0992名前は開発中のものです。2011/12/01(木) 22:57:41.66ID:b3NpsyN8
C言語の本を購入し、ファイル分割の項目を読み込む
0993名前は開発中のものです。2011/12/01(木) 22:58:44.68ID:AzCz4IDe
何がしたいのかはよくわかんないけど
エラーメッセージは %= の演算子は変数に対して使うものって言ってる
0994名前は開発中のものです。2011/12/01(木) 23:00:07.89ID:g6g3WWlu
=消せ
0995名前は開発中のものです。2011/12/01(木) 23:57:31.59ID:8OKTnJs1
イコール消したら治りました恥ずかしい

>>992
それはどういう・・・?
09969922011/12/02(金) 00:04:35.84ID:GWHZ+HBj
>>995
ごめん、= 見てなかっただから気にしないで
レス数が950を超えています。1000を超えると書き込みができなくなります。