>>1 乙
すまないけどもう一度
モデルの手足とかのフレーム位置ってどうやって設定するんですか?
MV1SetMatrixで設定しても足元の位置を取得してるみたいです
モデルが悪いのかモーションが悪いのか…
デフォルトで付いてるモデルを見るとちゃんと手とかのフレームごとに座標がセットされてるなぁ
前スレの984だけど
>>985 1を避けるのが無理となったら毎フレームVertexやIndexに代入して渡す以上、
それはただのDrawPolygonIndexed3Dと変わらないしボトルネックになってる代入処理も負荷軽減すら出来ない
1が出来ないなら実装は諦めるしか無いんだよね
せめて前フレームまでに生成されたパーティクルは触らず、今フレームで生成されたパーティクルのデータだけを追加することでも出来れば大きな力になるんだけど
2は別のセマンティクスを無理やり利用するとしても
管理人さん曰くfloat3がpos、norm、tan、binorm、float4がsposらしいからとても理想通りには足りない
これが実現できないなら単純な動きの数稼ぎのパーティクルを個別に新しく作るって方法もあるけど出来れば理想通り実装できるように試行錯誤したい
頂点数を6つから描画に使わない頂点を増やして、シェーダ中で別の頂点から参照するみたいなことってできないよね
以前に2年ほど市販のゲームのバイナリをひたすら弄ってた事があるんだけど
そのゲームのパーティクルがこれぐらいは拡張性に富んでたんだよね
ちゃんと内部メモリ書き換えたら思い通りにエフェクトも書き換えれたし先に挙げたパラのどれを書き換えてもフリーズとかは起こらなかった
当時はハードが非力で思い通りの事はできなかったけど今時のPCならやりたい放題だから思う存分パーティクル使ったエフェクトを作りたいんだ
6 :
名前は開発中のものです。 :2013/07/03(水) 15:30:44.47 ID:UI8e9E/d
久しぶりに新しいバージョン出てたんだな
なんか過疎過ぎない?
>>3 亀だけど手足とかのフレーム位置を取得したいのか
それとも回転とか並進移動してフレームの位置を設定したいのか
どっちにしてもMV1SetMatrixは関係なくね?
前者ならMV1GetFramePositionとか後者ならアニメーション関数かMV1SetFrameUserLocalMatrixあたりが出てきそうなもんだけど
とか言って初心者が話題作りに口出ししてみる
BGM流す処理で悩んでいるんだけど 現状専用の関数に(bgmname,loop)でtitleからパス渡して都度読み込ませてるんだけど 起動時なりにあらかじめ全部読み込ませて番号で指定したほうがスマートなのかな? 使用数は20曲程度を想定してるけど、メモリの占有とか考えるとどうなのかなーと 使用頻度の高いものだけ読み込ませるとか色々考えたけどなかなかどうするのが一番いいのか思いつかない
>>8 作っている物の設計次第じゃね
つまり、ロードして再生でいいものと、オンメモリで即時切り替えしたい物って用途によってあるのがわかってると思うので、
この曲はこっち、これはこっちと分けて考える感じ
割りとノープランで作ってるときは全部同じ方法で統一したくなるけど、
実際に作るものが見えてる状態で設計するなら、自然と一次切り分けとしてそうなるかと
>>9 やっぱりそうかぁ
メモリどのくらい食うかとか調べてから決めることにするわさんくす
でもストリーミングでディスクアクセスだけは絶対やりたくないな・・・ 圧縮済み曲データなら数MBですむし最低そこだけでもメモリには置いておきたい
俺は「NOW LOADING....」をやりたくなかったからストリーミングやったなぁ。 まぁそれでも一瞬止まるんだけど。
DXライブラリが原因で作ったゲームがPCによって起動するしないということってあるんですか? 現在作っているゲームを、 Windows 7 Home Premium 64bit *3台 Windows 7 Home Premium 32bit *2台 Windows 7 Home Professional 32bit *1台 Windows 8 64bit *1台 で動作確認をしたところ、Windows 7 Home Premium 64bit のうち1台だけがexe起動後のリソースのロード中に応答なしとなり、 タスクマネージャから強制終了させる必要が出てしまいます。windows updateも全て実行してあります。 同じプログラム環境(つまり同じDXライブラリのバージョン)でテストで作った同じ画像を読み込み、動かすプログラムは正常に動作します。 原因が何にあるのかがわからず、DXライブラリの可能性もあるので質問させていただきます。 どなたか心当たりがありましたら返答お願いします。
ログうpって貼るくらいはしようよ エスパーじゃないんだからさ
Windows Updateやってても DirectXが最新だとは限らない アプリ起動時にいきなりダメなんだったら DirectXとかグラボのドライバでも疑え
まず真っ先にそこだよな
質問させてください。フレーム制御についてなんですが、 五枚の画像をじゅんぐりに表示する(アニメさせる)のに自分はこう考えてます。 if(this->count % 5 == 0){画像1の描画処理} if(this->count % 5 == 1){画像2の描画処理} if(this->count % 5 == 2){画像3の描画処理} if(this->count % 5 == 3){画像4の描画処理} if(this->count % 5 == 4){画像5の描画処理} しかし、これではものすごいスピードのアニメになってしまいますよね? 一枚一枚の表示時間を長くしたいわけです。 で、自分はそうしたい場合、countを細分化してわざわざ同じ画像を振り分けています 例↓ if(this->count % 10 == 0){画像1の描画処理} if(this->count % 10 == 1){画像1の描画処理} if(this->count % 10 == 3){画像2の描画処理} if(this->count % 10 == 4){画像2の描画処理} …以下同じ要領で書き連ねる 賢い方ならわかると思いますが非常に非効率ですよね、、 どうやればスマートな命令になりますか? 知恵をお貸しください。
images[(this->count/2)%10-1].draw();
画像[i]の描画処理; if ( frame_count %= 2 ) { //0:そのまま表示 1:画像更新 2:そのまま表示… i++; i %= 画像枚数; }
>>18 え、すごくシンプルですね、、、ちょっと意味がわかりません
countを2で割ったものを10で割った余りから1を引く、ということですか?
その場合、表示時間は"/2"のところで考えるんですか?
>>19 すみません、ちょっとわかりません
フレームカウントを2で割った余りが0になるたびに、
iがインクリメントされて、、どういうことでしょうか?
画像枚数が5枚として、i%=5でどういう意味になるのでしょうか
>>20 え、まさかそういう返しが来るとは思ってなかったんだけど…
配列って知ってる?
>>21 もちろん知ってます
配列の添え字を動かしてるんですよね?
ただ、そこの値の変化が見えません
多分算数が弱いんです、(count/2)%10-1←これは値が 0、1,2,3、、、と変化するんですよね? −1は0からの添え字に合わすために引いてる。 そういうのはわかるんですよ。 でも、それではものすごいスピードなのは自分が書いたものと 変わりがないような気がするんで、、、、 値の変化をもう少し解説して頂けませんか?
>>21 あ、人を違えました、すみません。
(でも言いたいことは同じなんですけど、、)
値の動きがわかりません。
if ( frame_count %= 2 ) {
i++;
i %= 画像枚数;
}
if文の中は、「countを2で割って、余りが2になる場合」でよろしいですよね?
で、そのたびに、iをインクリメントする。
そのiを画像枚数で割って、その余りをiに加える??
意図、値の変化、が見えません。。。
単純に均等割りで頭に戻るループなら (count / コマウェイト) % アニメ枚数 だけでいいんじゃね
( this->count / a ) % 5 aは1以上の整数 でいいんじゃないのかな。配列はお好きに。
ああ25さんがすでに言ってた。
もうちょっと真面目にやるとステップの進行に使う係数(/2の部分)を、実際のフレーム当たりの実経過時間から計算するよな
それ最近流行ってるってだけで別に「真面目に」とかつけなくていいからね
最近流行ってるって何が
固定か可変かの違いでしか無くない?
ゲーム自体が可変(である事が普通)だから〜って事だろうか。
>>17 では、こういうのを提案します。
-------------------------------
int i = 0;
int a = 0;
// Img.pngを6分割で読み込む
LoadDivGraph("img\\Img.png", 6 , 2 , 3 , 100 , 100 , Img);
while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){
// 画像表示
DrawGraph( 100 , 120 , Img[a] , TRUE );
// アニメーションプログラム
if (i<60){;}
else if(i<62){a=1;}
else if(i<64){a=2;}
else if(i<66){a=3;}
else if(i<68){a=4;}
else if(i<70){a=5;}
else if(i==70){i=0 , a=0;}
i++;
}
この案は、画像1〜5の内容を1つのPNG形式のファイルに収めて それを配列で表示させることが大前提なのですが、 // アニメーションプログラム if (i<60){;} else if(i<62){a=1;} else if(i<64){a=2;} else if(i<66){a=3;} else if(i<68){a=4;} else if(i<70){a=5;} else if(i==70){i=0 , a=0;} アニメーションさせる速度は、この部分で調整しています。 i変数が60以下の時は何もしない 最初は配列の0を指定し、1つ目の配列には何も描かないでおく そしてi変数が60〜61(2フレーム)までの間 a変数に1を代入し続け2フレーム間、2つ目の配列画像を表示し続ける つまり、このプログラムは2フレーム間隔でアニメーションし続けることになります。
// アニメーションプログラム if (i<60){;} else if(i<70){a=1;} else if(i<80){a=2;} else if(i<90){a=3;} else if(i<100){a=4;} else if(i<110){a=5;} else if(i==110){i=0 , a=0;} つまり、例えば、このようにすれば10フレーム間隔のアニメーションになります アニメーション速度の調節は どこで制御しているのか、大体、想像つくでしょうか? // アニメーションプログラム if (i<60){;} else if(i<160){a=1;} else if(i<260){a=2;} else if(i<360){a=3;} else if(i<460){a=4;} else if(i<560){a=5;} else if(i==560){i=0 , a=0;} こうすれば100フレーム間隔の遅いアニメーションになります
ああ、Img変数の宣言をしておくことをお忘れなく ---------------------------- int Img; // Img変数の宣言 int i = 0; int a = 0; // Img.pngを6分割で読み込む LoadDivGraph("img\\Img.png", 6 , 2 , 3 , 100 , 100 , Img); while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ // 画像表示 DrawGraph( 100 , 120 , Img[a] , TRUE ); // アニメーションプログラム if (i<60){;} else if(i<62){a=1;} else if(i<64){a=2;} else if(i<66){a=3;} else if(i<68){a=4;} else if(i<70){a=5;} else if(i==70){i=0 , a=0;} i++; }
1回分の画像表示ごとにScreenFlipの前後にカウント挟めばいいだけでは? カウント5になったら表示させるようにすれば 単純に5倍の表示時間増大になるはず 初期値にi=0;してから if(i==0){ //iは適当 表示ルーチン } ScreenFlip(); i++; if(i>5)i=0;
まーたJet++じゃないだろうな
かずきくんには触れないでおいて
>>37 これがシンプルでいいかなとは思ったけど
これって1種類の画像表示ごとに表画面に反映させるの?
それじゃ裏画面に描画してる意味合いが薄れないだろうか
的外れならスマン
if( Time % IntervalTime == IntervalTime - 1 ){ ImageFlame++; if( ImageFlame >= MAX_FLAME ){ ImageFlame = 0; } }
ミスって途中で書き込みしてしまったすまん。 if( Time % IntervalTime == IntervalTime - 1 ){ ImageFlame++; if( ImageFlame >= MAX_FLAME ){ ImageFlame = 0; } } Image[ImageFlame].draw(); Time++;
>>17 で1枚ごとの表示時間を長くしたいってあったから
37のように書いてみただけなので、
それより効率の(もしくは目的に合った)いいソースがあれば
それを使ってもらえればいいです
(ScreenFlipならマイクロ秒じゃなく約60分の1秒単位での表示処理なので
見た目的にも効果があると判断しました)
ちょっと複雑なパターンにするなら ・画像ハンドル ・画像を表示する時間 ・次のパターンへのポインタ(NULLなら停止なり消去なり) をクラス/構造体に突っ込んでおいて、 条件ごとに起点となるパターンを呼び出す……とかどうかな? まあ、最終的には外部ファイル最強なんだろうけども。
スクリプト言語最強!!
スクリプト言語を動かすためのインターフェースなり土台なり作ろうとすれば これと同じような(下手するともっと複雑な)ものを作る必要がある件
相対パスから絶対パス取得したいんですけどどなたか分かる方いませんか?
>>47 OSから渡される起動時引数からカレントディレクトリ取得してそこから相対とか、
そういう基礎的な話か
>>48 すみません、strcatの存在すっかり忘れてました…
ありがとうございます
おい…誰だよノベルゲーは簡単とか言ったやつは… 商用エロゲ作ってるが、3ヶ月毎日フルタイムでコーディングしても、まだ終わりが見えないんだが…
誰が言ったそんなんw
DXライブラリでノベルゲエンジン作ってるのか。奇特な事でw フリーの使えばいいのに。
3ヶ月フルタイムで終わりが見えないとかどう考えても頭悪いだけだろ そもそもNScripterとか吉里吉里使わない時点で頭悪い
奇特なことやってるのは分かってるが、いくつもミニゲーム組み込んだりしてると DXライブラリ使って作ったほうがやりやすいんだよ… 吉里吉里のライブラリ流用してるし、このやり方が悪いとは思わんのだがな…
その書き込みこそ頭悪そう。 商業ならフリー使わない理由はいろいろあるだろう。
54じゃなくて53宛ね
作ったことがない奴はノベルゲーと馬鹿にするが 0から自分で作ると結構難しいぞ ミニゲームもあるならなおさらキリキリとか使えないし
単純に画像表示してテキスト表示して、 選択肢によって場面移動、それを繰り返す、ってだけなら 飯食いながらサンプルとして書ける程度の内容だけど、 もしも難しいと言ってる奴が、暗黙の内に独自の内蔵スクリプトとそのインタプリタ含めた汎用ゲームエンジンみたいな物前提で話してたら、 確かに大変かも試練
・ノベルゲー作るの大変すぎ ・ノベルゲー+その他ゲーム集作るの大変すぎ この二つじゃまったく話が違ってくるだろ
60 :
57 :2013/07/13(土) 21:19:54.00 ID:TWfYB7Vz
少なくとも (1) 汎用パーサーを利用して俺スクリプトの解析 (2) アニメーション システム (3) シーン(レベル)の保存とロード (4) 統一されたキー入力を伝達する仕組み (5) 装飾をつけたテキストの表示 (6) データの暗号化と永続的なファイルへの保存 (7) デバッグの為の変数表示機能 (8) コリジョンの検出および距離の計算 (9) 物理エンジンとの連携 いくらでもあるわ。経験者でないなら三ヶ月でできる量ではない
だれもそこは否定してないのになんでそんなに必死なの? 53 もスクリプトツール使えって言ってるだけで 否定してるわけじゃないでしょうに。
作った事も無い人間が知ったかぶったあげくに他人を頭悪い呼ばわりしてればそりゃバカにされるよ。
馬鹿にしてるヤツも居ないようだが。
文字列だけのローグライクもなかなか難しいんだぜ
>>60 ノベルゲーを作る場合の話じゃなくなってる気がするが
ホントお前らって下を見つけて叩く事しかできないんだな 技術的な事言ってる訳じゃないし、がんばれとかチラシの裏にでも書いてろで終わる話じゃん
プログラムやってるやつってすぐ「頭悪い」って言ってくる印象あるけどなw
会話上でも仕掛け上でも、そこに問題があった時整理や切り分けして話を絞っていく、 みたいな頭の働かせ方するのが慣れたプログラマの本能だったりするけど、 その辺で意志疎通出来にくい相手とか見ると、思わず頭悪いなぁとか言っちゃう人いるかも試練
パソコンを使いこなすことに優越感を感じやすいタイプの人間が IT業界にやってくるわけだからな 使いこなせない奴を見て嬉しくなるタイプの人間しかいないよ
いいから吉里吉里使えよ
71 :
名前は開発中のものです。 :2013/07/14(日) 14:45:20.38 ID:+UK5RTjg
説明しにくいんですが、継承クラス作るときの書き方みたいに クラスの宣言内のコンストラクタに クラス名(int,int):クラス内のメンバ変数名(引数),クラス内のメンバ変数名(引数) みたいに書いてるのをたまに見かけます。 トレースしたいんだけど、コンストラクタに:をつけて変数ならべるのは どういう意味ですか?
メンバ変数の初期化 ああいう記法なのはまったく理解できんけどな
73 :
名前は開発中のものです。 :2013/07/14(日) 15:16:53.31 ID:+UK5RTjg
、、初期化ですか? クラスのコンストラクタの定義の中で済ませば良いのに、、 コンストラクタの宣言の横で初期化してるってことですか? 処理はまったく同じですよね? 本人の好みの問題なだけですかね?
const ついてるメンバ変数だとその記法でしか初期化できなかったような あと基底クラスの引数付コンストラクタ呼ぶときとか
参照変数(&)もそうかな
デフォルトコンストラクタ持ってないクラスがメンバな時とか初期化構文でないと駄目な場合は割とある あとふつうの変数でも代入と初期化は本来別物だから 処理が全く同じになるかというとコンパイラ次第なんじゃないか
77 :
名前は開発中のものです。 :2013/07/14(日) 16:45:35.38 ID:+UK5RTjg
そのコンストラクタの横に羅列したメンバ変数にはconstはついて無いです。 気になるのは、そこに羅列したメンバ変数には メンバ関数のごとく引数がついてるってこと。 まあその引数の値で初期化されると想像出来ますが、、 なぜ、わざわざそんなやり方を?? 単刀直入に言いますと コンストラクタ(int x,int y):変数A(y),変数B(x){} と コンストラクタ(int x,int y){変数A=y;変数B=x;} の違いってなんですか? ということです。 ちなみに、前者のソースみたく書いてるは プロフェッショナルな方なんですよ。
それは作者の好みじゃね・・・
初期化リストだっけ? 俺は何気なくだけど前者使ってるわ 大体0とかで初期化するだけだけど
80 :
名前は開発中のものです。 :2013/07/14(日) 17:04:38.47 ID:+UK5RTjg
やっぱただの好み、というか作者の癖、なんですかね べつにそれならそれでいいんです。 自分には聞いたことも見たことも無い書き方 だったんで戸惑いました。
81 :
名前は開発中のものです。 :2013/07/14(日) 17:05:53.41 ID:+UK5RTjg
レス下さった皆さま ありがとうございました。
ちょっとその変な書き方のほうが高速とかいう噂を聞いたことがあるな 本当かはしらない
>>77 前者は初期化で後者は代入
わざわざそんなやり方、というよりも前者の方がC++本来のクラス変数の初期化の文法
後者でも単純な変数なら同じ結果が得られるだけ
>>77 前者は初期化だけど、後者はどう見てもコピーで別物に見えるけど
参照をメンバに持つ場合とか 初期化リストでないと代入できないんじゃなかったっけ
前者は初期化 Var x=n;と同じ 後者は代入 Var x; x=n; tと同じ Varが参照だったりconstだったり引数なしコンストラクタを持っていない場合は前者を使わざる負えない あと、例えばstd::stringなんかだと引数なしコンストラクタの場合適当に15ぐらいの領域を勝手に確保するって噂を聞いたことがあるから 初期化のほうが適当じゃない分いい
”使わざるを得ない”な。
JavaとかC#しか基本的に知らず、C++をぼやっとしか知らない人だと混同するよな 初期化リストにしろ、代入(コピー)にしろ、それらとコピーコンストラクタやオペレータオーバロードの関係とか
マリオみたいなゲーム作ってるんですが ファイアーボールみたいな動きする計算が出来ません。 参考になるような解説されたサイトやブログもまったくないです。 やはり、物理演算も入ってるでしょうし その辺のプログラマには再現出来ない難しい軌道なのでしょうか? それとも簡単すぎて、誰も解説をしていない状態なのでしょうか?
慣性と重力と地面とのバウンドだけでファイアーボールになるよ
>>90 その辺のプログラマって括りがおかしいが、
まず先にテストで、画面の任意の位置をクリックしたら玉が現れて、下に向かって落ちていき、
一番下についたら跳ね返る、その移動量が段々減衰していくってだけのテストプログラム作ってみ
数学的にも大した計算いらない。
てかこれ、DXライブラリって言うより単純なアルゴリズムの話。
うちの新卒一年目でも昼休みにさらっと書くレベルの話。
数学っていうか。算数でできるレベル
プログラミングには直接役に立たないけど高校物理やり直したほうがいいと思う
>>92 いや、実はまさにそれくらいを再現するプログラムは見よう見まねで作ったんですが
たったそれだけの動きを再現するのにえらい長いプログラムになってまして、、
上手い人はもっと短いのだろうと。参考にしたいな、と。なのにどこにも無い、と。
そういう流れす。
さらっと書くレベルの話、とは言えませんね、これは。
、、、たとえば、あなたなら何行使いますか?(常識的なインデントで)
やった処理と行数を要約して伝えようよ 曖昧にする意味がわからん
>>92 がわかりやすく書いてるのにソースがないとわからないって奴は全部コピペで作るつもりか
なんとかしてソース引き出そうとしてるし浅ましい
慣性に1〜2行 重力に1行 当たり判定に5〜7行くらい?がんばれよ
10行とか嘘こけよ
>>95 > さらっと書くレベルの話、とは言えませんね、これは。
なんでわからなくて質問してるお前の基準で「違いますね、これは」とか言えちゃうのよ。
いやさらっと書くレベルの話だよ
大学生がやってるのか小学生がやってるのかで使うべき言葉も変わってくるよね 年齢書いとくと知ってるであろう知識で教えられるとかあるかもしれんな DXライブラリは利用者の幅が広いからなあ
ぶっちゃけ、元祖スーパーマリオは足し算と引き算ぐらいしか使ってないし、わりとどうでもいいし、それで誰も文句言ったりしない。 たぶんね!
ファミコンで物理演算とか、ないだろ……。 いや無理とは言わんが、スーマリ程度のゲームでそんなのやらんだろ。
位置を表すのに速度と加速度の考え方が用いられていて あとはめり込み判定ができてれば、2Dゲームとしては物理シミュと呼べる プリミティブな要件を満たすと思うけど? というか「物理演算」という言葉のスコープが大きすぎ。2D力学か運動表現と言おう
x += vx; // 等加速 y += vy; vy += gravity; // 重力加速 物理っちゃ物理
・算数がわからない ・ググれない ・質問してるのに上から目線 例の小学6年生だろうからもうスルーしとけ
35歳の小6か!!
>>102 え、それほんとですか?
てきとーに言ってるのなら
明らかに当時のプログラマへの侮辱ですよ?
ファイヤーボールは明らかに地面で跳ねながら飛んでいきます。
いわば、トランポリン状態です。
あれを物理演算使わないであそこまで違和感なしに出来ますか?
出来もしないのに言うな
>>105 そういうことですよね?
やっぱそれらを使ってますよね?
あのファイヤーボールは
105は、102の言うところの加減算のみで表現した例に見えるのだが…
ハルクのような超無敵主人公のアクション3Dゲームを開発するとします 主人公ハルクが高いところから飛び降りた時に 高さに応じて落下速度を上げる物体落下のプログラミングを DXライブラリを使って構築する場合 何を重点に式を組めばいいでしょうか? 重力計算の問題です 1.落下時間に応じて速度を増していく 2.地面までの距離(y軸)に応じて速度を増していく 3.物体の重さに応じて速度を増す あと、落下速度に応じて地面に着地した時に 地面がひび割れたり揺らしたりもしてみたい
オイラー法
古いマリオのゲームなんてスーパーマリオランドしか知らんが あの場合は演算も糞も無く等速でx方向に進んで上下に振動するだけだったけどなあ そんなもんでも良かったら物理の知識も要らないんじゃないの
言っておくがお前らが思ってるよりスーパーマリオを作るのは難しいぞw
実際のマリオのプログラムでは演算なんかしてなくて テーブルで変化量を持ってるだけだと思う 最近の3DSのマリオとかだったらdoubleの計算とか三角関数やベクトル辺りもガンガン使ってるだろうけど
115 :
110 :2013/07/16(火) 20:07:00.71 ID:UEWWNyYt
質問してから気付いたのですが 重力計算には空気抵抗とかも必要だと思う y軸に面する面積が広ければ広いほど落下速度が減速する 面積が狭いと落下速度が加速 スカイダイビングをイメージすれば 両手両足を広げれば落下速度が減速 両手両足を閉じれば落下速度が加速 さらに体を斜めに傾けると、さらに落下速度が加速する
>>92 それは正しい物理計算とは言わない
玉が地面に面する体積と重力と風力と重さで
落下速度や上昇速度や上昇距離を計算していないと思う
落下物を別の大きさの玉に変えたり
別の形状の物体に変えても同じバウンドの実行結果になってしまう
そんなものなら数学的な計算を使わないのは当然
あら、減衰とかなかったか なら凄く単純な話じゃないか?入射角とか求める必要すらないんじゃないの? なんか常に一定っぽいんだが
テーブルでやってるから計算で再現しようとすると難しいんだと思うな
ああ・・・これはw一応貼っとく ∧_∧ ガラガラ( ^^ ) <これからも僕を応援して下さいね(^^ =〔~∪ ̄ ̄〕 = □――◇ Kazuki
スーパーマリオもどきはJAVAの実装がソース付きでなかったけ?
だらだらと憶測で物言ってるやつらは無知すぎ
正解は
>>114 これゲーム開発者の間では常識中の常識
もうこの話はもう終わりね
二度と小学6年生に触れるなよ
>>117 8bitCPUは掛け算や割り算なんかないよ。
分かったらGNESでマリオを1フレームずつ動作させて座標の変化量を調べるんだ
>>121 昔、マリオを逆アセンブルしてC++で実装した奴を公開していた奴はいたな。
ファイアーボールじゃないけど、スーマリのジャンプで難しいのは 空中で左右に動けることとジャンプボタン押す長さでジャンプの高さが変わる事だと思う。 まぁ、それでもちょっと難しい程度だけど。
難しいのは斜面
>ジャンプボタン押す長さでジャンプの高さが変わる 言われてみたらこれって何気にすごいんだなと思った ジャンプした瞬間の初速(最低の高さ)があるとして ジャンプしてから数十フレームくらいの間だけ、上への加速度をプラスするって感じなのかな? 30フレくらいかと思ったけど、びみょ〜に落下までの速度も制御できる気がするから60フレくらい?
上への加速度をプラスする → 重力加速度を弱める って意味ね
>>129 言われたらそっちのほうがすごかったわw
斜面はFCマリオ3からだったかな?
しっかり歩行速度にも影響あって、滑ったりできるのは確かにすごい
ちなみに、俺はスーパーじゃなくて初代マリオブラザーズの ジャンプして上の床を叩いたとき、床がぐにゃりって曲がるのも凄いと思ってるw あれマップチップだよな……? いや一時的にスプライトに変えてるって手法もありか……?
>>131 うわ、そういやそれもすげぇな・・・
確かあれは、バグった状態(FC独特の半刺し状態とか)では
まったく別の絵柄が見えるから、特定のチップを表示してるのかな
というかあのバグった状態のままで動くFCそのもののほうがすごいかw
マリオで一番難しいのはジャンプしてブロックに1/3ぐらい当たったときの くぃっという動作だと思う
ほれ、これで実行してみろって簡単に作った スーパーマリオのジャンプとファイヤボールを打つのを実装した オブジェクトのソース貼り付ける天才はいないのか?
>>134 Haskellで書いたソースでも良ければ。
そのままじゃ使えないと思うけど。
今時Haskellは脅しにならんなw J言語とでも言っておけ
>>131 BGとスプライトの併用じゃなかったかなあ、あれ
>>126 ソース見てるんだが、
これ、ファイヤーボールの弾の軌道書いてんのどこ?
玉のソースでしょ
まあ、そんなの探してくれる親切な人はいないか。 じゃあ質問変えるね。 DXライブラリの描画可能領域セットメソッドあるじゃない? SetDrawArea(); これって、領域外にある画像は描画しないってものだけど、 それはまさに「描画処理が無効化されている」、 つまり領域外に出た画像の描画分のメモリは食わなくなる、ということで良いのかな? だとしたら、これはそうとう便利なメソッドだと思うんだけど。
しらんけど。 描画しないだけで、メモリには書いてんじゃねーの?
書き忘れた CBullet::Adjust
>>142 じゃあ、
見えないだけで描画処理はされてるってこと?
じゃあ見えなくても沢山表示命令を出してたら重くなるんだ?
、、、ってか、知らんのか
あんたまで知らないならただの推測による水掛け論になるやん、、、
>>143 >CBullet::Adjust
なによ、それ。
ソース見てないけど、そのクラスとメンバがいるって話じゃないの?
>>143 ああ、、すまん、、、探してくれたんだな
ありがとう。
でも、CBullet::Adjustて、それなりに長いソースだけど、
これ全部がファイヤーボールのプログラムなん??
ここで説明できるほど単純でもないからあとはソースを読んでくれとしかいえん data\BulletInit.txt に玉のパラメータが書かれている。 読みこんでるのはApp2.cppの // ファイアーボールデータ読み込み。 void CApp::PlayerBulletInit(char *filename, char *imagename, BulletData *bullet, CBullet *ball) こいつ
>>141 dxlibのソース読んで見ないとわからないなぁ。
俺も推測でのレスで申し訳ないが、確かDirectXには
ラスタライズ対象範囲を限定する機能があったはず。
もしdxlibがそれを使っていたなら
ラスタライズ範囲が狭くなる分、処理は軽くなるけど
メモリ使用量は変化しない。
結局画像は全体がVRAMに転送されるし、バックバッファのサイズも変化しないので。
超巨大で超ぶっとい線を描画したら重くなるから やっぱり重くなるんだと思うよ
今度は何処の素材パクったんだろう
例のヤツについての話は専スレでやれ
なんか口調変わったな 思わず別人の小学生が増えたかと思ったわ こいつ素材だけは速いと思ったらいつもパクってるのかよ ファイアボールなんて速度減衰も跳ね返り減衰も無いし平気でバウンドしながら階段登っちゃうし Vy += Ay(等加速) if(Vy>=Vmax) {Vy=Vmax} elseif(Vy<=-Vmax) {Vy=-Vmax} if(y方向接触) {Vy=Vmax}(上向き) if(x方向接触) {消滅} 座標更新 x += Vx(等速) y += Vy Vxの正負はキャラの向きで大きさVx、Vyは-Vmaxで初期化、Ayは常に負(下向き) VxとVmaxとAyのパラメータだけ調整 5分しか考えてない適当なのだけどこんなのでいいだろどうせ あとはボールの楕円画像を自転でもさせるぐらいか 自分で考える楽しみ()とか言っちゃうならこんなとこに来ずにこれぐらい自分でやれよ まあ円形弾幕で一つ一つ座標を三角関数も使わずに手打ち指定しちゃう奴に言っても無駄かもしれんが
口調変わってないよ ゲームを崇拝してる所がそのまんまKazuki KazukiAAが出たら妄想解いて疑おう 騙される人間は推理した事が無いから騙されるわけで、それを知ってるからKazukiは湧き続ける
まあバレバレの自演と連投で察しはついてたけど 単芝であそこまでされたら釣りか別の真性かと思った
FCマリオ1程度ならサクッと作れそうだが、こういうのは素材がなぁ 素材があれば1週間もかからない気がする
FCマリオ1程度の素材ならそれほど時間はかからんと思うが。
32ステージ分のマップと敵の配置のデータを作るだけで1週間じゃ無理だと思うが
どうでもいいことだとは思うけど、 マリオのステージは1/3くらいデータの使い回しされてたり(似たような別面) 敵の配置はクリボー×3とかでグループ化してあったりして容量削減がんばってる 「ここから先の床の高さ」とかそういうデータを埋め込んだりして実際のマップそのものは実行時に生成してる すごいね
誰から聞いたのw
雲と草が一緒の画像とかはよく聞く
DXライブラリ 総合スレッド その16
DXライブラリってゲーム作るには機能足りなすぎじゃね
C++版誰か作ってくれよ
>>160 スーパーマリオの話だったのか。
そりゃ確かに面倒だな。
機能そのものはdirectxSDKの時点で足りてるよ!
>>169 Ogre3Dと比べると描画の機能は全然ないぞ
シーングラフとかは3Dゲームで必須だし
参照カウンターによるリソース管理
パーティクル
拡張したマテリアル(テクスチャスクロールとか)
まあDXライブラリはDitrctXの薄いラッパでしかないからいいんじゃない?
必要だと思えば自分で実装してもいいんだし
DXlibはゲームライブラリじゃなくてマルチメディアライブラリだから(震え声)
シーングラフ レイキャスト コリジョン検出 アニメーション リソースマネージャー 最低これぐらいは欲しいな。 こんなの個人で再実装する価値はないので 共通基板として使いやすいライブラリを整備して欲しいわ
>>172 > こんなの個人で再実装する価値はないので
ん。ライブラリにあったら便利なのは同意だが、こういう言い方で切って捨てようとする人って、
大抵自分で具体的なロジックが書けず、実装出来ないまま開き直ってる人だ。
書けない自分は何も悪くない、くれない奴が悪い、みたいに。
というかむしろ詳しそうだし補助ライブラリ作って公開してほしいな
>>174 素直にゲームエンジンや他のライブラリ使えよ
多分無理だと思うぜ。何故なら普通は実際に書くと 「汎用性の前提があった上で、どこまでを処理単位の属性にすべきで、どこを決め打ちの固定仕様にするべきか」 って言う設計レベルでジレンマがやってきて、 それはそのライブラリ使って作れる物の制限を生むので、自分が作りたい物によっては使いにくいライブラリになり得るから、 結局アプリケーションの要件次第では別に実装する事になるので、「個人で作る価値はない」なんて台詞は出るわけ無いんだよ。経験があるならば。 その辺がテキトーに見えるので、彼では書けない。 あと、自分の代わりに実装してくれる別の個人がいるって事も頭から抜け落ちてる時点で、ただの「言葉だけ知ってる失礼な人間」だ。
今さらドラクエレベルのゲームに要件次第とかないわー ワンダと虚像と塊魂が作れるライブラリならともかく、 ゲームなんて決まり切った処理の繰り返し
>>177 > ワンダと虚像と塊魂が作れるライブラリならともかく
えっ、DXライブラリだと作れないの?
どこからドラクエレベルとかワンダとなんとかの話が出てきたんだよ知ったかぶり野郎
上級者ヅラしてエラソーに他力本願でトンチンカンな批判をして、 その後に、じゃあお前が作って晒してみろって煽る流れとか、なんかKazuki臭い。
117の書き込みはなんというか「口だけ達者な人間のセリフ」のお手本のようだ。
3D接触処理って軽量化どうしてる? 球体の判定だけでも結構負荷かかりそうで 想定してるオブジェクト数は最大で24*32(768)個ぐらい 実際は半分ぐらいだと思う
本当にそれだけだったらタダで間に合うよ
>>182 絶対に当たらない組み合わせを、あらかじめ弾いておくのが
とりあえずのセオリーかしら?
KkhWYzJ6とMz7t6BiKが同一人物の自演さんか くっせぇスレになったもんだな
>>182 8分木空間分割でググるといい
俺はBulletPhysics使ってる
>>186 めんどくさそうだけどビットで判断するあたり、早そう
円だけなら一次判定で、xyz座標それぞれの半径分近くなってないかとかで弾けそうかとおもえてきた
よくわからんけど
>>177 は知ったかぶりさんということか
そういうのはすごく恥ずかしいと思う
まだ知らないなら知らないで押し通した方がいいと思う
知らないのにカッコ付けたいだけで
わざわざ醜態を晒すとか恥ずかし過ぎる
>>185 Mz7t6BiK の方は俺だけど、どう見たら自演になるんだよ
「価値は無い」って言い切ってるのが、わかってる人間なら思わない不自然な台詞だから突っ込んだんだよ
ちゃんと読み返せ
傍で見てれば解るから気にするな。
自演祭りの会場と聞いて
しょーもないな、お前ら…
なんかこのひと月ぐらいの間で 公式のどっかの質問でマルチスレッド実装についての注意点みたいなのを 管理人さんが答えてたと思うんだけど どこだったか憶えてる人いない? 見当たらないんだ
194 :
193 :2013/08/02(金) 21:44:47.97 ID:0/9fiY+I
すまん自己解決した 随分前のトピックだったわ 2010年のトピックだったけど下の注意点って今も変わってないのかな >DXライブラリを使用したマルチスレッドのプログラムを作成する際に注意すべきことは ・サウンド・画像・モデルの読み込み関数や描画や描画の設定を行う関数を複数のスレッドから同時に呼ばないこと ・入力関係の関数を複数のスレッドから同時に呼ばないこと ・サウンド関係の関数を複数のスレッドから同時に呼ばないこと です、 モデルに関して言えば MV1LoadModel、MV1DrawModel、MV1DrawMesh、MV1DrawFrame は、複数のスレッドから 呼ぶのは避ける必要があります( つまり描画を行うスレッドは一つにする必要があります ) MV1SetPosition や MV1SetAttachAnimTime や当たり判定などの描画を行わない関数は複数の スレッドから同時に呼んでも問題ありません
C/C++ゲーム製作総合スレッド Part3 のほうでも少し質問したのですが、 DrawPolygonIndexed3Dで描画するポリゴンはDXライブラリが標準で装備しているZバッファに適用されるのでしょうか? また、エフェクトに使用するので半透明要素を含むテクスチャを使うのでZソートするのですが、 DrawPolygonIndexed3Dは渡した頂点配列をその場で描画し始めるんですよね どのようにして実装したらいいでしょうか? 負荷軽減のために一気に描画したいというのもありまして・・・
3dゲームの地形作るのに、どのソフトを使ってますか? メタセコだと地形はツライ気がするので………。 もしvueとか使えるなら楽なんですが。
>>196 Vueだともはやモデリングすらしない訳だけど、そこで言ってる楽ってのは、形状を作成するだけの話?
つまりコリジョンの作成とか自分の中の管理の都合とか放っておいて、ただ表示用の形を作る部分について、
例えば極端に言えばボタン一つ押したら思ったような形が出来たらいいな、みたいな。
>>197 「楽」という表現は不用意でした。
どのソフトを使おうが、それなりの地形を作ろうと思えば相応の苦労があるのは
分かっているつもりです。
ただ、形状もそうですが、テクスチャや木などの設置を考えた場合、
やはり地形専用のソフトであるvueの方が向いているのではないかと
思ったからです。
>>198 その「こっちのソフトの方が向いていてる」と思った理由は何なのかって話。
なんでこの質問を返すかと言うと、形状だけって話なら、BryceとかVueの方がそれに特化してて、自動生成してくれる部分もあるが、
結局そこで作ったモデルデータを自前のプログラムに読んで、かつコリジョンなんかの設定をして、かつ自分の都合で管理する事になるから、
その点を含めた時、「どれが向いてるか」って話も変わるわけで。
ちなみに俺はBlender使ってるけど、その理由はモデリングソフトとして地形製作に向いてるって言う話では無くて、自分が慣れてるからってのと、
あとBlender用のスクリプト作ってコリジョンデータ含めて自分フォーマットで出力させてるからって言う、俺の都合による。
3Dってよくわからないんですけど 実際に描画されてるポリゴンの頂点使ってコリジョン判定するんですか? それとも簡易的なモデル(長方形を連結して形成されただけのような)に、 描画モデルの同じボーン・アニメーションを指定して、衝突判定だけ簡易モデルの方を使うって感じでしょうか というか処理が重そうですけど、大丈夫なんですか?3次元での距離判定でも結構持ってかれそうな気がするんですけど 角度を持つ長方形とかってめんどくさそう
2Dだって、画像の他に当たり判定用の座標を持つだろ? それと似たようなもん。
>>200 大抵は別。実際に描画される頂点が少ないなら描画用を流用することもあるが、
普通は別。なぜなのかは、コリジョンの判定計算を勉強しておくれ
昔のアーマードコアは適当なボックス判定だったけど 今のはガチでポリゴンに同期してるよ
アマコアだかMHだかは重要なもんの数は少ないからか
>>203 それはConvex-Hullの事をガチって言ってるのか、それとも飾りの突起まで含めて表示用メッシュ同士を計算に使ってるのかどっち?
当たり判定用の荒いメッシュって、何も単純なボックス一個とかの極端な話じゃないよ
というか不特定な座標を持つ頂点からなる不特定な面数の立方体をどうやって判定するんですか OBBとかいうやつですか? ヒントヒント!
>>206 少なくとも「不特定」では無いはずだし、
普通は面について言えば三角の集合。どんな多角形であっても。
立体の交差判定とかでググればいいと思う。それか、nVidiaの厚い本とか
で、それを真面目に計算したらやってられないから、 頂点数の少ない凸包による代理形状同士の交差判定するの。 で、それでと量が多いとしんどいから、距離による取捨を事前に行うの。
三角形で構成された立方体の中に、別の立方体が完全に内包されていたらどうやって判定すればいいんですか? それだと面どうしが接触している時だけですよね
210 :
名前は開発中のものです。 :2013/08/16(金) 05:16:32.12 ID:l4Y2LCwf
重力計算のジャンプと、 フレームごとのy座標テーブル のジャンプって どう違うのですか? 詳しくお願いします。
テーブルは計算する必要が無いから早い でもあらゆる状況に対応するデータを作るのは面倒かも 重力からその場で計算すると状況との矛盾は少なくなりやすいがテーブルに比べて処理が重いかも
>>209 そうだよ。詳しい事知りたかったら自分でbulletPhysicsのソースでも追いかけて。
ソースと言うか、先にクラス構成見て何故そうなってるのか把握して実際に使ってみると見えてくると思うけど。
MMDを使って、PS3箱のアイマス風の画面を背景にする音ゲーを作ろうと思っていまして、 3キャラ2曲2ステージぐらいを予定してます。 プレイ中のスコアによるモデルの動きの変化などはつけるつもりがないので、予め動画を用意しようと 思うのですが、モーションのファイルを渡してリアルタイムで動かすのとどっちがいいですかね?
DIVAみたいなのを作りたいってことかね 個人的にはレンダリング済みのムービーではなく モデル+モーション+カメラモーションを渡してその場でレンダリングする方がいいと思う そう考えた理由は、 ・モデルの差し替えとかカメラの動きの変更とかが楽そう ムービーだと全部再レンダリングする必要が出る気がする ・ムービーだとファイル容量的に結構きつそう MMD回りの知識は無いので細かい所はわからないから もしかしたら↑の利点は大したことじゃないかもしれないけど…
ムービーだったら化石PCでも動くかもしれないのでうれしい
216 :
名前は開発中のものです。 :2013/08/16(金) 23:14:36.71 ID:l4Y2LCwf
>>211 説明してくれて嬉しいんだけど、
プログラムの組み方(ジャンプの作り方)の違い?も
詳しめに説明お願いします
超詳しく説明してあげよう あらかじめ計算した移動量とかのデータを配列変数に入れておくんだよ
>>213 MMD使ってって言ってる時点で、MMDでレンダしたムービー(aviなど)を再生したいって事だよな
219 :
名前は開発中のものです。 :2013/08/17(土) 00:20:59.25 ID:ybNRCsu9
>>217 >あらかじめ計算した移動量とかのデータを配列変数に入れておくんだよ
え、想像だにしなかった説明だわ、、、
計算した移動量を入れた配列をどう扱うの。
しかも、それは"フレームごとのy座標テーブル のジャンプ"の話ですか?
>>219 多分毎回のジャンプが同じ軌跡をたどる場合、座標の移動量だけ並べとくって話だと思う
あんまり意外でもない普通の話だ
>>219 簡単でしょ
ジャンプ中の
y=元の位置+重力計算(フレーム数)
を
y=元の位置+テーブル[フレーム数]
に置き換えるだけ
便乗だが、俺も知りたい 高さが固定のジャンプはそのまんまだろうけど、マリオみたいな ボタンを押す長さで高さが変わるようなジャンプはどうやってるんだろ 素人の考えだと上りと下りのテーブルを分けてボタンが離されたら 切り替えるって方法しか思いつかない
223 :
名前は開発中のものです。 :2013/08/17(土) 02:32:49.01 ID:ybNRCsu9
>>221 解説が端的というか、短かすぎて何言ってるかわからないよ。
カヲルくん、君がなにを言ってるかわからないよ。
もっとバカ(プログラム初心者)でもわかるように
順序立てて解説してほしい。
っていうか、「フレームごとのy座標テーブルのジャンプ」って
もしかして、予め配列にいれている数値をフレームでまわして与えるだけなの??
それで、壁なんかにぶつかったら、yを減らして下に落とすとか。
そいうこと????そんな単純な正体だったの??
>>222 マリオは小ジャンプも長押しジャンプも初速は同じ
ボタンが離されるか一定フレーム経過るまで一定(一定じゃなくても減速を抑えた)の速度で上昇させて
それから上昇速度を毎フレーム減らせば、そのうち速度がマイナスになって落下し始める
ボタンを押した時間によって、離してからの落下開始までの時間を変えたいなら
押した長さを掛けたり割ったりして調節するとか、上昇速度を押してる間に調節する
テーブルなら
tbl=5,4,3,2,1,0,-1,-2,-3,-4,-5
ってなってるとして
ボタン押されてる間はtbl0だけ見るようにして
離されたらtbl1とずらしてく
225 :
名前は開発中のものです。 :2013/08/17(土) 02:33:56.68 ID:ybNRCsu9
訂正 yを減らして下に落とす ↓ yを増やして下に落とす
またマリオか
マリオのジャンプってよく話題に上がるけどなんでなんだろうな 少し観察して考えたらわかりそうなもんなのに
パワーのないファミコンでの実装なんだから 単純なのはそうだろう
>>222 > ボタンを押す長さで高さが変わるようなジャンプはどうやって
押す長さによってn倍したらいいじゃない
押してる間は配列のインデックスを増やしていって 離されたら配列のインデックスを減らしていけばいいじゃない
多分それは配列に持っとくデータ内容の意味合いが違う気がする
なんでお前達って3D描画関係の話題だと俺でも理解できないような会話始めるのに こういう基本アルゴリズムの話になると急にバカっぽくなるのはどうしてだよw
まぁいろんな人がいるからね(適当
カメラの位置によって広域なマップってどうやって描画してんの? マップを京都のあの変な街みたいにブロックごとにわけて 現在位置を中心に生成するフォグで見えなくなるぐらいの距離のブロックまで描画するうんたらかんたら?
アサシンクリードやGTAみたいなのが気になる あとエースコンバットの地平線とかどうやって表現してんだ? 高度あげると地形マップが四角なってるのが見えちゃう かといってこれ以上Zバファの探索距離を伸ばすと処理能力がきついからマップ広げられないし、 遠くなるだけで四角く見えなくなるわけでは無いだろうし
>>235 Level of Detailでググれ
>>237 LODってカメラとオブジェクトの距離を一個一個測って描画するモデルを決めるの?
>>238 最低限がそうだよ。俺は区画の論理マップ用意しておいてそれに対して計算するけど、
相手が物理座標じゃないだけでやってる事はそう。
で、本当のLOD処理になるとそれプラス、距離に応じて頂点数異なるメッシュに切り替えたりもする。
何故ならアップで見えて欲しいディテールと遠景で最低限必要なディテールは異なるから
簡単に言うと、カメラの死角にあるものは描画しないし、近くにある木は枝の枝まで見えて欲しいが、 遥か遠景の木にそこまでのディテールは必要ないので簡素なモデルに切り替える。 テクスチャについても同じ理屈
なるほど、あとひとつ カメラの向いてる方向から、オブジェクトの座標をみて、そもそものZバッファ登録を間引いたりする? 間引くとしたら、巨大なオブジェクト、例えば重心がカメラの後ろにあるのに描画範囲内に頂点があるようなオブジェクト とかってどうすればいい?
マリオのジャンプテーブルは、色々と調整してみた結果、 (ファミコンで可能な範囲で)計算するより、手作業で数値を突っ込むのが一番心地いいジャンプになった、ってだけの話?
8bitのCPUが貧弱だからだよ
>>242-243 正解?を言うと
テーブルを作る手間は非常に面倒臭いのでファミコン時代ならともかく今のPCゲームじゃ普通に計算するのが当たり前
sincosとかは今でも遅いからsin0°,sin1°…といった値をテーブル化して計算の途中で参照する手法はある
重力計算でできたんならその計算結果をテーブルに入れて、 計算結果を参照する代わりにそのテーブルを参照すればいいだけじゃないの
少数の計算が遅いからそれを避けるためにテーブルにしたってだけよ
てか少数演算自体がファミコンじゃできないのかな
>>241 俺のやってる方法は別に完全無欠な訳じゃないからアレだけど、
とりあえずZバッファの部分的なクリアやdiscardみたいな事はしてなくて、そもそも対象外のオブジェクトをドローさせないようにしてる。
で、それとも繋がるけど、重心がカメラの後ろにあるがカメラの前に部分的に見えるほど巨大な物に関しては、
なるだけそう巨大にならないよう分割管理してる。
勿論それでも程度問題で重心とオブジェ
クト半径の間にカメラが来る事は普通にあるんだが、その場合は基本的に描画する。
で、その1描画に対してどれだけの頂点量なりが必要なのか、って話で、それを減らすためにバランスみて分割し、
巨大にならないようにするって感じ。それだけ
constexprを使おう!
251 :
名前は開発中のものです。 :2013/08/20(火) 16:38:37.19 ID:1ERmh1yM
>>242 すまん、VSでいじって研究したいから
ついでにMap、Graphic、Commonらのソースもつけてくれん?
253 :
名前は開発中のものです。 :2013/08/20(火) 17:08:03.59 ID:1ERmh1yM
嘘じゃ無いよ なんで嘘呼ばわりされるのか 確かにジャンプそのものの構造は入ってるソースでわかるし includeで必要な外回りも自分で作って補えば済むが 全部渡してもらった方が、その場で色々触れるんだから 話が早いじゃないか。
秘伝のソースなんだから見知らぬ人にあげられるわけないだろ
255 :
名前は開発中のものです。 :2013/08/20(火) 17:13:17.47 ID:1ERmh1yM
>>253 要点は書いて頂いたんだからそれ以上いらないだろっての
秘伝とかどうでもいいよ
桃伝のソースがもらえると聞いて
まあコピペしてゲーム作りたいんだろ
自分で作れるなら作ればいいだけ。 他人に何かさせて「その方が早い」とか言うのは失礼極まりない。 新入社員が「自分がやるより先輩がやるほうが早いし効率いいじゃないですか」と 先輩に全部仕事丸投げして自分は何もせずいたらどう思うよ。
コピペしただけでゲームが出切るわけないだろうに。 別にマップ製作のソースに興味無いよ。 そんなこと疑うんなら、他の誰でもいいから include消してVSでただのジャンプソースをビルド出来るようにしたのを うPし直してくれ。 別にこっちはそれで結構だから。
なんで偉そうな態度の乞食に赤の他人がそこまでしてやらにゃいかんの?w お前みたいにウザい奴は罵倒して放置でおしまいだって
とりあえずみなさん落ち着いてください。 信じるか否かは本人の判断を見て待つということでいいじゃないですか。 無駄に争うのはやめましょうよ。
うざい奴はうざいと言われるのが2chなんでしゃーない
264 :
名前は開発中のものです。 :2013/08/20(火) 19:20:48.94 ID:1ERmh1yM
>>261 お前が疑うからだろ、バカが。
行動出来ないなら口出すな、ハゲ
いや、行動できてないのはお前さんなんだが。
ま、叩かれた乞食が発狂するお決まりの展開だよねw
お決まりというか、同一人物だよね?
DXライブラリ使った事無いんだが、一回くらい使ってどこまで省力出来るか実験してみようかな…
ウィンドウ作るところからやるなら労力は激減すると思う。 既存のゲーム用ツールやエンジンからの比較だと増えると思う。
ライブラリ乗り換えの場合でも単にリファレンス読む手間が増えるだけだよなw 他のDirectXライブラリを使えてるなら乗り換えでの大きな省力メリットは特にない
就活用の作品でDXライブラリ使っても良い? それともゲームとしてのインパクト薄くなるけど直にダイレクトえっクス叩いたほうがいい?
技術力を訴えたいかアイディアを訴えたいかによるだろうなぁ。 斬新なゲームならライブラリ使っても良いんだろうけど、 3Dプログラミング出来ますって言って DXライブラリ使われるとどうだろうね。 unityだとまた話違うだろうけど。
DXライブラリ使うならアイデア路線ってことは、就活に使うなら別途企画書とか必要な訳・・・
太鼓の達人的な叩き方のゲーム作りたいんだけど、参考になりそうなサンプルない? 太鼓の鉄人をみてループで行うべき機能は大体わかったけど書き方が分からない 効果音フラグを初期化 入力に対する計算 弾の計算メイン 弾ヒット結果表示メイン 描画メイン FPS表示 効果音 fps制御 ちなみにそのゲームではこういう感じで回してた
>>269 >>270 thx。どう言う場合に適用するか、って意味の評価をしたいだけなのだ。
既存って意味だと、基本的にwin32に関わる部分はずいぶん前に作ってちまちま改良した自前のライブラリがある。
その他既成の物だと、OGRE3Dやbulletは慣れてる。C#の場合はUnityも。
それだけできるならリファレンス流し読みで自分にとっての省力化になるかわかりそうなもんだけどね そういや本家の掲示板にエラーわかる!C結構できる!でもpathの通し方わかんない!ってコがいたなあ
今晩帰ったらリファレンス見てみるぜ
と思ったが今晩無理なので今週末土日のどっちか休めた日に。 障害対応まだ終わんね
なあ今まで長いことアクションのゲーム部分ばっか実装してて、
勝手に例にして悪いけどmain関数が
>>274 みたいになってるんだけど
メニュー画面とか実装していくなら
>>274 のようなゲーム部分(初期化、ループ処理、終了処理)はひとまとめにして
メインメニューのコンテンツがmainに並んで選べるようにする感じ(ゲーム処理関数、コンフィグ変更処理関数、など)しか思いつかないんだけど
これってどうなのかな
みんなmainになに置いてる?
main (){ auto Game =new TitleMenu(); while(???){ Game->Update(); } delete Game; }
十中八九
>>280 みたいな感じだよね
mainなんて現在のシーンの更新をループ回すだけ
俺はオブジェクト指向わからんけど、結局280みたいなのに落ち着いたな。もちろんオブジェクト指向関係なく。
うーん説明悪かったか俺がアホなだけなのか
今のところアクションゲームのゲーム部分だけしか作ってないから
>>280 みたいに
初期化→更新(ループ)→終了ってだけで済んでるけど、
例えば自機の装備変えるとか、ステージ選択とか実装するとすると
ゲーム部分以外の処理の初期化→更新(ループ)→終了があるわけじゃん
だから
>>280 みたいなのをゲーム、ガレージ、コンフィグ、とかっていくつか作って、
選んだ処理の初期化→更新(ループ)→終了を行うっていう風にしようとしてる俺は間違ってる?
>>283 最終的にはゲームが完成するのが「正解」ではあるのだろうけど、
あまり見ない作り方だと思う
各「画面」の下にループがぶら下がってるんじゃなくて、
ループの下に、各画面の処理を入れる。
初期化が関わる部分は専用フラグ作って フラグごとに分岐するように組めばいいと思うの 自分はゲーム作る時にモードフラグの分岐で タイトル含めて各種画面処理にいけるよう分けてる
ゲームに限らずユーティリティ作るときもそうだけど、大抵は処理のレイヤ毎に整理するかな。 で、メインループとかはそれで言うと最下層。 各処理レイヤの分離量や度合いは概要(基本)設計から下ろしながら決めてく感じ
マルチスレッドで当たり判定とかする場合 結局キャラクタが当たり判定の結果を処理するまで次の判定できないわけじゃん これってただしいの?
おもにマルチスレッド化できそうなのは当たるか当たらないかだけのリストを作成するところ 当たった後の処理はゲームによっては不可能なのでそのあとにやる
>>287 そういう「ゲームロジック側の一部分を切り取ったものだけをマルチスレッド化」ってよっぽど事情が無いとやらないが、
やるとしたら
>>288 みたいに候補のリストアップの荒い振り分けとか、あるいはフラグ列挙くらいかな。
大抵は音楽再生や描画や入力処理側と、ゲームロジックって切り口でスレッド分けるはするが
というか、逐次処理で問題がない部分を わざわざ他スレッド処理にすると、無意味に新しい問題が発生するケースの方が多いからね
292 :
282 :2013/08/25(日) 12:17:47.77 ID:uoZNXz5i
>>283 俺も最初はそうやってたけど、ループ一本にすると管理や変更が凄く簡単になった。
293 :
283 :2013/08/25(日) 12:55:13.02 ID:zLoY929s
>>284 >>285 やっぱそうするほうがいいのかな
どうせ完全に独立してる処理だし
>>283 みたいにしたほうが
読みやすくて管理しやすいかと思ってたがそうでもないのか
よしじゃあこの方向性で作ってくことにするよ
>>292 も経験談ありがとう
DestinationDirectionという目的地の方向を向いてるベクトルがあるのですが、 これがなぜか真逆を向いてるので、0から引いてみたのですが同じ方向をさしてしまいます。 どうしたらいいですか? DrawLine3D(Position,VScale(VAdd(Position,DestinationDirection),500),321321); DestinationDirection = VSub(VGet(0,0,0), DestinationDirection); DrawLine3D(Position,VScale(VAdd(Position,DestinationDirection),500),121121);
>>294 自分の経験だと、「なぜか真逆を向いている」という状況を見直さないと、今仮に直ったとしても、どこかでしわ寄せがくるよ
2行目が実行された後、DestinationDirectionはちゃんと更新されてる?
VECTORにoperator=が実装されていれば問題ないと思うけど
296 :
282 :2013/08/26(月) 05:33:40.78 ID:6Oe3V9HV
>今仮に直ったとしても、どこかでしわ寄せがくるよ あるあるw なんかおかしいな、っていうのは絶対どこかにバグがあるって事だからな。
DestinationDirectionの作り方として、多分間違いではないと思うのですが・・・ 今ブレークポイントで値を確認してみたところ、実行前と実行後でしっかり符号が反転してます。 //目的地へのベクトル VECTOR DestinationDirection = VSub(目的地 , 現在地); //座標系を自分視点に回転させる行列 MATRIX Rot= MGetAxis2(キャラクターのx軸,キャラクターのy軸,キャラクターのz軸,キャラクターの座標); //回転適用後正規化 DestinationDirection = VNorm(VTransform(DestinationDirection,Rot));
>>297 >>294 でのDrawLine3Dに1行目と3行目で渡している引数は異なるけど、結果は同じ値だってこと?
あと、何でもかんでもDestinationDirectionにしちゃうと、どういう状態の値かわからなくなっちゃうよ
変数の使い回しは最小限にすべき(速度に致命的な問題がなければ)
そうです、結果が変わらないんです。 目的地の座標を、オブジェクトの周りにグルグル動くように設置してみたのですが DrawLine3Dがまったく動きません。。同じ方向を向いたまま・・ 画面に目的地の座標と、オブジェクトの座標を描画させましたが両方共正常に動いてましたでした。 ということは MGetAxis2の使い方が間違ってるんですか?
間違ってるかもしれないけど
もしかしてワールド座標の原点からキャラクターの座標離れてないか?
>>297 だと「(ワールド座標原点から)目的地へのベクトル」を、
キャラクターのローカル座標に変換(ここで目的地〜現在地のベクトルが、キャラ〜原点の長さより微小だと、
いくら目的地〜現在地のベクトルを回しても「キャラから原点」のベクトルとほぼ等しいから動いてるように見えない)
さらに正規化してるのでベクトルが短くなって変化がわかりにくくなる
って処理になってる気がする
キャラクターの座標動かしてもベクトルが回らないなら俺が間違ってるけど
俺の言ってる通りなら
//目的地へのベクトル
VECTOR DestinationDirection = VSub(目的地 , 現在地);
を
= VGet(目的地)でいいと思うんだけど
訂正、
>>300 の3行目
「(ワールド座標原点から)現在地〜目的地"方向"へのベクトル」
分かりにくい文章でスマン
●騒動で規制解除されてるとは思わんかった
>失敗したコードは >VECTOR VAtoB = VSub(ObjectB.Pos, ObjectA.Pos); >MATRIX MAngle = MGetAxis2(ObjectA.AxisX, ObjectA.AxisY, ObjectA.AxisZ, ObjectA.Pos); >VECTOR VRDir = VNorm(VTransform(VAtoB, MAngle)); 騙されたと思っていっぺん VECTOR VRDir = VNorm(VTransform(VAdd(ObjectA.Pos,VAtoB), MAngle)); こう書き換えてみて
てす
>>242 このサンプルって、
テーブルジャンプに切り替えるボタンある?
画像には専用キャラが用意されてるみたいだけど。
それとも出来なかった、というオチなのかな
∧_∧ ガラガラ( ^^ ) <これからも僕を応援して下さいね(^^ =〔~∪ ̄ ̄〕 = □――◇ Kazuki
数値だけなら0-9の画像用意したほうが楽
ASCIIの文字くらいは用意しておくと、色々と便利だよね
ゲームごとに違う自作フォント(というほど大げさなものではないが)用意するのは面倒臭いけどな……
フォトショ使えよ 一発だぞ
311 :
306 :2013/08/30(金) 13:36:35.88 ID:vDu0CoH6
なるほどありがとうございます
ソフトイメージを使って起動時にロード中と称して装飾数字画像作るのもありかな
実際に画像として出力する前の、テンプレート的なものをあらかじめ作っておけば、 確かにPhotoshop一発でいろんなパターンを作れそうだ
前に使う文字を加工して一枚画像に並べて吐き出すコード前に書いたな俺
フィールドが球面のRPGって過去に存在するんですか?
ドラクエだって見た目だけメルカトル化されてるだけで球面なんじゃないかな(震え声)
未だにオープンワールド系のゲームをdxlibで作るとなると どうやって実装すればいいか思いつかない俺がいる 指定座標周辺のモデルだけを読み込み・描画する方法とかあったっけ まあ作る予定は無いからわりとどうでもいいけど
>>318 あったっけって、俺はそうやってるけど。
いや、dxlibの関数をどう使って実現するかってこと 指定メッシュのみ描画とかあったっけ? それともシェーダで切り捨てでもしてるの?
いや考え方は2Dと一緒で、地形パーツ並べてドローするだけだけど 見かけ上一続きに見える地形だからって描画物のデータまで一つにはしないでしょ カメラに見える範囲の論理座標上にあるパーツだけを描画するだけ シェーダで切り捨てって何かエラく曖昧で遠回りな発想だと思う
>>312 一度、文字列レイヤーで等幅フォントをASCIIコード順に文字を並べておく
それのフォント指定を変えたりレイヤースタイルをいじったりすることでいろんなフォント画像をサクっと作れる
でもその方法じゃ8*8ドットとかのいわゆるナムコフォントみたいなのは無理でしょう。
何勝手に新たな縛り追加してんの
こついらってなんだよ・・・orz
こんなのあるんか 便利そう
IPAフォントは使いづらかろうに・・・
>>321 遠い地形の部分ってどうするの?
フォグでかき消すの?
ちょっと遠くを描画しようと思うとZバッファ描画が荒くなるんだけど 巨大なメッシュを遠くに描画すると、描画距離ギリギリのところでギザギザになる
>>323 アンチエイリアスあり・なしが設定出来るから、その形状のフォントを使えば出来る
レゲー再現フォントをゲームで使用する上での著作権の問題はしらん
あと
>>325 みたいなビットマップフォントを使えばレトロっぽい表現も不可能ではない
>>321 そうか箱庭型ばっかり作ってたせいで確かになんか凝り固まってたわ
でも木とか建物はその通りで出来るけど地形なんかは難しくないか?
地形も単位塊に分解しておいて描画するの?
>>330 最近Zバッファのビット深度変更する関数追加されて
24(32)bit管理出来るようになったけどそれでもダメなの?
アルファテストとかミップマップとかそういうのではないの?
>>333 今までは16bit
16,24,32bitに変更できるようになった
管理人さん曰く32bitはほとんどのグラボでまだ対応してないと思われる、らしい
>Zバッファのビット深度を設定するための関数を追加しましたので、よろしければお試しください
>// 画面用のZバッファのビット深度を設定する( 16 or 24 or 32 )
>int SetZBufferBitDepth( int BitDepth ) ;
>ただ、現状 32bit深度のZバッファは無さそうです( GeForce GTX 660 Ti でも 32bit は非対応でした )
>なので 32bit を指定した場合は恐らく 24bit になります
2バイトって最大数65535か でも今までの3Dゲームって殆ど3バイトかそこらだったんじゃないの? 少なくとも2バイトだとレンダリングしてみた限りどうやっても遠くの方のZバッファがお粗末になるし 2バイトで解決できるならそれに越したことないし・・・
NearとFar比が極端だったりすると遠距離の精度落ちる どうしても精度欲しいならシェーダーで自前で計算すれば 大半の環境では浮動小数点で24bit精度ぐらいはいける DirectX9だからそこらへん面倒なんだよな
C++初心者か? returnは実行された時点で関数を終了する
中括弧が省略されてるから読みにくいだけで 自分で付け加えてみれば理解しやすい コメントのエラーてのは関数の意味からすると間違いのような気もするが
http://blog-imgs-26-origin.fc2.com/l/l/y/llyukinll/TERA_ScreenShot_20110809_182541.jpg こういうのは、少なくともカメラからキャラクターまでの距離が最低値で、
街の向こうの巨大な岩山まで最大値として存在しているわけですよね。
Dxlibでこの画面を再現しようとすると、多分この距離だと街の城壁と、地面の間がギザギザになると思います・・・
変なテクニックとかないんでしょうか?
今LODと同じ描画距離を使うといい感じになりそうだと思ったんですけど、どうですかね?
高精度ポリゴンを描画する距離 10.0f 〜 1000.0f
低精度ポリゴンを描画する距離 1000.0f 〜 100000.0f
みたいな感じでLODを設定してたら、
同じ値でSetCameraNearFarでそれぞれ描画します。
つまり描画を2回に分け、1フレームに2回SetCameraNearFarを使用します。
SetCameraNearFarの速度と、1000.0f付近のオブジェクトが変なことになるかも??
描画は1回で、Zバッファに登録するタイミングが2回に分かれるのかな?? Dxlibでこんな感じのことできるのかな 低精度ポリゴンを描画したあとSetCameraNearFar(10.0f,1000.0f); とかしたら低精度ポリゴンのZバッファ登録がごっそり消えたりしないですか?
kazukiおかえり〜
>>339 ,340
ありがとうございます
returnが実行されると終了するのは理解しました
returnのあとの1と0はどこに返ってるのでしょうか?
kazukiってもしかして俺にいってるの? スレ内検索したら余り良いイメージじゃないな
>>344 if ( IsAbleToGo(ch.x,ch.y,ch.muki) == 1 ) 〜以下略
ここ。
この場合は、その return で返ってきた値が 1 だったら以下を実行するって事だね。
さすがにこれはkazukiじゃないだろ ちょっと敏感になりすぎだな 本人が来ない限り荒れることもあんまりないとは思うけど
それで、Zバッファによる描画を二回行うと言うのは実用的な方法なんでしょうか? クリップ距離を変えるのも速度が気になるし クリップを変えたらZバッファの内容が消去されたりしちゃうのか
Zバッファの知識も3Dプログラミングの知識もあって,なんでおみゃーらDirectX行かないの?
苦労して行く意味がないから
いや必要なら普通にそのまま使うけど
今DXライブラリじゃ無理でDirectXじゃなきゃ実装出来ない演出ってあるか?
結局Dxライブラリをフロントに持ってきても、3D処理やシェーダについてはDirectXのレイヤで実装する訳だから、 そういう意味でも、Dxライブラリだけで何でも出来る訳じゃ無いでしょ
言い方が悪かったな DirectXを使うってのは要はDirectXのラッパを自分で書くということだから、 完成度の高いDXライブラリを使わず、自前でDirectXのラッパ用意してまでやりたいことがあるか?ってこと DXライブラリは機能が豊富すぎて出来ないことが殆どないから自前でやる意味がないんだよ 一見出来なさそうなことも隠し関数をチェックすれば対応されてる シェーダ関係や3D関係の処理も、DXライブラリでは使いやすいようにラッピングされてるし まぁ個人的見解だから、他の人の意見も聞きたかっただけだ すまん
3Dはオプション豊富なOgre3Dに移行した 自前ライブラリはDirectX11での実験に必要な最低限の実装 SM5.0だと長いシェーダー書けるのはいいよ DXライブラリは過去の互換と2D用なんで結局一番使う
>>356 具体的にやりたい事決まると沢山あると思うけど。
例えば汎用的なパスアニメーションとか。
あるいはちょいゲームロジック寄りになるが、一枚画像に並べた地形ドット絵をテクスチャとして、
マスに並べて表示するクラスを設計する時、わざわざDxライブラリ経由でやらなくても
直接書いた方が実行時の余計な呼び出しや整理もいらないから効率いいとか。
関数だけを見るんじゃなくて、具体的なシチュエーション前提にして、その時の実行イメージ考えると、ちょいちょいあると思う。
少なくとも、Dxライブラリだけあれば他はいらないって事は無いかなと
>>357 Ogitarが便利だよな。bulletとも組み合わせやすいし。
… Dxライブラリと大分立場違う物だけども
>>358 効率面で言えばちょい無駄な実装になることはちょくちょくあるな
今のPC環境でその速度差が問題になることはないが
まぁ速度差って話だと実際内容次第なので横に置いとくんだけど、それより 元々直接ハンドリングできてどうすりゃいいかもはっきりわかってる時は、わざわざDxライブラリに合わせていらない処理書くことも無いかなって事。その効率
つーか、自分で実装した蓄積があれば そっち使うだろ普通
これからゲーム作成を始める人たちなんだろ
なんでDirectX直叩き経験者前提なんだよ
どこにもそんな前提の話は無いと思うが
直叩きできるけどもしかしてできないのって言いたいだけちゃうん? 俺も7.0時代にbitbltよりずっとはやーいとか言って叩いてたから資格は十分だな ツクールだろうがライブラリだろうがやりたい事できてる内はなんでもいいんじゃね
前提はないな。
そしてどちらとも書いていない。
経験者はそっち使うだろろ
>>362 は言っていると思ったが違うのか?
>>366 いやそう穿った見方されてもややこしくなるんだが、元々は、
>>351 の話に対して「必要なら使うよ」と言った。
その後、"苦労して"行く意味が無い、と行っていた人物が「完成度の高いDxライブラリを使わず自前でやりたい事なんてあるか」と書いていたので
そんなのは実装内容と都合次第だと言う例を書いた。ただそれだけ。
>>362 の話に関しても状況次第で、単に有名で興味があったから使ってみたかったってのと、
複数人で作業する時、たまたまDxライブラリを使う話になってたので、後から来た俺もそれに従って参加したから、
これも状況次第で使う事はあるよって話だ。
直接扱えるからって、Dxライブラリを使わないなんて事は無いよって話。
ん?逆じゃね?
>>351 は、「既にDXライブラリを使っていて直叩きやってないユーザー」に対しての
「なんでDXライブラリからDirectX直打ちに乗り換えないの?」って意味だろ
そりゃ過去に使ってたなら流用する部分はあるだろう
レスしといてなんだが、ややこしくなってるのはどうでもいい部分っぽいから終わりにしとこうぜ なんかすまんかった
でもDXライブラリで入門してそこそこコード書いてから DirectXを自前で呼ぶ手順を試してみるのは もう難しいって事はなくなってるだろうし、得る物がないとも思わないな すぐに役立つ類の何かにはならないから、今ゲーム作りたいって状況ならやめとけと思うけど
DXライブラリにない機能を使いたくなって、どうやったら実装できるかなーと、 API調べたら、やたらややこしい説明しかなくて たかがこれくらいのことになんでこんな記述しないといけないんだよ と思って結局手付かずな俺。
レガシ―なコードを見るとじんましんが止まらなくなる病に陥って以来DirectXを諦めた
APIがわからないと、DirectXいじれないんだぜ・・・
それはもしかしてwin32での基本的なメインループすらわからんとかそういうレベルの話か
Winアプリの基礎くらい知っとくと便利だよ 環境設定とか作れる
377 :
>>349 :2013/09/04(水) 15:11:12.06 ID:oOzyrc7U
わしの質問が流れた
まあ元々DXlibは初心者のDirectX入門の側面も持ってる的なことを 管理人さんがどっかで言ってた気がするしな DXlibで不自由さを感じたらDirectX直叩きってのも自然な流れじゃないの
DXライブラリ界の有名人(?)が、こぞって紹介してるゲームエフェクト講座が結構良いな
くっそ身内っぽい雰囲気で聞いてちょっと罪悪感があるんだが これをDXライブラリ界の有名人が紹介してるの? DXライブラリ界の有名人ってのがどんな人を指すかよく知らんが
有名人ってわけでもない ただ作品にDXライブラリ使ってるってだけ 同人STGやる人なら作品知ってるかもくらいの人
>>384 隠す意図は無かったんだけど、スマンカッタ。
こういうとき、どこまで貼ればいいか難しいね。
バックで動画再生させながらプレイする横スクロールのアクション作ってんだけど、 PlayMovieToGraph 使って DrawGraph系で動かしたらかなりカクカクになっちゃった 何で再生するのがベスト?
ゲーム画面で動画を再生したいならそれ以外の方法はないだろ 動画自体を軽くするしか方法はない
>>387 だよなぁ、ビットレート下げて様子みるわ。サンクス
バックで動画再生なんてやれるのかw 知らんかったわ。 LDゲームが作れるなw
そりゃまぁ・・・ツクールじゃないしw
2Dエフェクト作成より3Dエフェクトの作り方が知りたい どこにもサンプルないしどうやって作るかもまず見つからないし…
2Dエフェクトの座標を3Dにするだけじゃね?
サンプルとか書きようが無い。何故って、基本的にそれまで自分が書いてる処理の応用編だから。つまり、 ・2Dでのエフェクト処理(レンダーターゲットへのシェーダ処理含む) ・ + 普通の3D表示処理(ポリゴン表示とシェーダ含む) それらを自分の管理処理と合わせて創意工夫で組み合わせた応用編だから。 ちなみにピクセルシェーダでのエフェクト計算(例えばブラーやソラリとか)みたいにポイントポイントで見れば 書籍もサイトもあるよ。 で、それらと自分の処理を組み合わせて考えてアウトプットになるって事。
てか応用編の世界なので、何も知らない人に言葉で説明しようとするとやたら長い話になってしまうが、 逆に言うとまず3D処理の実際を、繰り返すメインループの中の一コマとしてまず見えるようになってら、 そこで何が必要で、それがあるとどう見えるかって順番で考えるようにすれば、 「どうすればいいか "まったくわからない"」って状態にはならないと思う。 シェーダでのピクセルエフェクト(UとVの二軸の世界でのエフェクト)については、 よくOpenGLの世界で記事やソース書いてる人いるので それをDirectX(HLSL)の世界に応用したらいいと思う。基本的な理屈は同じだから。
>>392 ゲームエフェクトの本やら資料やら探したら、むしろ3D中心で出てくる印象なんだけどなあ
エフェクトって言ってもいろいろあるしねえ 具体的に○○みたいなエフェクトのやり方がわからないとかならまだしも "3D"のエフェクトがわからないってのはそもそも3D処理がわかってないんじゃね
C言語やC++はOSにそこまで依存してないよね? なのにDXライブラリは完全Windows専用なの?
「なのに」って意味が分からん DXライブラリはWindowsのDirectXをC/C++から簡単に使うための物だから Windows専用にならない理由がないだろ クロスプラットホームのゲームライブラリならSDLあたりが有名 しかし俺はSDLは使う気にならないな 自分が興味がないMacやLinuxのユーザーサポートまで要求されるのも迷惑だから
クロスプラットフォームしたいんならunityでも使っとけ
>>398 グラフィックスAPIのDirectXがWindows専用だからな
MacとかLinuxもサポートするならOpenGLになる
WindowsとLinuxでAPIを使い分けるならOgre3DかUnity
OpenGLで両方まかなうならSDLやQtという選択肢になる
3Dエフェクトってキャラクターや地形と違ってアニメーションするじゃん 勿論キャラクターはポージングこそするものの ポリゴンの頂点数が変わり続けたりテクスチャのマッピングが移動したりするエフェクトをどうやって流れるように描画させるのか という疑問が
>>402 DXライブラリでは頂点バッファをいじれないみたいだから、
頂点数の増減は小さいオブジェクトを繰り返し描画で変化、
または高解像用と低解像用を用意しておくとか。
テクスチャスクロールはシェーダーを自作すれば簡単
>>402 頂点数の増減て見たままそのままの実装する必要あるか?
内部的に常に必要な最大頂点数持っておいて、VertexShaderで不要なタイミングにおいては表示外に追いやったり隣り合った頂点と整列させておいたり、
あるいはアルファで非表示状態にしたりすればいいんじゃないの?
理論なら誰でも考えつくからソースで具体例を出せってことでしょ
一般的には理論もしくは発想が難しいのであって それをコードに落とし込むのは誰でもできる底辺の仕事なんですが…
>>402 そもそも3Dエフェクトで拡大・縮小以外の変形をするエフェクトってあんまりみたこと無いんだが
しっかり骨組みまで見たことあるゲームが携帯機程度の低スペな奴しか見たこと無いからかもしれんが
アニメーション付きのビルボードの組み合わせとかが今でも大部分を占めてるように思う
3Dエフェクト使う時でも拡大・縮小にテクスチャのアニメーションでごまかすとか環境マップ使ってるやつぐらいしかパッと思い浮かばない
誰でも考え付くならエフェクトで頂点増減とか言わないと思う 話ももっと具体的なはず
どう実装するの?って奴は勉強不足なだけだからググれってことだな
>>407 レンダーターゲットに対してPixelShaderでポストエフェクトとか、
メッシュ表示の際にも同様にアルファや色の変更とか色々出てくると思う
>>410 それはどっちもピクセルシェーダを弄るようなエフェクトの一例だよね
そこは3Dエフェクトだろうがビルボードだろうがあまり大きな変化はないと思うんだけど
拡大・縮小以外の変形みたいな頂点そのものを増減したり、不規則に変化させるようなことを必要とするエフェクトの例とかってある?
コードに落とすのは簡単(キリッとか言っちゃって結局出ないコード いつもの流れだ 簡単なら一般的な方法でいいんでテッセレーションやってみせろよ
なんでそんなにコードを出すことにこだわるんだ
ちょっと前のマリオのジャンプで粘着してた乞食じゃあるまいし
それにどんなエフェクト作るかの話もしてなくて3Dエフェクト全般の話しかしてないのになんでコードが出てくるんだよ
あと
>>405 とか誰もソースの話なんか出てないだろ
金も払わず「サンプルよこせ」「そこまでいうならやって見せろ」 この質問者様が質問して下さっているっていう発想からして完全にkazukiだろ
いや今回のこれはkazukiじゃないと思う 初っ端から煽りに来ることはあんまりないと思うしあいつ今職業訓練に必死みたいだし
すっかり痛い子の代名詞になっちゃったなkazuki
まあいい反面教師にはなるかもしれない あいつはスレの全員から嫌われてるから本人降臨しない限りスレも荒れないしな あと本人はテッセレーションなんて分からないと思うぞ 座標を自分の感覚で適当に決めて直打ちしちゃう奴だし
kazukiが誰をさしてるのか未だにわからないけど
kazukiとは、過去にポナルポやタクトと名乗って恥ずかしいことをやらかしてきた男のゲ製でのHN ブログ消して逃亡する癖があるからリアルタイムで遭遇したことないとわからんだろうな ヲチスレがあったんだが埋まってから立ってないようだ ズブの素人なのに絵師やプログラマになりきって講座サイトを作りたがるアスペの自演魔とでも言えばいいか スレチだが
自愛性みたいなやつだろ? あいつはすぐわかる
頂点数の増減って結局vistaじゃないと出来ないらしいけど 剣の振った軌跡エフェクトとかは頂点を直接操作してるの? ボーンとかいれて
軌跡の表現って、例えば帯状に流れて消えてくような物の事なら、実際その時による。 頂点数3*2*8個のポリを帯状に並べた物を固定で持っておいて、cpu側からは座標xyz+アルファの減衰用値1つをセットとにしてfloat4で8セット渡して vertexshaderで計算した。 座標は起点から数フレーム毎に直前の座標を一つ後ろにコピーするようにして、 減衰値も直前の値の1/8を引いた物を順次セットしてく流れ。 他の方法だと、単に板ポリに描いた形をその時の軌跡に沿った位置と角度に変えながら変形とか。そんなかんじ
あ、
>>422 は俺が実際に考えてやった方法。
別にこうするもんだ、って話じゃない。
ガンツってオンラインゲームの剣の軌跡が特徴的だった気がする
ずっと標準関数のfopen_sとかfread_s使ってたんだけど DXlibの使えば非同期読み込みできたんだな これって非同期書き込みって出来ないの?
>>421 毎年この時期に発売してるゲームグラフィックスって本は結構参考になったりならなかったりするけど面白いから読むべし
2009年版によるとナルティメットは頂点にボーンを入れて引っ張り出してる
>>422 のはトレイルポリゴンというらしい
いつの間にか3.11にバージョンが上がっとる ちらほらとWindows8向けの修正が入ってるようだ
>>422 参考になった
見た感じ無双は前者っぽいな
前スレ辺りで 3DのRPGとかでよくキャラの足元の地面の種類によって足音や土煙を変えてる方法 ってのに ポリゴンモデルのテクスチャによって判定してる って答えがあったけど 今のDXlibでこれ実現する方法ってある? 指定ポリゴンに使われているテクスチャを得るような関数は無いし その為に自分で既存の関数使って実装しようにも大まかな方向性すらちょっと分からない
テクスチャの実物じゃなくて論理マップを別に持っておくだけじゃないの?
921 : 名前は開発中のものです。[sage] 投稿日:2013/03/19(火) 18:41:57.90 ID:uxqMY4dT [1/2回] なあすごく初歩的な質問かもしれんが RPGやアクションに限らず、いや3Dでも2Dでも使われてる、 よくキャラの足元の地形の設定に応じて足音や砂煙とかのエフェクトの使い分けってどうやって判定してるんだ? 一応3Dを扱ってるとして考えてるんだけど モデルの該当箇所に簡単な形の判定用モデルでもくっつけとくぐらいしか思いつかん 922 : 名前は開発中のものです。[sage] 投稿日:2013/03/19(火) 19:41:49.38 ID:qIdhNQFl [1/1回] 古い様式のトゥームレイダーのRoomEditorの場合では、 床の形状が碁盤の目のようになっていて、 フロアデータと呼ばれるデータの格納部分があります。 そこに床ティクスチャと共に床属性を加えています。 例えば、木の上、石の上、水の上によって足音が変化する。 それら全部のデータをチャンク形式で塊にして、 レベルデータとして1ステージ分を1ファイルで管理しています。 923 : 名前は開発中のものです。[sage] 投稿日:2013/03/19(火) 20:34:44.08 ID:yJcDNlmv [1/1回] 頂点の色をIDとして分けるとか属性用のテクスチャを用意するとか
普通に
>>922 の方法が現実的だと思うよ
必要なメモリは今のPCの性能に比べたら大したことないんで
わざわざバッドノウハウみたいな方法を使って制約を増やす必要性がないという
この
>>922 みたいな方法がいわゆる論理マップの持ち方だよな
ドラクエみたいに格子状に並べるマップもそうだし、配置するオブジェクトが無規則自由配置でも同じこと
なるほど
>>922 の方法が良かったのか
しかしこれって
下から床、空間、床2、空間
みたいな位置関係のときは難しくないかな
>>432 もわざわざ引用してくれてありがとう
>>435 平面の格子じゃなく立体の格子を作ればそれも別に難しくないだろう
>>435 >下から床、空間、床2、空間
3D空間の場合ですね、そのような場合で
床空間をRoomと呼び、
床1に碁盤の目を配置します。床2にも同様、
そして主人公が床1にいれば床1の碁盤の目を使う。
床2に移れば、床2の碁盤の目からデータを読む。
そして、
床1の部屋1から、床2の部屋2へ移動するのに
部屋同士を廊下で繋ぎます(doorと呼びます)、
その廊下を通過する時に部屋番号を切替えます。
属性データ=部屋番号、X行、Y列
このようになります。(実際は座標変換が入り複雑です)
この説明は、BSP(Binary space partitioning)の導入の部分です。
より単純な方法
単純に床の高さ違いの部屋ならば、高さで単純に切替え出来ます。
やっぱ次元増やすしかないか
それでもメモリなんて今どきならあんまり気にしなくてもいいのだろうか
格子の目をどれだけ細かくするかによるんだろうけど
>>437 は高さが一定の部屋ならメモリ節約になりそうだな
詳しい説明ありがとう
今までとっつくのに躊躇いがあったけどちょっと頑張ってみるよ
ちょっと別件になるけど
みんなゲーム作る上でメモリとかどの程度占有していいと考えて作ってる?
作ってるゲームの規模とかジャンルにもよるだろうけど参考までに
ちょっと考えればわかるけど、 アクションゲーなら高さってほかの2軸に比べれば大して量が必要ないんだよ 上に登ってくステージを作りたければそこだけ高さを増して作ればいい RPGの場合だって、塔とか特定の地域だけ高くて面積は狭い地形にすれば特に問題ない 今のPCだとフリゲで使っていいメモリは100Mくらいかなと思ってるよ というか、そんなふうに作ってから悩むべきことを何もできてない段階でゴチャゴチャ考えると 何もできない愚図になってしまうよ
いや3次元空間を自由に飛び回るタイプなんで俺の場合は他の2軸と等価なんだわ 正直作り方の下手さをスペックで補ってる感があるんで 今回の件以外の部分でかなり演算量とかメモリ使ってるからちょっと聞いてみたかった だいぶ出来上がってきたんでそろそろエフェクトについても本腰入れて頑張ってみようかと思って昔の話題を引っ張り出してきたんだ
お前ら3Dの話がさらっとできて羨ましいな。 俺は2Dがやっとだっつーに。
今どき数値データで専有するメモリなんて大したことないだろ 実際にどのくらいのバイト数になるのか計算して言ってるのか?
何も出来てないし、作ることもないのに心配だけしてるんだと思うよ 試算すれば今のPCで問題になるわけないのわかることだし 本当にある程度動くもんができてるんだとしたら >やっぱ次元増やすしかないか >それでもメモリなんて今どきならあんまり気にしなくてもいいのだろうか >格子の目をどれだけ細かくするかによるんだろうけど こんなこと言うわけない ちょいと実験用のステージ作ってテストすればわかることだもんよ
いや作る必要すらないよ 必要な変数の見積もり出すだけでおk
そもそも着地してる面のシェーダーの種類によって足音を変えられたりはしないの? dxlibだと簡単にやってくれるんだろうけど、保存されてるシェーダー名とか分かるんだろ? だったらゲームの中で統一した名前持って・・・ って文字列の比較はご法度?
文字列による振り分け自体はご法度ってほどでもない 1フレームに数千回程度ならmapの文字列キーによる取得も可能 だがシェーダ名からそんな判別ができるかは知らん
直接シェーダから何か取り出すんじゃなくて、管理用の情報別に持っておけばいいって発想が真っ先に出るべき
なんかみんなややこしい事考えてるなあ もっと気楽に作れるものから順序立てて作ろうよ 背伸びしすぎじゃね?
シェーダーから読み込むっつーのがどうなのか知らんけど そんなにやりたいなら、毎フレームやるんじゃなくて 起動時にまとめて変換しとけばいいだろ。
多分経験無くてわからないまま、どこかで見た話だけを頼りにするから、無駄に複雑な方向に行くんだと思う どうしてもシェーダの出力結果を参照しないといけないなら、上でも言ってるように事前に生成して論理情報として持っておいて、 それを管理用として使うだけだよな
あと普通、シェーダの出力結果をCPU側で利用したい場合は、「シェーダから読み込む」んじゃなくて、 レンダリングターゲットに書き出した内容を使うよな。 例えばオフスクリーンのビットマップに書き出してそれを(画像としてに限らず)利用する。 ドロップシャドウなんかの処理書く時の影が落ちる場所の判定用に2パス処理するとかもそう
DXライブラリには今のところ縁の無い話だが DirectX10/シェーダモデル4から「出力ストリーム」っつって 頂点シェーダとかジオメトリシェーダの結果を バッファに書き出す機能がある 髪の毛とかの描画に使われてたはず
ゲームなんか作ってどうするのよ 周りのみんなは受験勉強やら自己啓発で資格取得やら親しい友人と親睦深めたりしてるのに ゲームプログラミングなんかしてても受験、就職、出世、何の評価にも繋がらないぞ しかも10年も経てば今やってることなんざ時代遅れの何の役にも立たない糞知識と化すの分かってるのに 時間とエネルギーの無駄遣いだったなTOEICの勉強でもしてた方がなんぼかマシ残念
受験勉強 ガキは巣に帰れ
じゃあ何でこんなスレに書き込んじゃうのさ?
このスレだけでも何度も見るけどこれってコピペ? どっちにしても同じことばっか言ってる奴に食いつくなよ
ゲーム製作のおかげで彼氏♂が出来ました><
私は27歳だけど、未だに彼女が居た事がありません。><
価値の無い人間ほど将来のために〜とか言って今の自分から目を逸らすもんだ
それはともかく
>>453 はコピペ
申し訳ないがホモを匂わすレスはNG
1フレーム中に2回Zバッファから裏画面に書き込むのってできますか? Zバッファ書き込み ↓ 裏画面に描画 ↓ Zバッファをクリア ↓ Zバッファ書き込み ↓ 裏画面に描画 って感じ。 具体的には、視野距離を長くしたいから 1000〜1000000のクリップのZバッファで書き込んだ後に 1〜1000のクリップのZバッファを上書きすれば実現出来ないかなーと。 あとEVEオンラインってゲームはどうやってんでしょうか
出来るんじゃね? 試してみたらいいじゃん
Zバッファ切ってカキ割りか低ポリメッシュの遠景描画してるだけじゃないん?
メタセコイア使ってる人いないかな? 手のフレームの取得関数が機能しない…どうやらモデルに座標入ってないみたいなんだよな、0になっちゃう モーションの方かもしれないけど、これじゃ進まなくて困った
フレームって、D3DXMESHで言うボーンの事だっけか
はい
手とか頭とかの区切られたパーツのことよ 手のフレームを取ると普通手のパーツの中心部が座標になる
>>465 0になっちゃうんじゃなくて、もしかしてそのボーンのローカル座標系の値が返ってきてるとか。つまり変化前だから常に0。
他にオフセットがあるんじゃね
なんかこんなこと聞くのも恥ずかしいけどさ みんなシェーダ書くときにfxファイル何のソフト使って書いてる? 俺はサクラエディタなんかで頑張ってるんだけど
メモ帳
>>470 同じ。サクラか、プロジェクトに含ませてる時はVCのテキストエディタ
要は、いずれにしろただのテキストエディタ
やっぱテキストエディタしか無いのか 俺みたいな統合開発環境慣れした初心者はドットとかでメンバ参照とかスペルミスの指摘が欲しくなっちゃう FX ComposerとかRenderMonkeyってどうなのかな
VS2012使ってる
補完の処理が働いているときに一瞬入力を受け付けなくなるのがたまらなくイラつくんだけど そういうことを気にしないやつってどういう脳の構造してんの
どういうこっちゃ 主語がないぞ
>>475 VisualStudio2012は快適だぞ
Eclipseは止まることもあるが、何使ってるの?
あぁVS2012のことか ウチのボロPCだとたまにあるな ちゃんとしたPCなら大丈夫だろ
モデルハンドルの上限ってきつくないか? エフェクトに3Dモデルを使おうとすると、65535とか速攻でなくなりそうだけど
エフェクトにモデル使うのが設計的に間違ってるぞ
エフェクト用のモデル一つ一つに個別のハンドルって言う設計が適当過ぎる
もうちょっと言うと、仮に 「星がキラキラっとランダムな位置に、微妙にタイミングズレながら現れて消えていく」 って言うエフェクトだとして、 その内容は三角板ポリに透過画像の☆のテクスチャ貼った物が、最大512個まで表示される仕様にしたとして、 普通はモデルの管理用ハンドルなんてどう作っても1つにすると思うけど、 これを見たままの 512個用意するような設計にしてたとしたら足りなくなると思うが、そもそもその考え方自体がおかしいって話。
そういうパーティクル的なものはVERTEX3DSHADERで頂点で管理するものかと
まぁ
>>482 の例で言えばポイントスプライト使うってのはそうだけど、例えばの話
そんなこと言ったって頂点なんていじったことないもん
頂点も弄れないのに3Dしようとするのが間違い
モデルがAngle3Dベクトルの方向に向いてくれません。どうしたらいいですか? ローカルでの正面方向は(0,0,1)方向です float rot = VDot(VNorm(angle3D),VGet(0,0,1)); VECTOR axis = VCross(VNorm(angle3D),VGet(0,0,1)); MATRIX rotMatrix = MGetRotAxis(axis,rot); MV1SetMatrix(modelHandle,rotMatrix);
acosが足りない
頂点をどうやっていじるのかすら分からない 解説サイトとかないよね…
これだけ読めばOKみたいなショートカットは無いよ。 MSDNの記事やリファレンスの解説見てもちんぷんかんぷんならもっと手前の文献当たって、 その文献見てもわからなければ、もっと手前の文献当たって。
頂点を弄るというか定義するというか DrawPolygon3Dでモミジの降るエフェクトでも作ってみればいい
>>491 MGetRotAxis(axis,acosf(rot));
だと思うけどその後のクォータニオンって自作しないといけないんじゃないの?
知らんくせに口挟むけど
>>493 ベクトルと軸ベクトルと回転率を与えることで、その軸で回転させたベクトルを返すっていう関数は作ったけど、
行列としては無い・・・
ん?というかMGetRotAxisがクォータニオンそのものなのでは
acosfやってみましたが向いて欲しい方向から垂直を向いています 短いコードなのになぜこんな・・・
やべえ3D全然わからん 基本わかってないから方向とかわけわかめになる MATRIX rotmtx = MGetRotVec2(VGet(0,0,1),angle3D); MATRIX mtx = MGetTranslate(モデル位置); mtx = MMult(mtx, rotmtx); MV1SetMatrix(modelHandle, mtx); 3Dやってる人尊敬するわ頑張って
>>497 ありがとう、わからないまんまだけど・・
出先のスマホからなんで試してないけど、意味的にはこうじゃね。 //dot積は平行度合いを返すだけ float rot = acosf(VDot(VNorm(angle3D),VGet(0,0,1)); //cross積は2つのベクトルに垂直なベクトルを返すだけだが、順序が違うと逆になる VECTOR axis = VCross(VGet(0,0,1), VNorm(angle3D)); //任意軸を中心として指定角分の回転を表す行列を返すだけ(回転成分のみ) MATRIX rotMatrix = MGetRotAxis(axis,rot); MV1SetMatrix(modelHandle,rotMatrix);
>>499 できたわ、Crossの順序が逆だったのか・・・
>>500 モデルが元々向いてる方向が第一引数で、それを、回転させる為の行列を得たいのだからって事。
順序にはちゃんと意味あるんだぜ
502 :
名前は開発中のものです。 :2013/09/26(木) 13:09:27.12 ID:6kYMS1uf
中HIGHドライブ びーるうまい オマエラ 仕事わー
いまいち外部ファイルの使い方が分からない abcって書かれたファイルを読み込んでもプログラム文にabcって入るわけじゃないのよね
スクリプトを実装したいってこと? Luaでも組み込んだら
読み込まれたファイルはメモリ領域に確保される それだけ
単にテキストファイルの中身を読み込みたいとかだと予想
abcって内容テキストファイルを読み込んだら abcって読み込まれるんだけど、何が違うのだろうか
メモリとか変数とかがわかってないんではないかな。
DxLib以前のレベルの質問が来るのはこのスレの宿命
>>507 std::ifstream ifs("hoge.txt");
読み込んでも何も起きないじゃないですか!
それまだ読み込んでもないしな
当たり判定で、座標が重なってる時って当たり外れどっちにしてる? 座標で言えば (0, 0)(1, 0) (0, 1)(1, 1) (0, 1)(1, 1) (0, 2)(1, 2) 図だと +-+ |a| ←こんな感じで重なってる時 +-+ |b| +-+
俺なら当たりにするかなぁ。 理由は1ドットの大きさ…… (0, 0)(0, 0) (0, 0)(0, 0) (0, 0)(0, 0) (0, 0)(0, 0) ……のような時のため?
>>513 なるほどねぇ
確かにプレイヤーの視覚情報になるドット視点で考える方が、体感的に矛盾も少なくなるのかな
あと、数学視点じゃなくてゲーム屋視点で調べてたら、
浮動小数点にガッツリ誤差修正入れてて境界とか曖昧になってるのが多いのねw
俺、今までSTGとか何本かリリースしてるけど、当たり判定なんて超いいかげんにやってるよw さすがに今日の1ドット判定がデフォな弾幕STGをしてるプレイヤーには「自機判定が大きすぎる」とか言われるけど、 自機弾が見た目の5倍くらい当たり判定持ってることについては誰も文句言ってきてないw
>>503 初心者の俺がエスパーすると
DrawFormatString( 0, 0, GetColor( 255 , 255 , 255 ), "hoge") ;
こんな内容の外部ファイルがあって
読み込み関数の直後にこんなプログラム文を挿入するみたいに
読み込み直後にDrawFormatStringを実行出来るってのなら便利なのになー
って考えだと予想
まさか、includeの話だったのか
>>515 こんなこと言う作者の作ったSTGなんてやりたくねえなぁ
> 自機弾が見た目の5倍くらい当たり判定持ってる プレイヤー側に爽快感を与えるためのテクニックとして定番だな ほとんどのプレイヤーは、当たり判定が厳密かどうかなんて気にしてない
自機グラフィックより大きくない限り「このゲームのあたり判定はこんなもん」って思うようになるだけだと思う
当たってないように見えて当たる、よりも 当たってるように見えて当たってない、方が プレイヤーに与えるストレスが少ないってベーマガに書いてあった。 ピクセル単位で当たり判定するのは、それ自体が売りになるケースだよね。 レミングスの地面判定とか。
インベーダーのようなゲームで 弾の通り抜けが困る、平面なのにジャンプしちゃう。 これをキチンと処理しないといけない。
通りぬけの処理をするより通りぬけしないような速度と判定の大きさにするべき
個人制作ゲーで通りぬけが起きると一気にバギーなイメージになってモチベ落ちるよね いかに安定したクオリティを感じさせるかも腕の内だろうか
前フレーム座標と直線で結んでその直線との当たり判定を見るってばっちゃが逝ってた
なんか最近急にゲームを起動すると数回に一回の割合でフリーズして強制終了するしかなくなる 現象が起こるんだが他にも似たような現象起こるやついるか?
それだけの説明で理解できるわけないだろ。 DXライブラリを最新に更新したら、とか条件があるならまだしも。
それもそうだな。とりあえず以前のバージョンに戻して検証中 他に分かってることはDxLib_Init()を呼び出した直後にフリーズするってことくらいかな
>>526 Windowsメッセージを送ってないとか?
以前このスレで VMのwindows内で起動したらマルチメディアタイマーの精度計測に失敗して 起動しなかった、っていう事例があった気がする まずはログを見て、起動処理のどこで止まってるか 確認するがよろしかろう
恐らく原因はこれだと思うけど一か月以上前に作ったやつだし今まで平気だったのにな 起動時の設定をダイアログボックスでやる際のウィンドウ処理とかが関係してるみたい。・・・多分。
直ったと思ったら直ってなかった・・・ ログはwindows/syswow64/wer.dllを読み込みました。Cannot find or open the PDB fileで止まってた 再起動してデバッグしたら ファイル追跡ログ ファイルに Unicode バイト オーダー マーカーが見つかりませんでした。って出た いっそのこと起動部分を作り直してみるか・・・
全部コメントアウトしてもダメだった・・・止まってる場所も変わるみたいだし もうお手上げだな。いっそのことVC2012に移行してみるか・・・XPに対応しなくなるけど
全部コメントアウトしてダメだったって事は 予想してた箇所は全くの見当違いであって 他にもっと単純なバグがある、って事じゃないのかな。
毎回エラー箇所が変わる状態になって最近書いた部分見直したら 配列オーバーだったってことなら一度ある 今はなぜか宣言追加しても生成されないバグに悩まされてる 例えば新しくint x;x=1;って書いてデバッグするとxが値もポインタももってない リビルドすると直る この症状に原因あるなら教えてください
コンパイルに含めない設定になってるとか
>>531 「これ」って何?
>>533 ログってIDEの出力ウィンドウじゃなくてDxlibがexeと同じ所に吐き出すログの事だぞ。
>>534 「全部」って何?
新規プロジェクトを作って、そこに今までのソースファイルぶち込んでみたら、 何事も無かったかのように動いたって経験もあるので、どうしてもダメだったら試行の候補にでも追加しておくれ。
>>533 Windowsアプリケーションは
約60分の1秒の間隔でWindowsにメッセージを送り続ける必要があります
メッセージを送らなくてもプログラムは起動しますが
その場合、動作がどんどん重くなり誤動作を起こす原因にもなります
ゲームが重くなる、起動するだけで現象が起こる
それらの状況からWindowsメッセージではないかと思いました
1フレームという間隔で送り続ける必要があるので
60フレーム(1秒)も送らなけば、もう完全に重たくなるのではと
>>534 引っ張ってるライブラリ、パスの通ってるライブラリについて、
32bitと64bit混在してないか?
> Cannot find or open the PDB fileで止まってた
↑これが気になったので。
>>541 少なくとも1分以上狂ってはいない
発生回数は今のところ3回
1回目のとき3時間くらい時間使って諦めてリビルド
原因放置はしたくないけど後回しにしてた
単純に、特定の条件で無限ループに陥ってるとかそんなバグじゃないのかな。
デバッグ中forやifでエラーでて止まるってエラーが最初(結論はint nが生成されずnが見つからない) また起きたら宣言初期化周りもう一度調べてみるよ 現象の検証ばっかしててあんまり見てなかった気がする ヘッダ含めて生成されないんだから最初のInitialzeまでかnewまわりに原因があるはずだよな
どうせメモリを壊してるんだろ ポインタを理解してないクズが
ウィンドウ外に画像を描画する処理とウィンドウと画像の当たり判定調べて描画の有無を判断するのってどっちが処理速いの? 描画コストがどのくらいかかるのか全然把握出来てないのだけど
その辺は気にせずともDirectXがいい感じにやってくれてるはず。
3Dモデルを画面に表示させたり、 キー入力に合わせて回転するみたいな簡単な事はできるようになってきたけど、 設定メニューとかのようなGUIが作れない。 そもそもどう作ればいいの? ダイアログに表示するような釦を用意するだけで手間なんだけど、 全部自作してるの?
>>548 そうなのか…
下手に弄るよりは任せた方が簡潔に書けるね
>>550 純粋に表示だけならレンダリング処理のパスが省略されるはず。
ただゲームプログラミングで考えた時、裏で自分でしてる論理処理の方は視界の外の部分は省略したりするよな。
「重さ」のネックは大抵そっちにあるから。
ライセンス取るのが辛い なんでこんな仕様にしたのか
ごめんね誤爆なの
3dで、カメラの後ろ側にあるオブジェクトは、画面のドットから飛ばしたレイの衝突判定対象にする? カメラの真後ろにあるオブジェクトに対してレイを飛ばした時の判定なんてほぼ無駄なわけじゃん
>>554 まず対象オブジェクトがカメラの後ろにあるかを判定する必要があるけど、それって結局レイ飛ばすなり「平面-オブジェクト」で判定するわけじゃん。
で、その後レイで衝突判定とるの?
他の処理の都合であらかじめオブジェクトがカメラの後ろにあるかどうか解ってる特殊な事情が絡まない限り、全探索するしかなくね?
カメラの位置と方向ベクトルに対して、明らかに表示角の外にいる物は、 より細かい計算するより前に対象外として一律処理スキップとかするけど俺
>>554 画面のドットからレイ飛ばすってのがなんか引っ掛かるけど、俺は表示物じゃなくて論理管理レベルでの計算で
>>556 する。
俺が初心者で無能なだけかもしれないけど
>>554 って環境マップとか使って擬似的な反射でも考えない限り全く無縁の話じゃないの?
光源が後ろにない限りカメラより後ろのオブジェクトが描画結果に影響することはないんじゃない?
乱反射の部分は環境光ってファクターで擬似的に表してるんだし
っていうか
>>556 の方が効果は大きそうだし
描画時間計測したことあるけど、ライティング関係の処理はDirectXだかDXlibだか分からんが自動で弾いてくれてるっぽいぞ
ビルボードを視野外(近く)に置いたときと、視野内の無限遠に置いた時がほとんど同じで、視野内の近くに置いた時より格段に軽かった
的外れの恥ずかしいレスじゃありませんよーに
>>558 それって、レイトレースとかの文脈のレイ?
>>554 の言うレイは普通の半直線の事を指してると思うんだけど。
DXライブラリスレでレイトレースとか出る話題じゃないし…。
マウスクリックでオブジェクト選択みたいな処理を実装するために半直線と交差判定取ってるんだけど、
カメラの後ろにあるオブジェクトまで交差判定とるのって無駄じゃね?
って話だと思ってたけどあってるよね?
あと
>>556 のカメラの位置と方向ベクトルでプレ処理って話だけど、
位置ベクトル+方向ベクトル=平面
だよ。
要するにカメラの後ろ=nearクリップ平面の負の領域ってことだし。
if ( !CollidePlaneObject(nearClipPlane, obj) ) return; // プレ処理(カメラの後ろにあるか判定)
if ( !CollideRayObject(ray, obj) ) return; // レイ交差判定(本ちゃん判定)
って感じだと思うんだけど、平面-オブジェクトの判定とレイ-オブジェクトの判定って計算的に殆ど同じだから、
最初のプレ判定あんま意味なくね?計算省いてるようで実は二重に計算してね?
というのが
>>555 で言いたかったこと。
ウィンドウモードで起動時に ウインドウ枠の「×」をクリックした時に DxLib_End関数を評価させる方法はないでしょうか? それとも「×」をクリックして終了した時に 自動的にDxLib_End関数が評価されるように設計されているのでしょうか?
>>560 二度判定されるのは事実だけど、無駄じゃない。
複雑な形状を持つオブジェクトの中身に対する細かい判定とは別に、
そのオブジェクトが置かれるグローバル座標を原点とする半径や最大立法体で判定して、先に一回「明らかな範囲外」を落とすんだよ。
実際に運用されてる有名な例で言うと、bulletphysics等がそう。
ちなみに
>>560 のように「意味無くね」って思う事があるとしたら、初歩的な立体しか扱わず、
視野内での計算と視野外での計算が完全に同じで事足りるケースだけ
>>559 ひいいドットから出るレイとか言うからレイトレーシングの方だと思ってた恥ずかしい
このスレって突然DirectXの話題になったりCの話題になったり結構カオスだから勘違いしてましたごめんなさい
テクスチャじゃない加工済み3Dアニメーション(例 爆発エフェクトとか)って描画どうしたらいい? 1加工済みアニメを3D空間or画面に2D描画(ペラペラだけど我慢orカメラとの角度固定) 2加工済みアニメを透明なマテリアルにテクスチャアニメーションとして張り付けてx→3D描画 3アニメーションまで読み込んでその場でエフェクトを作る 今まで視点固定なので1で作っていて、次は3D視点のものを作ろうと思ってて、描画方法考えています。 2そもそもテクスチャアニメーションをx化できるのか、あと球の中心とかあると張り付け不可。 3リアルタイムの負荷&処理方法実装の難しさとか、シェーダの延長でなんとかするしかない? 先人様がいらっしゃれば知恵を分けてほしいです。
3Dゲームでエフェクト(爆発表現)の仕方
1)カメラ固定で2Dゲームのように見える場合に爆発連続2Dアニメを2D画面に描画する。
2)カメラが自由移動するフル3Dゲームにおいて、板ポリゴン上に爆発連続2Dアニメを表示する。
3)3Dゲームで爆発表現を3Dで表現する。
色々あるけどね、
@ビルボードを使うのが良い。スプライトを使って、3D場所の関係で大きさを変えて
2D画面にスプライトとして爆発2Dアニメを表示する。単純で効果的。
A板ポリゴンに爆発2Dアニメを描画するのもありだけど、光の放射反射などの影響が大きい。
Bポリゴンだけで爆発を表現する、これは計算でポリゴンを動かすので
表現方法として有りだろう。地味な表現になるから、シェーダを加えたくなるだろう。
Cシェーダーで表現するのが最新式だが、古いPCだと動かないかもしれない。
派手な演出も出来るし、最終的に2Dの部分での演出もできる。
以上が一般的な手法です。
簡単で効率的なのが、スプライトによるビルボード手法。
色々な方法があるから、試してみると良い。場面によって違うだろうからね。
ここに、エフェクトのデモがある。参考になるだろう
http://www.sbcr.jp/support/8594.html
PSレベルなら板ポリに画像貼るって分かるけどPS2レベルになるとわけわからんよね あとシェーダーシェーダー言われるけど意味が全く分からない シェーダーってどこかで落とすツールか?って感じ
「シェーダで」って言うのは「プログラムで」って言う意味と作業場所以外変わらんから説明不足感すごいよね
PS2も大差ないだろ 基本的に板ポリの量が増えるだけ
>>556 詳しく説明&サンプル感謝します
開ける環境に戻ったら勉強します。
しばらくビルボート式を用いて、他のことも含めて余裕がでてきたらシェーダを学ぼうと思います。
何年後のことやら…
>>568 腕を重点的に鍛えたいけどどうすればいい?って聞いたら筋トレしろって言われるのと同じだよね
ここ以外でもシェーダーは具体的なの見たことないな
>>572 OpenGL関係のスレとか、さもなきゃ書籍でも見たらいいのでは
一応補足しておくと、OpenGLのglslとDirectXのhlslは別物だけど、考え方は同じだよ
あ、スレじゃなくてサイト。素でtypo 何も知らない状態で待ってても見かけないと思う。 例えればプログラミングの基礎編にある物じゃなく、必要な人が利用する応用編の範疇の世界だから
俺なんて爆発表現は球体ポリゴンに、それっぽいテクスチャ拾ってきて材質設定して貼るだけだぞ で、エフェクト中は球体を回転させながら透明度だけ弄る 頂点を操作するアニメーションなんてできないし
>>512-513 亀だけど、それ当たりで考えるとビリヤードのブレイクショットの配置みたいに
静止しててくっついてる状態でちょっとめんどくさくなると思う
接触してる相手の運動ベクトル見て振る舞いを決めればええんや
>>575 もう板ポリのテクスチャ変更して3Dドットみたいにしちゃうのか
試してみよう
3次元の音響ライブラリってないですか? 音を拾う座標指定して、音量とか減衰率とか反響とか設定できて簡単なやつ
なんでそれをDXライブラリスレで聞くんだ? それはともかくとして、そんなライブラリがあるとしたらXAudio2のラッパということになるだろうけど、そんなのは現在ないっぽい BASS Audio Libraryという3Dサウンドの使える比較的シンプルなライブラリがあるっぽいが、 日本語のドキュメントは殆どと言っていいほどないみたいなので自力で調べられない人には使えないだろう
>>579 この本に具体的に解説してあるから、実装しなさい。
DirectX9必携: 鎌田 茂雄: 本
C#+DXライブラリでやってるんだけど スクリーンに黒色で塗りつぶしたところがDrawGraphで透過Trueにしても透過しない なぜじゃー
ブレンドモードは?
584 :
名前は開発中のものです。 :2013/10/16(水) 23:55:26.73 ID:09GDCNSk
DxLibを利用した開発で、デバッグしようとすると 数度に一回マウス以外完全にフリーズしてしまいます。 VSの一番下部の青い所がF5を押してデバッグ開始するとそこがオレンジになって、 そこに AudioSes.dll シンボルがどうたら と表示されて読み込み中?のまま、マウスポインタは動かせるのですがそれ以外の動作ができなくなります。 タスクマネージャーの起動もできずになって直接電源切るしかなくなります。 このままではHDが死んでしまいそうです。 何が原因かわかる方いらっしゃいませんか? ぐぐっても、似たような症状の方は見つかるのですが 解決策が出てないのしか見つからないです。 VS Express for Desktop利用です。 windows7 64bitが問題なのかともおもうのだけど。
俺が遭遇したことあるトラブルはエレコムのUSBパッドくらいだな
なめとんか
>>584 DxLib関係ないと思うが
システムごと死ぬのは十中八九デバイスドライバが悪い
64bitなら32bit用のドライバで動いてる奴が悪さしてるとかひょっとしたらあるかも
Noblendだと透過色って機能せんの? ドウイウコトナノ・・・
透過シナイ画像表示関数ッテ存在価値アルノ? 画像全体に透過処理するんならモード変えろ
数レス前も読んでなかったすまん… 諦めて最初から透過しとけば?
いろいろ試してみたけど透過色はBMPとJpg読み込みのときだけ機能して 他のスクリーンやスクリーンをGetDrawScreenGraphでMakeGraphでつくったハンドルに移しても機能せず アルファ付き画像でアルファ指定してやらんと透過せんのね 微妙すぎぃ
GDIのフォーマット(pixel辺りのビット数)についてちゃんと理解した上で扱ってれば特に問題無い気もする
面倒だけどマスク画像作って一回ブリーチングしてから描画することにしたわ サンクス
595 :
584 :2013/10/18(金) 02:10:22.43 ID:Fdn5BT6n
>>588 DxLib使わなければ固まらなかったんでそこばっかり調べてたのですが、
なるほどと、いろんなものアップデートかけたけど状況変わらずでした。
解決ってわけじゃないけどBCCに移行したら
一時間くらい作業してみてるけど再発せず。
VSが悪かったってことなんだろうか?
ただ、すげー使いにくい。
最小限のプログラムでも発生するなら、そうかもねー。 設定変えればいけるかもしれんけど
597 :
名前は開発中のものです。 :2013/10/18(金) 18:23:23.35 ID:N5DQXWku
え、DXライブラリって、 64bitか32bitかで支障あるん? 64bit用なんてありましたっけ?
VSのExpress版使ってると64bitビルド出来ないから32bit版しか知らない
599 :
584 :2013/10/19(土) 00:04:03.03 ID:QcOl7SCF
>>595 自己レス。
おそらく本当に解決したので一応ご報告。
BCCでも固まりました。
というか、デバッガで固まったのでそこを重点的にぐぐったら、
同様の症状でDRM関連のCYMON.SYSを消したら直ったというページを発見出来たので、
削除したらおそらく今度こそ本当にたぶん解決。
同様の事案で悩んでる人たちに伝えたい。
>64bit云々は同様の件で困ってる人がほとんど64bitのOSだったので怪しんだだけです。
結果的に関係なかった。
DxLibも関係なかった。
乙 結構有益な情報だわ
サイモンシスって読めばいいの?
Are you going to Scarborough Fair?
初心者です よくリファレンスでFPS固定させるコードとかあるけどSetWaitVSyncFlag()で垂直同期するんじゃだめなんですか? あとFPSによってゲームスピードが変わる云々という記述を見ますが、何故フレームで計算するんです? 私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか
>SetWaitVSyncFlag()で垂直同期するんじゃだめなんですか? ダメ。垂直同期がない環境もある >何故フレームで計算するんです? 時間に応じて可変フレームに対応するゲームを作るのは大変だから >私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか パーフェクトに組めるなら問題ないけど、初心者には無理だと思う あとです?で止めずにちゃんとですか?って書けよデコスケ
>>604 >時間に応じて可変フレームに対応するゲームを作るのは大変だから
何故ですか?可変フレームなら尚更フレームで計算より時間で計算した方が良いと思うのですが
あ、この場合の計算って言うのは例えば○秒で画像Aをy軸に+1するみたいな計算です
>>605 フレーム固定処理ってのは○秒の部分を16.6666...ミリ秒に固定してるだけだぞ
一定時間毎に処理するならフレーム処理と変わらない
回せるだけ回したらマシンパワーの無駄食いだから
たぶん質問の書き方がおかしくて話が伝わってない FPS固定よりも可変フレームレートの方が良い 開発が少し面倒くさい程度で、デメリットがない 垂直同期はテアリングが起きないのが最大の利点 ただしフレーム数がモニターに依存するようになるから 結局可変フレームレートに対応するようなプログラムを書く必要があって面倒くさい だから最も初心者向けサイトは基本的に 作りやすい60FPS固定にしてフレーム基準で計算するようにしてる しかもデメリットは垂直同期しないために起こるテアリングくらいしかない
そもそもフレームってそんなに重要なもの何ですか? DXライブラリ使っててフレームレートを意識した事が全くなくて、リファレンスなどを見て何故そこまでしなければいけないのかと困惑している次第で
フレーム数を時間代わりにすると環境によってはカクカクになります?
可変フレームレートって、ネトゲでもなきゃCPUが貧弱だった頃の名残じゃないのか? 処理落ちするとしたらほぼ確実に描画が原因な今の時代だと、固定フレーム+フレームスキップがベターだと思う
フレームスキップじゃないな 固定フレーム+描画スキップな 世の中のゲームの大半が60フレーム固定なのにはちゃんと理由があるわけで ・60フレーム以上のフレームレートにしても、人間が見るぶんには特に滑らかだと感じない ・CPUが成長したので処理で60フレームでないゲームなんてありえない 作るのが動的なゲームである限り、固定フレームを捨てるメリットはないというのが俺の持論
60フレーム出ないゲームなんてありえないって言い方はおかしいが、 とりあえず言いたい事はわかる
60フレームを確保しているのは、ゲーム機の格闘ゲームくらいです。 ゲーム機で他のジャンルは ほとんどが30フレーム パソコンの場合は、強力なPCもあれば、非力なPCもあるので 色々な手段を使って、最低限のフレームレートを確保しようとする。 また、負荷変動が多々にあるので、それに対処する必要も或る。
たいして難しくないんだからFPSと垂直同期くらい設定可能にしておけよw
>>609 何を質問したいのかがよくわからない
可変フレームレート(時間単位での処理)でできてるならそれで大丈夫だよ
>>612 60フレームと120フレームでは明らかに違うから見た瞬間にわかるよ
120と240は俺自身は比べたことがないけど恐らくそれも感じ取れるだろう
実際に今のテレビのほとんどが240フレーム表示を採用してるからね
2万のネットブックとかで動かすユーザーなんかが絶対にいるから
ゲーム用PCで1000fpsくらい出せるようなゲームでも、20fpsとかになることはざらにある
正直60でない化石の配慮なんて無駄 広大な3Dマップを切り替えなしのリアルタイムで読み込むタイプならあって損はないかもね 60より必要あるのはレート120やら144やら使う格ゲーFPSガチ勢くらい それ以外のジャンルなら頭動かすだけ無駄 やりたければ勝手にどうぞの世界
これでも十分勉強になるのですが
私が言いたかったことは
例えばここの
http://dixq.net/g/03_02.html while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
DrawGraph( 0, Count% 50, Handle, TRUE ); // 周期 50カウント でループ表示する
DrawGraph( 100, Count%100, Handle, TRUE ); // 周期 100カウント でループ表示する
DrawGraph( 200, Count%150, Handle, TRUE ); // 周期 150カウント でループ表示する
Count++; // カウンタ加算
}
こんな処理をしたとして「PCスペックによって時間が変わっちゃうからFPS固定しよう」とか言ってるなら最初から時間測れば良いのでは?
と思ったって事です
初心者はやっぱり明後日の方向で悩んでるから怖いな そんな単純なもんじゃないから、フレーム固定で作っておけ
パソコンの負荷は一定では無く、不規則に変動するのですよ。 それが、個別に全部が違う挙動をする。
リフレッシュレートは60や120だけじゃなくて50や75や72や85もあるんだぞ ズレるわ
>>618 そのサイトは初心者向けだから可変フレームレートは難しい
また、その章までに書いたプログラムすべてを変更する必要がでるから避けてるんだよ
>>608 にも書いたけど時間を計って可変フレームレートにするのは良いことだよ
一応処理落ちについての話題が出たから例として触れておくと、
極端な処理落ちが発生したときに可変フレームレートだと衝突判定のすり抜けが起こることが
予期されるからそれを防止するためのメカニズムを考えないといけなかったりとか
とにかくプログラム書くのがFPS固定に比べて面倒くさい
FF3のエンカウント時エフェクトみたいな 1フレーム毎に画面が白黒⇔カラーを繰り返すみたいなエフェクトを実装するとき 可変フレームレートだと白黒のままになったりカラーのままになったりで おかしな表示になるんじゃないんですか
面倒くさいどころか逆に負荷が増す場合もあるぞ カーブとか重力を考慮した移動とか複雑な移動処理をするなら 完全な再現性を実現できない限りは可変フレームレートなんて採用すべきじゃないと思うな ネトゲやFPSだって、発生した事実関係だけをサーバに送信して無理矢理辻褄合わせてるだけだし
FPS60に固定する
↓
予め1フレーム過ぎる毎にint countを+1しておく
↓
あるアクションから一秒たったら画像を表示させたいから
アクションおこした時にint a = countする
↓
count - a > 60の時に画像を表示
みたいな説明があって
countの代わりにGetNowCount()を使えばfps固定する必要なんてないと思ったと言おうとしました
説明下手でごめんなさい
>>623-625 なるほど
まだそんなレベルに達していなかったので面倒くさいとも思いませんでした
ありがとうございました
>>625-626 微分方程式を解ける秀才がこのスレに降臨したかと期待したが、ただの初心者だった
>>626 ああ、それは勘違いしそうになるな。説明が不適切とまでは言わないが。
1秒後(あるいは60フレーム後)に画像を表示する、くらいなら正直どっちでもいいと思うけど、
秒速120ドットで移動するとかだと少し面倒になるって感じかねぇ。分母が変わっちゃうから。
固定/可変フレームレートの問題というよりも、>626の場合は、 ゲーム内時間をフレーム基準で考えるか、実時間ベースにするかって問題だよね。 フレーム基準というのは、つまりゲーム内時間をプログラマが管理できる状態と言い換えられる。 それに対して、実時間を基準に処理を行うというのは、ゲーム内時間にプログラマがアクセス出来ない状態と言える。 この差は結構重要で、プログラミングをする際に1つの処理を細かく積み上げて考えたい時や、 あるいはテストプレイやデバッグの際に、ゲームスピードをゆっくりにして動作を見極めたいという時に、 実時間ベースだと不便そうだなあというのは、何となく分かってくれるんじゃないかと思う。 もちろん実時間ベースが優れてるところもあるので、決して間違いではないのだけれど。
dxライブラリのfps制御そのまま使ってるけどよくない? 1秒を60フレームって前提でゲーム内のタイマー作っちまってるわ
オンラインランキングとかしないなら、そんなに困らないと思う
可変フレームで気になってたんだけど 環境によってfps変わってたらリプレイの再現できなくない?
処理のループはfpsに制限されないでしょ 動きが荒くなるだけじゃない?
マリオカートのゴーストとかどう記録してるんだろ と思ったけど処理したときついでに時間記録すれば普通にできるか
やってみそw
ゴーストとかリプレイを実装しようとして、「なぜずれるんだー」と頭を悩ますのはお約束だよな? な?
処理時間≠入力時間に気をつけて処理させれば固定と同じようにやればいいだけ ずれ誤差怖いから実体の位置を入力時間ごとに別で取っておいてそこから計算させた方がいいかも? 使う処理が1つで済む&信頼度高いけど情報量が膨れそう とか妄想したけどジャンル的にリアルタイムリプレイなんて一生実装しないだろうな
低レベルな話ほど長く続くね
そりゃ母数が違うからな
確かにゲームプログラム全体の中では低レベル寄りな方だよな。vsyncとか。
自転車置き場の議論なら誰でも参加できるからな 俺のように高レベルな人間になると議論する相手を探すのも苦労する
バカばっか
>>641 多分ツッコミ待ちなんだろうけど、どこへツッコめばいいのかわからんw
冗談にマジレスはあかんでー
自作中のゲームがウィンドウモードと比べて全画面モードの処理速度がどうしても遅いのですが 他のdxlibを使ったゲームはウィンドウの方が不安定だったりするのになぜでしょうか… 2D表示機能のみで、主な設定関数は SetGraphMode(800,600,16) SetDrawScreen(裏画面) SetDrawMode(バイリニア)//ゲーム中変更なし 処理としては、描画に加算・減算切り替えが多め、背景の計算がやや複雑といった感じです 全画面モード中はこの処理が重い、といったことはあるのでしょうか?
リリースで測った?
特定のビデオカード(や設定)と相性が悪いとか、 解像度を変えるのではなくウィンドウサイズを上げてるとか…… うーん、わからん
過去の記憶ではリリースビルドでも遅くなっていました(計測はしていなく今リリースビルドしたらデバックビルドでは出ないエラーが出て改善できず、計測できませんでした) 音楽に合わせた演出がゲーム最初にあるのですが確実にずれていました デバックビルドで計測しましたが、ウィンドウだと13ms、全画面だと17msでした screenflipで差が出るようです
17のほうが正常だそれ
650 :
649 :2013/10/22(火) 22:34:58.08 ID:o/EMSDRG
正常、って言うと語弊があるな。訂正。 たぶん、モニタ&グラボのリフレッシュレートが75Hz(≒13ms)になってるんじゃないか? で、フルスクリーンにするときに、プログラム側で60Hz(≒17ms)に設定しているんだと思う
おお、モニタの情報をみたら75Hzでした では全画面モードが遅いのではなくウィンドウモードが若干早送りされてるということですか! これを抑えて調整し直します。ありがとうございました!
まさにタイムリー
てか、普通ゲーム作るならFPSぐらい表示させないか 常にCPU負荷とFPSぐらいは見れるようにしとかないと・・・
FPS固定でウィンドウモードに対応させたい時、タイマーで制御すれば良いんだよね?
手元に60Hz以外に対応してるモニタが無いから、ホントにそれで合ってるのか分からん。
>>653 CPU負荷は表示させたこと無いなあ。Win32APIあたりから拾ってくるのん?
垂直同期するなら経過時間で処理する 垂直同期しないならWaitTimerが都合よく動くことを祈る
>>654 単純にwait処理以外の時間を1秒間ms単位で足して1000で割る
で良いんじゃね
垂直同期待ちしてる場合はScreenFlipもwait処理として考える
ああすまん、タイマーによるフレーム制御自体は既に実装済み(vsyncと切り替え可能)ではあるんだ。 ただ、手元に60Hz以外の環境で確認するすべがないのと、 もしかすると、もうちょっとスマートな方法があるのかな?と、ちょっと気になっただけなんだ。 まあ、タイマー制御もvsync待ちも切ると500FPSとかで動いたりするから、大丈夫だろうとは思うんだけどさ。 デフォルトはタイマー制御にしておいて、コンフィグ画面なり起動時のダイアログなりで変えれるようにするのがベストかな?
vsyncかタイマーか、設定できるようになってればどのみち問題はないだろう
描画処理は別スレッドにしてvsync固定
んー?よくわかんないんだけど 例えばモニタが60fpsだったら、描画スレッドを60fps(vsync?)にして、 処理スレッドと描画スレッドはどうやって同期するんだ? 処理スレッドが座標いじってる時に描画スレッドが座標見るのはダメなんだよな? まぁ早々ブッキングはしないだろうけど何万回転とかしたら・・・
>>660 それは一旦fpsとかその他の言葉を忘れて、マルチスレッドでの同期処理を書いて理解した方がいい。
てか、ドライバ書いてる訳でも無いのに垂直帰線期間の話が出て来る事自体が、あんまりリアルじゃない。
30年前の8bitマシンならともかく、今のマシンでアプリレイヤの話ならばちょっと変だ。
垂直帰線期間の考慮が必要になるのは、例えばDirectXやOpenGLそのものがその中で行っている最後のラスタ情報のVRAMへの転送処理の中の話であって、
普通は(アプリケーションプログラマは)メインループの経過時間差を見てfpsをコントロールする。
具体的には一定経過時間未満の場合に処理をスキップさせる。
もしもこの周辺処理をマルチスレッドで実装したい場合に、意図的な同期処理が必要になるが、そういった場合にマルチスレッドでの流儀で実装する。
そうでないなら単にメインループの中で、普通に処理するだけ。
こういった話はより具体的にしないと、ただの曖昧な聞きかじりみたいな話で終わってしまい、全然役に立たない。
経験から引き出して実例として話さないとダメ。
>>660 の質問に答えるのにその長文はいらんだろw
本人が必要性感じてない段階でわざわざマルチスレッドとか要らんよ
じゃあここにいる人たちはみんな組み込み系の専用モニタ使ってドライバからゲーム作ってる人たちなの?
ドユコトー
極端過ぎる
なんでいきなりそういう話になったの? 誤爆か?
そうだよ(適当)
2D横スクロールアクションを作っているのですが、 マップスクロールを「キャラを中心にスクロール」、 「画面端はキャラだけ移動」という一般的な方法を 採用していますが、画像がブレだかボヤケだかの描画に なってしまいます。 ・キャラを中心にスクロールしているときは、背景のマップが ぶれる(ぼやける) ・画面端でキャラだけ動いているときは、キャラが ぶれる(ぼやける) スクロール方法は下記サイトの方法で実装しています。 aidiary.hatenablog.com/entry/20050624/1255786339 スクロール中にキャラやマップのぶれを少なくする方法は 何かないでしょうか。
それ単純に座標計算が1ドット〜数ドット分ずれるバグがどっかにあるだけで スクロール方法関係ないんじゃない?
なんと表現していいのかわからないのですが、 ブラウザとかでも高速でスクロールさせると文字や画像が 残像する、あのような感じです。 <キャラを中心にスクロール中> マップに残像が発生しますが、キャラはくっきり描画 されます(アニメーションしてても)。 <画面端でキャラだけ移動しているとき> マップはくっきり描画されますが、移動中のキャラは 常に残像が発生します。 ※参考にしたサイトのサンプルプログラムでも 同様の残像が発生します。
バグじゃないとしたらテアリング?
673 :
名前は開発中のものです。 :2013/10/26(土) 07:26:17.12 ID:6YbVuCZu
アンチエイリアス切ったりしてみたら?
674 :
名前は開発中のものです。 :2013/10/26(土) 08:51:17.35 ID:/uNZ0zLg
単にクソモニタなんじゃないの?
>>671 URLの先見てないけど、普通に真っ先に思い付くのはダブルバッファリングしてるかどうかだと思う。
で、多分してないんだと思う。それだけの事かなと
普通、2Dアクションとか作る時って「ちらつき」を出したくないからオフスクリーンバッファに書き込んでから、 最後にそのバッファを画面へ送る。 真っ先にその話が出るべき
まずスクリーンショットを撮ろう 撮ったスクリーンショットがおかしかったらゲームが悪い だがこの場合、多分モニタの残像だろう PSPのゲームとかでも残像起こってるだろ? ショボイモニタだとドットの色切り替えが遅くてモヤっとした残像が残る 液晶モニタ使ってるならそれが正常な状態だからそのままでいい 自分のテスト環境で発生するのが嫌なら、CRTモニタか、性能のいい液晶モニタを買うしかない もしくは、作ってるゲームが30fpsだったなら60fpsで組めば多少はマシになる
問題なし 環境だね
ブラウザのスクロールで残像発生してるって言ってるし 相当クソなブラウザを特別に使ってなければ環境
ビデオカードのドライバかモニタの問題だろう
目を通したっぽいしもう終わりでいいな
しかし、他人の質問を勝手に別スレに貼るとか 教えてGooの擬人化みたいな奴だな…
C#版でコリジョン関数や参照用メッシュ関数使うと例外出るから 修正してたら一日終わった・・・
有意義な一日じゃん。
ff14やってたら生産(脳死作業)で一日終わった
IDEの挙動がおかしくなったので、原因究明と再インストールで復帰に3日かかった…
Eclipseはどうしもない糞だよな
Visual Studioも依存するライブラリが破損すると全く動かなくなる困ったちゃんになることもある
そんなのeclipseに比べたら微々たるもの
Eclipseで困ったことなんて一回もないな そんなに糞だと思うならNetBeansなり IntelliJなり好きなの使えばいいのに
Qt使いの俺に死角はなかった
こっちを向いてよハニー
( ゚д゚ )
こっち見んなw
( )
キューティーハニーって気づいて無い人も居そうな雰囲気
ねえムーミン
701 :
名前は開発中のものです。 :2013/11/02(土) 03:30:34.86 ID:Ut0q1ayZ
VS2013Expが出ちゃったけど対応してるのかしら
2010でお腹いっぱい
描画リストというのを作って描画を管理しているのですが、ブレークポイントでは値に異常が見つからないにもかかわらずゲームを起動するとモデルが描画されていません。 どうしたらいいですか? mv1ファイルを読み込み 座標・回転の設定・更新 描画リストへ登録 描画リストが各クラスへ描画する関数を呼び出し 描画リストを初期化 最初に戻る これら一連の流れで値に異常が見つかりません エスパーいたらお願いします
ありがちなので、モデルが視界に入ってないとか(座標、クリップetc) スケールの初期値がおかしかったり
・まずいままで任意の三次元空間に配置したモデルを普通に描画させた事はあるか ・次に、あるとした、それらを単に「おまじないで出来た」じゃなく意味わかっててやれたのか ・次にカメラの位置や角度とモデルの位置はあってるか ・次にシェーダ使ってる場合、シェーダ内のエラーちゃんと拾ってるか。計算は合ってるのか ・使ってないとしてマテリアルやライトはどうなってるか 確認点いくらでも出てくる
DXライブラリ初期化前にロードしてると映らなかったりする
↑のサイトはいつも自演してるkazukiのサイト 騙されんなよ
名乗ってるし別にいいんじゃね ちゃんとコテハン付けてくれるとなお良し
いつの間にかシェーダー使えるようになってるけど お前らちゃんと使いこなしてる?
クラスの中で関数ポインタを持つ構造体定義して、配列で管理したいんですが error C2064: 0 引数を取り込む関数には評価されません。 とエラーがでます。どうしたらいいですか? struct{ string AI_NAME; void (CNonPlayer::*AI_Func)();//AIの関数ポインタ }AIList[6]; int UseAI; //使う時 AIList[UseAI].AI_Func(); ちなみに関数ポインタはコンストラクタで AIList[0].AI_NAME="Idle"; AIList[0].AI_Func=&CNonPlayer::AI_Idle; みたいに初期化しています。AI_Idleみたいなメンバ関数が6個あります。(要素数)
つーか、生ポのくせにレンサバ使ってんじゃねーよカス
>>713 おぉ・・・
(this->*AIList[UseAI].AI_Func)();
こんなんにしたらできました
ありがとうございます
>>712 ナマポ?スマートポインタじゃないと設計としてまずいですか?
>>707 に対して、生活保護受けてるくせに〜ってことでしょ
ぬるぽ
>>714 関数ポインタの指してる先が普通のメンバ関数みたいだし
このケースではスマートポインタにする意義は無いと思う
似たようなことを敢えて言うとすれば「std::function使おう」とか言えるけど
>>711 どのみちその保管したメンバ関数実行するにはインスタンス渡してやらないといけないから、
その構造体単独では使えない。
=インスタンス渡せるなら、直接呼べばいい訳だから、全然意味無いけどな
>>719 関数名と関数ポインタをセットで扱いたかったのですが、
かいたプログラマしかわからないような処理になったので、別途列挙体作って管理したいと思ったらこんな感じになりました。
プライベートなメンバ関数なのでコンストラクタで構造体を初期化してます。
理想的なのかどうかはわかりませんご・・・
あ、背景書いてなかったですね、すいません・・・
>>711 はクラスのメンバ関数内の話です・・
723 :
名前は開発中のものです。 :2013/11/03(日) 17:12:55.51 ID:PGRU4d3r
VBAとDXライブラリはどっちが使いやすいですか? ロックマンみたいなアクションゲーム作りたいんですが。
レイヤーが違う DXライブラリ以前に、言語は問題ないの?
725 :
名前は開発中のものです。 :2013/11/03(日) 17:30:58.74 ID:PGRU4d3r
レイヤー? DXライブラリだとアクションゲームは楽ですか?
VBAって Visual Basic for Applications ってヤツ? それはプログラミング言語。 DXライブラリはライブラリ。比較するようなものではない。 DXライブラリは通常C++(VC++)で使う。こっちがプログラミング言語。 だから質問するなら、「VBA」と「C++&DXライブラリ」の比較って事になるのかな。 俺はVBA使ったことないから答えは知らん。 ただVBAとC++、どっちか一つでも使えるならそっちを使えばいいんじゃないか、という事なら言える。 DXライブラリを使えば画像表示とか入出力判定とかは簡単だが、アクションゲームうんぬんはプログラミングの腕次第だからDXライブラリ関係ない。
727 :
名前は開発中のものです。 :2013/11/03(日) 17:47:06.31 ID:PGRU4d3r
>>726 なるほどそういうことでしたか。
DXライブラリにおける背景のロードはどうすればいいのでしょうか?
主人公が進むにつれて新しい背景が出てきますが。
フレームワークを探すなり自作するなりしたほうがいいような・・・ 質問するなら、今どうやってて、どううまく行ってないのか書いてくれないと
729 :
名前は開発中のものです。 :2013/11/03(日) 17:59:21.00 ID:PGRU4d3r
>>728 背景画面の連結とかの方法が分かりません。
教えてください。企業秘密ですか?
VBAは言語と言うより、Microsoft Office製品に付属のマクロ用途のサブセット版(簡易版)の、旧VB。
言語としては非.NETの旧来のVBで、環境としてはOffice製品が必要な物。
DXライブラリはC/C++言語で利用するライブラリ。で、
>>727 「背景」って用途は自分が決めた使い道の事であって、単に画像のロードなんかはAPIリファレンス参照。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html 当たり前だけど、基本的にプログラミングの視点で、自分がやりたい事は具体的にどういう事なのか、がわかってないと
DXライブラリに限らず何も出来ないよ。
……その意味ではVBAだろうと何だろうと何でもそうだけど。
いいから初心者はツクール系使っておけ
ここはDXライブラリ製のウディタを勧めるべきだろ
733 :
名前は開発中のものです。 :2013/11/03(日) 18:05:45.62 ID:PGRU4d3r
>>730 ロックマンを作りたいんです。
主人公が進むにつれて背景画像が更新されるようなプログラムを作りたいのですが
その方法を教えて下さいと言っているのです。
>>729 「企業秘密ですか?」って妙な一言付けてくるあたり、もしかしたら釣りかもしれないと疑いつつ、
背景画面との「連結」って表現は普通しないけど、お前さんがやりたい事は単に画像の重ね合わせ表示のような物。
上のリファレンス読んで頑張れ。
ってか、基本的にコンピュータで動いてる物の仕組み自体は理解してるか?
あるいはなんらかプログラムを作ったことは。
特に、出来ればC/C++で何か動くもの作ったことはあるか?
>>733 お前さんが簡単に数行で書いてる質問の正解は、お前さんがどこまで何を知っててどんな経験と知識があるかで大幅に変わるから、
もしもまったく何も知らないなら、本一冊買って基本的な勉強全部やって何か一本自分で作れてから聞いて。
何も知らない状態の人に全部説明したら本一冊書けるくらいの内容になっちゃうから。
本当に。
737 :
名前は開発中のものです。 :2013/11/03(日) 18:11:52.44 ID:PGRU4d3r
>>735 複数の画像を通し番号でアクセスしたい場合データ構造は何がベストですか?
そもそもDXライブラリにおいて一つの画像のビットマップを格納する方法が分かりません。
まず >VBAとDXライブラリはどっちが使いやすいですか? とか質問してるレベルの奴が人に聞いて問題を解決するとか愚かすぎる まずは既存の講座サイトを見て適当に動くプログラムを組んでみてから心配しろ
739 :
名前は開発中のものです。 :2013/11/03(日) 18:17:19.91 ID:PGRU4d3r
色々サイトを見て回った結果このサイトにたどり着いたのです。 知ってる人がいれば教えて下さい。企業秘密ですか?
>>737 そういう具体的な質問なら、普通は「画像データ格納した構造体なりなんなりのポインタをvectorにでも並べとけばいいんじゃね」
って回答で終わるんだけど、これは別に特殊な方法でもなんでもないので、
なんかコード書いてる人なら最初に自分で思い付くレベルのかなりベタな話。
鍵カッコの中の一文、意味通じたか?
企業秘密です・・
743 :
名前は開発中のものです。 :2013/11/03(日) 18:36:24.37 ID:PGRU4d3r
>>740 vectorってC++じゃなかったですか?
DXライブラリが提供している配列みたいなデータ構造とかあるんですか?
馬鹿に制作は無理 もうほっとこう
釣りだと思うなら突っ込むなよ。 なんで釣りだとわかった途端レスが増えるんだよ。
>>743 いや、そのC++のstlにあるvectorの事を言ってるけど
てか、DXライブラリってどういう物かわかってるか?
747 :
名前は開発中のものです。 :2013/11/03(日) 18:43:18.04 ID:PGRU4d3r
>>746 DirectXの機能を使いやすいようにしたものですか?
DirectXにも配列って有りませんでした?
vectorの使い方とか分からないんで。それ以外で何かありませんか?
>>747 とりあえず無い。てかvectorみたいな簡素な物わからなかったらどこにも無い。
てか、別にvectorに拘らなくても普通の配列で都合良いならそれでもいいじゃない。
てかもうDXに限らず外部ライブラリ使う以前の話なので、迷惑だから
>>734 のスレ行って。あと俺の質問にまったく答えない辺り気に入らないからもう安価しないで。
あと本読んで。終わり。
749 :
名前は開発中のものです。 :2013/11/03(日) 18:47:43.88 ID:PGRU4d3r
>>745 釣りじゃないからやり取りが弾むんでは?
さて、例えばAの画像を4、Bの画像を6表示するってのを動的にやる方法が
分からないんですよね。
t:10-tで表示する方法です。
どうしたらいいんですか?
750 :
名前は開発中のものです。 :2013/11/03(日) 18:48:39.64 ID:PGRU4d3r
>>749 釣りだからじゃなくてお前が馬鹿だからだ
752 :
名前は開発中のものです。 :2013/11/03(日) 19:01:01.03 ID:PGRU4d3r
馬鹿っていうソース
>>747 vectorの使い方とか分からないんで。
ここはピンからキリまで初心者に物事を教えるスレでは無い。 参考書読め。厚かましい。
だから俺はよそでやれと言ったんだ
おまいら冷たいな 見積書くらい作ってやれよ
stlはc言語で習うところのstudio.hみたいなもんなのに
お前は池上彰か
ストゥディオワロタ
スタジオの空目はありがちw
stdioなんて普段書かねーから(震え声)
聞かないと絶対に標準入出力の略だとわからんよなこれ
やべー、普通に会社でもスタジオって言ってたわー やっべー まじ やっべー
音読みするなら、スタンダードアイオー、かな?
D言語はstd.stdioで「そこ省略しないんだ」感ある
わかる
>>767 標準ライブラリの標準入出力って意味だから
標準ライブラリの拡張入出力が出たりするかも知れないじゃないか(無い
770 :
名前は開発中のものです。 :2013/11/04(月) 18:48:42.40 ID:Ao5FLTjW
背景と主人公をロードするとき、主人公を背景より前に出したいんですが そのための関数を教えて下さい。
・関数を呼ぶ順番を変えましょう ・ついでにLoadGraphScreenを使うのをやめましょう
772 :
名前は開発中のものです。 :2013/11/04(月) 18:52:10.63 ID:Ao5FLTjW
>>771 その関数は何故使ったらダメなのですか?
もっと汎用性のある命令で代用できるのに、わざわざ使う理由がない。 目の前にパソコンがるのに、そろばんで計算してるようなもん。
774 :
名前は開発中のものです。 :2013/11/04(月) 19:11:09.01 ID:Ao5FLTjW
>>773 じゃぁLGSは何故あるのですか?
便利だからでしょう?
マルチスレッドじゃないけどロード画面を動かしたいんですがどうしたら
LGS…強そう
>>774 いえ、便利だからあるわけではありません
なんでこんな関数を用意したのかは知りませんが
LoadGraphScreen関数を使った場合
HDD ⇒ メモリ ⇒ 描画
毎回、このような処理をして画像をPCモニターに描画することになります
HDDは回転速度が遅いため、
毎回、このような処理をして描画をすれば処理が遅くなります
そこで、LoadGraph関数を使って画像を一旦、メモリに取り込んでおきます
HDD ⇒ メモリ
そして、DrawGraph関数を使ってメモリから描画します
メモリ ⇒ 描画
そうすることで、処理速度が向上し、重たくないゲーム画面になります
超かっこいいLGSは(解説を作るのに)便利だからあるんだよ 使うのにはこれっぽっちもうれしくない
通常、ゲームでは、 NowLoading画面で、LoadGraph関数を使って 画像をメモリに取り込みます そしてロードが完了し次第 ゲーム本編で、DrawGraph関数でメモリにぶちこんだ 画像を呼び出して描画します 詳しくは、ドラクエ10でもプレイしてみてください ゲーム開始時やところどころで「NowLoading画面」が表示されます ゲームとはそんなものだと思ってください
>>779 これはある
が、プログラム学ぶならこれぐらいは当然という気持ちもある
あ、私はこんなC言語/C++のゲームプログラミング解説サイトを運営している者です
http://c-games.main.jp/index.html 初学者目線で、優しくC言語/C++のプログラムを説明していますので、
もし、全くプログラミングをやったことがない初心者である自信があれば
一度、ご覧になってみてください
初学者向けなので、中級者以上には物足りないかも知れませんが、
初心者であれば、一気に中級者を追い越して、中級者以上になれます。
(このスレの常連より遥かに上になって見下せますw)
>>782 すげええええけええええええええ!!!!
俺もプロのゲームプログラマーになってこんな2chみたいな吹き溜まりの奴ら見下したいです!!!!!
>>770 自分は背景をDrawGraph関数で並べてから
表示キャラをDrawGraphの第4引数をtrueにして表示する
(ビットマップ画像でキャラの外側を黒で埋めておく)
上記で普通にいけると思う
ちなみにLoadGraphScreenは使ったこと無いけど
メモリに入れるなら通常のLoadGraph使うだろうから
メモリ介さずにファイルから直接スクリーン投影用じゃない?
よく考えたら最近のPCってLoadGraphScreen連打しててもキャッシュとか効いちゃって別に遅くなさそう
SSDなら尚更だろうなぁ。
787 :
名前は開発中のものです。 :2013/11/04(月) 20:06:22.16 ID:Ao5FLTjW
ありがとう!! LGSよりもっといい関数があるんだ! このスレ見てたら参考書いらんわー ありがとう!!!!!!!!!!! Thank you very much for me
んーあんま詳しくないけどさすがに画像はサイズ大きいし無理なんじゃないかな でもそういえばJavaのJITも最近はキャンシュでゴリ押し最適化図るとか聞いたね
まぁ使う意味ないよねっていう 背景はmakescreenで予め1つテクスチャにまとめちゃってるな
790 :
名前は開発中のものです。 :2013/11/04(月) 21:10:17.81 ID:wVKdSea2
>>782 F5連打してサーバー落として良いですか?
すぐサイト閉鎖する講座サイトほど無価値なものもない そして無価値なものを宣伝するのは害悪行為
792 :
名前は開発中のものです。 :2013/11/04(月) 21:52:51.37 ID:wVKdSea2
>>782 正直、初心者には向いてないサイト
見たら唯のコピペかと思った
後一個足りてないぞ→画像(ソース)+説明 じゃ駄目
足りてないモノ→興味を引く要素、実際に何が出来るか説明不足
最初から興味が有って、そのサイト見てても途中でやる気が無くなる
関数一覧を表示すのは良いがクリックでトップに戻る意味が分からん
関数にマウスを当てたらサンプルソースが表示される様にするか
読み込みが始まって、サンプルが表示される形式にした方が良い
アレじゃ唯の目次にしか成らない、別のページを作る必要が有る
793 :
名前は開発中のものです。 :2013/11/04(月) 22:05:03.21 ID:wVKdSea2
C言語が使えるからと言って講座サイトを作るのは無理 webデザインや重要な企画を作る能力が足りてない 今までして来た事と違う事を、もっと勉強した方が良い なんでもこなせるスーパーマンに成りたいんだったら もっと頑張る必要が有る。が、本気でやる気なら応援するぞ まずは、何が必要なのか調べる所からやり直す。そしたらスムーズに事が運んだり見えてくるものが有る
入門者向けサイトならば、掲示板を作って質問を受け付ける。 そこから、要求される項目が決まる。 ちなみに、サイトを作って広告宣伝費としていくら入金されるの?
まず最終的にどういうゲームができるのかっていうサンプルゲームを公開すべきだよ 龍神録の館はそれができてるから重宝されてるわけで
まじめにレスするだけ無駄だとおもうな
>>782 のサイト見てからじゃあ何が出来るか?っていうと何も出来ないし
DXライブラリならDixqのサイトでも見ればいいし言語ならロベールとか猫わかとか見ればいい
797 :
名前は開発中のものです。 :2013/11/04(月) 22:32:06.05 ID:wVKdSea2
>>794 サービスによるけど広告クリックは1〜2%
アフィリエイトは大体20%〜グライ
キチンと業者と契約を結べば別だけど、アクセス数や利用者数が膨大に必要
知識の浅い初心者が頻繁にプログラミング入門サイト作って失敗している
書籍やサイトで紹介されてる内容、程度なら半年持たない
ユーザーが必要としているのは一歩進んだ知識だから最低でも大規模プログラミング
できる程度の知識が必要。
180フレーム寿命があるエフェクトを毎フレーム30個ぐらい作るとReleaseモードでもFPSが40ぐらいになるんですが これはもうシングルスレッドゆとり設計の限界なのかね GPUに行列の計算させるのってDirectXの関数使えばいいの? なんかCPUでやってる気がするわ
突っ込みどころが多すぎて何も言えない
>>798 横からだけど、確認を込めて一応掘り下げると…
・「nフレームのスパンで動作するとある処理Aを、毎フレーム n個作ると遅くなる」
→ 処理Aの開始から終了までのフレーム数と、1フレーム当たりの処理数 自体は普通特に関係無い訳で、
話の主題は単に 「1フレーム当たりの処理量が多くて、1フレームを通過するのに時間がかかる」 って話だと思う。
ならば単位当たりの処理を軽量化するように設計したらいいんじゃね、って話。
・「これはもうシングルスレッドゆとり設計の限界なのかね」
→ 上で書いた通り、あなたの 「その」 設計の限界だから見直すべき。
その上で、シンクロのステップも含めた上で、マルチスレッドの方が良いならそのように設計するべき。
ただしその場合、「はたしてマルチスレッドにした場合、シンクロのポイントも含めて考えた上で、1フレーム当たりに可能な処理量がどれほど増えるか」
は把握しておくべき。 その正解はあなたの実装による。
・「GPUに行列の計算させるのってDirectXの関数使えばいいの?」
→ ある意味 DirectX の関数と言えるけど、正確には GPU側で計算させるならシェーダの中の話。 DirectX で言うなら HLSL の中の関数の話。
で、GPU側で計算させたい場合、普通は CPUから引き渡した内容に対して、シェーダ内で表示物向けに計算させるだけなので、
その用途で良いならそうしたらいい。
・「なんかCPUでやってる気がするわ」
→ 気がするんじゃなくて、自分がCPU側で計算させて DirectX 関数に引き渡してるならそうだし、シェーダ内の関数でやってるなら GPU側。
気がするんじゃなくて、自分で明示的にわかってるはず。
ちなみに、 >180フレーム寿命があるエフェクトを毎フレーム30個ぐらい作るとReleaseモードでもFPSが40ぐらいになるんですが ↑こういう、ふわっとした理解で何も考えずに、単に言葉だけ知ってるレベルでマルチスレッド化なんてしたら、 100% 正常に動作しないので、問題点の要点を勘違いしないで、ちゃんと整理する事。 自分が書いてる処理は具体的にどういう動作なのかを本当に理解すること。 終わり。
180*30=5400 ちゃんと設計してギリギリ60fps保てるレベルだな オブジェクト生成毎にメモリをnewしてるとかだと間違いなく無理だが、 それ以前にエフェクトにこれほど大量のオブジェクトを作る設計が間違い
余談だけど、処理内容書かずに数字だけで言うなら、 俺が書いてるオープンワールドのアクションゲーもどきだと、マップ中にある火山や温泉の間欠泉や、海辺の波と、あと 敵を殴った時に飛び出る★のようなエフェクト、必殺技的な物使うときの透過光や走行線なんかの内、 一番長くアニメーションさせてる物は 60fps 定速管理の場合 3.5秒ほどの間表示処理を行うから、期間で言えば 250フレームの間描画を繰り返す計算になるけど、 しかしそんな事自体は大した意味は無くて、本当のポイントはメインループ中の1回の処理で、どれだけの内容をこなさないといけないかって事。 その意味を踏まえて言うなら、一番込み入った場面では最大 150個ほどのエフェクトが同時に動作している事があるけど、 メインループから定速固定用の時間経過処理(fps管理用スキップ処理)をコメントアウトすると、大体 2400fps ぐらいの速度で動作している。 内容的に特にそれでも速いとは思わないが、要は、「どういう処理書いてるか、1ループ(フレーム)の間にどんな事してるか」 で結果なんて変わる訳で、 数字だけ見ても ふわっとした事しか言えないって話。 本当に終わり。
何FPSで動くとかどうとかの話って、PC次第で変わるから意味ないような。
>>804 大体の目安だからいいんじゃね
クロック数とかもマルチコア主流の今の時代じゃ意味ない数値だし
とりあえずdxライブラリに完全に乗っかっててしかも 頂点操作してないから重いんだと思う そう考えるとFF14のあのエフェクト量であの軽さはやばいな
DXライブラリでチェックボックスとかスクロールバーのような コントロールを使おうと思ったらやっぱり自作するしかない? それとも他のライブラリとか使った方がいい?
winapiでいいやん 慣れないとメッセージの調べかたに手間どうが
>>807 DXライブラリを使う以前に
C言語をちゃんと理解していれば
悩む必要もないと思うよ
ON/OFFのチェックを表現したいなら
まず、ONの画像とOFFの画像の2つを用意する
さらにどの条件の時にON/OFFなのかを組む
2種類しかないならbool型で、Trueとfalseでいいと思う
bool型がtrueなら、ONの画像を表示
falseなら、OFFの画像を表示するように組む
あとは、bool型をどうすればtrue/flaseにするのかの仕組むを組めば良い
ゲーム画面でマウスの左クリックでON/OFFにしたなら、
マウスの座標が、チェックボックスの座標内にあった時に、
左クリックをして、ONならOFFになる
OFFならONにするようにして表示画像も変えるようにする
DXライブラリじゃないけど、俺はゲーム画面上に表示するコンフィグその他のGUIは、 DirectXベースでテクスチャ貼った板ポリ並べて並行投影で表示する恰好のGUIライブラリをかなり前に作ってあって、 なんだかんだ改修しながらずっと使ってる。 普通のボタンと、チェックボックス的なトグルボタンと、テキストエディタと、リサイズ可能なウィンドウと、Excel風のグリッド表示するリストボックス
ゲーム画面内でマウスのドラッグでスクロールさせるなら スクロールバーの座標にマウスを移動させた時に、 左クリック押しっぱなしの状態で、ドラッグ状態にして、 マウスを下に移動させれば下に移動、上に移動させれば上に移動 あと、SetDrawArea関数を使って 指定した座標範囲内だけに スクロール内の内容を描画するようにして スクロールバーのドラッグ&マウスの上下移動で SetDrawArea関数内の領域に描画した全ての画像の座標を y軸にプラスにしたりマイナスにすれば、 そのウィンドウ内だけで表示内容がスクロールされる
マスクしないと
813 :
807 :2013/11/05(火) 13:34:48.29 ID:Y6UuuJq+
レスさんくすー
>>808 API大丈夫か?
ダイアログボックスだしてその中なら正常に表示できそうではあるが。
>>809 いや、作成方法は分かるんだ。
ただ、スクロールバーのつまみみたいなD&DとかTAB移動の実現とか
一つ一つGUIパーツを作ろうと思ったらコーディングが手間すぎる。
>>810 やっぱり自作ライブラリをつくるしかねーかなぁ。だりぃw
スクロールって実際は全て描画されていて、後から上書きしてるの?
SetDrawArea関数とはドラクエで例えると メッセージウィンドウみたいなものです ドラクエでメッセージを表示する時は、 続きのメッセージは、そのウィンドウ内でメッセージ内容が下にスクロールしますが それを表現する時に使うのが、SetDrawArea関数です 詳しくはDXライブラリの公式サイトの SetDrawArea関数の解説を読んでみてください
いちいちGUIライブラリを自作するのって非常に無駄な作業だと思うのですが 何故そんな非効率なことをするのでしょうか
そんなこと言ってたら最初の一つ目から存在しない
VBで作りましたみたいな出来合いのGUIでいいならいいじゃん
>>809 自作する場合、言語の知識よりも細かい部分の動きに悩みそうな気がする。
何気なく使ってるGUIだけど、意外に理解してない部分って多いんだよな。
DXライブラリの公式サイトの
リファレンスは中級者向けなので
初心者が見た場合、一体、何のために使う関数なのかが解かりにくいと思います
なので、私はDXライブラリ関数リファレンスを
もっと分かり易く初心者でも理解できるような
DXライブラリ関数リファレンスを制作中です
http://c-games.main.jp/dxlif.html 公式サイトの解説の丸写しではなく
自分で検証して、もっと分かり易く噛み砕いて、
実行結果の画像もキャプチャー画像を紹介するように作ってるので
かなり時間が掛かっています
改めてDXライブラリ関数をイチから全てを検証していくと
なんて膨大な関数なんだろう…と、絶句していますw
>>814 「上書き」が何を指すかは分からんが、
ソースコード上では表示領域より大きめにセットしておいて、実際の描画時にライブラリ側で切り取るのが楽チンだと思う。
>>820 何でそんな無駄な事してるの?
しかも余計わかりにくくなってるし
時間の無駄だから止めた方が良い
クリックして見に行ってる時点で食い物にされてることに気付け
>>820 このトップ画面のさ、メインコンテンツ部分のお知らせとか更新情報って書いてあるのって
どうやってやるの?
鍵型っぽいやつ
>>820 じゃあ、以下のを Dxライブラリを使って作って
3D空間に複数のモデルを配置してあって、その中の一つをマウスでクリックすると、
そのモデルが赤色に変色するプログラム。
>>820 リファレンスより動くゲームのサンプルコード載せて欲しいわ。
リュウジンロクとかコピペで使えたから便利だったんだよ。
シューティング作るのがいちばん簡単とかぬかす奴をたまに見かけるのはそのせいか
>あと、私は「w」をNGワードに設定している >「w」などを連呼するような低俗な輩の発言など目に入れないようにしている >あと「こいつ」などの単語も同様の理由でNGワードにしている とかなんとか言っておきながら >なんて膨大な関数なんだろう…と、絶句していますw と自らが設定したはずのNGワードを使うとかw 流石は他人から「こいつ」呼ばわりされるのが怖い怖いのバkazuki君だw
DXライブラリのリファレンスほど初心者にも解りやすく丁寧なものはないね 他のライブラリだと引数の型しか書いてなかったりそもそもリファレンス自体ないのもある ソース見ろやって事なんだろうけど…
2chの常識 kazukiに反応する人もkazuki も知らんのか
>>830 でもまあなんだかんだで最終的にはヘッダファイル見るようになるよなw
>>828 龍神録の館を抜きにしても、実装に専門知識が要らないからシューティングが一番簡単なのは事実だよ
逆に、他の動的ゲームを作るときにはシューティングを作るとき使った技術すべてを駆使することになる
>>833 場合によるでしょ。
専門知識が何を指すかしらないけど。一番簡単ていうのは意味不明。
俺に言わせればじゃんけんゲームとか○×ゲームの方が簡単w
まあ、だれも遊んでくれないクソゲーでいいなら「一番でなくて」実装が楽て言うのなら100歩譲って同意する。
エースコンバットレベルになるとまったく同意できないが。
>>834 動的ゲームの中で、な
アスペじゃないんだからそれくらい察そうぜ
>>835 お前想像力ゼロで既成概念に縛られてるみたいだな。
まあいいわ。
いや、「なんでそう言われてるのか」を考えられずに「意味不明」と言い放つほうが想像力ないと思うんだが・・・
>>837 いいと言ってるのに。
じゃあ、なぜ動的ゲームでシューティングが一番簡単なのかご説明願おうか?
一番ていうところが重要だからな。頑張ってくれ。
わざわざ説明する必要あるか? オブジェクトの生成、衝突判定、キャラの移動、シーン切り替え これだけがあれば最低限ゲームとしての形にはできるからだよ
ゲームの歴史的に考えてシューティングが一番シンプルだと思う ポンやブロック崩しの派生だしね
ん? ブロック崩しは動的ゲームに入らないのか?
想像力働かせろよ ブロック崩しは反射の計算にベクトル演算が要るだろ ベクトル演算を用いなくても実装することはできるが、それににはどういう処理で誤魔化すかというジャンルの専門知識が要る そして実装的には、シューティングのショットを反射するボールに変えただけに過ぎない
>>842 www
マジ受けた。ベクトル演算なんかしなくても作れるよブロック崩しはw
お前ほんともういいや。
当たり判定って矩形か、それともありのままかどっちが良いですか?
>>834 >まあ、だれも遊んでくれないクソゲーでいいなら「一番でなくて」実装が楽て言うのなら100歩譲って同意する。
一番かどうかは別にしても、STGが楽ってのはまあそーゆーことよね。
人には説明しろと言っといて、自分は説明せずに逃げたか
まぁ馬鹿の相手しても無駄だからいいけど
>>844 自分で判断できないレベルなら、とりあえず矩形と円2つ実装すればいいんじゃないかな
見た目そのままの判定は、実用に足る実装をするのは難しいだろうし
正確にはシューティングのスペースウォーが最初だった(;´-`) まぁシステムはどれも似たようなもんだよねということで ベクトルを使わないってしばりならインベーダーなんて直線にしか撃てんぞ
>>844 ゲームにもよるが、
小型の雑魚は矩形、大型のボスはある程度画像に沿った判定が良いと思う。
>>846 お前さ、ブロック崩しってどれくらい前からあるかしってる?
8bitのCPUでベクトル演算なんかしねーし。
する必要もないよ。
xとyに定数を足して動かすだけでもベクトルっちゃベクトルだが、 上方向にまっすぐ弾を出すのも同じくらいベクトルなんじゃね?w
>>849 そういう作品は誤魔化しの手法使ってるって最初に言ってるじゃん
そういう手法を使う作品は、作るにあたってその知識が要るから一番簡単とは言えないんだよ
また、ステージ作る場合にも、簡易エディタ等を作らないとなると大量にブロック配置をコードに直書きしなけりゃいけなくなる
そこら辺はわかってるか?
なにこのガキのケンカレベルの言い争い
>>850 w
ああ、そういう意味だったの?ごめんごめんw
それで専門知識って。
想像力のないガキに目線合わせて説明してあげても無駄な気がしてきた
なんか話が曖昧でふわふわしてると思う
>>813 その手のはSELENEにあったな
永いこと止まってるようだが
この知識のなさ、kazukiに見えなくもない 確かあいつエースコンバット信者だったろ
えっ
>>833 の時点で、具体的に書かないから、
>>834 のような 「場合によるでしょ」 って話が自然に出る訳で。
例えば 「シューティング」 なんて曖昧な言い方せずに、
・自機1つ、弾1つ、敵1つ、自機はユーザからの入力で2方向に移動、弾は一定方向に移動、敵は自分のロジックで好きに移動
・敵が自機に触れると負け、弾が敵に触れると勝ち
くらいのド簡素なインベーダーみたいな物なら、その後のアクションするゲームのひな形を色々と含んでいるよ、
例えば座標変えながら絵を表示、座標の一致(交差)判定 など etc… みたいな話を書いてればそこで終わったのではと。
あとテーブルテニスの反射の計算とか、別に専門知識でもなんでもないのでって言うか、
単にやりたい事を観察した上で、どうロジックとして書き表すかって言う基本的なプログラミングのあり方の上にある程度の物だから、って思うが。
ブロック崩しって意外と難しいと思いますけどね だって角度と当たる速度で 反射する覚悟が微妙に変わるじゃないですか プレイヤーが操作する「棒」みたいな奴に「弾」が当たる時、 どの角度で、どの速度で当たるかで 反射角度もスピードも微妙に変化する
レスした方がいいのかな。「意外と難しい内容のブロック崩し」 を作るならそうだけど、そうでないならそうでないと思うけど。 つまり、角度と速度を意識してマジメに計算するような前提のブロック崩しを言ってるなら、意外と難しいのかもしれないけど、って事。 とにかく、前提を曖昧にして話すと話がムダにこじれるよ。 もしも自分が本当に意味をわかっているなら、省略しないで話すこと。 特に、省略するとムダな混乱起きそうだと気を回せるならば。
シューティングは確かに楽かも知れないけど シューティングがあまり好きじゃない私からすれば ゲームが完成しても、ちょっとやりごたえがない 俺はRPG好きだから どうせ苦労してゲーム作るなら C言語/C++でRPGを作ってみたい で、RPGは難しいかと問われるなら 確かに他のゲームに比べれば、多少は大変かも知れません ですが、RPGの基礎の部分(戦闘、買い物、装備、会話、レベルアップ、お金などなど)を 構築してしまえば、あとは楽だと思います 物語のほとんどは、そのRPGの基礎を使いまわせば いくらでも長い物語が作れます
kazukiが急に反応しだしたぞ
「雨が振ったら傘をさすよね」って言ったら「場合によるでしょ」って応える。 確かに間違いではないが、因縁つけてるレベルの話。それと同じ。
要するに、RPGを開発するなら、 会話、移動、買い物、道具、装備、戦闘、レベルアップなど 考えられるだけの、RPG要素だけを構築した オリジナル関数を作成しておきます あとは、それらのオリジナル関数を使う用途の場面で 呼び出せばいいだけです
>>863 急に話の軸がブレたけど、まぁ、好きにしたらいいじゃね。
>>865 言いたい事はわかるけど、多分そこまでナチュラルな日常会話の例えはちょっと合わないと思うww
>「意外と難しい内容のブロック崩し」 を作るならそうだけど、そうでないならそうでないと思うけど。 意外と難しいSTGを作るのならそうでないブロック崩しより難しいかもしれないが、 そうでないSTGならそうでないブロック崩しよりは楽だと思う。 極端な話、動かない敵キャラに、カーソル(照準器)を合わせてボタン押したら敵が消える、だけでもSTGだ。
>>868 そうそうそう、そういう事。 そういう 「こういう場合」 を具体的に書くようにすると話が混乱しないでいいよな。
だから場合によるっての。
>>860 の人も行ってるけど定義をはっきりしろよw
バラバラのもの想像して話してたらかみ合うわけないわ。
>>856 Seleneなついな。作者さんにIRCでよく質問したよ。
今、HDDを探したら最後に取っておいたSeleneのソースがどっか消えた。
軽く鬱。
ブロック崩しは、プレイヤーが操作する「棒」に「弾」が当たった時に、 反射する方向を計算して、 その方向に真っ直ぐ飛んでいく必要があります x軸とy軸を同じ比率で操作しないと 真っ直ぐには飛んで行ってくれない その角度で壁に当たれば、 反射もその角度の真逆に飛んで行く必要があり 上のブロックに当たると、少し失速して また、その速度によって、ブロックから跳ね返る角度を計算する必要がある ブロック崩しがゲーム開発の参考書で取り上げられる理由が 少し解かりますね 意外とロジックが難しいですからね あれは、数学好きな人が作るゲームだと思うね
俺は解かり易さと作り易さで考えれば、 断然、RPGをお勧めしたい RPGを突き詰めていくと ただの「変数で足し算や引き算をするだけのゲーム」です 宝箱から100G手に入れたなら お金に割り当てた配列変数に+100するだけです 店で10Gを薬草を購入したなら お金に割り当てた配列変数に-10するだけです 戦闘シーンのダメージ計算も HPに割り当てた配列変数に対して 敵の防御力の値に、主人公の攻撃力の値を引き算して、 あと何かのプラスアルファを加えて ダメージ計算をして、その値で引き算すればいい 敵を倒して戦闘が終了したら経験値の配列変数の値を その敵の経験値ぶんだけ足し算して、ある値に達すれば、レベルアップ! 回復アイテムを使ったら、その値だけHPの変数にプラスさせる 回復魔法なら、MPの変数のマイナスも付け加える こんな足し算と引き算だけをするゲームのどこが難しいのでしょうかねw
ブロック崩しは単に符号変えるだけでOKやん
コンピューターはゼロと1だけだから、かんたんだよね。 現実にそうなの?
>>874 そうかな…
詳しいアルゴリズムまでは考えてないけど
「どうやればブロック崩しが作れるのか?」を少し考えるだけで、
「お?意外と難しいな…」というのが俺なりの感想です
ま、そのうち、ブロック崩し開発に本気で挑戦してみるつもりですが、
その前に、腕試しとして、テトリスを解いてみたいですね
今は「どうすればテトリスが作れるのか?」を
少しずつ考えているところです
俺はテトリスも中々、よく考えられたゲームだと思います
>>875 株は上がるか下がるかの二択だけだから、かんたんだよね。
現実にそうなの?
自機を操作→敵を操作→コリジョンみたいなステップがないから RPGはシューティングやアクションと比べてモチベが続きにくいんよなー アドベンチャーとかノベルもそうだけどある程度エンジンを作った上で素材を構築していかないとだめだしの
俺なりに考えたテトリスはとりあえず、 1.ブロックを下に落とす 2.ジョイパッドの左右キーで回転 3.床まで落ちたら、落下を停止 4.横一列は全て揃ったら、その列だけ消す 5.それとともに点数が加算 まで、頭の中で組みました 今は、どうやってランダムでブロックを登場させるのか? で、少し頭を悩ませているところです ランダム計算って意外と難しいよね…
RPGの最もシンプルな形ってなんだろうね?
少なくとも
>>873 は違うよな
変数で足し算や引き算をするだけのゲームなら、電卓もRPGになるわ
ブロック崩しってそんなに反射角複雑だったっけ・・・?
>>881 素材的な意味でいうとウィザードリィ?
ほぼグラフィックいらないからシステムの構築には楽なモチーフだよね
計算式もTRPGゆずりな1d6とかだし
>>879 いや、テトリスの方がブロック崩しよりも簡単そうな気がします
まあ、深いところまで突き詰めて考えないとわかんないけど
多分、テトリスの方が楽のような気がします
プログラミング入門者で、様子が整理できない状態だと「わからない物は難しい物」って考えがちだけど、 いったいどんな想像してるんだろうかとふと思った。
昔、テトリス作ったことあるけど、悩んだところといえば、狭いとこに突っ込んだ状態で回転させようとしたときどうするか、くらいだったな。 それでも完成まで一週間くらいかかったわけで、数年前に3行テトリスを知った時には戦慄したわ……。
>>881 うん、だからRPGは電卓なんだよw
たくさんの電卓を用意して
足したり引いたりしているだけです
まあ、物語の部分を考えるのは大変だけど
適当なクエストを用意すりゃいいでしょう
スライムを100匹討伐したらクエスト達成!
そして報酬をゲット!
そんな簡単なクエストをたくさん作ってRPGを作る
何行テトリスとか、その行数って単に改行してないだけでは
伸びすぎwww
うわ〜この人、単純変数とIFだけでRPGを作っちゃうんだろうね
>>883 1.画面の端で反射(移動方向の符号を反転)する球を作る
2.ブロックとバーを表示させる
2.バーを左右に動かせるようにする
4.球をバーから発射させられるようにする
5.ブロックとバーに球の当たり判定をつける
どこがテトリスより難しいかわからない
>>889 別にいんじゃねーの。作れるならw
>>885 7行ならしってる。500バイト位のスクリプトのやつ
>>887 そうだよ。1400バイトくらいで1行だと言いはっていた人もいたわ。
>>888 雑談もたまにわいいじゃん。
まあ、そろそろ自治っぽいのがスレチとか言いそうな雰囲気ではあるなw
いずれも「最初につくると良いゲームの一覧」には入ってるんじゃない? その中で難易度の差はあるだろうけど、あくまでそのレベルというか。
ちなみに俺が考えたテトリスのブロックは、 ■←こういう四角のボックスを一つ用意するだけです これを ■ ■ ■ ■ ■ ■■ ■■ ■■ ■■■ ■ こんな風に色々組み合わせてブロックを作って 色は、プログラム側で赤にしたり青にしたりします ちなみに画像ファイルは使いません DXライブラリには、DrawBox関数があるので、それでブロックを作ります
横スクロールアクションゲームで床から飛び出してくる針を作ってるのですが 床にもぐろうとすると床の前に表示されてしまいます。 一時的に表示順を変えるのは難しいので、画像の一部だけ非表示にすることってできないでしょうか
>>894 DrawRectGraphで表示したいとこだけ描画しろ
モデリングとモーションはMaya2009 Motionbuilder2009だな。
あとスカルプトに3d-coat V4 と MudBox2009
テクスチャはSubstanceとフォトショ。
Visualstudioは未だに2010のまま。
ゲームエンジンはTorque3Dを今は使ってる。
Torqueはレベルエディタがなかなかいいよ。オープンソースになったから使ってみれば?
https://github.com/GarageGames/Torque3D 俺は製品版Ver1.2の頃買ったけどなw
カオスな流れが続く
うぉ、誤爆失礼orz
あと、俺は何かの参考書を読んで その通りにプログラムを組むのはあまり好きではありません プログラミングの楽しみ方は、 C言語/C++の命令などの基礎だけを参考書を読むなりして学んで ゲーム自体は、自分でイチから考えて組んで 作り上げていくから面白いのです DXライブラリは直観的にゲームプログラミングが出来るので 俺からすれば、DXライブラリは最高のおもちゃですね これを使えば、どんなゲームも簡単に作れちゃうじゃない!と…。 DXライブラリの作者さんアリガトー!w 通信系の関数も用意されていたので いつかオンラインゲームにも挑戦してみたいですね
テトリスって例えば凸型ブロックの当たり判定って正方形4回でやるの? あと回転するときってどうやって回転元から回転先までクォータニオンで衝突判定を計算するんですか
>>900 3Dについては知らんが、本家は回転していないんだなw
基準のブロックを中心に組み替えられてる
なので狭いとこで回転できる(ように見える)
>>900 他の人はどうやってテトリスを作り上げるのかは知りませんが、
俺が考えるテトリスのブロックの回転は、
回転であって回転ではありません
左右キーで、1つのブロックの座標だけを変えるのです
■■■
■
例えば、こんなブロックがあったとして、
右回転させる時は、真ん中のブロックを原点として
回りのブロックだけをこんな風に座標を変えます
■
■■
■
この時に、回転する前の一番下のブロックの一つ下の座標に
障害物(床もしくは積み上げたブロック)があった場合は、
回転を受け付けないようにする
■■■ ■ ああ、そうか…。 この場合は一つ下に障害物があっても回転してもいいのかw まあ、いいや、テトリス開発は面白そうなので 後の楽しみに取っておくことにしよう とりあえず、今は、タイトル画面が完成したら スロットゲームを作ろうと考えています ちなみにスロットゲームは完全に頭の中では出来上がっています 今は、どうやって解説しようかな?と頭を悩ませているところですね
905 :
名前は開発中のものです。 :2013/11/05(火) 23:52:48.60 ID:4ngKs0L6
>>848 >小型の雑魚は矩形ワロタwww
ボム兵とかですか?
とりあえず参考になりそうです、大ボスはそのキャラが占める
形でやったほうがいいんですねー、参考になりました。
>>896 全然関係ないけど、Torque3D ってオープンソース化されてたのか
ググってみたら去年発表されてたとか今知ったww 既存のゲームエンジンだと、俺 OGREなら触った事あるな。
テトリスの落下は、時間で制御すればいいですね 例えば1000ミリ秒(1秒)間隔で1マスずつy軸の座標をプラスにするとして、 1000ミリ秒間だけ、左右キーで回転を受け付けるようにする 1000ミリ秒経過すると、1マス下に落下させますが、 その下が障害物(床もしくは積み上げたブロック)があった場合は、 もうそのブロックについては、キー入力を受け付けないようにして、次のブロックが登場し そのブロックに対してだけ、キー操作を受け付けるようにする
>>908 そんな誰かが作った答えを見ても何にも面白くない
自分でイチから考えてプログラムを組み上げるから面白いのです
というわけで、今日はもうこれぐらいにしよう
ではまた。
>>907 そう、オープンソースになったのよ。
ほぼ、製品版と変わらんよ。レベルエディタから何から全部ついてる。バージョンも上がってるしな。
製品版買った俺はいったいって状態だけどw
って誤爆に触らないでくれ恥ずかしい、、、
■■■ ■ ■■■ ■■■■■ ああ、なるほど…。 よく考えてみたら、すでにこのようにブロックが積み上がっていた場合は、 一番下まできたら、回転は出来ないようにしないといけないのか…。 ということは、落下する4つのブロックは、 ブロックに隣接していない方向全てに辺り判定を付けておく必要があるわけですね やっぱ、テトリスは奥の深い中々楽しめそうなゲーム開発ですねw
伸びてるけど読む気がしないw
kazukiと馬鹿の独り語りがほとんどだから読まなくておk
自己紹介乙
プログラミングをあれこれ考えるという話題なので むしろ面白いと思いますけどね リアルでするなら 仲間内で集まって1つゲーム開発に取り掛かり 色々と議論しているようなものですよ 「ここをこうすればいいんじゃない?」 「でも、それだとこういう問題が出てくるね」 「じゃあ、こうしてみれば…」 というような。 俺は基本的にこうやって色々考えたりすることが好きなんだ あと、マニュアル作りも好きですね だから解説サイトを運営しているのです あれも趣味の一貫です
趣味ならローカルでやればいいんじゃね
>>916 俺らは仲間じゃねーし、考え事なら一人で黙ってしとけよアスペ
ID:K3Hz6QZH = ID:j7fSIGQa
松浦はお断りだ
SRSも知らないでテトリス語ってるアホ共がいるスレはここですか
超伸びてるけど何があったの?
なんか伸びてると思ったらkazukiか
>>798 DXlibから初めてC言語触った今も初心者のゴミだが
俺も昔そんな感じで試行錯誤してて
色々無駄な組み方しまくってたから毎フレーム3000個程度しかビルボード描画出来なかったけど
数ヵ月掛けて情報集めながら試行錯誤したら今はGPUも使いつつ3〜4万枚程描画出来てる
シングルスレッドでCPUがボトルネックだから最適化の余地はいっぱいあるし、
マルチスレッド化とかの奥の手だってあるからまだまだ増やせると思う
CPUのみでもi5で1.5万ぐらいは描画出来るようになったと思うから
2chじゃ叩かれまくるだろうが頑張れ
叩かれながらでも着実に知識をつけていけばいいんだよ
参考になること言ってくれる優しい人もたまにはいるし
長文すまん
kazuki ←絡み避け用ワード
テトリス作るなら1hくらいで出来るものがニコ動にあるから それ見てみるといいよ DxLibじゃないけど作り方の参考にはなる
>>923 kazukiはこのスレの風物詩
アスペとか言っちゃうオマエの方がよっぽど荒らしっぽい
「他人を馬鹿にして優越感に浸る」系のアフォは放置すればいい。
複数端末使っての自演もkazukiの常套手段 バレすぎなのが不思議なのか、2ちゃん運営が俺を潰そうとしてるとか電波飛ばしてたこともあったな
どうでもいいけどたったさっきSetCreateSoundDataType関数の存在を知ったわ 今までの逐一BGM削除してた作業とあのロード時間の長さは何だったのだろうか
BGM全部メモリに展開して読み込んでたのか
リファレンスは一度全部目を通しておけって話だな。 俺もときどき見逃してたか忘れたかで無駄に頭を悩ませる事があるw
>>833 遅レスだけど、シューティングゲームは接触判定と移動さえ出来れば作れるから
立体的な音響にしたいんだけど、dxlibだけでできる? 前質問した時xaudio使って自分で音波弄らないと無理みたいなこと言われたんだけど みんなそんなことやってるの?
普通は立体的な音響なんかにしようと思わないんじゃないか
でも個人的に再生負荷っていうのが気になるんだよな 今まで低スペックノ−トで弾幕シューティング開発してた癖で それなりのスペックになった今でもちょっと気になる そこら辺はオプションからユーザーに選ばせるっていう手もあるけど
>>934 ステレオとかしたくない?
サラウンドか。
>>935 複数の音楽を重ねて鳴らすのでもなけりゃ再生のコストは無視していいレベル
左右に振り分けるのはやったことがあるけど、立体音響まではやったことないなあ。
じゃあカメラからの距離で音量小さくするだけなのか
安直な方法でいいなら、立体(三軸)じゃないけど、パンの左右と音量で奥行き表すと平面には表現出来るよな。 ただそれでも音のソース単位でそれを行う必要あるけど
>>854 お前は優しすぎるor真面目すぎる
連鎖あぼーんするのが惜しくてNG使えなったのは初めての経験だ
>>881 個人的には「パラメータ」というフラッシュ作品だとおもう
Databaseのレコードを操作するのがRPG
データの値がイベントのトリガーになるという視点がぬけてるんだが
マジ本人ならきもすぎ
>928 こういう、昔からkazukiにしつこく粘着している上から目線いるよな。 どんだけすごいゲーム作ったか知らんけど。 お前の方がよっぽど荒らしだよ。 >927の人に同意だわ
ほっとけっての。 誰もそいつの相手していないのが証明してるだろ。 さっさとNGしとけ
流れが悪いんだよ マリオジャンプの話しようぜ
じゃあ俺はsinに近似しよう
また、同じ手合いがワイタトコロデ そろそろ流れをスレタイにもどそうか
952 :
名前は開発中のものです。 :2013/11/06(水) 19:12:51.61 ID:rz3bRDZQ
DirectXがあるのにDXライブラリなんて作りやがって迷惑だ!!
いちいちID変えご苦労様
このスレをアスペで検索したら4件ヒット。 こんな旬を過ぎた単語使う奴あまり居ないからほぼ同一人物なんだろう。 この板、過疎ってるからわかりやすい。
今日はkazukiの自演が盛んだなw
kzauki擁護じゃなくて別の馬鹿の話しでしょw
>>956 必死すぎて痛いわ。お前は何と戦ってるんだ?
争いはのカンガルーのAA貼ってやろうか?w
擁護の振りして一度書き込んだだけじゃ気持ちが収まらなくて、ついつい連レスしちゃうのも特徴ですね 別に私はkazukiと戦ってるつもりはありませんよ
ほんと馬鹿だこいつ。 お前か昨日あたりから湧いてる痛いやつはw
kazukiは戦おうとしてるけど、ヲチャにも相手されず見下されてるだけだからな まさに「争いは同じレベルの者同士でしか発生しない」(笑
同族嫌悪と言うやつだな
ほんとあほくさ そのkazukiくんとアンチkazukiくんだけにこのスレ乗っ取られてるやんw
そもそもkazukiってなんなの荒らしなの?そんなに有名なの?
これワロタ 831 名前:名前は開発中のものです。[sage] 投稿日:2013/11/05(火) 19:21:34.03 ID:hCvpDVI/ 2chの常識 kazukiに反応する人もkazuki も知らんのか
>>964 あちこちに降臨してるから知ってる人は多いと思われ
痛いじゃなく普通の言葉になおすとネットストーカーだな、大好きなんだろ
ストーカーではないだろ こいつは自分から悪目立ししようとしてるんだから 粘着されても仕方ない
恨みだのネガティブなストーカーもいる 結局、執着だろ まさにキモヲタ
みなさんはこの有名な言葉を知っていますか? 「荒らしに反応するのも荒らし」
突っ込みどころありまくりの自演するのが問題だよな 無視しにくい
今までも何度かこのスレに登場して、そのたびに住人に総スカンくらってるのに今回は随分擁護レスがつくな。
最初の1レスくらいは(突込みどころも多いとはいえ)良いこと言ったりするからな
新参からみればただの荒らしの罵倒にしか見えねー からだろ。 みんながkazukiを知ってるなんて言う認識がおかしい。ヲチしてるやつだけだろそんなの 俺はヤツがこの板に3Dなんとかをつくるとかスレ建てた頃からしってっけど ヤツには関心がないからなんとも思わな ていうか、必死に戦っているところ悪いが、そろそろDXライブラリの話をしたらとうだ?
基本的にライブラリに関する話だけでいい
なんで自演するのに文章の特徴隠せないんだろ
何でも、擁護に見えちゃう病かww うざいから消えてね
全部kazukiの自演です(キリ
部外者からすれば誰がどんな理由であろうと 人が集まる場所でその一角だけヒートアップしてたらウザいんだよ >979 余計な一言のせいで乙の代わりに、”お前が言うな”と言いたくなった
981 :
名前は開発中のものです。 :2013/11/07(木) 12:58:02.00 ID:xdGxMciN
糞スレage
>>980 次スレにはこの流れを引きずらないで行きまっしょいな意気込みで
こっちでヒートアップしないようにするには、奴関連の隔離スレが復活すればいいのかね
向こうに書き込みはじめた コイツもkazukiだったのか
東京ゲームショーでアマチュア部門入賞するのはどれぐらいのクオリティがあればいいですか
もう末尾に「かしこ」みたいな感じで「kazuki」って入れるようにして まともにDxLibのレスだけしてれば全てうまくいくよ^^
矩形内に文字列を描画する関数ってある? ちょうどAPIのDrawTextのような。
>>986 それむしろAPIのDrawTextじゃダメなのか
次にお前はビルボードに書き込みたいんですと言い出す
>>987 やっぱり相性が悪いね。点滅してうまく描画できない。
990 :
986 :2013/11/07(木) 16:44:37.39 ID:DCtZj/a5
いろいろググったらDrawObtainsStringってのがあった。 非公開関数で文字入力関数に分類されてたから気付かんかった。 スレ汚し失礼。
>>989 それ相性とかじゃなくて、もしかしてDirectXの「描画先の」DC使って書こうとしてるんじゃ
もしそうなら当たり前
992 :
986 :2013/11/07(木) 19:54:54.88 ID:DCtZj/a5
全力でそうした/(^o^)\ バックバッファのDC取得とかできるの?
>>992 バックバッファのDCと言うか、普通はRenderTardgetを別に作成して、そこにDirectXの出力書き込ませた後、
文字とか書き込んで、それを出力とかするかな
画像とかモデルファイルを実行ファイルに組み込みたい場合ってどうしたらいいの? ビジュアルスタジオ2010使ってて、画像の読み込みとかはdxlibの関数使ってる
リソース
ソースファイル ヘッダーファイル リソースファイル 外部依存関係 って並んでるところのリソースファイルに追加すればいいのか? 簡単だな、なんでみんなやらないんだ
だって素材修正するたびにリンクしなおさなきゃいけないじゃん
実行ファイルが肥大するのは避けたいし、リソースからの読み込みは遅いからだよ
リリースするぞ!ってなったらもう変更しないじゃん 細かいアップデートはめんどくさいかもしれないけど dxlibについてるアーカイブより 「プレイヤーに見られたくないファイルを隠蔽する」 って目的にあってんじゃない?
リソースは暗号化したアーカイブより簡単に抽出できちゃうだろ・・・
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。