[過去ログ] DXライブラリ 総合スレッド その10 (996レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): 2011/08/18(木)17:18 ID:vXmrN4yD(1/2) AAS
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
【公式】
外部リンク:homepage2.nifty.com
省19
916: 2011/11/25(金)22:42 ID:b5Tmlmkb(2/2) AAS
>>913
>だから俺は「たとえ0.01%だろうと軽くするほうが正しい」と確信を持って主張する。
その主張が出来るのはコンパイラ毎の最適化の内容を熟知してアセンブラ叩ける奴だけ
組み込みには正義だろうよ
普通の開発ではソースコードがやたら難読化して要らぬバグを引き起こす事がほとんど
917(1): 2011/11/25(金)22:44 ID:8iac4M0d(2/3) AAS
>>910
>ウィンドウの右上の「×」や「Ctrl+Alt+Del」で強制終了した際に、「DxLib_End();」を実行するにはどうすればいいのでしょうか?
「×」を押すなどして強制終了されるときはProcessMessage()が-1を返すので、そこで分岐すればOKだった気がする。
>ウィンドウモードで起動して、ウィンドウを動かせるようにしたいのですが、どうすればいいですか?
DxLib_Init()を呼ぶ前にChangeWindowMode( TRUE );を追加すればOK
ウィンドウサイズはここを読んでみるといいかもしれません。
外部リンク[cgi]:www.play21.jp
省1
918: 917 2011/11/25(金)22:45 ID:8iac4M0d(3/3) AAS
うわああ
リロードすればよかったorz
919: 910 2011/11/26(土)01:00 ID:OK82FRmW(1/2) AAS
皆さんレスありがとうございます。910です。
>1. 終了時に何か特殊な動作をさせたいならそういう関数はあるがDxLib_End()を呼びたいだけなら気にする必要は無い
そうでしたか。呼ばずに終了すると、何かとてつもないことになる、とどこかで見た気がしたのですが、妄想だったようです。
>SetWindowUserCloseEnableFlag
>「×」を押すなどして強制終了されるときはProcessMessage()が-1を返すので、そこで分岐すればOKだった気がする。
おぉぉ!勉強になります。
>3. 説明省いてるだけで普通に使って良し
省5
920: 2011/11/26(土)01:14 ID:hoqn6g74(1/2) AAS
>>913
そりゃ速度を改善する行為なんだから正しいさw
「やるだけ無駄」って言うやつや、実測値を見て黙るやつなんて、元からPG以外の人間なんじゃないの?
0,1%の改善を狙うよりも *先に* 他のところを高速化したほうが良いんじゃないの?とか、
ソースを難読化、定番から外れるような作り方をするだけのメリットがあるの?とかさ。
ただ、特に悪意があるわけじゃないんだけど、
冷静にツッコミを入れたり、事実のみを言ったりすると、敵対してると思われることはあるよね…。
921(1): 2011/11/26(土)01:31 ID:jFrD62uW(1) AAS
CPUファンの回転が変わるレベルの負荷の違いが出るなら、効率に激しい違いがあったはずで
ここで「たとえ0.01%だろうと軽くするほうが正しい」と結論が出るのは変だろw
922: 2011/11/26(土)01:37 ID:hoqn6g74(2/2) AAS
>>921
それもそうだw
誰もが見逃してたけど、致命的な部分がその0.1%から見つかることもある、くらいか?
923: 2011/11/26(土)02:27 ID:DhGX758L(1) AAS
関係ないけどメーカー品のノートでCPU負荷が1桁%なのに常時60度近いのはどこかおかしいと思っていいんだろうか
924: 2011/11/26(土)10:13 ID:OEZEPVDp(1) AAS
埃詰まってんじゃね
二年くらい使うとよくあること
925: 2011/11/26(土)23:17 ID:QH0bOgq0(1) AAS
ウィンドウサイズ変更したらそれにバックバッファのサイズを合わせるような挙動させたいんだけど
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);
省3
926: 2011/11/26(土)23:44 ID:2yTQNpig(1) AAS
とりあえず、SetGraphModeはせずに
それぞれの数値表示させてみればわかるんじゃないかな?
知らんからわからんが、GetWindowCRectのright,bottomって「右下の座標」を返すんだよな?
だとしたら640*480なら639,479だったりするんじゃないのかな。
927(1): 2011/11/26(土)23:59 ID:OK82FRmW(2/2) AAS
DXライブラリの関数は、「DxLib」という名前空間に入っているじゃないですか?
「namespace DxLib{}」
でも、「DxLib::」と書かなくても使えますよね?
ヘッダのどの部分がそのようにしているのですか?
と、ここまで書いてみて、ヘッダを眺めていたのですが、ファイルの最後の方に書いてある「using namespace DxLib ;」ですよね?
おぉ、納得。
これは初心者がとっつきやすくするためでしょうか?
省2
928: 2011/11/27(日)00:47 ID:hpd7z3rf(1) AAS
>>927
ヘッダファイル読むと、結構世界が変わるんだよねー。
向こうでは、ちょっと厳しい言い方になってしまってすまない。
ご想像通り、DXライブラリは基本的にC++用のライブラリだが、
C言語だけの知識だけでも使えるような設計になっている。これは昔から変わっていないはず。
そういった設計思想に従い、最初は名前空間なんかも用意してなかったと思うんだけど、
作者さん自身も、VisualStudioのクラスビューが使い物にならないと感じていたらしい。
省5
929: 2011/11/27(日)04:02 ID:ebscUfh5(1/3) AAS
どうしよう
FFTとかタクティクスオウガみたいな2.5Dのゲームのシステムを
DXLibで作るのってとてつもなく難しそうなんだけど・・・
930: 2011/11/27(日)04:08 ID:OmS8bxuY(1/3) AAS
そうでもない
だってFFTのアレは奥行きを考慮せずに3Dで描画してるだけだもの
931: 2011/11/27(日)04:11 ID:ILIUqM7T(1) AAS
素材を用意するのが大変なだけでコーディングは簡単だろうが
ちょっとググればいろんな言語でサンプルコードまで出てくるのにDxLibに責任転嫁するとかもうね
932: 2011/11/27(日)04:13 ID:OmS8bxuY(2/3) AAS
いやそこまで言わんでもいいだろw
多分補助ライブラリなしでクォータビューをやるのが大変そうって意味だと思う
933: 2011/11/27(日)05:01 ID:Dmi7YjZ+(1/3) AAS
クォータービューってただの2Dじゃん。
2.5Dなんて考えるから難しそうに思えるだけ。
発想の転換ができてない。
ファミコンですらできてた事なんだからできないはずがない、と思って頭をひねればいい。
934: 2011/11/27(日)05:07 ID:Dmi7YjZ+(2/3) AAS
ついでに言うと、素材的にもクォータービューは易しい部類。
トップビューだと、上下横の3種の素材が必要だが
クォータービューだと、斜め奥向き、斜め手前向きの2種だけで済む。
(無論8方向方式だと話は別だが)
935: 2011/11/27(日)06:04 ID:OmS8bxuY(3/3) AAS
斜め向きのドットって正面や真横と違って絵心ないと打てないけどな
936: 2011/11/27(日)06:10 ID:Dmi7YjZ+(3/3) AAS
ああ、それは確かに。
でもパース考えなくていい(というより考えちゃいけない)分
普通の絵よりは難易度下がるよね。
937: 2011/11/27(日)12:04 ID:ebscUfh5(2/3) AAS
FFTは3D使ってるの?
そういえばマップが回転できるし
クオタービューだと思ってた
938: 2011/11/27(日)12:08 ID:rzpnQ2GY(1) AAS
3D技術とか言っても結局は画面上のドット列に全部変換されちゃうんだから、
内部がどうなってるとかあんまり考える必要はないと思うよ
939(1): 2011/11/27(日)12:09 ID:bWgxc/Sq(1) AAS
FFTはマップ(地形)だけがポリゴンで、後は全部2Dじゃないの?
940: 2011/11/27(日)12:43 ID:ebscUfh5(3/3) AAS
>>939
ああ、複合してるのか
それは俺には無理っぽい
とりあえず、ポリゴンなしで作ってみるとしよう
サンクス
941: 2011/11/27(日)13:19 ID:uvGu1O5g(1) AAS
まあどうせ半端なサンプル作ってエタるだけだろうから
難しさを心配してもしゃーないだろ
942: 2011/11/27(日)14:39 ID:riAOuRuW(1) AAS
ラクガキショータイムくらい割り切って作る手もある
943(1): 2011/11/28(月)06:37 ID:9qyN3uEA(1/4) AAS
ProcessMessageの使い方なのですが、
例えば、専用のスレッドを起動して、他のスレッドが通常継続中である限り、秒間60回程度動かす、といった使い方でもよいのですか?
これからメッセージループについて資料を漁ろうと思いますが、いまいち意味がわからないです。
944: 2011/11/28(月)09:45 ID:9PA9AeWa(1/2) AAS
今のバージョンでやったことあるけど
描画でおかしい動作が見受けられたため
私は諦めました
945: 2011/11/28(月)10:46 ID:SQA41oy8(1) AAS
ウィンドウメッセージをディスパッチするために使うだけだから
好きなようにしたらいい、メッセージが無けりゃたんに戻ってくるだけだし。
946: 2011/11/28(月)10:50 ID:F666hCcs(1) AAS
DXライブラリのProcessMessageは中でいろいろやってそうなイメージなのであんまりそういうふうには使いたくないなあ
中身ソース見てないから知らないけど
947: 2011/11/28(月)11:04 ID:9PA9AeWa(2/2) AAS
マルチスレッドで他の関数との連携がおかしいみたいだから本番ではやらない方がいいです
ただし、一度やってみる価値はあります
948: 943=910 2011/11/28(月)21:12 ID:9qyN3uEA(2/4) AAS
>>943です。>>910でもあります。
皆さんレスありがとうございます。
とりあえず試しで、スレッドを追加して、秒間60回程度ProcessMessageしてみましたが、
Windowのタイトルをつかむことすら出来なかったりな状況は変わりませんでした。
画面の更新は出来るし、CPU使用率もほとんど上がってないのですが…。
画面更新してない停止状態のときは、別のウィンドウが上にくると、その色に塗りつぶされちゃいます。わけわかめ。
スレッド自体は10位起動しているが、描画をするしてるのは主に描画用の1スレッドだけなんだがなぁ…。
省3
949(1): 2011/11/28(月)21:42 ID:uCsl9daM(1) AAS
メッセージキューは各スレッドごとに作成される
=ウィンドウを作成したスレッドでメッセージ処理をしないとならない
Windowsの基本な
950: 943=910 2011/11/28(月)21:51 ID:9qyN3uEA(3/4) AAS
でけたーよ!
当たり前なのかも知れないですけど、後進の役に立てばとおもい、スレ汚ししていきます。
@DxLib_Init() は、描画を行うスレッドでおこなう。DXライブラリのウィンドウはそのスレのもの。
(これは、Win32APIに詳しい人なら当たり前にわかることなのかも?)
AProcessMessage() は、ウィンドウの持ち主=描画を行うスレ=DxLib_Init()をしたスレが行う必要がある。
(他のスレにやらせても、意味ないくさかった。)
B描画を行う内容がなくても、最新の内容orすっからかん で描画(ScreenFlip()とか)しないと画面更新されないのね。
省4
951(1): 943=910 2011/11/28(月)22:05 ID:9qyN3uEA(4/4) AAS
>>949
どもです。
ということは、もしかして、
DxLib_Init()したスレで何とかしてMessageProcess()できれば、
描画スレとは別でもいいってことですかね。今度試してみよう、今日は疲れた。
952: 2011/11/28(月)22:19 ID:A9iTiZ3A(1) AAS
>>951
うろ覚えだけど、それって公式の掲示板の過去ログになかった?
「スレッド」で検索して、、、わしも昔マルチスレッド+DX ライブラリのわなにはまった。
953: 2011/11/29(火)00:31 ID:c68IVOZB(1/2) AAS
3dゲーム作りたくてUnityのjavascriptのコード勉強してたんだが
なんか見たことないオブジェクトとプロパティが多すぎて、使いこなせるわけがない
DXlibでも3dできるからこっちにしようか迷ってる
954: 2011/11/29(火)00:45 ID:W1qfXSqu(1) AAS
unityとDXライブラリじゃ大分違うぞ
前者はゲームエンジンだし
955: 2011/11/29(火)02:00 ID:1OufULBQ(1) AAS
OpenGLでもDirectXでもBlenderでもPhysiXでもODEでもいいから
迷わずインスコして手を動かしてなんか作れ
言語を選ぶのはそれからだ
956: 2011/11/29(火)10:27 ID:6DNMifKq(1) AAS
3dゲームはモデル自作するのが難易度高すぎる
それさえ出来れば後はなんとかなるんだが
957: 2011/11/29(火)10:31 ID:E9cixHcQ(1) AAS
フリーでこれといった定番ツールがないのがつらいね
そもそも選択肢がメタセコイアかブレンダーぐらいしかない
有料でも使えそうなのは高いのばかり
958: 2011/11/29(火)12:08 ID:9GvbSTd1(1) AAS
メタセコにはモーション生成機能がないから外部ツールが必要になるしな
959: 2011/11/29(火)12:12 ID:c68IVOZB(2/2) AAS
まじか、俺と逆じゃないか
メタセコで遊び半分で龍とか妖怪とか色々作れて、モデリングとか楽しいわとか思ってたのに
いざこれをUnityで使うとなると、2Dゲームの様には行かなかった
まあ、でもなんとなく分かってきた感じはあるからもう少し頑張ってみるわ
つかUnityはスクリプトでクラス継承しすぎなんだよ、ボケ
960: 2011/11/29(火)12:16 ID:6xrRYLVJ(1) AAS
メタセコでもプラグインを使ってFBX形式のファイルの編集・入出力はできるそうだよ。
961: 2011/11/29(火)12:16 ID:AQofl8BG(1) AAS
モデリングとアニメーションぐらいならBlenderで十分すぎるけどな
ちょっとしたゲームエンジンとか物理演算いれると難易度上がるし
DXライブラリで利用しずらいけど
962: 2011/11/29(火)15:23 ID:Pe8/Zu5M(1) AAS
ウィンドウがアクティブじゃない状態でも画面の更新を行うようにするにはどうすればよいでしょうか?
という質問をしようとして、ヘッダファイルを覗いたところ、SetAlwaysRunFlag()をみつけました。
本当にありがとうございました。
関数の戻り値なんですが、Get系じゃないものは、
正常:0
異常:0じゃない
というくらいでOKですか?
省1
963: 2011/11/29(火)16:10 ID:oCb3GT8y(1) AAS
覚える必要はない。調べる癖をつけよう。
大体は公式サイトにあるだろうし。
964: 2011/11/29(火)17:50 ID:woc2O05s(1) AAS
そういえばDXライブラリって関数名から直接解説ページに飛べるようなものがないよね
あってもよさそうなんだが
965: 2011/11/29(火)18:02 ID:OYPVNw+c(1) AAS
公式サイトに関数リファレンスがあるじゃないか
966: 2011/11/30(水)00:49 ID:e5eHbRnz(1) AAS
DXlib使って得たノウハウというかスキルっていうのは、他のゲーム制作ライブラリとか
エンジンとかで活かせるものなのかね?
967: 2011/11/30(水)00:53 ID:siAw3bpN(1) AAS
なんで活かせないと思うんだ
DXライブラリは描画だけしかしないし、他の環境に移ったときにも身につけた技術を活かせるのをウリにしてる
関数一つで描画できるからライブラリ色が薄い
むしろ他ライブラリで身につけた技術ほど他に活かせない
なぜならガッチガチに独自仕様で固めてるから。
描画するならこのクラスに命令飛ばせーだの角度は256が最大の独自形式で指定してな!だの
968: 2011/11/30(水)12:09 ID:KoxRdVm8(1) AAS
描画しかしないのはいいところだと思うけどたまに描画以外もして欲しくなる
セーブデータ作りとか
自前だと破損調べるのとか面倒で
969: 2011/11/30(水)12:39 ID:4B3OKb0l(1) AAS
そんなの一度作ったら使い回せばええやん
970: 2011/11/30(水)12:52 ID:3oPNQCX+(1/2) AAS
セーブの破損チェックってなんのためにするの?
971: 2011/11/30(水)13:27 ID:NhGul0e7(1) AAS
改変の検出なら簡単に実装できるチェックサムとかCRCでチェックでいいし
拡張子変えただけのZIPにして処理を丸投げでも十分すぎる
972: 2011/11/30(水)15:07 ID:DDM/+rbC(1/2) AAS
そういうのって必要なんだろうけど
まず「俺のゲームのデータ改変してまで遊んでくれるやついねーだろうな」
という気持ちが先立つわ。
973: 2011/11/30(水)17:09 ID:rIlC0MtK(1) AAS
チェックサムの実装なんて超簡単だろーが。ちょっとは勉強しようず
974: 2011/11/30(水)17:12 ID:OwyyYVWt(1/2) AAS
某有名アクションゲームサークルでさえセーブデータはメモ帳で適当に値弄っただけで改変できるのに
975: 2011/11/30(水)17:16 ID:DDM/+rbC(2/2) AAS
別にチェックサムが難しいとは言ってねーべ。
チェックサムと聞くと昔雑誌のマシン語プログラムを
バイナリエディタでせこせこ入れては暴走させて
ちまちまチェックサム確認してた思い出が頭をよぎるだけで。
976(1): 2011/11/30(水)17:16 ID:3oPNQCX+(2/2) AAS
「セーブデータが簡単にいじれちゃうゲームは萎える」っていう人がもしいるなら必要かもしれないけど
そういう人っているのかな?
977: 2011/11/30(水)18:04 ID:rLIwVb2D(1/2) AAS
「むしろ弄ってくれ」がスタンスなオイラはiniファイルにセーブ。
まあ、ハイスコアと隠しステージ出現フラグくらいしか無いけどな。
[Game]
HighScore=10000
SecretLevel=1
Debug=0
こんな感じで。
978: 2011/11/30(水)18:18 ID:shPTgyIh(1) AAS
>>976
自分がプレイ中のゲームで厨房が改造の話を始めたりすると俺は萎えるけど
そもそも起動中プロセスのメモリいじくれば何でもできちゃうからなー
979(4): 2011/11/30(水)19:32 ID:1kartXUk(1/3) AAS
四角をランダムに傾けたいのですが、どんな方法がありますか?
GetRand(360)と<math.h>をランダムに傾けたいのですがインクルードし、三角関数で頂点を求め・・・
というのは思いつきますが、かなり面倒です。
具体的には↓の動画(素人の実況なので、苦手な方はお手数ですがミュートをお願いします)
動画リンク[ニコニコ動画]
の6:17秒の標的をロックオンした時のエフェクトを作りたいと思っています。
980(1): 2011/11/30(水)19:47 ID:rLIwVb2D(2/2) AAS
>>979
面倒なら、画像として用意しておいて DrawRotaGraph しちゃえば?
981: 2011/11/30(水)20:05 ID:1kartXUk(2/3) AAS
>>980
あ、なるほど。こういう使い方ができるのですね
ありがとうございます
982(1): 2011/11/30(水)20:30 ID:7fBGf6TY(1) AAS
>>979
ランダムと言うよりは、四角形を回転させながら縮小させている気がする。
位置とタイミングがずれてるのが重なってるからそう見えてるだけで。
983: 2011/11/30(水)20:38 ID:1kartXUk(3/3) AAS
>>982
あ、ホントですね。こういうののほうがカッコイイのかなぁ
エフェクトは難しいですね
984: 2011/11/30(水)20:45 ID:QKMdxPPN(1) AAS
>>979
四角のグラフィックを用意して、DrawRotaGraphで回転させれば良い感じになりそう。
985: 2011/11/30(水)20:53 ID:OwyyYVWt(2/2) AAS
面倒って、一度関数化すればいいだけじゃ……?
986: 2011/11/30(水)23:25 ID:F64/yx6U(1) AAS
>>979
正方形なんだからかなり面倒どころか一番単純じゃない?
現在三角関数がわからないから三角関数の理解が面倒臭いという意味かな?
ぶっちゃけ中心点からランダムなx方向、y方向の距離を取ってやって、
符号変えたりx方向とy方向を入れ替えてやったりすりゃ計算すらしないで正方形の頂点4つ作れるじゃん。
後エフェクトがかっこいいかどうかは少し突っ込みどころ。
987: 2011/12/01(木)14:08 ID:Yep5bMoD(1/2) AAS
キーがどれか押されていると関数を実行ということをしたいのですが、
コードが冗長になって困っています
現在は↓のような感じです。
/*キー押下状態の配列*/
char Buf[ 256 ] ;
/*F8キーを押下 処理1*/
if( Buf[ KEY_INPUT_F8 ] == 1 )
省20
988(1): 2011/12/01(木)14:15 ID:cOSg0SVs(1) AAS
関数ポインタ使えばなんとかなりそうじゃね?
989: 2011/12/01(木)14:26 ID:Yep5bMoD(2/2) AAS
>>988
ありがとうございます
関数ポインタ挑戦してまみす
990: 2011/12/01(木)15:32 ID:3DnzThw0(1) AAS
理想とする処理だとsyori1とsyori2の優先順位や両方とも実行させるのかが曖昧じゃね?
syorix(Buf)は最初の処理が関数化されただけかもしれないが結局は細かく分けると一番いい気がする
同じ優先度のキーコードと関数ポインタの構造体配列を作りループで回すと
斜めとか同時押し処理は面倒だけど綺麗にはなるのかも
991: 2011/12/01(木)22:52 ID:8OKTnJs1(1/2) AAS
別ファイルにおいてあるキー取得関数がうまく反応しません。
どうしたらいいでしょうか?
Key[256];
int keyclip(){
char tkey[256];
GetHitKeyStateAll(tkey);
for(int i=0;i<256;i++){
省15
992(2): 2011/12/01(木)22:57 ID:b3NpsyN8(1) AAS
C言語の本を購入し、ファイル分割の項目を読み込む
993: 2011/12/01(木)22:58 ID:AzCz4IDe(1) AAS
何がしたいのかはよくわかんないけど
エラーメッセージは %= の演算子は変数に対して使うものって言ってる
994: 2011/12/01(木)23:00 ID:g6g3WWlu(1) AAS
=消せ
995(1): 2011/12/01(木)23:57 ID:8OKTnJs1(2/2) AAS
イコール消したら治りました恥ずかしい
>>992
それはどういう・・・?
996: 992 2011/12/02(金)00:04 ID:GWHZ+HBj(1) AAS
>>995
ごめん、= 見てなかっただから気にしないで
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.126s*