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

このエントリーをはてなブックマークに追加
947名前は開発中のものです。:2011/11/28(月) 11:04:54.17 ID:9PA9AeWa
マルチスレッドで他の関数との連携がおかしいみたいだから本番ではやらない方がいいです
ただし、一度やってみる価値はあります
948943=910:2011/11/28(月) 21:12:59.17 ID:9qyN3uEA
>>943です。>>910でもあります。
皆さんレスありがとうございます。
とりあえず試しで、スレッドを追加して、秒間60回程度ProcessMessageしてみましたが、
Windowのタイトルをつかむことすら出来なかったりな状況は変わりませんでした。
画面の更新は出来るし、CPU使用率もほとんど上がってないのですが…。
画面更新してない停止状態のときは、別のウィンドウが上にくると、その色に塗りつぶされちゃいます。わけわかめ。
スレッド自体は10位起動しているが、描画をするしてるのは主に描画用の1スレッドだけなんだがなぁ…。
つд`)
マルチスレッドはだめだ!
いや、そんなばかな。あばばばば。
949名前は開発中のものです。:2011/11/28(月) 21:42:37.86 ID:uCsl9daM
メッセージキューは各スレッドごとに作成される
=ウィンドウを作成したスレッドでメッセージ処理をしないとならない

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

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

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

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

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

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

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

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

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

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

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

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

後エフェクトがかっこいいかどうかは少し突っ込みどころ。
987名前は開発中のものです。:2011/12/01(木) 14:08:24.04 ID: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);
と言う風に配列を渡し、関数を毎回実行するものなのでしょうか
988名前は開発中のものです。:2011/12/01(木) 14:15:29.74 ID:cOSg0SVs
関数ポインタ使えばなんとかなりそうじゃね?
989名前は開発中のものです。:2011/12/01(木) 14:26:41.93 ID:Yep5bMoD
>>988
ありがとうございます
関数ポインタ挑戦してまみす
990名前は開発中のものです。:2011/12/01(木) 15:32:29.24 ID:3DnzThw0
理想とする処理だとsyori1とsyori2の優先順位や両方とも実行させるのかが曖昧じゃね?
syorix(Buf)は最初の処理が関数化されただけかもしれないが結局は細かく分けると一番いい気がする
同じ優先度のキーコードと関数ポインタの構造体配列を作りループで回すと
斜めとか同時押し処理は面倒だけど綺麗にはなるのかも
991名前は開発中のものです。:2011/12/01(木) 22:52:49.54 ID: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とかいう文字列?なんですが、これは一体どうしたら
992名前は開発中のものです。:2011/12/01(木) 22:57:41.66 ID:b3NpsyN8
C言語の本を購入し、ファイル分割の項目を読み込む
993名前は開発中のものです。:2011/12/01(木) 22:58:44.68 ID:AzCz4IDe
何がしたいのかはよくわかんないけど
エラーメッセージは %= の演算子は変数に対して使うものって言ってる
994名前は開発中のものです。:2011/12/01(木) 23:00:07.89 ID:g6g3WWlu
=消せ
995名前は開発中のものです。:2011/12/01(木) 23:57:31.59 ID:8OKTnJs1
イコール消したら治りました恥ずかしい

>>992
それはどういう・・・?
996992
>>995
ごめん、= 見てなかっただから気にしないで