DrawGraphとかにある引数のTransFlagってデフォルトでTRUEに設定しておいて欲しいよね 自分でヘッダ書き換えろって話なんだけど
デフォルト引数設定するだけやん
ラップ関数作ればいいやん
おまえら天才だな
C#でDxLib使ってるんだけど 親ファイル │ ├Main.cs ├Game.cs └graph └graph.bmp class Main{ static void Main() { DX.ChangeWindowMode(DX.TRUE); DX.DxLib_Init(); Game gm = new Game(); gm.Main(); DX.WaitKey(); DX.DxLib_End(); return; }} class Game{ public void Main(){ int graph = DX.LoadGraph("graph/graph.bmp"); DX.DrawGraph(0,0,graph,DX.TRUE); }} graph:bmpが表示されないorz パスの指定が間違ってんのかな……
graphフォルダはexeファイルが作成されるフォルダ(dxlib.dllを入れるフォルダ)にないとだめ
エラーチェックしないから…
エラーで例外投げないC#とか意味ないな。
イミフ 拾えるぞ?
マップ3Dの2Dアクションだけど、段差にくっ付きながらジャンプすると引っかかってジャンプしない これ判定の仕方が悪いよね… 移動→本体座標ずらす→埋まってたら戻す、って当たり判定してるんだけど 仮の座標伸ばして本体座標を動かさないようにした方がいいかな
>>14 真上、あるいは段差から離れる方向へのジャンプなら問題ない?
真上とかは問題ないですね キャラは2Dでマップ3Dだから当たり判定に線引いてみたら左右に移動してる時は当たり判定ずれてる…
SetChangeScreenModeGraphicsSystemResetFlag()なんて関数があったのね… わざわざグラフィックハンドルを自前で管理して ウィンドウモード切替時にロードし直すように実装した後に知ったぜ… つか関数名なげーよw
18 :
名前は開発中のものです。 :2012/11/07(水) 01:05:46.09 ID:WpkERH/p
バグ見つけたぜ 対応してもらえるかな?
バグかどうか怪しい、あるいは環境依存かもしれないと思った場合は 一度ここに最小コードを晒してみても良いのよ。
20 :
名前は開発中のものです。 :2012/11/07(水) 11:35:40.40 ID:WpkERH/p
よく考えてみたら正しい動きっぽい
受け取った文字列(FileName)+数字(i)のpngファイルの画像ハンドルを 可能な限りvector配列に突っ込むって処理なんですが、 もっと綺麗に書ける気がするんですけど、どうしたらいいですか? int tmpHandle = LoadGraph((FileName+"0"+".png").c_str(),0); for(int i=1;-1==tmpHandle;i++){ HandleFrame.push_back(tmpHandle); ostringstream oss; oss << FileName << i << ".png"; tmpHandle=LoadGraph(oss.str().c_str(),0); }
>>17 リピートアフタミー!
セットチェンジスクリーンモデルグラフィックスリセットフラグ!!!
モデルちゃう、モードや
3Dアクションで大量のパーティクルをステータス与えて演算してDrawPolygonIndexed3Dで描画してるんだけど ずっと1万エフェクトぐらいでfpsが5以下になるレベルまで落ちてたからいよいよグラボ載せようかと思ってたんだが ふと描画無しで演算だけさせたら、それでも10ぐらいまで落ちるんだけどなにか仕様上の問題ってあったかな CPUは4つのコアが均等に20%ぐらいの負荷がかかってる状態だから問題無いと思うんだけど
2コアユーザー切り捨てですか?
記憶を頼りに書いたけど実際ちゃんと測ったら2つ目のコアが50~90%ぐらいで他は10~30%ぐらいの負荷だった 演算の最適化と評判悪いけどマルチスレッドしか無いかな あとグラボ載せたら描画関係の演算はGPUに行くからCPUの方は余裕できたりってするかな
DXライブラリ初期化の前に設定ファイル(ユーザが前回のプレイで設定したコンフィグ)を読み込んで 指定された画面サイズで起動するのと、まずは320×240(デフォルト)で起動しておいて「起動中...」とか メッセージを表示しつつ設定ファイルを読み込んでから画面サイズを自動で変更するのだと後者の方が 安全なのかな?自分がプレイヤーだった場合の視点だと起動時にまどろっこしいのは苦手だから悩む
前者だろ。後者の目的が分からん。そんなゲームは見たことない。
>>29 Windowsみたいな起動ロゴ表示されたりプロンプトで起動準備するPCゲーは珍しくないでしょ?
DXライブラリなら特殊な知識を必要とせずにこれが擬似的に表現できると思ったんだけど
>>30 珍しくないって例えば何てタイトル?
そんなゲームは少なくとも商業ゲームでは記憶にない。
そもそもそれをする理由がないし。
スプラッシュスクリーンはロードに時間のかかる重量級ソフトが
ユーザーに対して、フリーズとロードを区別できるようにするためのもの。
例えばPhotoshopやEclipseがそう。Windowsがこれら以上に重量級なのは言わずもがな。
自分の知ってる洋ゲーだと、 起動ランチャーからPlayとOptionが選べて Optionからウィンドウ・フルスクリーンまたは解像度の選択をすることで Play時の画面が変わるタイプと、 とりあえずフルorウィンドウモードで起動させておいてゲーム内オプションから 画面モード、解像度が切り替わるタイプがあるね。 スプラッシュロゴを先に表示させてーって言うのはなくもない気がする。 確かあれは…アリスソフト
アリスソフトはスプラッシュスクリーンじゃなくねと思ったら古いのは一見そうだったな でもあれはオプションでスキップできるからやっぱりスプラッシュスクリーンじゃないんじゃね
そんな面倒なことするなら、さっさと起動してサークルロゴでも表示して、その隙に読み込むほうがマシ
つーか、あんなくだらない質問する人がスプラッシュスクリーンが必要になるほどのゲーム作ってるとは思えんw
初心者だからこそ大量のデータを非効率的に読み込んで時間がかかるんだろ データ量が多いゲーム=いいゲームってどこの小学生だよ
>>32 ランチャーでオプションの設定、MODの切替とかできるゲームは腐るほどあるね
開発ブログのフィード表示したりとか
でも
>>28 が言ってるような、設定読むためにスプラッシュスクリーン表示するゲームってのは聞いたことないな
初心者が初心者なりに試行錯誤しながら ゲーム作っちゃいかんのか?
前に自分がやったときは、 別途にGUIアプリを作っておき、そこからゲーム本体を起動する形にしてた。 GUIアプリはルートディレクトリに、ゲーム本体の方は下位ディレクトリに置くようにして、 ユーザには基本的に前者を起動させるようにする。 解像度とかの設定は、起動時に引数で渡すなり、iniファイルを経由するなり。
わざわざ別アプリにしなくても、Windowsアプリケーションならゲームのexeに組み込めるけどね ゲームのメインループに行く前にそのダイアログのプロシージャだけwhileで回しておけばいい
俺もDLLの数がかさんだ時やってるなあ
DXライブラリなら、ini読んで最初の描画するまで1秒とかからないよね 前者も後者も時間は変わらないと思うんだけど 最初の描画の前に、巨大なファイル読み込みをしてしまって時間かかってるなら、 それをやめて、最初の描画のあとで巨大なファイル読み込みすればいいと思う
3Dゲーム作ってるんだけど、キャラモデルの影が強すぎる… みんな調整とかしてるの?マップの方はなんともないのに
44 :
名前は開発中のものです。 :2012/11/13(火) 14:04:57.88 ID:NSnEvyoH
アクティビジョンのトニーホークシリーズで、画面解像度とか、Fogのオンオフとか選べるランチャー経由で起動してたな。 exe直だと前回と同じオプションのままで起動だったと思う
45 :
名前は開発中のものです。 :2012/11/13(火) 17:18:55.36 ID:54EeWz/8
>>24 均等に負荷かかってるならマルチスレッド処理してるってことだよね?
処理の粒度が細かすぎるとかじゃないかな。粒度が細かすぎると、同期APIでカーネルスケジュラーが
頻繁に起されて、CPUの負荷が上がらなくなるように見えたはず。
46 :
43 :2012/11/13(火) 22:35:47.91 ID:kWBnqj8x
俺だけみたいだな、モデルの問題か XファイルなのがDXライブラリと相性が悪いとかじゃないならいいや
47 :
名前は開発中のものです。 :2012/11/15(木) 20:46:12.19 ID:fgdtbuMx
CSSスプライト見たいな手法って画像のロード時間だけで 描画とかゲームの速度自体に影響するのかな?
一応テクスチャ切り替えの手間が省けるからちゃんと軽くなる そこが結構重いとか重くないとかいう噂は聞いたことあるけどそういえば調べたことはないな・・
速度よりは、全く同じように使えるようにする工夫が気になる
めっちゃ影響するぞ 最悪の状態と最高の状態を比べると数倍から数十倍もの速度差がでる 最悪の場合をテストするには、画像Aと画像Bそれぞれの画像からグラフィックハンドルを作って交互に描画 最高の状態をテストするには、画像Aと画像Bを結合した一枚の画像を作って、LoadDivGraphで読み込むか、 もしくは画像Aと画像Bを結合した一枚の画像を読み込んでグラフィックハンドルを作り、DerivationGraphでそれぞれのハンドルを作って、 交互に描画 最悪のパターンなんて、実際には弾幕シューティングでわざわざ別画像の弾を交互にばら撒きまくとか、 別テクスチャのマップチップを交互に敷き詰めるとか、奇妙な状況でしか起こり得ないけど
へぇ、メモリに入ったら同じかと思ってた
書いてて思ったけど、テクスチャ切り替えの発生回数をカウントする関数が欲しいな 最適化プログラム作る際の参考になりそう
実際どのぐらい違うんだろうね 3Dだとモデルを描画する度にテクスチャが切り替わってると思うんだけど
>>45 まさか今更相手してくれるとは思わんかったありがとう
えっとID変わってるけど
>>26 の通り、改めて計測してみると
大体計測の単位時間あたり2~3単位時間に1回ぐらい100%になるコアがある
でも他のコアは20~30%ぐらいだし2~3単位時間に1~2回は60~80%ぐらいしか稼働してない
fpsは常時3~5程度
ソースコードは公式の3Dサンプルプログラムをひたすら改変したものだけどマルチスレッド処理は書き加えてない
描画関数をコメントアウトしても同じぐらいの負荷とfps
でもパーティクルの運動とかの記述はそのままに描画関係の行列計算とかを大量に含む部分を切ったら1万パーティクルでもfps59.6~59.9で安定
今のところテストでグラフィックハンドルは1つしか使ってないので
>>50 で言う最悪の状態にはなってないはず
将来的にはもっと大量のエフェクトを描きたいので出来れば10万~100万ぐらい扱いたい
最適化は一切してないので描画関係の行列計算がかなり多いように感じる
でもCPUの計算能力や描画関数の呼び出しとかとの相対的な負荷が想像がつかないのでどの程度影響与えてるかわからない
1万~10万ともなると普通の四則計算や行列計算の負荷もバカにならないのかな
連投スマン
仮にマルチスレッド処理をさせるようになって
>>45 の状況になったしたら
CPUの負荷が上がらなくなるように「見える」だけで実際は限界まで負荷かかってるの?
56 :
名前は開発中のものです。 :2012/11/16(金) 01:43:36.27 ID:O/FEtKHj
>>54 あれーじゃあなんで均等に負荷がかかってるんだっていう疑問がわいてくる・・・
前段の部分は、行列計算が重いのかなぁ・・・。でもその場合はそのスレッドが全力で走るはずだよね。
後段の方は、実際にも限界まではかかってないよ。
粒度が細かすぎの場合カーネルオブジェクトで同期すると(最悪時には同じ
オブジェクトをそれぞれのスレッドでロックをとりにいくから)1/スレッド数 ぐらいしか
はたらかなくなっちゃう、で、ただただカーネルスケジュラーが走る分だけ重くなる。
(スピンロックの時は全力でスピンし続けるからすべてのスレッドが上限に張り付くのが見える。)
>>56 紛らわしいことしてごめん
>>24 の均等に負荷ってのは間違いで
>>26 や
>>54 の通りどれか1つのコアは高負荷状態になってる
他の3つは確かに割と均等だけど……
でも確かに自分でも処理落ちしてるんだからどれかのコアは常時100%負荷じゃないとおかしいとは思ってる
一応CPUはi5 2500Kでそこまで古いわけじゃないからちゃんとしてやれば別に毎フレーム数万回の運動計算ぐらいなら大丈夫だと思うんだけど
さすがに100万エフェクトに上限設定したらアイドル時?の毎フレームのループ処理だけでfps40ぐらいまで落ちるけど
もう少しして描画関係の関数が落ち着いたらマルチスレッド処理するようにしてみようかな
そのときにもうちょっと勉強して参考にさせてもらうよ
でもまあなんとなくのイメージは分かったありがとう
あとつい勢いでグラボも積んでみたんだけど、ソフトウェアレンダリングじゃなくてハードウェアレンダリングにするのは
SetUseSoftwareRenderModeFlag でFALSE返せばいいんだろうか
これを入れる前後でGPUの負荷も変わったように見えない……
0~40%ぐらいまでしか上がったこと無いんだけど
行列計算は用意された関数を使ってるわけじゃなく自前? だとしたら普通にその計算が重いだけだと思う 昔自前で座標変換してたコードを発掘してみたら三角関数たっぷりの糞重そうなコードだった 1万パーティクルというと頂点数はその数倍あるだろうし、その上ソートとかもあるとしたらかなりの重さになると思う 弾幕STGの弾の計算処理との比較での想像だけど
>>58 行列計算は主にDXlibのMGetRotAxisがほとんどかな
自前で用意したのは使ってない
1パーティクルあたり6頂点(4インデックス)の長方形の板ポリを
時間経過に合わせて自由に変形できるようにしたりしてる
あともう一つ心配な要素としてパーティクル構造体のメンバがかなり多いことがある
個人的な話だけど今まですごく不自由な環境で真似事みたいなことを長いことしてたから
パーティクル一つ一つの運動や展開にとにかく自由度をもたせた結果、
数えてみると一つのパーティクルごとに(unsigned)charが42、intが26、floatが23 程あった
計算がここからの引用の演算が9割なんだけどこれって影響あるかな
MGetRotAxisでも頂点を個別に処理してると重そうだな 何をやろうとしてるのはかよくわからないが、頂点数が多い場合はカメラの側を動かすとかの工夫が要ると思う 頂点一つの変換だけで三角関数が数十回使われるからね 構造体の重さだけど、それが問題になるのはメモリコピーや再配置が行われる場合 つまり、構造体の配列をソートしたり、構造体を関数などに直接渡すときだけ ソートが含まれる場合は、その配列は構造体のポインタにしておくと早くなる 関数の場合は参照渡しかポインタで
3D空間に文字を表示する方法ってある? リファレンスみたけどそれっぽい関数が見当たらなくて 内容変化するからテクチャーに貼って表示する方法は使えない
内容変化するなら毎フレーム描画し直せばいいじゃん? まぁヘッダ読むと多分見つかると思うよ 未確認だけど
更新来てるね 毎度お疲れ様です
自分で制作中のプログラムを 3.09 に載せ替えただけで、60 FPS に届くようになった。
更新しようと思ったらVisualStudioも2012とかなってるのかよ知らなかったわ
ライブラリの更新ってまだ軽量化の可能性とか残ってるもんなの?
少なくともDXライブラリはソース見る限りエラーチェックが一番の重くなる原因だと思うから、まだまだ軽量化はできると思うよ 数年前にはライブラリ作者自身がDirectX生で使うより10倍以上遅いって言ってたし
>①1万枚が1つのテクスチャを使用していて、且つ全く動かず、1画像辺り16x16サイズであり、それを1万枚毎フレーム描画する、 という条件でしたらDirectXを直接扱う場合はビデオカードの性能が良ければDXライブラリの10倍以上高速に描画できると思います >②動かない、という条件のみ変えて1万枚の画像がランダムに画面上を等速直線運動している(画面端にぶつかったら跳ね返る)という場合ですと 差はいきなり縮まってDXライブラリのDrawGraphを使う場合より1.5倍ほど高速に描画できると思います、ただ、DXライブラリの DrawPrimitive2Dを上手く使用した場合は恐らく速度差は殆ど無いと思います これだべ? 10倍遅いは誤解を招くべ
それだ うろ覚えだったわ でも関数によってはまだまだ数倍高速化できるのは事実 描画関係じゃなくね
描画関係以外で速度求めるって一体どんな関数使ってんだよ…
1フレームに数千回呼び出す関数なんかはエラーチェックでかなり処理食われたりするよ 多数のオブジェクトに別々の動作をさせるようなプログラムだとたまに起こる
いや…自分で定義した関数ならともかく、DXライブラリの関数で数千回とか何やっとるん…?
想像できないなら想像できないでいいと思うよ
性格悪っ!
だってめんどくさそうな人だから相手したくないんだもん
だったら無視すればいいだけ!
78 :
名前は開発中のものです。 :2012/11/27(火) 13:17:22.16 ID:6Mv2IZhC
アホす
自演まるわかり
プログラマブルシェーダー2.0を使用できる環境では通常の描画処理にも ピクセルシェーダーを使用するように処理を変更。
DXlibがソースそのままでWindowsStore用のアプリ生成出来ればええな 昔作った奴いつくかそんなに日本語部分多くないから英語でリリースして 外人さんの感想聞きたい
まず海外のフリゲ公開サイトにでも登録してみたら
>>81 すぐには無理でしょ。
.DxlibがNETベースのC++/CLIかC#あたりに移植されれば別だが。
当然、自分のゲームソースも同じようにC++/CLIかC#に移植になるけど。
更新されてたんで久々に更新したら SetCreateDrawValidGraphChannelNumでチャンネル数2で良かったものが3必要になってた
DXライブラリのソース追っていくのすげーきついな
ちょっとお前らの経験則から助言いただきたいんだけど、筋力から物理攻撃力を求める時みたいに 元の数値さえあれば格納しておかなくても計算で導き出せるような項目をわざわざ格納しようかなと 思ってしまう 計算の複雑さ×使用頻度 の目安ってどんなもん? そういう数値は格納したら格納したで整合性を保つための更新タイミングも考えなくちゃいけないけど そういう手間も加味して評価するよね、こっちは管理者が更新するようにして解決しようと思うけど
何を言ってるかよく良く解らんが、 全てを最新状態に更新する処理を作っておいて、 装備を変えるときとかにそれを呼び出せばいいんちゃう? (デバフ喰らったりしたときとかはまた別になるのかもしれんけど) 新しい項目を追加したりした時その方が変更楽じゃない? でもDXライブラリと関係ないよね。
>>86 外部ファイルやらDBやらを使ったり、算出にランダム要素などが加わるならキャッシュする。
そうでなければ気にしないかなあ。
俺はそういう場合、キャラクラスですべて管理するようにしておいて、 実数値もメンバとして用意しつつ、変化と再計算もメンバ関数にする アイテムを装備する場合とか能力変化技を受ける場合、そのキャラの装備関数能力変化関数を呼ばせる その中で毎回再計算関数を呼べば数値は常に最新になるし そもそも実数値をほとんど使わないとしても、格納しておかないと、規模が大きいゲームになってくるとデバッグが面倒になったりする
環境によって作成できる最小テクスチャサイズってあるのかな MakeScreen(8, 8, TRUE) と小さい画像作ったんだけど、テクスチャ幅が8以下の画像だと 初期化もされないうえにClearDrawScreenをやってもクリアされないっぽくゴミが残る これより一回り大きい幅16になるとゴミも消えてくれる
>>87-89 サンクス。とりあえずインターフェイスを計算結果側の項目に絞っておけば
後からどっちにも対応できて良さそうだね
初心者です。画像表示のためのラッパクラスを作っていて 画像ハンドルと、DxLibのDrawRotaGraph3の引数と同じ項目(描画位置以外)をメンバ変数として持ち 各メンバに値をSetした後にDraw(int x, int y)で描画できるようにする予定なのですが、 拡大率が1.0倍で回転角度も0度のような、DrawRotaGraph3を使わずともDrawGraphで描画可能な場合、 やはりDrawGraphを使って描画した方が処理が速いのでしょうか?
速度のことは必要になるまで考えるな 以上
94 :
90 :2012/12/01(土) 15:57:16.54 ID:xUkutrV6
自己解決した ListUpTexSize関数内で、2のn乗ではなくて良い場合の条件に合致するとき 最小サイズ未満の場合が抜けていたのがうまくいかない理由だった MIN_TEXTURE_SIZEで最小サイズを変更できるけど上記の部分も変更しないと 最小サイズが適用されないことがある
MV1SetMaterialTypeってトゥーン表示に出来るみたいだけど リファレンスに乗ってない?使い方が分からない…
プロローグによくあるような、画面上部にイラストがあって、下部に「むかしむかし、、、」みたいなかんじで文字をだしたりしようとおもってるんですけど、ああいうのってムービー作って再生させてるんですか? 実装しようとするとフェードインアウトとか結構手間がかかりそうで。
全然手間じゃない フェードはフラグを用意しておいて、TRUEなら透明度が255になるまで毎フレーム増やす、FALSEなら透明度が0になるまで毎フレーム減らす、 みたいな感じに組めばすぐできる そんなのでムービーにするのはバグや相性問題の元だからやめとけ
>>98 なるほどー。相性とかあるのか、、、。
わかりました。今日の夜やってみます。
「画面上部にイラストがあって」の部分がよくわからないけど、ゲームのプロローグなんかは普通動画だよ。 背景に動画を流して、下に字幕被せてるだけ。
ヨッシーアイランドみたいなのだろ アニメを流すなら動画だけど、単に静止画やドットアニメレベルならプログラムの方がいいと思う プログラムで簡単に出来ることをわざわざ動画にして要領増やすのも馬鹿らしい
上から黒い四角を重ねるだけでも、フェードイン/アウトにはなるしな。
まずは完成させること優先で考えたら? 動画作りが得意なら動画で済ませておいて、後でやり直したくなったらやり直せばいいだけ。 プロじゃないんだから極力難しいことは避けても問題ない。 例えば作り直すタイミングで、もっとかっこいい3D動画にしよう!という新たな方向性に目覚める可能性も残せたりね。 でも完成させることよりプログラムの勉強が優先なら、ちょっと悩んでもやりたいと思った今プログラム組んでみたほうがいいと思う。
言われている通りでまさにヨッシーアイランドと同じような感じで作りたいと考えてました。 動画作成も興味はありますが、とりあえずプログラムでやってみます。
便乗してすごく初歩的な質問なんだけど
>>98 が普通に「透明度」って言葉使ってるけど
画像を表示するためのDrawGraph系の関数には透明度の指定がないから、
毎回SetDrawBlendModeでアルファ値を設定してから描画するって意味?
フェードの話だとマスク画像かもしれないけど、単純に画像に透明度を指定して
表示させたい場合はやっぱり↑の方法しかないんですか?
少なくとも俺はそうやってる。
>>105 そう
自前でSetDrawBlendModeしてからDrawGraphする関数を作ってもいい
ライブラリを更にまとめた自前関数いいよね
ついでだから俺も便乗させてもらうけど パーティクルの描画をそれぞれに描画に必要なステータスをクラスのメンバで管理してて いろんな種類のパーティクルを全部DrawPolygonIndexed3Dにステータスを当てはめて一括で描画してるんだけど 黒煙の表現とかに減算合成使いたいんだがSetDrawBlendMode使うと 管理の方法上パーティクル一つ一つの描画のたびにSetDrawBlendModeを呼び出すことになって たかだか1000程度のパーティクル数で30fpsぐらいまで落ちる 管理人が昔、一括描画の最適化処理がSetDrawBlendModeの変更とかで途切れるから重たくなるって話を聞いたんだが ここまで酷いもんなの?それとも他に原因がありそうだろうか っていうか直接DrawPolygonIndexed3Dで減算みたいなこと出来ないかな 何かいい方法ない?
ブレンドタイプごとにまとめて描画すればいいんじゃね
普通に考えると何度もブレンドモードを切り替えるような設計が間違ってる SetDrawBlendModeは現在のブレンドモードと同じなら変更しないようになってるので、できるだけ同じタイプのパーティクルの描画が続くようにするべき クラスで管理してるのならソートは簡単なはず 組み合わせてる描画が通常描画なら、煙のエフェクトには減算なんて使うもんじゃないし、黒いパーティクルを用意して通常描画にするのもいい もしくは、複数のパーティクルを一つにまとめて数を減らす ┌─────┐ │ │ │ │ │ ● │ │ │ │ │ └─────┘ ↑みたいな画像を大量に描画するんじゃなく、 ┌─────┐ │● ● │ │ │ │ ● │ │ ● │ │ ● │ └─────┘ ↑みたいな画像にすれば見た目はあまり変わらず、パーティクルの数と描画負荷は1/5にできる
横槍っぽくてすまんがクラスのメンバにFlagを持たせる場合intとboolどっち使ってる? 個人的にはbool使いたいんだがDXライブラリのFlagがintだからどっちにしろムズ痒い
boolで、自動伸長にまかせる
両方使えばいいやん RPGツクールだってスイッチと変数あるで
俺は大は小を兼ねるでintかな 特定の数値をエラー番号にできるし
どの道intでやってきてるから変更はしたくなかったんだけどね・・・ 即レスで「boolしかねぇだろバカ」って言われたら踏み切ろうと思ってた、ありがとう
119 :
114 :2012/12/07(金) 00:20:29.50 ID:y/XfV8vE
なんか俺がマヌケだ
自分はboolかなー。 三値以上、あるいはエラーコード等を考えてintにするなら、 どっちかっていうとenumとかにするべきのような気もするし。
>プログラマブルシェーダー2.0を使用できる環境では通常の描画処理にもピクセルシェーダーを使用するように処理を変更。 とあるけど、速度に対する影響ってどんなもんなんだろ
t-potやなんかの簡単なhlslをdxlib用に移植することすらできねー 俺アホすぎオワタ
2Dでいいじゃないか
その2Dでもシェーダ使うけど?
DXライブラリのシェーダは仕様の制限がわかりにくい
ライト方向の定数がワールドじゃなくビューなのがわからん コンパイラも列オーダー強制で転置必要だし、他サイトのサンプルも俺の頭じゃ満足に動かせない
シェーダ使わなきゃいいじゃない
Paint文はちゃんと動く? 宣言だけで中身のない命令なのか
ライブラリにライト設定ってあるけどこれマテリアルの設定なんだよね ゲームの影みたいには出来ない…射影法だっけ
2Dなんだけど、回転付きDrawBoxってあったっけ?
ない DrawQuadrangleで代用するか、DrawQuadrangleを使って自分で用意べし
おお、ありがとう。 危うくDrawLineでせこせこ書くところだったぜ
Ver3.09にしたらフルスクリーン→ウィンドウの切り替えで フルの画面が残る?んだけど同じ症状出てる人います?
DXライブラリはもう保守が限界に近づいてるんじゃないか
「フルの画面が残る」の意味がわからない。
デスクトップ左上からフルスクリーン解像度分が黒く塗りつぶされた状態で残ってるってことだろ? そういうのってビデオドライバのバグな気もするが
3.09にしたら、って事はそれ以前のバージョンじゃなってなかったって事だよな。 バージョン戻して、ちゃんとなってるかどうか確認してみる必要があるんじゃないか。
>>135 >>136 直前まで表示されてた画面がそのまま表示されっぱなしになってます
裏でウィンドウに触れたりは出来るんですが
>>137 3.08eに戻すと大丈夫です
もうちょっと調べてみます
俺もテストプレイしてもらった人から、ウィンドウモードで表示されない(他にも異状はある)という報告をもらった。 (133とは現象違うし、旧バージョンでも起こるようだが) Win7で発生してXPでは発生しないという事らしいが、133のOSは何使ってるの? このままじゃWin7は対象外って事になってしまう……。
あ、「ウィンドウモードで表示されない」じゃなくて「フルスクリーンモードで~」でした。
141 :
133 :2012/12/13(木) 14:20:52.98 ID:dHHXSXFg
>>139 開発は8ですね
症状自体は7とVISTAでも再現するのを確認してます
XPは手元に無いのでまだですが
142 :
名前は開発中のものです。 :2012/12/13(木) 16:11:18.90 ID:RivcO0oI
反転のブレンドモードで描画すると設定した透過色が 透過されないんだけど仕様かな?
143 :
テルマの代行 :2012/12/13(木) 16:41:44.29 ID:Ib1R9I8O
139のはグラフィック復帰書いたりしてるの? 出来ないなら「フルスクリーンには対応してません」でいいじゃん。 133のはビデオドライバっぽいな。 8にアップした後に8用のドライバにアップして、 カスタマイズせず「工場出荷時の設定」などでテストしてるだろうか? 俺の環境ではウィンドウフルスクリーンの切り替えでまったく正常だ。
144 :
139 :2012/12/13(木) 17:44:23.56 ID:eCbS15Yt
>>143 もちろんグラフィック復帰は書いてるよ。
今ではDXライブラリで自動復帰とかできるみたいだけど
そうなる以前に書いた自力でグラフィック復帰させてるソースだからその点は間違いない。
前述したように「他にも異状がある」ので「フルスクリーンに対応してません」ではちょっと済ませられないかも。
プログラム自体とは関係なさげな異状だから、俺のバグではないと思うんだが……。
なんにしてももっと調査が必要だわ。
145 :
133 :2012/12/13(木) 18:02:50.39 ID:dHHXSXFg
>>143 正常との報告ありがとうございます
8とVISTAが別環境なので疑ってなかったのですがドライバ周りも探ってみようと思います
ドライバ問題かどうかはSDKのsimplesampleあたり試せばすぐ分かりそうだけどね 前バージョンで動いていたのなら可能性としてすごく低いと思うけど。 今更だけど本体の更新でコアな部分に手を加える前に 最新版と安定版に分けてくれていたらなあ
148 :
133 :2012/12/15(土) 14:48:25.74 ID:4z8W5i5N
いろいろ調べた結果、どうやらVC#用3.09だけで起こる問題っぽいです とりあえずVC++用3.09だと大丈夫でした C#用は変換ソフト使ってるとのことなのでおかしくなる事もあるんですかね… あとで公式に投げておこうと思います アドバイス等々ありがとうございました
DerivationGraphって非同期読み込みの対象外なんだな これも対象にしてくれても良かったと思うんだけど
実際には読み込み用じゃないから仕方がないか ああ、作り直さなきゃ
質問。 DXlibでゲーム作る傍ら、同じくDXlibでそれ用のツールも作り始めたのですが、 1画面に収めるにはレイアウト的に無駄が多いので複数ウインドウで1アプリに したいのだけれど、DXlibはその機能を提供せず。 Windowsの機能を直接利用するしかなさそうなのでその線で考えているのですが、 良い手本や資料ってありますか?
WIN32APIで検索すれば講座サイトたくさんヒットすると思う ついでにDxLibに頼らなくてもそこそこやれるくらいの知識を身に付けるつもりでやると良いかもね
あーあとそれとはまた別の話になるけど エディタを作るならC++じゃなくてC#やVBがラクだと思うしその知識は無駄にならないと思う WIN32とか基礎からやろうと思うと勉強意欲がガシガシ削られかねない
154 :
151 :2012/12/23(日) 22:16:09.12 ID:UDpOJxNp
助言ありがとうございます。 確かにAPI叩きが身に付けば天下無敵なのですが。 身に付けるのにどれだけ時間掛かるかなあ(^^; 私はCがおぼつかない程度の実力で2010EXPRESS使っています。 VBはともかくC#ですか。 今まで考慮に入れた事なかったので少し資料あたってみます。 そちらから突破口考えてみます。 ありがとうございました。
C#なんかマウス操作で部品はっつけて、 ボタン押されたときの処理とかを書くだけで出来上がり
うん、だから簡単なツール作るのに使う人が多いね
eclipseでDxライブラリを利用したいんだけど、 デバッグができなくて困っとります。 どなたかお知恵を貸してくだされ。
それだけじゃわからんなー。ライブラリにリンクが通ってないのでは? 自力で環境設定ができないレベルならVC使ったほうがいい。
VC++ Expressがある時代に何でWindowsでEclipseを使うのか
宗教的な理由だろう
他の言語、他のOSでも作業するような人なら、 ツールくらいは統一したいという欲求は出てくるんじゃない?
リファクタリング機能が使いたかったのよ。
>>158 ありがとう。
原因を特定できるようがんばってみます。
163 :
名前は開発中のものです。 :2012/12/30(日) 19:11:14.02 ID:ULgRYKjI
職業,no.01,no.02,no.03,no.04,no.05 戦士,a,b,c,d,e このcsvデータ(Data/Mastery/Name.csv)をstring型のvector配列 Nameに順に格納したいのですが void SceneMastery::Load_Mastery_Data(){ int FileData; char Dummy[256]; FileData = FileRead_open("Data/Mastery/Name.csv"); if(FileData==NULL){ printfDx("ネームデータの読み込みに失敗しました"); } for(int i = 0; i<1; i++){ FileRead_gets(Dummy, 256, FileData); //一行目を読み飛ばす } for(int i = 0; i<1; i++){ FileRead_scanf(FileData,"%[^,],%[^,],%[^,],%[^,],%[^,],%s", Names[0].c_str(), Names[1].c_str(), Names[2].c_str(), Names[3].c_str(), Names[4].c_str(), Names[5].c_str()); } FileRead_close(FileData); } 現在この様な形式でNamesにデータを格納したいるのですが 最終的にcsvデータを30個程度格納する予定です それだとFileRead_scanf関数の引数がものすごい長くなってしまうのですが(Names[0].c_str()~Names[29].c_str()) こうした方がいいとかありましたら教えてください できるかはわかりませんが思いついたのは FileRead_gets関数で一行全部読み込んで forループ30回回してNames[i]に文字列操作で,の部分で区切って格納していく ぐらいしか思いつきません
>>163 俺は素人だから気の利いたこと言えないし俺も他の人の解答を聞いてみたいけど
おおむねその思いついてる方法で良いんじゃないかな?
1行読み込んだ文字列はstd::stringstreamに渡せば書式指定しなくても
Readする変数に合わせてデータを格納してくれたと思う
それ以前にc_str()ってconstに書き込む気か?
FileRead_scanf(FileData,"%[^,],%[^,],%[^,],%[^,],%[^,],%s", Names[0].c_str(), Names[1].c_str(), Names[2].c_str(), Names[3].c_str(), Names[4].c_str(), Names[5].c_str()); ↓ #define MAX_BUFFER_SIZE 32 string_buffer[6][MAX_BUFFER_SIZE]; FileRead_scanf(FileData,"%[^,]"string_buffer[0]); FileRead_scanf(FileData,"%[^,]"string_buffer[1]); FileRead_scanf(FileData,"%[^,]"string_buffer[2]); FileRead_scanf(FileData,"%[^,]"string_buffer[3]); FileRead_scanf(FileData,"%[^,]"string_buffer[4]); FileRead_scanf(FileData,"%s"string_buffer[5]); Names[0] = string_buffer[0]; Names[1] = string_buffer[1]; Names[2] = string_buffer[2]; Names[3] = string_buffer[3]; Names[4] = string_buffer[4]; Names[5] = string_buffer[5];
訂正 × string_buffer[6][MAX_BUFFER_SIZE]; ○ char string_buffer[6][MAX_BUFFER_SIZE];
さらに最大フィールド幅を指定したほうが安全だな
いつの間にかバックバッファのポインタ取れるようになってたのね WPFと合わせる事が出来るようになってGUIがめっちゃ楽に作れるわ
これフリーなのにほんとすごいよな 64ビットプログラムがこれのおかげであっという間にできたわ
意味不。64bitはサポートしてなかったはずだし。
なんだなんだ、WPFってのがゲーム製作にいいのか?
wpfはツール用だ。 間違ってもゲームで使うようなものではない。
何かを関数に入力パラメタとして渡すときconst参照を使うけど みんなはintとかサイズが小さいとわかりきってるものもconst参照で渡してる? 俺はいままでintだと値渡ししてたんだけどたった今そのクセで再起関数に 取り掛かったら、こりゃ(const参照じゃないと)いかんよな
175 :
163 :2013/01/01(火) 18:45:31.24 ID:mesBEkAt
>>166 参考にさせていただきました。おかげでうまくいきましたありがとうございます。
>>165 まだよくわかってないのですが
FileRead_scanf関数の引数はcharなのでstringをcharに変換するc_str()関数を使った程度の考えです。
一応うまくいってはいたのですがこれはまずいんでしょうか?
最悪レベルの間違い
おまじないプログラミングで勉強しちゃったのだろう stringやvectorが魔法でメモリを管理してくれるとかなんとか >一応うまくいってはいたのですがこれはまずいんでしょうか? stringの初期サイズ(たぶん16くらい)で偶然動いてるだけ 戦士,田中,安田,川田,田島,山田みたいなデータだからいいけど 100文字くらいの長い名前だったら途中で切れてるよ
>>174 ポインタサイズより大きい場合には参照だな
再帰は簡単のなら戻り値でやるしconst付けた再帰てどういう状況だ?
質問なんだけどメモリを途中からコピーする方法ってある?
メモリ?勝手に代入すればいいじゃん
解決した。普通にmemcpyでできるんだな
void TEST(){ int FileData_00; FileData_00 = FileRead_open("Data/Help_00.csv"); int FileData_01; FileData_01 = FileRead_open("Data/Help_01.csv"); int FileData_02; FileData_02 = FileRead_open("Data/Help_02.csv"); int FileData_03; FileData_03 = FileRead_open("Data/Help_03.csv"); int Files[4]; Files[0] = FileData_00; Files[1] = FileData_01; Files[2] = FileData_02; Files[3] = FileData_03; //openしたファイルの書き込み処理 //FileRead_close } このときFileRead_closeを実行しなければならないのは int FileData_00~int FileData_03 と int Files[4]に格納したファイルデータなんでしょうか?
クローズするのはオープンしたファイルに対してだから 対象は00から03までのcsvファイルのみ、 Files[4]は代入してるだけなのでクローズ処理は関係なし
メッセージやステータス表示のためのウインドウの色や透過率を ユーザが自由に設定できるようにするためには ウインドウの背景画像(例えば真っ白な画像)を描画する際に SetDrawBrightで色を、SetDrawBlendModeで透過率を指定してから 描画する以外に効果的な方法はありますか? 同時に、マウス操作でのゲームなどでHTMLなどでいうhover(メニューフォーカス?) を実現したい場合も、同様の手段じゃないと色の調整は難しいでしょうか?
ウインドウに使用する画像フォーマットに合うように ユーザー設定を反映した画像を作成するってだけだから 効果的?だとかあまり考えなくてもいいと思うけどな このあたりの設定が面倒だと思うなら、実装しないというのも手だよ フォントが見やすい配色というのは決まっているし
何が困ってるのか分からない
>>187 補足すると、↓のような3*3分割のウインドウの基本画像を用意して
■■■ 123
■□■ 456
■■■ 789
↓のように任意に引き伸ばせるようなウインドウクラスを作ったのですが
■■■■■ 12223
■□□□■ 45556
■■■■■ 78889
背景となる□の部分(5の部分)の色と透過率をゲーム内設定で変更できるようにしたときに、
どうやって(何を、どのように)描画しようか悩んだ。ということでした
>>186 アーカイブを使う場合、アーカイブ内に書き込みできないため
色の変更だけなら設定毎にメモリ上に画像を作成することができますが、
透過度は任意の画像をメモリ上に作成したところで「ファイル名_a」の画像ファイルが無いので
毎度透過度を指定しないといけませんよね?・・・あれ、ここ違ってたらすみません。
枠だけはっきり出たままで透明にならないとかうざいだけだと思うが
枠と背景を別画像にすれば?
別画像になってるっしょ
■がそれぞれマップチップみたいになってるんだと思うよ
描画方法はよくわからない
>>186 も言ってるけど、仮にRGBを調整できるようにしたところで使えるパターンなんてわずかだし
色弱向けもかねて数パターンから選べれば十分な気がする
何が困ってるのか分からない
おまえらレスアンカーつけろよ 元発言を追うのが大変じゃなイカ!
3Dゲーム作っててそろそろ音入れたいんだけど みんな3Dサウンドとかどうやって実装してる? 使ってるライブラリとかあれば教えてほしい あと処女作だったこともあってモデルやら移動速度に加速度やらが すべて無駄に大きいスケールのまま開発進めちゃってるんだけど、やっぱり何か問題あるかな 一応バランス取りは出来てるから数字の桁が大きいだけで今のところ実害はないんだけど
画像やサウンドファイルの読込みを非同期で行いたいんですけどできますか?
数値の大きさは、別に問題ないならいいんじゃないか? デカ過ぎても小さすぎても精度が犠牲になるが、よほど範囲がでかく、桁もでかいとかじゃなけりゃ(人間サイズ基準で、1mmが10000とか)好きにスケール決めてていいかと (ただまあ、出来るならこれからは、求められる最小の大きさを基準にスケール決めた方がいいかもしれんが)
浮動小数点数って0と1の間に、表現できる全体の半分の数値が詰まってるんだっけ?
非同期で読み込み開始して、読み込み終わる前に使用したらどうなるんですか
200 :
>>188 :2013/01/13(日) 16:24:29.22 ID:QYqOR8Li
答えてくれた人ごめんなさい、俺の勘違いでした MakeScreen関数のUseAlphaChannelにTRUEを与えて得たハンドルに SetDrawBlendMode関数でアルファブレンド指定して任意の画像を描き込んで作った画像を NOブレンドモードで画像の透過フラグTRUEで描画するか アルファブレンドモード(Pal=255)で描画すればちゃんとアルファ値反映されてましたね
ttp://www.geocities.jp/cpphajimete2008/main.cpp このサイトの
FileRead_scanf(filename,"%d %d %d %d %d %d %s",&mondataTYPE[i],&mondataHP[i],&mondataSTR[i],&mondataDEF[i],&mondataAGI[i],&mondataEXP[i],mondataNAME[i]);
これはなぜ%dの箇所だけ&をつけて%sの箇所は&をつけてないんでしょうか?
配列を渡そうとすると、先頭要素のポインタにすり替えられるCの仕様があるからです
俺は単体のデータは&を付けるって覚えてたな
&は参照渡ししたい時に付ける。渡した変数の内容を直接イジる char*の配列ならmondataNAME[i]でポインタを渡す(内容を直接イジる)からそのままでいい ちなみにchar配列の配列なら&mondataNAME[i][0]と書いても良い
えっ
なにがえっなの?理解できないって意味かな?
>&は参照渡ししたい時に付ける これだけ嘘じゃね
もともと引数を参照として受け取る関数なら嘘になるが 引数としてポインタを受け取る関数においては&を付けて渡すことを参照渡しと言うだろう
>引数としてポインタを受け取る関数においては&を付けて渡すことを参照渡しと言うだろう それ参照渡しじゃなくてポインタの値渡しじゃね
210 :
名前は開発中のものです。 :2013/01/16(水) 20:24:05.76 ID:qFNCRQlD
iPhoneやmacで使えるDXライブラリってありませんか?
あるんじゃない つくr旬だ
>>210 Cocos2dでググればいいんじゃね
そういえばどっかでJava版DXライブラリが開発されてるとか聞いたので
それ完成したらmacでもつくれるようになるかも
意味わからんけど
インターフェースが同じってことなんだろか
それ以前にMacはDirectX使えない気がする
昔は移植性は守るべき正義だったけど、 最近はそこまでいわんな。Windowsが君臨しまくってるし。 DXlibがxboxで動けばそれなりにうれしいかも知れんが。
DXlibすごいんだけど、いつまで続くのか不安。 実質作者一人で作っててメリットもなさそう
だよねー
自分でライブラリ作れるように精進しよ
>>213 JavaでDXライブラリのDLL呼ぶだけでしょ
222 :
名前は開発中のものです。 :2013/01/17(木) 18:31:34.97 ID:W5osK7wt
誰かOpenGL版DXライブラリ作って
DXライブラリって名前からして、DirectX使えないプラットフォームじゃ無理だってわからんのか Java/OpenGLのライブラリ使えばMacだろうがAndroidだろうが動くよ そんなライブラリいくらでも転がってるぞ
名前からしてw
225 :
名前は開発中のものです。 :2013/01/17(木) 19:53:40.49 ID:W5osK7wt
javaはオワ言
DXライブラリPortableってのが OpenGLでDXライブラリに似せたやつなんじゃなかった? たぶん全部網羅してないと思うけど
俺の行ってた専門学校ではJava版DxLib作られてたなあ 中身はまったくDxLib関係無いし、DirectXも関係無いんだけどww
DXライブラリの文法で、DXライブラリと同じ挙動をするものができたなら、 中身が何で作られてるかはどうでもいいんじゃないかな。
リファレンス印刷したら何枚になるかな
>>220 冗談かと思ったら本当にそうだったからますます意味わからん
JVM言語から呼べて幸せみたいなことなんだろか
>>222 SDLとかGLFWとかSFMLとか
CheckHitKey3つ以上のキーに反応しないな
なんでお前らってものの4分なんかで的確なリンク貼れるん?
これが数の力ってやつだな
DXライブラリと同じ使い方が出来て、同様の関数名のライブラリとかいいよな 非公式関数使わなければ、DXライブラリ用のコードをそのままPSPアプリにできるDXライブラリportableなんてのもあったっけ
ゲーミング用キーボードって海外のRTSプレイヤーが使うやつか
普通のキーボードだと、同時押し出来ない組み合わせがあるってのは、 ある程度PCゲームをやってる人なら常識中の常識って話らしいしなー
zxcvは4つ同時押し普通にできるけどzsxを同時押しはできない
>一般的なキーボードは6キーまで 3だと思ってたわ 安物しか使ってないのがばれる
ノートだと他のキー押してるとテンキーとかカーソルで一部の斜め入力が出来なくなったりするんだよな よく使う組み合わせなのに機種で違うからコンフィグだけじゃ対処できず面倒
>>239 標準的なUSB接続の最大が6キーって話と、
キーボードの構造上何キーまで押せるかは別の話だからな
てかこのスレいつからこんなにレベル低くなったんだよw
キーボードの簡単な構造が理解できてないってマとしてはヤバイだろ
内部配線まで判るのか? PC9801とかはマニュアルにポートと対応するキーマトリクス図があったけど
そういうくだらない突っ込みがありそうだから 「簡単な構造」って書いたんだがな。 メンブレン、メカニカル、パンタグラフ、静電容量無接点くらいは電気屋でも書いてあるレベルでしょ。 まあ俺は配線もある程度わかるけど、マが全員が細かい配線までわかるわけじゃないだろうな。
で、DXライブラリスレで続ける話なの?
>>241 低レベルな話題なのは間違いないな。
>>244 簡単に、おさらいする程度ならいいんじゃね。
そんなことより、ググることもせずにCheckHitKeyのせいにするのが問題ではないのかね 何でもかんでもバグですか?って奴、あたしキライかな
まあまあ。
問題の切り分けができない初心者も多く見るスレだし
多少は大目に見ましょうよ。
ちなみに
>>232 のページは
Googleで「キーボード 同時押し」で検索すれば
すぐでてくるんだけどね。
問題の切り分けが出来れば、既に何割か解決してるようなもんだしな
キーボードの同時押し数の問題は、俺は自分で気付いたな ノートPCで開発してたんだが、キャラが斜め移動しないときがあって、その条件を見つけて、たまたま別の時にUSBキーボードぶっ指して試したら動いたってエピソードから
架空のバカを作って自分を安心させようとしてる無能君だろうからほっとけ
DXライブラリみたいなのをMac版つくってくれたら 普通に買うんだけどなあ。10万くらいまでなら。 つーかDXライブラリも金払っていいレベルだけどな。
DXライブラリたって特徴的なのはポインタがハンドルになったぐらいじゃないの? 金出すならマルチプラットフォームの有償ゲームエンジンでも使ったほうがいいだろ Macはユーザー数も少ないし個人用ならそこまで出すほどでも無いし ソースコードもある上にAPIの上っ面だけならゲーム1本作るより簡単に移植できるだろ
DXライブラリの本当のポイントは、日本語の解説とサポートだろうな 英語できるなら、もっと高性能で情報もあるゲームエンジンがいくつもある。
MacでDXライブラリって、2DならSDLやCocos2dがあるし3DならUnity買えば良いよな…?
>>254 これに尽きるだろうな
優秀なライブラリはたくさんあるが、リファレンスにしろチュートリアルにしろ
英語あさったり中国語あさったりしないといけないのがハードル高いんだろう
関数ごとにサンプルプログラムまで載せてくれてる ほんま丁寧やな山田ぁ~
3Dモデル使うならどの形式が一番ラクで安定しますか?
DXライブラリつかうならMQOのメタセコ形式だとおもう
メタセコのときアニメーションはどうしますか
オメェの目の前の箱じゃgoogleも開けねえのか
方法がないわけではないが面倒なので別の形式にエクスポートしてモーションつけたらいい
ボーンはどの段階で入れるのがいいかが気になります コンバートすればx~pmdまで行けるにはいけるんですが‥…。
メタセコイアxファイル出力→pmediterでボーン作成がよさそうですね やり方はいくらでもあるんですがそれ故に迷いますね。
DXライブラリの処理をGPGPUみたいにグラボにさせることって出来ないかな どう考えても大量のパーティクルの運動や回転計算はグラボのほうが向いてると思う あとメーカー製のパソゲーがCPUよりグラボに依存してるのってGPGPU使ってるから?
知識を得る順番がおかしい プログラマーじゃなくてゲーマーかな
>>265 普通にポリゴン数とテクスチャ量が多くて安物じゃ描画できないから>グラボ依存
DXライブラリ製のゲームでCPUが足りなくなるのはアルゴリズムがおかしい
あと共通規格のコンピュートシェーダーはDX11必須だし
普通のシェーダでGPGPUやろうとするとメーカーによる処理結果の違いのサポートで死ぬ
つか、パーティクルだったら普通にシェーダでできるじゃない なんでGPGPUなんだよ。意味分からん
最近知った単語なんだろ。
パーティクル同士の衝突判定であればGPGPUを使うこともあったかもしれない それ以前につっこみどころ多いけど
当たり判定を複雑な形にしたら重くなったでござる
複雑って、どんなかんじ?
たくさん積み重ねてピラミッド状
お察しの通りゲーマー出身です まだ無知からちまちま組み始めて半年程度の初心者なんで試行錯誤しながらですけど 単純に最大パーティクル数だけ構造体配列とって 有効フラグ入ってるものだけ運動回転拡大縮小寿命などの処理して描画 って形だけど万単位になってくるとシングルスレッドじゃキツい で、少しでも軽くするのに条件分岐の細分化とかしてたんだけど こういう計算ってグラボの得意分野じゃないかなと思って。 確かにGPGPUは最近調べた程度でよく知らないし、 シェーダ関係はまだ勉強してないから的外れだったかもしれないけど これってもしかしてシェーダ勉強したら解決すんの?
275 :
名前は開発中のものです。 :2013/01/23(水) 00:16:00.20 ID:ybqj+JME
まず万単位のパーティクルは必用なのか
昔PSPのゲームの内部メモリ書き換えてエフェクト作りしてて その時にスペックでやりたい表現が限定されてたから せっかくパソに移行するんだしやれる限り自由にしてみたいと思ってる パーティクルなんて数出せれば出せるほど自然で綺麗なのが出来るから可能な限り数は増やしたい
277 :
名前は開発中のものです。 :2013/01/23(水) 00:34:43.93 ID:rA0ao318
ゲームってのはいかに見てくれをごまかすかってのが大事だから ずる賢さとカンを鍛えないとまず完成しないぞ。
一つの画像にパーティクルをたくさん描いたものをパーティクルとして出せば節約できるからな エフェクトに無駄に処理食われてるゲームって、見てて非常に馬鹿らしい
パーティクルを頂点バッファに格納してバーテックスシェーダで頂点運動計算したらいいじゃないって妄想してみる
PSPみたいな百程度で処理落ちを意識しないといけないような非力なときはそうやってたんだけどな
内部メモリの書き換えだからメーカーの用意したテクスチャ使ってたし
例えばプリレンダムービーとかの塵や水しぶきなんかひとつとってみても
単位塊が小さく運動が複雑なほど見てくれは良くなるから
それをスペックを振りかざして作ってみたいんだ
炎や煙なんてアニメーション使って1エフェクトでも作れるが
やっぱり数は多い方がかっこよくなる
自分のやりたいゲームを作るのに並ぶぐらい、エフェクトを作ってみたいんだ
>>280 サンクス、ちょっとシェーダ関係ちゃんと勉強してみるよ
スペックを最大限に生かすようなシェーダを本格的に使うならDirectX9のDXライブラリ捨てて DirectX11使ったほうが楽、SM3.0と5.0じゃ出来ることが違いすぎる
最初から細部の技術にこだわるのは 企画にこだわるのと同じく完成しないパターンの王道中の王道なので まずはゼビウスとかスターフォース程度のものを作って それにエフェクトを追加していくのをを勧める・・・ そのままだと、理屈ばかり達者で何もできないタイプになってしまうぞ・・・
DirectX11か でもプログラミングの知識がDXライブラリ触るまで全く無かったレベルだから DXライブラリ使って一旦作れるところまで作ってそれでも物足りないって感じるぐらい成長したら考えてみるよ 何年後か分からんが 言い忘れてたけど3Dアクション的なもの作ってるんだ 一応ゲーム部分も順調に進んでる メニュー画面こそ全く手はつけてないけど運動の記述やカメラワーク、弾薬やエフェクトの管理、ステータス管理辺りは推敲の余地はあれど作れた あとモデルのアニメーションや当たり判定つけたら一応はゲームとして成り立つと思う それから肉付けかな
>>282 ペックを最大限に生かすようなシェーダを本格的に使うなら
簡単なDXライブラリでゲームを数本つくれるから
ケースバイケース
>>280 これってVRAM上で計算するから速いんだよね?
行列を作るのに必要な値の引数とかシステムメモリ内にあったらやっぱ意味ないよな
>>283 >ゼビウスとかスターフォース程度
簡単に言ってくれるなwww
>>283 みたいに軽く言う奴は本当に無茶苦茶出来る奴か当の何も出来ない奴かの二択
まずは二次元の豆腐からだな…
>>287 ,288
こういうのは問題を単純化できてない人
>>287 昔はハードウェアの非力さのための無茶な高速化でのバグに泣いた
いまさらスターフォースでも無いからあんなもの作らないけどな
292 :
名前は開発中のものです。 :2013/01/24(木) 23:28:26.54 ID:kz8EXZqN
初歩的な質問で申し分ない。 現在、2Dゲームを製作中で、これのゲームのエフェクト等を強化するため、 シェーダなるものに手を出してみたいのだが、調べてみたところ、3D機能と一緒に語られることが多いように思う。 自分は今まで3Dで作りたいと思ったゲームが無く、 きちんと調べたことがないため、3Dの知識は基礎の基礎しかない程度。 この状態からだと、今のゲームは横に置いといて、先に幾つか3Dゲームを作ってみるのが無難だろうか。
3Dはほとんど関係ない シェーダには、ピクセルシェーダと頂点シェーダがあって、 ピクセルシェーダは画像をピクセル単位で描画するもの 頂点シェーダはポリゴンの頂点を変更して描画するもの どっちも2Dゲームでバリバリ活用できる
3Dライブラリを使って、2Dゲームを作る手法がある。 カメラが固定であれば、2Dゲームに見えるわけで、 作り方も、2Dスプライトシートを平板に貼り付けて作るのもあります。 DirectX9としたら、場合によって2Dよりも3Dの方が処理が速くなる。 ということで、3D空間で2Dゲームを作ってみるのを薦める。
それDXライブラリでやってくれてる処理だから…
>>294 DxLibは内部的には3D処理だよ。
そもそも今時そうでない事の方が珍しい。
だからDXライブラリじゃなくて自前でやってみろって話じゃないの?
シェーダの実装にあたって疑問なんだけど 例えばパーティクルを常にカメラ方向に向けたいときって簡単に書くと v1:パーティクル座標からカメラ座標方向のベクトル v2:パーティクルの法線ベクトル VTransform(v2, MGetRotAxis(VCross(v1,v2), acos(VDot(v1,v2)/(VSize(v1)*VSize(v2))) ) ); みたいな感じで今まで処理してたんだが シェーダ実装となると 回転行列:カメラと各パーティクルの位置関係によってそれぞれ異なるので求める必要がある v2:頂点バッファがVRAM内なのでVRAM内で求めれる v1:カメラ座標(システムメモリ内)が関わるので毎フレームシステムメモリからVRAMに渡す必要がある といったことになるんだけどこれってv1のせいで全然速くなくなる? そもそもこんな計算必要ないだろうか 初心者でしかも独学もいいとこなんで指摘してほしい
>>298 DirecrtX9だとビルボードは6点座標がいるので
ポイントスプライトでやるのが一番はやいんだけど、
Dxlibでもつかえるならこれじゃないかな。
ビルボードを向けるなら
>v2:頂点バッファがVRAM内なのでVRAM内で求めれる
のとこが速くなるけど、カメラの座標をVRAMにおくってるなら
VRAM内でパーティクルの法線ベクトルももとめられるよ。
300 :
名前は開発中のものです。 :2013/01/25(金) 13:14:10.05 ID:fcJD8Kj3
シェーダって普通開発言語と分けて定義するもんじゃないの?
301 :
292 :2013/01/25(金) 14:25:23.17 ID:6m++Y7QK
遅くなったけど、2Dゲームでのシェーダ利用についてアドバイスありがとう。
>>293 そうなのか、安心した。
まずは単純なフィルタから試してみようと思う。
>>294 今まで2D描画関数で描かれてた部分なんかを、3D描画関数に移植してみるってことだよね。
シェーダ云々に限らず、2Dゲームでも意識して3D空間を利用することで、面白い効果を得ることも出来そうだ。
DXライブラリはtechnique対応してないから少しやり難いんだよなあ
>>299 そうなるとモデルの座標や弾薬の座標までVRAMに置くことになるな……
普通どういうのをVRAMに置いてどういうのをシステムメモリに置くんだろうか
計算に必要なデータ全てをVRAMに置くってのは一般的なの?
全然一般的じゃない
ですよね 置くデータ吟味しないととか思ったけど よく考えたらGPUに頼るのに向いた計算って大量のパーティクルの運動・描画関係ぐらいだわ 勢いで駄レスしてすまんかった
DXライブラリを学習したいんだけど、どこかいいサイトとかない?
ありがとう とりあえず最初から全部見ていく
重ね重ねありがとう STGも作ってみたいから慣れてきたら見てみる
自分のプログラムからClearDrawScreenをコメントアウトしてみたら何も影響なかったんだけど、 裏画面に描画する場合要らないのかな?
そういえばCPUだとfloatもdoubleも速度は同じか下手すりゃdoubleの方が速いって話だったけど GPUだと速度差ってどれぐらいなの?なんかfloatのほうが速いとか聞いた気がするんだけど
CPUじゃ下手すりゃってレベルじゃなく確実にdoubleの方が速い GPUは知らんけど、多分floatの方が速い てかそういうレベルのことを気にするなら、自分でテストプログラム書いて実測してみるべき
どうせ行列はSIMDで実装するんだから速くなるfloatでいいだろ スカラーでもx87ではなくSSE演算なら同等だし CPUキャッシュが効きやすい分サイズの小さいfloatで良い GPU側のdoubleはDirectX9じゃ保証されず無駄に終わるから事実上floatしか使えない
VC2012でもDXライブラリは使えますか?
GPUはユニットを大量に組み込むことで、元々SIMD的なグラフィックの処理を高速化してるからな サイズがデカくなりがちなdouble基はあまり載せたがらないだろ
優しいなお前
>>313 実行時に簡易的なベンチマーク走らせて自動切り替えするようにしようぜ!
DXライブラリでステンシルシャドウってできるのかな
数学教育用のゲーム作ろうとしたらプログラミングより数学がムズかったワロタ 知育ゲーのデザインしてる人ってすごいんだな
そりゃー数学にDXライブラリのようなものはないからな。
プログラミングはあくまで言語だからな アルゴリズムではあるけど数学じゃない
フリーフォント使う方法を検索してAddFontResourceExを使うということはわかったんだけど これメモリに読み込んだ先頭アドレスとかじゃなくて、ファイルパスを指定するやつだから Dxアーカイブを併用することができないよね ライセンス緩い人のでもできることなら暗号化してあげたいんだけど良い方法ないのかな?
残念ながら、ない アーカイブからテンポラリフォルダに展開するとかしないと
>>326 そっか・・・あずきフォントちゃんと一緒にがんばります
>>327 FileRead_readでファイル読み込んで
AddFontMemResourceExに渡せばできるます
横アクションゲームの背景を一枚の画像を繰り返し表示させるようにしたいけど、一枚をloadgraphで一つの画像として使うのがいいのか、loaddivgraphで分割でよみこませて使ったほうがいいのか悩む。実装次第なんだろうけど。 どうやって実装してます?
処理速度っていう話なら、フレーム毎に背景画像をまるまる2枚分描画しても問題ないと思うよ。 あとは、1/2とか1/4に分割して、組み合わせられるような作りにしておくと、 ちょっとしたメリハリになる。
MV1_COLL_RESULT_POLYの放線のNormalって正規化されてますか?
されてようがされていまいがノーマライズ掛けてやったらいいじゃない まず、試すこと確認することが技術を向上させるので、お試しあれ
俺的にはLoadGraphだな 結局全部分の画像ロードしてんなら分割しない方が小さいし、どうせクリップはハードウェアで行ってくれるし、範囲内しかピクセルシェーダ動かないし、ポリゴン数少なくなりそうだし とかいう微々たる違いがあるかないか程度のは置いといて、マが考えることが少なく、コードも楽になりそうだから
初心者で勉強がてらに2点を指定するだけで2Dの四角形を表現できる 単純な矩形クラスを作ってるんだけど、 コンストラクタの引数として、始点と終点を渡すという方法の他に、 基準点と縦横のサイズを渡すっていう方法も追加したい。 Rectangle(int x1, int y1, int x2, int y2); Rectangle(int x, int y, int width, int height); でもこれだと引数の型が全く同じでオーバーロードできなくて困っています。 超絶スーパーハッカーなみんなは、こういう時どうしますか? 一応解決方法として 前者のみで、Rectangle(x, y, x + width, y + height)という風に使うようにして諦めるか、 適当に構造体Point(メンバとしてx,y)・Size(メンバとしてwidth,height)を作ってそれを コンストラクタの引数の型にするかとか考えたけど、もっとスマートな解決法があったら教えて欲しいぜ
自分なら Rectangle(Point, Point) Rectangle(Point, int, int) かな と思ったけど微妙だった
Rectangleを返すメソッドを作って分かりやすい名前をつける
enum Mode { POINT, SIZE }; Rectangle(int x1, int y1, int x2, int y2, Mode mode = POINT); // 省略したらPOINT みたいなのとか
クラスのstaticメソッドでわかり易い名前で作成関数を作る
>>335-338 ありがとう。静的メンバ関数は盲点でした
ちょっと別の話になるけどこれってテンプレートとか駆使すれば
なんかすごい便利になりそうなんだね。勉強するわー
漏れは関数名変えるなぁ。Rectangle_WidthHeight()みたいに。 intelisenceがあれば、どんなに長いメンバ名でもへっちゃらさ。
これはクラス名だよ
それは置いといてもキャメルケースかスネークケースか統一して欲しい
>>334 1、width, heightはunsignedにする
2、真面目に定義する
position2d( x, y )
dimension2d( width, height )
rectangle2d( position2d, position2d )
rectangle2d( position2d, dimension2d )
rectangle2d( int, int, int, int )
>>334 struct Point
{
int x,y;
};
struct Size
{
int width,height;
};
struct Rect
{
Point point;
Size size;
};
少し上の話だけどdoubleのほうがfloatより速いってのはいいすぎじゃないの? 64ビットパソコンなら標準でdoubleの計算が出来るからfloatと変わらないって程度 32ビットパソコンなら確実にdoubleのが遅い
float不要論って一体どうした事由で発足したのか
速度的に大差がないなら、スケールの関係でdoubleに一本化しちゃっても問題ない場合はあるだろうな
DirectXのサンプルはfloat
CPUだとdoubleとfloatの速度差は全然無いから精度の高いdoubleを使った方が良いという話 DirectXはfloat処理だからfloat使わないと狂う
SSEの並列化や描画に変換するの入れたらfloatかなあ 半分のサイズだしレジスタ節約できるだろうし 精度を気にしてdouble使うならSetUseFPUPreserveFlag使うの忘れずに
x86系のCPUでは演算そのものはdoubleの方が速い。 double演算回路しか積んでなくて、 floatだとわざわざdoubleに変換しないといけないから。 ただ調べてみたらメモリアクセスの関係で 遅くなったり速くなったりする事はあるみたい。 GPUは知らん。
遅いたか速いとかそんな速度にシビアなゲーム作ってんの?
float/doubleは動的にベンチマークして切り替えようぜ!
doubleだろうとfloatだろうと演算速度はx87の精度レジスタの値で違うだけで同じ floatが遅いのは浮動小数点モデルがPrecise (/fp:precise)になっていて丸めに余計な処理食われてるから Fast (/fp:fast)にするだけで同等かやや速くなる 拡張命令セットをSSEにすれば一部の計算はSSEユニットで高速化される
それで正確な判断をするにはそれなりに回して平均を取らないといけないから駄目だ 大体動的に切り替えるように組むとそれだけで全体的にコストが掛かる ゲームやる側からすると、ほとんど意味が無いしな カジュアルにプレイしたい層からはベンチマークがそこまでしなくてもいいと思われ、 それなりに環境を整えてるプレイヤーからはそんな些細な高速化いらねーよと思われ
floatとdoubleの速度差が問題になるようなら、 もっと別の根本的な構造を見直したほうがいいw
きっちり詰めて考える、と捨てるとこは捨てて気にしない、のバランスは難しいよな
CPU側の浮動小数点演算でシビアになってくるのは あたり判定とか自作の物理エンジン動かしてるときかね? そんなのとは無縁なゲームしか作ってないからよく分からんが。
話ぶった切って不真面目に定義する struct Point {}; struct Size {}; template <typename T> Rectangle create(); template <> Rectangle create<Point>(int, int, int, int) template <> Rectangle create<Size>(int, int, int, int)
初歩的なことで申し訳ない #include "DxLib.h" void cVramClear(char cVram[25][80]) { int i,j; for(i=0;i<25;i++) { for(j=0;i<80;j++) { cVram[i][j]=' '; } } } // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { //初期設定でごわす charcVram[25][80];//キャラクタVRAM // ウインドウモードに変更 ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 )// DXライブラリ初期化処理 { return -1 ;// エラーが起きたら直ちに終了 } cVramClear(cVram); WaitKey() ;// キー入力待ち DxLib_End() ;// DXライブラリ使用の終了処理 return 0 ;// ソフトの終了 } ポインタのことで質問してるから、スレ違いだったらごめんですけど、答えてくれたらありがたいです
361 :
360 :2013/02/05(火) 01:10:19.42 ID:xpRXoRhq
聞くは一時の恥 ということで、回答してくれることをお願いします ポインタの理解がいまだ足りないので、そういう説明のあるページに誘導してくれるだけでもありがたいです
何が質問なんだよw
for(j=0;i<80;j++) なんかよくわからんがここじゃね
>>363 ビンゴでした
タイプミスとは情けない…
とにかくありがとうございました
また凡ミスを尋ねることがあるような気がします
なるべくそうならないように気をつけますが、その時はまたお願いします
尋ねるのはいいんだが というかまず尋ねて欲しい
366 :
360 :2013/02/05(火) 02:39:32.29 ID:xpRXoRhq
>>365 ちょっと端折り過ぎましたね
実際に聞きたかったのは、二次元(多次元)配列を関数に渡すときに、どうやるのかを聞きたかったんです
先のコードの
void cVramClear(char cVram[25][80])
ですが、実際に組んだコードは
void cVramClear(char **cVram)
だったんですが、エラーが出たので、上記のように書きなおして通ったものの、今度はフリーズしたんで何がおかしいんかなって質問したんです
で、まさか原因がタイプミスとは…w
多次元配列を関数に渡す方法を知りたいのですが、スレ違いかなとびくびくしながら質問したワケです
なにしろBASICしか使えない素人なもんで、いろいろと迷惑かけますが、理解してくれるとありがたいです
よくわかりもしない初心者が質問端折ったらわけわからないんだよ 何がわかってもいない状態で質問するなら、丁寧すぎるくらい詳細に書くべき
>>367 前提条件とかズラズラ書いたけど、結局最後の2行だけでも十分に質問内容が伝わるってことも多いけどなw
ってかmemset使え。
せめて○○をどうすれば?とか、今回なら「フリーズしてしまって」とか書きゃいいのに またはコード中にコメントで//ここで何故か止まってしまうとかね 質問です 点pが時速1kmで移動しています 数学のことで質問してるからスレ違いかもしれませんが、答えていただけると幸いです って感じだもんな
まずはデバッガ使って実行してステップ実行を覚えるだけで 初心者ミスの9割はすぐ見つかるのに。
上級者のミスも同じくらい減りそうだw
うん、きっとねfor(j=0;i<80;j++)ってなってるからだと思うの あとメイン中のcVramはどっから出てきたのかと charcVram[25][80]って定義してるけどこれ?
ああ、charとcVramがくっついてただけか ポインタポインタってできたっけ void cVramClear(char (*cVram)[80]) こうじゃないっけ
DXライブラリである必要すらないことに突っ込めよ
しかもすでに解決してたし\(^o^)/
377 :
名前は開発中のものです。 :2013/02/05(火) 22:58:44.68 ID:b0thDVcg
つか、DirectXなんて近いうちになくなってDXライブラリ意味なくなるぞ? やっても無駄www 嘘だと思うならXNAの現状調べてみろw
無くならねーよ OpenGL化するだけだ
こいつ馬鹿だろ。 Windows8のSDK読んだこともないんだろうな。 形は変わるがなくなるわけではない
380 :
名前は開発中のものです。 :2013/02/05(火) 23:11:22.01 ID:b0thDVcg
こういうバカってどっから湧いてくるんだろうね
>>380 つーか、APIの使い方うんぬんだけしか知らないあほぉは絶滅するだろうな。
アルゴリズムや方法論なんて結局なに使ったって同じだし。
383 :
名前は開発中のものです。 :2013/02/05(火) 23:17:21.23 ID:b0thDVcg
>>383 さあ?おれはM$の社員じゃないからな。知らんよ。
DirectX11以降ロードマップがM$から出されていないのは事実ではあるしな。
Windows8になってM$はILベースの.NET推奨を今まで以上に色濃くしてはいる。
ただし、Windows8の段階ではDirectXはまだなくなってはいない。
その先は知らん。
無くならんっしょ
ID:b0thDVcg こいつ板中のMS関連のスレに同じネタ投下してる奴だからスルーしとけよ
近いうちかどうかしらんけどいつかはなくなるだろ。 MSは過去のものを次々切り捨てていくし。 DXライブラリのお陰でゲーム作れてる俺は、そうなると終わりだなぁ。
Windows95の頃に作られたゲームがそのまま動くOSでなに言ってんのさ
DirectXってもう18年にもなるのな
なぜかDirectX終了の噂までついてまわったのは XNA終了の飛ばし記事書いたアホの勇み足だっただけだしな ところで、Storeアプリのランタイムは.NETじゃなくなってるし .NETライブラリのXNAが終了すんのに.NET推奨を色濃くしてるって話はどこから来たの
LoadDivGraph使ってるんだけど、int(const int &)って出てビルド出来ないけど何か間違ってる?
int(const int &)はコピーコンストラクタだと思うが エラーメッセージをきちんと書いてくれ
だから初心者は質問するならちゃんと情報出せよ エラーの出たところにはどう書いたんだよ
分からないバカが何か言っている
3.08eから3.10aに変えたんだけどDX_HANDLETYPE_GRAPHとかって消えたんだんな ハンドルとか一括で管理してて、開放時にDX_HANDLETYPE_GRAPHとかで判断してたけど なくなった今はどうすれば・・・
自分でタイプを併せ持った構造体でも作るしかないな
XNAの更新停止をDirectXの更新停止と勘違いしてる馬鹿がいるのか
むしろXNA更新停止ってC#やってる情強どもは死ぬの?
いくらでも変わりはあるから今更マイクロソフトが提供する必要性がない
XBOX360等でも動くマルチプラットフォームてのがウリなだけで C#ならAPIを直接叩いたライブラリ使えばいいだけ
DXライブラリはラッパライブラリなんだからなんら関係のない話だ
C#用dxlib使えよ
C#で使えるゲーム開発環境:SlimDX、DXLib、MonoGame(XNA完全互換)、Unity、NeoAxis... そりゃXNA開発辞めるわな
>>390 DirectXは勇み足じゃなくて、「DirectXはもう発展しません」という本音を書いたメールをMVPに配信したらそのまま転載されて炎上しちゃったので
「バラすなよ馬鹿!
『DirectXはVisual Studioと共に発展していくテクノロジーです』
ほら!テンプレ書いてやったからこれコピペしろ!」
というメールを慌てて送っただけだよ
DirectX SDKはとっくに消滅してWindows SDKに吸収されたし、今年中にStoreアプリのランタイム(WRL)や次世代Xboxに対応したDirectX後継発表と同時に〆だろう
>>405 煽りたいだけなのか無知にもほどがある
訂正記事で書かれていたのは
DirectX単体でのリリースはもうありませんの内容を勘違いしただけ
既に実行されていることで本音も糞もない
それとWRLってはランタイムじゃなく単なるWinRT用(C++専用)のテンプレートライブラリ
Win32時代にあったATLのようなものだ
今までDXライブラリ使うためにプロジェクトのオプションで、 「追加のインクルードディレクトリ」をCドライブ直下の絶対パスで指定してたんだけど プロジェクト側の相対パスに変えたらやたらとコンパイル遅くなってしまった。 サンプルプログラムのコンパイルは早いと思うんだけど 相対パスの指定の仕方ってもっと別の正しい方法があるんですか?
>>407 自分でコンパイルしたDXライブラリ使ってるとかじゃなくて?
プリコンパイル済ヘッダが無効になったりとかしてんのかね プロジェクトの設定がサンプルプログラム実行用のプロジェクトと違うのかもよ
>>396 無くなることってあるの? 非公式とか?
ゲームで使うクラスに共通の機能を持たせたい時に 解説サイトでは基底クラスのstaticメンバ・メソッドとして持たせて それを継承させてるみたいだけどもっと他の方法ってないのかな? 例えば、画像を読み込んで識別子と一緒にMapで保持する機能を持ったクラス (LoadGraphをラップしたクラス)を基底クラスのprotectedなstaticメンバとして持たせるんじゃなくて、 どうにかしてその機能が必要なクラスに共通の参照を保持させるということ Javaのイベントリスナーがそれに近いのかと思ったけど、 あれはあれで読めば読むほど混乱してしまう・・・
>>410 キーの定義なんかはいつの間にかなくなってたりする
>>413 機能を必要とするクラス側で、シングルトンクラスをインクルードして使うってことだよね?
シングルトンっていうかstaticメンバがどことなくムズ痒いというか気持ち悪くてね
機能として引数を受け取って処理をして値を返すだけのstaticメソッドならいいんだけど(例えばDrawGraph)
>>411 みたいに何かしら値を保持する場合、1つしか存在しえないとなると後々拡張する際のことを
考えると怖いっていうか。まぁそこがむしろメリットでもあるとも思うんだけども
俺が説明下手で申し訳ないんだけど
例えばスキルの名前とか敵の能力とか、CSVから読み込むようなゲーム中で不変・固定なデータを
ゲーム内で共有したい場合にもシングルトンを使っちゃっていいのかなーっていう不安です
むしろそんなデータが複数存在し得る状態の方がキモくないか ゲーム中で難易度選択とかが出来てデータを丸ごと入れ替える機会があるならともかく
データクラス作って、シングルトンにするか そのオブジェクトのポインタを渡すかどっちかだなぁ。
>LoadGraphをラップしたクラス こいつがシングルトンになればいいんじゃないのかな・・・ インスタンスごとに何が変わるのかわからんからそう思うんだけど
シングルトン全般の話として、 (1)形を変えただけのグローバル変数じゃね? (2)それは本当に1つしか存在 *できない* ものなの? 単に手軽だからやってるだけじゃない? みたいな葛藤があったりするからなあ。 LoadGraphみたいな、ライブラリに依存する部分なら(2)は問題にならないだろうけど。
グローバル変数は原則避けるべきだけど、そこまで忌避するものかなぁ? 色々あるだろうけど、どこからアクセスしたのか分からなくなって、 なんらかのバグを起こしたとき原因を特定するのが大変だからというのが大きな理由だし。 シングルトンパターンはアクセッサでちゃんとアクセスしてれば いざというときブレークポイント設定すればどうにかなると思う。
>>421 gotoなんかもそうだけど、分かってて使うには強力な武器なんじゃない?
ただ、武器を扱い慣れた老兵でも、ちょっと気を抜くと指先を切っちゃう可能性があるくらいで。
423 :
名前は開発中のものです。 :2013/02/09(土) 19:34:00.61 ID:BWsprEsg
>>420 公式にモデルをグラフィックハンドルみたいに使うと遅いから
モデルハンドルをコピーするみたいな関数使えって書いてあったと思う
>411 共有データは別クラスにしてshared_ptrで参照 ファクトリ関数は兄弟となるオブジェクトを引数で、nullなら新規生成 もしくは識別用IDや文字列
モノステートでいいものをシングルトンで書きたがる人いるよね 一つで十分なのと、一つでなければいけないのは違うのに
シングルトンに甘えた結果Friend地獄になった ゲーム内時間を計るタイマーの時間経過とかキー入力の更新とか、 1フレームに1回しか実行させたくないメソッド持ってるクラスどうしてる?
モデルにアクセサリーをつけるためにフレーム座標変換のサンプルを真似したんだけど、 何故かアクセサリーが見えないくらい小さくなってしまう… アクセサリーのモデルサイズを変更しても変わらないし、同じ症状いないかな
>>426 前はシングルトンだった。
今はライブラリに持たせてあるけど。
全部シングルトンで問題ない ファミコンなんかアセンブラだから、基本全てグローバル変数だ それで面白いゲームができてる 細かい実装を気にしすぎ
論点を勘違いしてる グローバル変数で済むものをシングルトンにする意味があるかどうかって話だろ
設計の段階でグローバル変数使ってるなら問題ないと思うけど そうじゃないなら、グローバル変数でやると実装が楽だからってのが多い ほとんどの場合、クラスの相関図みれば適切な置き場所でてくるだろうし ゲームの規模によって使い分ければいんじゃないかな
>>428 >>426 みたいな「利用するクラスにとってconstメソッドだけでも大丈夫なクラス」なら
const引数として回せば大丈夫だけど、編集も必要で、かつ一回しか実行したくないメソッド持ってる場合
staticとfriend無しじゃ詰むよね
>>432 キー入力とかの更新をしたいんでしょ?
mainのループ内で毎フレーム一回だけシングルトンクラスでキー入力状態を取って、状態を知りたくなったらそこから情報を引き出すだけだよね?
シングルトンだからもちろんシングルトンのポインタをもらう関数はstaticだけど、それ以外には使ってないしfriendもないし。
具体的に何をしたいのかが分からないけど、もっと複雑なことをしたいの?
>>430 名前空間指定してグローバル変数と関数のセットを作っても出来るんだろうね。
ときどきシングルトンのポインタもらいたくなることがあるから、私はシングルトンが好きだけど。
シングルトンですむものをグローバル変数と関数にする意味があるかとか、あんまり考えたことないや。
>>433 キー入力情報を得たいクラスがキー入力情報の更新もできちゃマズイよねって意味だった
>mainのループ内で毎フレーム一回だけシングルトンクラスでキー入力状態を取って
つまりmainループ内で入力状態を更新できるpublicでstaticなメソッドがあるのなら
そのシングルトンにアクセスできるクラスは誰でも更新できちゃう
キー入力の履歴を記録しないならそれでもいいんだけど
記録しないとなるとキー入力扱うクラスそれぞれで「押された」のか「押しっぱなし」なのかの判断しなきゃならないし
「じゃあ逆に履歴を保存しておくクラスを作ろう」
と思いたつと結局最初と同じ問題(誰が責任持って1フレームに1回更新するのか)にぶちあたる
要は「1フレームに1回だけ更新」とかそういったルールが守られることを保証するためには friendクラスで指定するしかないよねって話だった
インターフェースクラスだけを公開して、フレーム更新するのは派生クラスのメンバとか フレーム数を引数にした設定用関数を持つとか
>>436 それってアリなのかな?もちろん正解はないと思うから貶すつもりはないんだけど
オブジェクト指向で考えるとそれは、キー入力情報(データ)が親で、
子が「データとしても扱える」ようなキー入力管理クラスということになると思う。
でも親はデータのクセに自分自身を変更できないんだよね
キー入力管理クラスからキー入力情報(データ)を取得して
それをconstで渡すというやり方を面倒臭くしただけのような気がする
更新クラスとデータクラスがfriendで、単にデータクラスの秘密の更新メソッドに委譲するだけでいいんじゃないの? friend地獄ってのがよくわからんが
>>438 地獄は言いすぎだった
けどMementパターンみたいに継承時にfriend登録しなおすのが煩わしく感じることってあるじゃん・・?
自分だけが抱えてる問題を一般的なことのようにいうのはどうかと思うぞ。 自分がおかしなことをしている自覚をもったほうがいい。
関数の分け方が悪いだけのように聞こえるね
>>423 MV1DuplicateModel()かな?
使ってみたけれど速度変わらなかったや
モデルの頂点数ガリガリ減らしていきます。どうも
>>436 はありだと思うけど、
一番簡単なのは、細かいことは気にしないことw
C++を理解できてないっだけだろうな C掲示板の記事消せないのがうざい かなり飯の種になる完成されたソースも消させないで乞食に公開し続けるってのがクソすぎ。 もう2度とあんな低レベルの場所でハイレベルな回答はしない。
あんな、ってのがどこの事だか知らんが 愚痴ならツイッターか雑談スレでやれよ
人間として低レベルな奴が愚痴ってると聞いて
何も努力しないやつなんかとタダで知識を共有しようなんてのは共産主義の考えだよ 遅かれ早かれLINUXとオープンソースはソ連の道をたどる。
誰もお前の失敗には興味ねーよ スレチ
C++、C#は、キャラクタなどクラス化すると楽になるので恩恵うけるけど キーボード入力とか1個しかないものはクラス化してもなんの恩恵もうけないよね ソースがわけられるくらいw
namespaceと同程度の恩恵はあるんじゃない?
ごめん何でもない ライブラリのラップ方法の話だから 誘導が必要な話題じゃなかった気がしてきた
C#版もintでエラー返すの?例外投げて欲しいんだが。
単にDLL呼び出し部分つけただけだからな。 C++/CLIできっちり作る?あんま利用者いなさそうだな
ラップしたらいいんじゃね
つかなんで新規がみんなC++にいくんだろ。 C#版を使うべし。
visual studio2012でC++/CLIが飛躍的によくなったのに つかわれないのはw
ゲーム作る上でC++じゃなくC#を選ぶメリットって何?
新規はC++じゃなくてCに行くな せめてC++にしろと
新規がC++なんかやってもおまじないしか書けないだろw
C++/CLIって存在くらいしか知らないんだけど、 今WIN32アプリをC++で作ってるけど、CRLプロジェクトにすれば ref class とか gcnew とか書いてるソースが混じっても大丈夫ってことか
betterCでいいんだよ C++/CLIは先が暗いらしいからやめておいたほうがよさげ
結局初心者に一番いいのは一番ユーザが多い言語だよ これは言語だけに限らないけど
ユーザーの少ないソフト使ってると勉強の情報が足りなすぎて困る ちょっと使いにくくてもみんな使ってるほうがいいわな
DxLibを使う層ってゲームが作りたいのであって、言語なんてどうでもいいわな 英語や中国語ができれば他に優秀なライブラリはいくらでもあるわけで、 作者が日本人で、公式のサポートが日本語で、ネット上に日本語の資料が大量に転がってることが重要なんだろ DxLibスレで他の言語が云々とか、他のライブラリが云々とかは的を射ておらず不毛
C#版をラップする時はリフレクション使って自動作成するといいよ
昨日からC掲示板でメシの種になりそうな記述探してるけど見つからないわ ていうかCでやろうとしてる新規の人多いのね。Cと同じように使ってもいいから 記述が簡単で応用も効きやすいC++使えば良いのにね typedef使わずにstructとか使ってるの見てるとかわいそう
typedefとstructってCとC++でなんか違うの?
C++の資料が少なかった時代を経験したオジンはCから入れっていうからな 最近は減ってきたが、気になって調べてる間にそういう書き込みを目にして真に受けてる初心者は多い C++の資料がCからの追加点しか書いてかったのは昔のことなのに
Cはtypedef struct Foo_ {} Foo;としないとFoo foo;って書けないけど C++はstruct Foo {};だけでFoo foo;って書けるってことじゃないの
C++のことをメインで話したいならスレ違いだよ と一応釘を刺しておくね。 あと自分の優位性を主張したいだけの人は不要だから消えてね。 個人的にDxLibは「ゲームプログラミングとC++の入門ツール」だと思う。 グラフィック技術とかはとりあえず置いておいて、ゲームのロジックと 言語の学習に専念できるようにするための。
ポインタとか継承まともに理解してない人が書いたら悲惨なことになりそうだな
DXライブラリって必ずしも使わなくて良くね?
まあプログラミングがある程度できるのは前提条件ということで
C++だとインクルードにひと癖あってダブルディスパッチがどうこうとかで嵌ったり、 シリアライズとか暗号化リソースとかDXライブラリが管轄外の項目で後々悩む事考えたら C#版のDXライブラリを初心者に勧めたいな。 DirectX9のみをターゲットにしてる分、SlimDXみたいに変な問題持ってないし、 C#用としても結構いい素性のライブラリなんだよね。 C/C++版は速度よりプレイヤーが.netランタイム不要ってのが大きいアドバンテージかな。
速度はCもC++もC#もほとんどかわらないけど DXLIBの取説はCだけなんで、CかC++のほうがC#にコード変更する手間がない
フルスクリーン←→ウインドウモード の切り替えできるようにリファレンス見てたら、 もしかしてこれってゲーム中に自由に切り替えできるようにするには難易度高い? 解像度イジった時に「次回起動時から有効」になってるゲームが 多い理由がわかったような気がした
難易度は高くないけどちょっとめんどくさくなる場合があるだけ
とりあえず、MakeScreenとかで動的に画像を作成することは無視して ゲーム起動時に使用するリソースを一括ロードする単純なタイプで考えたとしても けっこうめんどくさそうだね。 とりあえず思いつく1つ目は、 グラフィックハンドルをラップして、一括で管理するマネージャも作っておいて、 ラップしたハンドルを渡して描画できるように各種Draw関数もラップしておいて、 リソースの再読み込みが必要になった時に、ハンドルマネージャが全てのハンドルに 新アドレスと旧アドレスを変換するためのテーブルを渡してUpdateさせる。 デシリアライズ時のポインタ復元と同じやり方になるかな。 2つ目は、普段からリソース識別子を使ってリソースマネージャからハンドルを 得て、それを描画関数に渡して描画するようにしておく。 こっちならリソース再取得時はリソースマネージャがリソース識別子と新アドレスを 関連付けるだけで良いからかなりラクだけど、普段の描画速度がかなり無駄になるのね
リソース勝手に復帰してくれる関数あるでしょ DxLib::SetChangeScreenModeGraphicsSystemResetFlag(true); フルスクリーンやるなら結局MakeScreenとExtendなんちゃらもセットで使うことになるかな 4:3と16:9他のサイズの違いあるから
>>482 ありがとう、非公開にこんなのがあったのね
なにやら公式掲示板のやりとりでの産物のようだし
>>396 みたいなことは心配しなくても大丈夫だと信じよう(懇願)
各画面(タイトルとか各ステージ)毎にループ処理をさせてるんだけど、 これって他の人は、mainでProcessMessageとScreenFlipとClearDrawScreenを させてるの?
485 :
名前は開発中のものです。 :2013/02/14(木) 00:01:34.90 ID:EV+2Arb/
とりあえずゲーム作るのが裏でとんでもない試行錯誤しなきゃいけない事が 分かって鬱になった。 上手く動くための工夫の仕方が無限大にあってその中から選んだり しなくちゃだめで「創造」そのものが滞る。
>>484 描画処理は別スレ立ててやってるよ。
因みにイベント処理は基本的にすぐ返す処理にしておいたほうがいい。
キー状態とか調べてるなら大丈夫だと思うが、お行儀はよくない。
>>485 何だってそうだと思うよ。
マンガだったら画力が要るし、小説なら語彙力が要る。
そもそも、「創造」そのものが一番試行錯誤するよ。
487 :
名前は開発中のものです。 :2013/02/14(木) 00:35:21.43 ID:GSXiHSnK
>>486 アドバイスありがとう。
でも2Dスクロール作ったけど丸半年かかっちゃった。
さすがにかかり過ぎだし労力は半端無いと思ったわ。
プログラムの行数1万行くらいなったし今見ても訳分からんw
>>486 ありがとー。
描画順を極めろゴルァァって所?少し見てみる。
描画処理はウィンドウ作ったスレッドでやんなきゃダメだぞ。
>>487 次に似たようなゲームを作ったとき、1ヶ月は短縮されるんだぜ
創造力っていうのは、その創造をするための土台を作る力の事だからな?
ゲームなんか作ってどうするのよ 周りのみんなは受験勉強やら自己啓発で資格取得やら親しい友人と親睦深めたりしてるのに ゲームプログラミングなんかしてても受験、就職、出世、何の評価にも繋がらないぞ TOEICの勉強でもしてた方がなんぼかマシかと
社会という与えられたものさししか持ってないんだね 悲しいね
なんでもやった経験は無駄にはならんよ それが分からんのに自己啓発だのなんだの言っても空しい
ゲーム作る過程で継承とかポインタの使い方分かるようになった
DXライブラリでゲームを作るためのテンプレートみたいなものはありますか? 例えば「落ちゲーを作るなら、これを元に改造していけばいいよ」っていうソースなど
それならツールでいいじゃん
テンプレートは自分で作れよ FPS、入力処理、デバッグ このくらいはテンプレート作ってある
無いみたいなので作ってみます。 出来たらうpするので採点お願いします。
テンプレートを使ったらすごく狭い範囲でしか創作できんがな
DXライブラリを使わなければゲームも作れない俺は サンプルなければゲーム作れない人間と五十歩百歩かもな。
DxLibに限定しないなら掃いて捨てるほど ソースコード転がってそうだけどな。テトリスとか。
>>488 リファレンス見ながらやったほうがいいとは思う。
自分は結構イレギュラーなやりかただと思うし、公式は別スレ立ててないみたいだし。
勘違いされてることに気づかないのか・・
505 :
名前は開発中のものです。 :2013/02/14(木) 17:48:08.98 ID:jFZvS44r
簡単な2dアクションのソース書いてくれない? 動かしてみたい。主人公は「あ」で敵は「い」でいいわ。 まじで分からんwwwwwwwwwwwwwwwwwwww
諦めたほうがいいと思う
507 :
名前は開発中のものです。 :2013/02/14(木) 18:17:41.73 ID:jFZvS44r
c言語の関数として使えるのは何? stractとかはwinMain内では使えないの?
お前らが簡単簡単言うからツクールレベルと思った子たちがやってくるんだぞ (プログラムをかじってるなら)簡単(かもしれない)くらいにしとこうよ
509 :
名前は開発中のものです。 :2013/02/14(木) 18:35:42.41 ID:jFZvS44r
一応俺は小6だからそりゃツクールレベルだと助かるよ。 プログラミングの知識は浅いし。 でもvisual studioのCだから構造化プログラミングだよな? という事はjavaみたくスレッドじゃなくてwhileループで基本処理するってことか。 これが面倒臭いんだよな。 ところで当たり判定ってどうするの? オブジェクトの座標を配列で保存して、その節点対同士を計算して 交われば当たりみたいな?
>>501 ナカーマ
RPGは表示>移動>攻撃判定くらいまで作ってから
他の分野の制作に目移りした
アクションとかになると、まだ作れないイメージかな・・・
とりあえず質問する前にググれ
513 :
名前は開発中のものです。 :2013/02/14(木) 18:42:25.39 ID:jFZvS44r
当たり判定の画期的なアルゴリズム何かないの?
514 :
名前は開発中のものです。 :2013/02/14(木) 18:45:39.96 ID:jFZvS44r
当たり判定はとりあえず対象の形そのものじゃなくて対象のサイズに合わせた 矩形枠を用意してそれとの当たりを判定するってのがいいのかな?
14歳からとか恥ずかしくて手に取れないとか馬鹿にするやついるけどこれは本当に名著 俺は数多くゲームプログラミング本を所持しているが名著と呼べるものは以下だけだ ・14歳からはじめるC言語わくわくゲームプログラミング ・windowsゲームプログラミング ・ゲームプログラマになる前に覚えておきたい技術 ・AndroidゲームプログラミングAtoZ (new!) これでゲームプログラミングの神が誕生する
矩形を使うか円を使うか好きにしろ
当たり判定、 線分との交点を求める手法が一番良い。 通り抜けバグが無い。
長方形の重なりによって、当たり判定を検出するのが概念的にかんたん。 初心者向け。
519 :
名前は開発中のものです。 :2013/02/14(木) 19:06:35.23 ID:jFZvS44r
>>518 本当に悪いんだけど
まとまったプログラム書いてくれないかな?
参考にするから。
無能君の自演にしか見えんな
521 :
名前は開発中のものです。 :2013/02/14(木) 19:09:27.01 ID:jFZvS44r
長方形が重なったっていうのはどうやって判断するの?
いくら用意してるのかも書いてないし、それでプログラム書いてくれってどういうことだよ ここ仕事依頼するためのスレじゃないから余所でやれ
画期的な当たり判定法 これが無ければ今日のゲームのほぼすべては存在できていないだろう if((a.left < b.right) && (a.right > b.left) && (a.top < b.bottom) && (a.bottom > b.top)) { // 当たり }
バーカ
525 :
名前は開発中のものです。 :2013/02/14(木) 19:47:43.49 ID:jFZvS44r
せっかく衝突判定持った箱型クラス作っても使い勝手微妙すぎるよね。 マウス使うゲームのボタン用として使うならそれはそれで良いかもしれないけど、 普通のアクションゲーやシューティングの判定は体当たり判定と被弾判定とか サイズ変えたいから、衝突判定を共通させるのにデメリットの方が多い。 結局2点or1点+サイズで指定する四角形でC的に衝突判定するはめになるね
527 :
名前は開発中のものです。 :2013/02/14(木) 20:37:08.71 ID:jFZvS44r
>>526 ソートってどんな時に使う?2dアクションだと。
ここはDXライブラリのスレだからね。
本当に行ったみたいw そして早速いじられてる
あっちなら一つのネタで一つのスレッドだし問題ないだろう
C++用にDXライブラリのクラス版作る奴出てこないかな。 コンストラクタに画像のパス指定したら描画とかクラスの関数で出来ちゃうやつ。
それだとOgre3dやIrrlichtの日本語対応ビルド作るほうが楽なんじゃないか
>>532 DXライブラリ以外のやつならいくらでもあるじゃん
今の形を変えてしまったら、それはもうDXライブラリとは言えんだろ
でもやっぱラップ作業してて思ったのは エンジン部分については関数ベースのままの方がラクチンだわ どうせインターフェース使ってしまえば中身がCっぽく汚くても関係ないし
やっぱり、お礼くらいは言うべき。 わすれがちだけども、人として大切な事
本当にありがとうございました
DXライブラリで使いにくいと思ったのは関数ポインタ系だな だいぶ使う箇所減ってきたっぽいけど
>>526 横からで申し訳ないが、具体的にどういうこと?
「衝突判定持った箱型クラス」と「四角形でC的に衝突判定」の違いが分からん。
それはわからんが、普通は「当たり判定クラス」を作って そのメンバに「どの図形かのフラグ」「大きさ」「四角クラス」「円クラス」「楕円クラス」「直線クラス」「衝突判定関数」を持たせて、 どの図形同士も関数一つで判定できるようにすると思うんだが
>>541 だよな。
実際はせいぜい四角と円くらいしか作らないことも多そうだけど。
>>541 collision.check(obj_a.body(), obj_b.body())
みたいな感じにしてどんな形状でも後から追加できるようにしてる
判定に使う頂点データの構造は悩むね
とはいえ、大抵は複数の四角形の当たり判定を持つだけで十分だよな
>>543 領域を追加するときに、AND検索かOR検索かを選べると良い感じだよね
当たり判定であんまり複雑なことやると特許にひっかかったりするんだよな・・・結構かんべんしてほしい
どの特許? 基本的にアルゴリズムって特許取得できないんじゃなかった?
普通に線分と円の辺り判定で足りる
ヨルダンの曲線定理が便利
>>541 それってせっかく「当たり判定クラス」を共通させてるのに実装で
フラグによって図形判別するのは設計ミスってね?
>>549 フラグは初期化の際に判別の為にセットするんだよ
>>541 それなら衝突判定関数を円、四角、直線などつくって
関数のポインタにしてポインタ渡して判定を固定化させればはやいよ
552 :
名前は開発中のものです。 :2013/02/15(金) 23:44:36.20 ID:+YoMj0om
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { DrawCircle(100,100,40,Cr,TRUE); } 超単純なプログラムだけど表示されることなくプログラム終わるんだけどなんで? ちなみにCrは青色でゲットカラーしてある。
初心者用の掲示板ならあるんだからそっちで質問しろ
表示されてるのを確認したいだけなら waitkey使えばいいだけじゃ? あとwhileのとこって()で括らなくてもよかったっけ while((プロセス)&(キーチェック))みたいに
演算子の優先順位は&&より==のほうが高いから問題ない
557 :
名前は開発中のものです。 :2013/02/16(土) 03:28:00.84 ID:w8iU0om+
アルゴリズムなんて誰でも思いつくしかぶっても大した事無い
DXライブラリで起動させてる窓って他のウインドウを使ってると処理が固まってるのはどうにかなんない?
int SetAlwaysRunFlag( int Flag ) ;
でもマウスゲーだと注意だね バックグラウンドでマウス操作に反応するゲームはなかなかウザイ
ありです。描写速度も向上したような気がします。
562 :
名前は開発中のものです。 :2013/02/16(土) 17:52:38.80 ID:w8iU0om+
物体の連続的な移動をさせる場合はwhile文以外じゃ無理?
gotoとかdoとかforとか
564 :
名前は開発中のものです。 :2013/02/16(土) 18:05:12.01 ID:w8iU0om+
だったら
>>562 の質問自体が根本的な勘違いをしている可能性高し
ってこないだのガキか ここはお前にC++を教えるスレじゃないぞ
567 :
名前は開発中のものです。 :2013/02/16(土) 18:09:30.20 ID:w8iU0om+
ようはwhille goto do forを使わずにゲーム作るのって可能? テトリスとか
動的ゲームは無理 右も左もわからない素人が難しいことしようとすんな
2dアクションで、プレイヤーの状態を保持するクラスを作ってて、 ずっと同じインスタンスを使いまわすべきなんだけど、こういうときに singletonパターンでやったほうが便利なのかな? staticだったらそれぞれの関数に引数として渡さなくてもいいし。
570 :
名前は開発中のものです。 :2013/02/16(土) 18:15:58.61 ID:w8iU0om+
>>568 やっぱりか。
明晰再帰に頼っててもっといい方法あるんじゃないかと思った。
例えばJVMのThreadとか。
シングルトンじゃないほうがいいと思う 2Pプレイの予定がなかったとしても、後から2Pプレイを追加できるような設計が柔軟性があってベストだと思うから でも結局は自分がやりやすいと思うやり方でいい
572 :
名前は開発中のものです。 :2013/02/16(土) 18:18:31.61 ID:w8iU0om+
でも動的ゲーム作ってていちいち描画してたら遅くならない? 例えば背景。これ一々drawしてたら膨大なメモリ消費にならない?
別にいちいち描画しなくてもいいんだよ 前のフレームの残りカス使いまわしてもいいんだよ そういうことやって高速化してるゲームいっぱいあるよ 勝手にやれよ
最近の小学6年生ってこんなに頭悪いのか 嘘だと言ってくれ
子供にネットを与えては駄目だといういい例だな
最初はシングルトンでいいと思う。 シングルトンとかでぐっちゃぐっちゃでもいいから小規模の目的を完遂させよう。 そして修正したい箇所があったら全部書き直すくらいのつもりで臨む。 じゃないと最初から潰しの効くようなシステム作ろうとすると確実に詰むよ。
DirectXは、まとめてドンと描画するから 多くても少なくても同じ事。 フレームレートは20Hzくらいで余裕だから、 あまり気にすんな。 むかしの100MHzパソコンならこまるかもな
>>576 今基本的なとこができたから、このあと楽になるようにと色々考えてたら言われたとおりぐちゃぐちゃなってたw
プレイヤークラスを各ステージの関数に渡さないといけないのが嫌だなーとおもって。
>>571 2プレイかー。そういわれるとそうかも。でもとりあえず突き進んでみる。
582 :
名前は開発中のものです。 :2013/02/16(土) 19:20:48.16 ID:w8iU0om+
でもアレだよ、シングルトンみたいにグローバルっぽいのは それを利用するクラスがそのゲームに特化した再利用が難しいクラスであるなら バンバンやっちゃっていいと思うんだよね 逆に言えば特化された空間内での変更には強くなるというか
俺いっそ共通で参照したいの一つに纏めたクラス作って各オブジェクトに継承させてる
585 :
名前は開発中のものです。 :2013/02/16(土) 19:30:53.75 ID:w8iU0om+
キャラを1ずつ連続で動かす→点滅しない 自動的に弾幕を1ずつ連続で動かす→点滅する 何で?
586 :
名前は開発中のものです。 :2013/02/16(土) 20:11:35.26 ID:w8iU0om+
解決しました
プログラミング言語覚える前にコミュニケーション能力を覚えましょう
質問する前にネチケットを身につけることと、自分で調べることを見につけることだな
>>588 すいません。
ところでGetColor(255,0,0)は赤ですが表示されません。
考えられる理由は何ですか?黄色、青は表示されるのですが。
死んで来世にかけるとといいよ
掲示板はデバッガでも子守りでもないんだけど
>>591 デザインパターンの質問は良くて
俺の質問がだめなのは何でかな?
ちなみに俺を叩いてる奴は単発な。
ID:HkFhDvSNさん教えてくれませんか?
赤を取得しても黒っぽくなります。
setgroundcolorで白にしても無駄でした。
どうすればいいですか?
向いてないから死ね
ガチっぽいのが笑えるわこの子
>>592 少しはいろいろ試してみたり調べたりして自分だけの力で解決する努力をしろ
下らない質問ばかりするのが迷惑だってのがわからないのか?
自分の力で解決しようと努力することがゲーム制作者としての力量を上げることに繋がるんだ
質問ばかりでゲームを完成させられなさそうな奴の為に質問に答えてあげようと思うか?思わないだろ?
マジレスすると質問者が何を試して何を考えたのか書かれているかいないかの違いだよ 上手くいかないから何なの?馬鹿なの?死ぬの?
何度も言うけど俺を叩いてる奴は外野から来た単発な。
質問に答えてくれる人は叩かないから。
>>595 かなり調べました。
GetColor 赤 で調べても255,0,0がそうであるしか出てこないんですよ。
GetColor以外で色取得する方法無いから困ってるんで.....
青、黄、灰色、白とちゃんと表示されるんですが赤がどうしても。
引数の対応は左から赤緑青であってると思うんですが....
質問は基本的に一括してしたいタイプです。一度作り出したら
ここで質問を乱発して迷惑をかけるということは無いと思います。
>>597 お前の使ってるライブラリかPCがおかしいとしか言えん
てか迷惑だっていうのがわかってるのならもうやめろ
本でも買って勉強しとけ
もう一切お前の質問には答えん
ID:w8iU0om+ は次に「他に答えてくれる人いませんか」、と言う
答えてくれない奴は外野から来た単発な、とも言うな
直接描画関数にGetColor(255,0,0)入れたら赤が表示されました。 何故でしょうね。皆さんやってくださいよ。面白いですよ。 変数に代入してから入れると黒になる。 もしかして予約子なのかと思って変数名を冗長にしたけどそれでも黒。 他の色だとちゃんと表示されるのに。
騙されたと思ってやってみたら騙された
荒らしに構う奴も荒らし
>>602 いやまじで
int x;
x=GetColor(255,0,0);
while()
{
DrawCircle(100,100,10,x,TRUE);
}
でやってみてくださいよ。
表示されないw
xをGetColorで直接いれたら表示されるのに。
俺も同じような経験あるは実は やらないけど
>>584 あー共通参照のをstaticでまとめておくってやり方だよね?
結びつきはかなり強くなってしまうけど、用途を限定した場合の便利さは最高レベルだと思う。
C#で作成するクラスに自動的に継承されるObject型みたいに
ある名前空間のクラスに、ある基底クラスを自動的に継承させる方法とかあればいいのにね
>>604 つか、whiileで無現ループしてたらそりゃ表示しないよ
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int x;
if( DxLib_Init() == -1 )// DXライブラリ初期化処理
{
return -1;// エラーが起きたら直ちに終了
}
x=GetColor(255,0,0);
DrawCircle(100,100,10,x,TRUE);
WaitKey() ;// キーの入力待ち((7-3)『WaitKey』を使用)
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
>>607 背景を白にしたら黒色で表示されてることが確認できました。
whileの問題じゃないと思います。
>>604 は単純化しただけで....
単純化したらサンプルにならんよ。 ちゃんと動作する(現象が確認できる)ヤツじゃないと。
>>609 ふーん、少なくとも俺の環境じゃ普通に赤い丸がでるし
コード的にも間違いないし。
あんたの環境の問題じゃねーの?
最新のDXLIB使ってるか?
自分でビルドしたDXLIB使ってるとか?
恥ずかしいけど全部書きます。 #include "DxLib.h" int hit(int x1,int y1,int r1,int x2,int y2,int r2) { if((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<(r1+r2)*(r1+r2))return 1; else return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ int Key[4]; int i,j; /*円Cの設定*/ int Cx,Cy,Cr,Cc; int Dx,Dy,Dr,Dc; int bx1[300],bx2[300],by1[300],by2[300],bd; bx1[0]=10;bx2[0]=15; by1[0]=401;by2[0]=406; bd=GetColor(204,51,0); for(i=1;i<=298;i++) { bx1[i]=bx2[i-1]+1; bx2[i]=bx1[i]+5; by1[i]=by1[0]; by2[i]=by2[0]; }
Cx=100;Cy=391;Cr=8; Cc=GetColor(0,0,255); int t; int x; Dx=200;Dy=380;Dr=20; Dc=GetColor(255,255,0); int mx,my,mr,mc,mb,mbc; mc=GetColor(153,153,153); mr=5; mb=0; int ex,ey,er,ec; er=10; ec=GetColor(255,0,0); ey=395; ex=200; int z; z=GetColor(255,0,0); if( DxLib_Init() == -1 )// DXライブラリ初期化処理 { return -1;// エラーが起きたら直ちに終了 } SetDrawScreen( DX_SCREEN_BACK ) ; DATEDATA Date; t=0; x=20; GetDateTime( &Date ); SRand(Date.Sec);
>>611 あなたのDXライブラリのバージョンは?
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {if(CheckHitKey(KEY_INPUT_DOWN))Cy=Cy+3;if(CheckHitKey(KEY_INPUT_UP))Cy=Cy-3; if(CheckHitKey(KEY_INPUT_Z)&&CheckHitKey(KEY_INPUT_LEFT))Cx=Cx-4; else if(CheckHitKey(KEY_INPUT_LEFT))Cx=Cx-3; if(CheckHitKey(KEY_INPUT_Z)&&CheckHitKey(KEY_INPUT_RIGHT))Cx=Cx+4; else if(CheckHitKey(KEY_INPUT_RIGHT))Cx=Cx+3; if(Cy>=393)Cy=392; if(CheckHitKey(KEY_INPUT_X)&& mb==0) { mx=Cx;my=Cy; mb=1;mbc=0; } if(mb==1) { mx=mx+4; mbc=mbc+1; if(mbc==20)mb=0; } if(t<=19){Dy=Dy-x;x=x-1;} if(t==19)x=1; if(t>20&&t<=40){Dy=Dy+x;x=x+1;} if(GetRand(1000)%2)ex=ex+5; if(GetRand(1000)%3)ex=ex=ex+7; else ex=ex-5;
>>614 ん?
さっき拾ってきたから
3.10aだよ
まずバグが再現する最小限のコードでテストしろよ
>>618 そう
つか、なかなか描画部分が出てこないじゃないw
長いならロダにでも上げたら?
もしくは、
>>617 が言っているように。
>>607 のコードビルドして動かしてみ?
ClearDrawScreen() ; DrawCircle(Cx,Cy,Cr,Cc,TRUE); DrawCircle(Dx,Dy,Dr,Dc,TRUE); DrawCircle(ex,ey,er,ec,TRUE);/*←ここがおかしい*/ for(i=0; i<=290; i++)DrawBox(bx1[i],by1[i],bx2[i],by2[i],bd,TRUE); if(hit(Cx,Cy,Cr,Dx,Dy,Dr)==1)DrawString(100,100,"OUT!,you hit!",GetColor(255,255,255),TRUE); if(mb==1)DrawCircle(mx,my,mr,mc,TRUE); ScreenFlip(); t++; if(t>100){t=0;x=20;} } DxLib_End() ;// DXライブラリ使用の終了処理 return 0 ;// ソフトの終了 } これで全てです。 連続投稿辛い....
>>618 新規プロジェクトで
int x;
x=GetColor(255,0,0);
DrawCircle(100,100,10,x,TRUE);
試してみて不具合がなければ、ソースのどこかに原因がありますので
頑張って解析してください
>>619 昨日議論してて、DXライブラリの初期値が16bit画面だったんだけど、そしてね。
本来ならば、DWORDのはずなんだがintegerでもいけるようだし
いやいや、最新版は違うんだろうと思った次第です
いらいらするなあ
色の計算は、32bitの場合に color = (2^16)*R + (2^8)*G + B こうだと思った
今全ソース入れてみて実行したけど・・・ 画面表示出ないのは自分の設定がおかしいから? あと関係ないと思うけどCheckHitKeyで ==0 とか書かれてなくても大丈夫だっけ? (自分で作ってるソースはDxLibのリファレンスに載ってるものに ほぼ忠実に従って書いてるから、上記で合ってるなら分からない) ちなみにint x; からDrawCircle~までの短い部分なら普通に表示された
>>625 あなたの DXライブラリのバージョンは?
いや、GetColorで返る値は0xRRGGBBにはなってないぞ DrawCircle(x,y,r,0xff0000,TRUE)としても赤にはならない この辺の仕様がどうなってるのかよく分からないんだよなあ
DxLib_Init()は?
0xAARRGGBBじゃないの
>>627 だからぁ、 画面モードが16bitの場合は計算が違うだろう。各色256じゃないし
kwsk
>>626 3.08e
今自分が作ってるソフトはDxLibの上記バージョンで動作できてる
最初にライブラリインクルード/winmain~/DxLib初期化/描画先を裏画面に設定
の順で処理してます
(グラフィックモードは32ビット。)
DxLib_Init() の時点で、初期化でリセットされるから その前に設定したのはきぇる
なんやら議論の旋風を巻き起こしちゃったみたいですいません。 超難しい問題だったんだねやっぱり。
単純にDxLib_Init()の前に余計なDXライブラリの関数呼ぶなって事だ
確かに全画面だとでないなぁ。 何かが悪さしてるんだろうけど。 ChangeWindowMode(TRUE); ←これ入れてWindowモードにする if( DxLib_Init() == -1 )// DXライブラリ初期化処理 { return -1;// エラーが起きたら直ちに終了 } Windowモードだとちゃんと赤い玉が表示されるんだが。
>>635 正解
if( DxLib_Init() == -1 )// DXライブラリ初期化処理
{
return -1;// エラーが起きたら直ちに終了
}
↑これを
Cc=GetColor(0,0,255);
ここの前に入れたら問題なく表示されたわw
なんという盲点w
DxLib_Init() ライブラリを使う前に初期化しなきゃならんてリファレンスにかいてあるよ
>>634 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow ){
int Key[4];
int i,j;
/*円Cの設定*/
int Cx,Cy,Cr,Cc;
int Dx,Dy,Dr,Dc;
int bx1[300],bx2[300],by1[300],by2[300],bd;
if( DxLib_Init() == -1 )// DXライブラリ初期化処理
{
return -1;// エラーが起きたら直ちに終了
}
こうしたらなおったよ
どうもDxLib_Initの前にGetColorするとうまくいかないくさいなあ
winmainの次にウィンドウモード設定して 次行にDxLib_Init()==-1~ の部分を持ってきたら無事表示された
>641 リファレンスに書いてあるだろ、俺はソースコードを参考にしてるだけで DXライブラリ使ったこと無いけど読んでるよ
>>639 天才!凄いですね...このスレ凄いわ...専門知識の塊。
まじでプログラミングむずすぎwwww
SetGraphMode を設定してみ
最早ネタでやってるとしか思えないな
DxLib_Initの前にGetColorすると32ビット環境での値が返ってるぽいね エラーとして-1とか返した方がいいんじゃないのか
>>639 本当にありがとうw
さっき試したけどたぶん直ったかもしれない...
嬉しいわ
Initした時点でリセットさせるんだろ SetGraphMode挟んでも同じ現象が起こりそうだな というかそういうもの挟んで色作っておくとか普通やらんと思う。 ましてInit前になにしてんだ
まさかとは思うけどInit(ialize)の意味を知らないんだろうかね
つか、上のソース見りゃ初心者なのまるわかりだろうに。 何初心者相手にドヤ顔してんだよ。 恥ずかしいやつだなぁ
>>651 やっぱ初心者ですかね?w
円が重力にしたがって落ちるとか結構自分でも凄いアルゴリズムだと
思うんですがw
>>649 その関数あったことも忘れてたw
空気化してたw
まあでもデバッグとしてはいいとこ突いてんじゃないか DxLib_Init前にGetColorがエラーなしで通り、Init後には使えない値になる バグじゃないけどあんまり望ましい仕様ではないものが見つかったといえる
リファレンスに従ってたら起こり得ないからそもそもそんな事を書く方がおかしい
初期化(Initialize)してんだから基本的にそうなるじゃん。 この場合、初期化されない方がイレギュラーなんだが。
>>654 「初期化前に初期化したら不具合が出ました、仕様バグです」
↑基地外
C言語初心者だと思って読んでたけどプログラミングの初心者だったか
頭の悪い小6にドヤ顔でプログラミング教えてる中学生がたくさんいるスレはここですか
ガキは相手すんな
昔は、初期化するまえにイメージロードとかできた記憶あるが いまはできんね。
あと、DxLibは初期化前に使う関数というもんがあるから 間違えるやつもいる
連レスやめろ
メタセコイアでMAPの地面つくってんだけどUV以外でテクスチャ貼る方法とか無いの? 細かい道とか作るのにUVでは面の形状に依存しすぎだり地図みたいなテクスチャをかぶせるだけだと容量や解像度が最悪になる。
メタセコイア側なら平面マッピング機能 プログラム側ならUV値の自動生成(XZ値を使うなど)
プログラム側が楽みたいかな 自作MAP作成ツールでも作ってみよう。
上から目線度合いって質問する側の事?
半円を描写する場合、点を連続して描写するのでしょうか?
バーカ
半円の画像を用意して表示するだけ
ポリゴンでやれ
点を連続で打とうと思ったらとりあえず線をつないでみるといいと思うよ
3Dモデルにアクセサリーくっ付けるサンプルを参考にしてるんだけど、 全く同じようにプログラム書いてもアクセサリーの角度が全く変わらないんだが… もちろんモデルのフレーム(手)はちゃんと動いてるのに
質問してくれないと答えようがない
質問です ウィンドウの大きさを変えずに解像度をあげたいのですが調べてもよくわかりません 調べ方が悪かったのかもしれないですが教えてくれませんか?
無理じゃね? 解像度の意味理解してるのか疑問
理解していると解釈すると、大きな画面を生成してそれに内容を描画した後ウィンドウに貼り付ければいい でも勘違いしてそうだな
要は画面解像度640x480で動いてるゲームがあったとして、 それを1280x960にすると同時に、ウィンドウサイズも縦横2倍にする、という話か。
681 :
名前は開発中のものです。 :2013/02/19(火) 23:50:31.56 ID:qKfb7lS1
解像度は上位互換できないよ。 ブラウン管の画素数をあげる事だからハードウェアレベルの問題に到達する。
質問がカオスなせいか回答側も混乱しているように見える
>>677 解像度には二種類の意味があるし、
ウィンドウの大きさっていうのも、画素数の話か、物理サイズの話かわからないし
そのへんの言葉の意味をもう一度調べて正確に質問し直した方がいいと思う
PC初心者っぽいし、
>>680 の言ってることだとがあってると思う
ディスプレイ解像度あげたら、ウィンドウが小さくなった!って言ってそう
こんなレベルでもゲームプログラミングの世界に入ってくるなんてDXライブラリすごいな
もしかしてフォグってデバイスロストするのか? どうやって蘇生させればいいんだ
686 :
名前は開発中のものです。 :2013/02/20(水) 00:51:34.37 ID:AaU5kHH6
687 :
680 :2013/02/20(水) 01:52:17.02 ID:qNul5HBl
>>686 オイラの言いたかったことは、オイラ自身の説明(>680)よりも、>684の
「ディスプレイ解像度あげたら、ウィンドウが小さくなった!」の一言に全て集約されてる気がする。
例えば、最近はめっきり見なくなった環境だけど、
ディスプレイの解像度を640x480にした状態で、ウィンドウサイズ320x240のゲームを遊んでたとする。
この人が、ディスプレイ解像度を縦横2倍の1280x960に変更したとする。
すると、ゲームのウィンドウは、相対的に縦横1/2(面積1/4)になっちゃうわけだ。
この状態でゲームを遊ぶには小さすぎるだろうから、どうにかしたいって話なんじゃないか……と。
自己解決しました みなさんすいませんでした そしてわざわざありがとうございました
689 :
名前は開発中のものです。 :2013/02/20(水) 03:17:06.27 ID:AaU5kHH6
>>687 すまんまだわからん。
ウインドウサイズは解像度あげたらそれに合わせて上がるんじゃないの?
彼なので以下スルーで
>>689 あがんねーよw
試しにデスクトップの解像度下げてから
何かウィンドウ表示して解像度上げてみろよw
ウィンドウサイズは変らずに見た目だけ小さくなるからw
692 :
名前は開発中のものです。 :2013/02/20(水) 03:39:26.10 ID:AaU5kHH6
見た目小さくなる=ウインドウサイズ小さくなるじゃないの?
693 :
名前は開発中のものです。 :2013/02/20(水) 03:43:42.51 ID:AaU5kHH6
ウインドサイズが見た目で変わらないってどうやって分かるの?
694 :
名前は開発中のものです。 :2013/02/20(水) 04:22:34.30 ID:AaU5kHH6
解決しませんでした。
>>688 結局どれが正解だったんだw
もやもやして困る
“自己”解決って言ってるんだから、この中に正解は無かったってことだろw
>>689 「ウィンドウのサイズ」と「ディスプレイ解像度」の意味を理解するところから始める必要がある。
「ウィンドウサイズ」とは、そのウィンドウが縦横何ピクセルで表現されるかという意味であり、
「ディスプレイ解像度」は、そのディスプレイが縦横何ピクセルを表示出来るかという意味になってる。
たとえば、1*1の解像度のディスプレイだとしたら、640*480のウィンドウを表示するためには640*480個のディスプレイを使わないといけない。
これはつまり、そのウィンドウはそのディスプレイには収まりきらないくらい大きなウィンドウということになる。
逆に10000*10000の解像度のディスプレイがあったとしたら、その左上(おそらくは)のほんのごく一部しか使わずに表示出来るだろう。
解像度を上げてもディスプレイが巨大化したりはしないわけだから、一定のディスプレイの横幅を10000で割って640倍した横幅しか使わない。
ということは、ディスプレイの横幅/10000*640とディスプレイの横幅/640*640ではどちらの方が大きくなるかを比較すればいい。
このくらいの算数は出来るだろう?
698 :
名前は開発中のものです。 :2013/02/20(水) 10:35:31.00 ID:qGoMDRql
多分知識より読解力が足りてないな
キチガイのガキはスルーしろ
とりあえず、単位(ドットなのかcmなのか)を省略すると誤解を招きかねない、 ということは学んだ。
質問者が意味もわからない用語を無理に使って失敗したパターンか
無理に使ってるイメージは無いなあ。 単に言葉が足りなすぎる。
>>697 俺なんかのために詳しい説明ありがとう。
解像度2倍にするという事はディスプレイの2マスで1画素を表現していたのを
1マスで1画素表現できるようになるという事だから
同じ絵でもディスプレイ解像度大きくなる程小さくなるという事ですね。
そのウィンドウはそのディスプレイには収まりきらないくらい大きなウィンドウということになる。
>
でも
大きい解像度の絵の場合、逆に解像度を下げて表示するという機能もあるんじゃなかったっけ?
画面いっぱいに解像度の大きい絵を表示する場合解像度下げないとスクロールしないと全体の画面
を見れなかったりするし。
キミは解像度という言葉を使わずに同じ内容書いてみてよw
でも 大きい解像度の絵の場合、逆に解像度(ウインドウサイズの事、以下解像度)を下げて表示するという機能もあるんじゃなかったっけ? 画面いっぱいに解像度の大きい絵を表示する場合解像度下げないとスクロールしないと全体の画面 を見れなかったりするし。
そのウィンドウはそのディスプレイには収まりきらないくらい大きなウィンドウということになる。 > 昔のディスプレイ解像度が640×480しかないやつ。 限界がこうなら、高解像度の画像見るなら画像の解像度落とすしかないでしょ?
スルーで
>>698 そうでした。すいません。スルーで...
ウィンドウのサイズを解像度なんて表現してるのはじめて見たよ
流れに関係ない話なんだけど DXライブラリはDirectX使ってるから画像扱う時に8*8とか128*128とかの、 2のn乗サイズかつ正方形じゃないと描画遅くなるのかな?
速度は変わらない 今は仕様が変わって、分割ではなく大きいサイズで確保するようになったから、VRAMを余計に消費するだけ
.JPGはダメですよ
いつ仕様が変わったんだ?
公式の更新履歴見るとよろし
(2012/7/15) 3.08b テクスチャ分割のデメリットの方がメリットよりも大きくなってきたため、 最大テクスチャサイズに収まる限りはテクスチャ分割は行わないように処理を変更 確かこれだな。
画像サイズが512*1200とかだったら512*2048で確保されるってことかな?
そういうこと
LoadDivGraphで大きい画像を分割する時に、元の画像が2のn乗の方が良い、ってのとは別の話? それともこういうのを考えないようになったって話? 理解力なくてすまないけど教えて欲しい。
それも関係ない 元の画像の確保サイズの話
>>719 画像分割は関係ないけど、元の画像が2のn乗云々っていうのはその通り……のはず
これはモデルテクスチャにも当てはまるな MMDみたいなポリゴン凄い重そうな物理戦法だと気にならないかもしれないがローポリだと露骨にきになる。
MAPデータってBMP貼ってるけど拡張子で速度変わるの? 容量的にはJPGが軽いけど読み込んだら拡張子関係なく格納されるのですか?
はい
まず、ゲームでは.jpgは論外。画質劣化があり透明に歪みがでる。 DirectX内部としてどの画像であっても展開して格納されるから同じ。 DirectXを考慮すると、MSの.ddsが良いのだろうけど、大きく違わない。 次に透明をサポートするか、カラーキーを使うかによって分けられる。 BMP,JPGなどは透明を持って無いからカラーキーを使う。 PNG,TGA,DDSなどはアルファチャネルを使う。 圧縮形式の圧縮率も影響するので実験するのが良い またファイルの大きさもzipで圧縮するから同じこと。 ツールのサポートが多い、BMPやPNGが一般的だと思う
DXライブラリのアーカイバ使えば圧縮されるから元のサイズなんて気にせんでえーねん 劣化なし・無圧縮・読み込み速度最高のDDSが最強だよ
ちょっと気になったんだけど、コンストラクタでロードした画像データって他で使えないのかな? LoadGraphとか使ってるけど実際使おうとするとリセットされてるような…
なるほど…全然気付かなかった だから普通の変数は使えるのね
なんでInitの前にLoadGraphがあるの どういう発想でそういうことが起きるのかまったく理解できんw
DxLib_Initをラップして初期化関数作るとそういうタイミングのミスが減って捗る 設定ファイルを読み込んで、DxLib_Init前じゃなきゃできない設定を適用してからInit、 その後DxLib_Init後にしか適用できない設定を変更するまでを一つの関数にまとめる。 初期化関数内でのDxLib_Initの戻り値を初期化関数の戻り値にすれはDxLib_Init()と同じ使い方でいけるし
メンバ変数として、コンストラクタでLoadGraphを実行するオブジェクトを DxLib_Initを実行するクラスで保有してるんじゃねえの
初期化より後に宣言するとヤバイ命令もあったりややこしいですね。
DirectXがややこしいんだから、仕方が無いのでは? それともDirectXを直に触ってみる?
リファレンス読んでないのが悪いだけ
DirectXの仕様を考えると自然とわかると思うんだけどな やっぱり根本を知るということは重要
DirectXの仕様とか別に知らなくていいけど 文句言う人に限ってリファレンスとかサンプルコードとか読まない印象が強いというか
DxLib_Init()のリファレンス見たけど、あの説明だけではどの関数はよくてどの関数はだめとか分からないよね。 この手の間違いはあっても仕方ないんじゃないかと思う。間違ってから、あぁこれがだめなのかというのを思いつくなり調べるなりして習得するんじゃないかなぁ。 私なんかはサンプルコードの真似からはじめたから、結果的にそういう問題に悩まされたことはないけど、これはたまたまだしな。 ややこしいといえばややこしいけど、プログラムなんてややこしいのが当たり前だから、仕方ないだろうとは思う。 別にだれも「だからDXライブラリはくそ」とかいってないし、文句をいってる人がいるようには見えないけど。
ごめん流れとは別の話だけど ゲームを操作するための入力(パッド・キーボード・マウスなど)を別スレッドで監視して ゲームループ部分から分離するまでは順調だったんだけど、 GetKeyInputString()関数みたいにIME使った入力をどこで扱うようにするか悩むことになった。 この手の操作使ったゲーム作ってる人少ないかもしれないけど、やってる人いたらアドバイスいただきたいぜ
別スレッドにする意味が分からない
>>738 別に誰も自己紹介は頼んでないし文句言う人が今そこにいるとも書いてないし
別スレッドにする必要ないような
Win32とDirect3Dはウィンドウ作ったスレッドで実行する必要がある。
でもDirectInputは別スレッドでOKらしい。
IMEはウィンドウと結びついたWin32だと思うぞ。
>>738 デフォルト設定ではフルスクリーンじゃなくて
ウィンドウモードにしてほしいと思ったことならあるな。
デバッグはウィンドウモードでするだろうし、
最初ウィンドウモードがあることに気付かなくて。。。
DXライブラリ使った入力処理ってProcessMessage内で更新されてるんじゃなかった? 別スレッドでやると色々ややこしい
3Dモデルの描写って画面に写ってなくても描写命令使うと計算重くなるの? 他のライブラリだと3D描写前に色々チェックさせるんだけどDXライブラリはそれがない。
CheckCameraViewClip CheckCameraViewClip_Dir こういうやつのこと? 自前でやってるから使ったことないけど
もっと詳細に面の単位でカメラから死角になってる部分を描写しないようなチェックする奴 さすがに自動でやってるってわけじゃないよね?
つまりポリゴンの陰になってプレイヤーからは見えなくなってるポリゴンとか、そういうの?
cullingのことを言いたいのか 単純にカメラの視野外についてだけの話なのか
そのライブラリの関数名出してくれればいんじゃね
なんだかFPSの60が2の累乗じゃないのがイライラしてきたぜえ
地面に板ポリじゃない影を作るのには地面にテクスチャを貼るんでしょうか? 実装する方法が皆目わかりません。
すいませんでしたここに書き込んだ直後気づきましたorz ベクトル関係はだいぶお世話になりましたが影はすっかり見落としていました。
754 :
名前は開発中のものです。 :2013/02/27(水) 23:14:13.59 ID:1jm12F2u
dxlibって物理エンジンないんだろ? だっせーなw
物理エンジンならBox2DでもBulletでもODEでもphysxでもお好きなのをどうぞ?
>>754 DirextXに物理エンジンなんて無いぞ?
やべえスクリーン座標変換が便利 カメラ固定すれば3Dキャラクターの動きにぴったり合わせて2D画像の画面をスクロールさせられるんだな ちょっと興奮してきた
VC++の方の質問ですが「すべてを保存」の隣にある「切り取り」が意図せず押してしまって邪魔です 深刻なバグの原因を起こしそうで非常に目障りです このアイコンを消す方法はあるでしょうか?
ctrl z
761 :
名前は開発中のものです。 :2013/03/03(日) 03:23:19.87 ID:o2SfQUoi
DXライブラリの有効なハンドルって、0になることあるのかな それとも0は無効なハンドルだと仮定していいのだろうか
俺はエラー時の返り値である -1 を無効なハンドルにしてるが、それじゃいかんのか?
0で初期化できる場合、エラーの-1と何もしてない0で区別出来るということを考えたけど それって活用できることないのかな
>>758 スレチだからヒントだけ書くと、Q「あるでしょうか?」 A「あります」 だな。
あとその他の答えで言うと、基本的に ショートカットメインで操作するクセ付けろ。
俺は何年も使ってるけど、邪魔と思った事が一度もないのは、多分その辺をいちいちマウスで操作しないせいかも試練。
もうちょっとだけヒント書いておくと、ツールのカスタマイズとかその辺から入れ。
つーか、そこまで気にしてて、そのやり方に気付かないってすごいよね
>>763 Cの代表的な負の遺産だからハンドル型を自作した方がいいと思う
スマポを利用すれば自動的に各種Delete関数を呼ばせることもできるしね
スレチ感あるけどGetPrivateProfileInt関数使うときって やっぱり直接使うんじゃなくて初期化した値をメモリに格納しといたほうがいいのかな HDDに毎フレームアクセスなんかしてたら読み取りミスとか出て処理落ちとか不具合の原因になるだろうか
ガリガリうるさそう
読み取りミスがするかは知らんけどHDDへのアクセスって基本的にめちゃくちゃ遅い
771 :
名前は開発中のものです。 :2013/03/03(日) 17:05:14.72 ID:FAA8uMz+
>>768 ファイルキャッシュされるから毎フレームHDDを読みに行く事にはならないけどな
それでも直接メモリに格納したのを使うより遅いだろうけど
毎回パースからやり直しだから巨大なファイルにして試すと 恐ろしく遅かった気がする それなら自前で処理したほうがマシなのと せめて初回で全部をmapにぶち込むだけでもぜんぜん違う
そうかファイルキャッシュされるのか なら小さければあまり問題無いのかな まあ格納するけど HDDのアクセス速度的に1/60秒ごとに読み取りとか出来んのか疑問だった 動作中に設定変えたら即座に反映されたし ちなみに用途はキーアサインの設定のために使う程度
それは流石に、キャッシュとか関係なく お前さんのプログラム上に変数として保持したほうがいいんじゃないかな。
いや、変数にする必要はないんだ 例えば前移動をキーボードの↑キーに割り当てるとか ジョイパッドのボタン1に割り当てるとかってのをユーザーが好きに設定できるようにしただけだから アクションシーンの開始時に一回更新(初期化)する程度で充分なはず
それを変数に保持するというんでは
同じファイルを1フレームごとに読み込むとか正気の沙汰じゃないな。 最初に一度読み込んで変数にでも記録しておいて あとは変更あった時に更新で十分だろ。
LoadGraphScreenを使ってゲーム作ろうとしてるようなもんだ
TOHANDLE付いてない文字機能とか廃止しろよって毎回思う。
間違った使い方して重いって言って離れていく初心者もいるだろうなあ
何か目立ったデメリットあったっけ?
782 :
781 :2013/03/04(月) 19:45:14.45 ID:p9ee5rnN
ああ、投稿してから気付いた。 ChangeFontとかあの辺を毎フレーム読んじゃうって問題か。
ハンドル付いてない文字列表示系って使うとしてもprintfDxと用途が同じなんだよね・・
モデルにモザイク掛ける処理ってどうやるんでしょうか?
画面をモザイクじゃダメ?
モデルをテクスチャに描画して、 そのテクスチャをモザイク処理してから ビルボードで表示したらいいのと違うかな。
DXライブラ駆け出し初心者なんですが グラフィックでフリップ処理を行うとめちゃくちゃ処理が遅くなるんですが 処理を上げる方法はないものでしょうか? ちなみにフリップ処理をかまさないと体感で100倍近く処理が早くなります。 開発環境はBCCでC++です。 何卒、ご教授ねがいます。
vsync待ってんじゃね?
bccでよくやるな
多分>789の通りだと思うけど、実際にどういう処理をやろうとして、どれくらいの時間掛かったのかが気になるところ
スリープ入れないで全速力で実行してるんじゃねえの PCによって動作速度変わるんじゃないのか
めちゃくちゃ処理が遅くなるっつーか、 vsync待ちしたスピードの方が一般的な速度だよな。 もちろん仕様次第なので一概には言えないが。
フリップの有無でってことなら垂直同期待ちだよね Init前にDxLib::SetWaitVSyncFlag(false);
たぶん、ぶん回しの状態の速さでフレームごとに(例えば)グラフィックの移動速度などを調整したんだろうな そうしたらフリップで何倍も遅くなると錯覚できるよ
796 :
788 :2013/03/06(水) 20:22:06.28 ID:d/ZcfDAr
返事が遅くなってしまってすみません。
処理的には
①キー入力待ち
②入力があれば描写を裏に設定。
③グラフィック描写
④フリップ
⑤①にもどる
って感じです
ちょっと
>>794 さんの方法を試してみますね。
理由があって敢えてそうやってるのでなければ、根本的に間違ってる気がする。 793とか795も参考に。
798 :
788 :2013/03/06(水) 21:09:58.84 ID:d/ZcfDAr
>>794 さんの方法で処理が早くなりました。
ありがとうございます。
>>797 今のプログラムの組み立て方は中国の違法建築のように
思いつきや必要になったことを増築!増築!ってやり方なので
まぁ、結構めちゃくちゃな組み方ですねw
あと、HSPから乗り換えてきたばかりなので、
たぶん、普通の人がソース見たら「なんじゃこりゃぁ!!」って感じになると思います。
また、ご迷惑をおかけする時があると思いますので今後ともよろしくお願いします。m(_ _)m
限られたルールの中でアイデアを募るための質問ならいいと思うけど、 そのルール(知識)を勉強すらしてない状態で質問するのはタブー 初心者だから許されるなんて厚かましい考えは捨てろ
>>796 あと②は最初に一回指定するだけでいいから、ループでやんなくていいよ
向いてないから死ね
ぼくも駆け出しです^^^; 初心者なのでやさしくしてください☆
804 :
名前は開発中のものです。 :2013/03/06(水) 23:45:11.11 ID:Gtb3rZ1I
カーニハン&リッチー『プログラミング言語C』を買ってきました これでDXライブラリ使えるようになると思います ご教授下さい
なりませんので諦めてお帰り下さい あなたにはできません
806 :
名前は開発中のものです。 :2013/03/06(水) 23:49:48.26 ID:Gtb3rZ1I
DirectX9.0cのリファレンスマニュアルが必要です。
来世に掛けるのが賢明
810 :
名前は開発中のものです。 :2013/03/07(木) 00:20:57.42 ID:xX5dwhvN
えっ、DXライブラリってまさかDirectX9なのっ!? しょっぼ~
マップ画面を上下左右に移動処理させると 画面の下の方が切れたように微妙にズレるように見えます(移動中だけ) ウィンドウモードだとそう見えて、フルスクリーンだと大丈夫です 切れてる所を画像にしようとプリントスクリーンで抑えようとしましたが 貼り付けして見てもズレてないんです これはモニタが悪いんですか? それともFPSうんぬんの話でしょうか
>>810 Win8でもDirectX使うならまずDX9環境で動かせるようにしろってMSが言ってるから大丈夫
DX9環境=SM3.0ってことでWindows8の推奨APIはDX11.1だよ
>>811 それたぶんティアリング。
vsync待ちしてないとそうなる。
けどフルスクリーンで起きないって事はないはず。
あれ、待てよ、逆だっけ? フルスクリーンでvsnyc待ちしても、ウィンドウモードだとされないからティアリング出るんだっけ? なんにしてもティアリングなら、何が悪いってもんじゃないし気にしないでいいと思う。
>>813 推奨の話ではなくて、最低限動かさなければならない環境ね
Win8アプリの要件にDirect3D 機能レベル 9_1 をサポートする必要がありますと書いてある
まあ他の部分で問題があって認定アプリにはなれないんだけど
>>816 Direct3D9.1ってのがシェーダモデルの話
WindowsストアアプリはDirectX11.1でしか作れないよ
DirectX11.1はDX9カードでも動くからDX9を使う理由がもう無い
フルスクリーンは何もしなくても勝手に垂直同期待った気がする
どうやらティアリングだったようです プログラムの問題ではなくグラフィックデバイスの問題みたいですね これですっきりしました。ありがとうございます。
ティアリング→テアリング グラフィックデバイスの問題→ディスプレイの問題 色々間違えてすっきりされても困る
困るのか・・・(困惑)
騙して悪いがDXライブラリ解説新サイトのとおりにやるとダメということだな。
かいせつしんさいと?
「てありんぐ」なんて言い方 初めて聞いたが…
ここで聞いたらいいのか分からんが fpsゲームとか画面描写は300fpsとかで、処理だけ60fpsとかってどうやってんやろか?
ウエイト無しでループしつつ、60/1秒経過したら処理ルーチン呼んで 描画は呼ぶ呼ばないにかかわらず毎回やればいいんじゃね。 でも処理しなけりゃ画面変わらんだろうし意味無いんじゃ?
画面描写が300fpsのディスプレイなんかねえよ分かってねえな
これは偏見だが、FPSというか市販の3Dゲームって、そもそも垂直同期を待たないというイメージがある。 1回の処理を1/60秒以内に収めなければならないという制約が消えるので、 そこに強いメリットを感じるなら、そういうのもありなんじゃない?
そういう作りにするなら表示系の処理(位置更新etc)は分離するでしょ キー入力の判定は60回/secだけど位置更新は120回/sec、とか
829 ディスプレイに300fpsで描写するわけじゃなくて、ウィンドウが300fpsとかで描写されてるやん?
てめえらまだXPか・・・
>ウィンドウが300fpsとかで描写されてるやん? そうなのか。初めて聞いたわ。 そんなのやって意味あるのか……。
最近はモニタの性能が60fpsまでのものが多いから、 そういったモニタを人間が見た時にはプログラムが何度画面更新しようが60fpsとしてしか見えない。
最近は120まであるらしい
3Dディスプレイとかがそうらしいね >120Hz
>>825 他所で恥ずかしい思いすると可哀想だから教えてやる
tearingのtearはティア(涙)ではなく、テア(引き裂く)の方の意味
わからないことあったらググるなり辞書ひくなりする癖つけた方がいい
>>830 なぜ垂直同期を待たないかというと、PCゲーマーは遅延を嫌がるから
それとPCゲーマーの間では120Hz液晶はわりと一般的で
垂直同期させると60Hz液晶と120Hz液晶で動作速度が変わってしまうから
もちろん動作系と表示系を分離させればそういうことは起きないけど、
だったら垂直同期切って、どんなfpsでも動くようにした方がいいよねって感じなんじゃないかな
いつかは240Hzや480Hzも普及する日がくるしね
一気に目が悪くなりそうだな
>>838 なんかすごいデジャヴを感じるんだけど
13~14ヶ月前にもこのスレで画面更新回りで
似たようなレスしてた?
あのときもPCゲーマーでひとくくりにしてたよね
ともあれ
> いつかは240Hzや480Hzも普及する日がくるしね
これはディスプレイの技術革新3~4回と
人間側の進化が必要そうだ
早くとも100年はかかると思うよ
840さん CRTモニタなら、240hzとか出せたはず あと、たぶん120hzはまた一旦消えます 有機elになるし
>>840 たぶん違う人じゃない?
PCゲーマーってかPCアクションって言った方が2ch的には正しいかな
480Hz液晶自体は存在してるよ
4k液晶と一緒で、コンテンツが少ないからハードが普及してないだけ
コンテンツに依存しない4倍速テレビならどこの電気屋でも売ってるよ
人間側の進化って言ってるけど、実際に120Hz以上を見てから言った方がいいよ
人間の能力に対して480Hz必要かは知らんが、240Hzじゃ足りないのは間違いない
それで、 60Hzと240Hzとでは 何がどのように違うのですか?
よりなめらかになる fpsとかならhs狙いやすくなる
60Hzは、液晶との接続周波数ですから。 なめらかさとは無関係です。
描写が120fpsでも処理は60fpsで基点以外は処理に関係無い線形補完なのが大半
お前ら何言ってるのかわからんが 現実の時間経過とアプリケーションの時間経過とゲームシーン内の時間経過を混同するなよ
一般ゲームのゲームエンジンのフレームレートは、上限が30Hz止まりがほとんど
質問というか経験談を聞かせて頂きたいです。 エースコンバットのような3Dシューティングを作るとして、 描写・ネット通信関連はDXライブラリに任せて処理速度的に問題ないでしょうか? テクスチャの解像度や量に依存するとは思いますが、並のデスクトップPCで30fps以上は出したいです。 2DならDXライブラリ使った方がはるかに手軽ですが、 大規模3DとなるとDXライブラリでは荷が重いのではないか?と不安です。 面倒だけどDirectXに手を出すか・・・悩んでます。 ちょうど3D関連の関数が追加された時以来ゲーム創作から離れていたんですが、 当時はvistaがギリ動く程度のPCスペックで15~30fpsが限界でした。 何分最近の3D事情のノウハウがないものですから、皆さんの経験談を聞きたいです。
siv3Dの人柱になった方がDirect3Dの勉強するより勝算があると思う
DXライブラリでTerrainを生成する部分が面倒そう 地形を海か宇宙に限定すれば描画する物が激減して余裕だな 描画しかないけどOgre3D使えばそこらは楽だけど
DirectX直接と DxLibは、ほとんど同じことです。 おそらく1年くらい3Dをやってれば今のあなたの疑問が解ける。 3D特有のノウハウのような難しさがあるのでそれを超えること ジンバルロックであり透明についてであり、色々です。 30Hzの性能がでるかは コードの書き方次第です、 LODのような誤魔化しのテクニックもあったりしますが ムリが無いほどに仕様を下げる考えがあれば大丈夫です。
正直パフォーマンスについては実測してみろとしか言いようがないよ 楽なところから入って不足であればレベルを上げて物理で殴ればいい
854 :
名前は開発中のものです。 :2013/03/07(木) 23:37:15.80 ID:xX5dwhvN
DXライブラリで作っても、Windows8でアプリ認定されないお(^_^)
みなさんレスどうもです。 実はDXライブラリの3D関数が導入される前から3Dはやってまして 当時ジンバルロックなんて名称知らずに奮闘してましたよ。アポロ13見て知りました。 あのバグはこういうことだったのかと。懐かしい…。 最低限ゲームは動く状態で、5年も前に書いたコードですけど流用しつつ最新技術に対応していこうかなと。 DXに限らず手段は色々あるようなので調べていきたいと思います。
GetDrawStringWidth()はありますがGetDrawStringHeight()がないようなのですが、文字列の高さはどうやって得るのでしょうか?
>>856 全角1文字の縦横サイズがFontSize×FontSizeの正方形だから(例外もあるらしいけど)
縦幅が知りたいときはFontSizeを取得すればいい
3Dの基礎知識全くないからWiki見てもわからんのだけど ジンバルロックって言ってるように航空機でグリグリする場合に問題になるんであって、 カメラの↑方向固定でXとYを -179~179度だけ回転させるような普通のFPSの場合は あんまり意識しなくても大丈夫なんだよね?
マスクがいまいちわかってない。マスク画像の指定した色の部分だけ下の画像をみえなくするんだっけ?どういう使い方してる?
>>858 常にワールド座標のY軸に串刺しになってる状態で制御出来る物なら問題ない
モデルを読み込むときに不透明度って設定すべきだろうか?
DirectXは浮動小数点の計算を実行環境中で最速の計算方法を選ぶせいで
環境によって計算結果が異なってしまうらしいんだけど、
やっぱりDXライブラリの浮動小数点を扱う各種関数でも同様なのかな?
>>861 ありが㌧
当たり判定について質問ですが、モデルの面と円の当たり判定はできるのすが 四角形のモデルを空間にした円の衝突判定は出来るのでしょうか? 真四角の箱のなかに面には触れてなくてもボールが入っていればフラグを立てるような処理がしたいですが 自分で作るしか無いでしょか?
MV1GetPositionで取得した座標をintに直すにはどうすればいいですか? 座標を別々にXYZで処理してるから困った
MATRIX FrameMatrix ; int FrameIndex ; // フレーム名からフレーム番号を取得する FrameIndex = MV1SearchFrame( ModelHandle, FrameName ) ; // フレームの現在のワールドでの状態を示す行列を取得する FrameMatrix = MV1GetFrameLocalWorldMatrix( ModelHandle, FrameIndex ) ; // セットするモデルの状態を示す行列をフレームの状態を示す行列と同じにする MV1SetMatrix( SetModelHandle, FrameMatrix ) ; すまん3Dサンプルのこれなんだけど、この通りにやってもアクセサリーの角度が動かないんだ(位置は動く) これだけじゃないのかな?
すまんモデルが悪いみたいだった
868 :
名前は開発中のものです。 :2013/03/11(月) 20:23:09.38 ID:M7EC09TS
プログラムなんてアイディア提供すれば外部でやってくれるのに 自分で開発するなんて馬鹿馬鹿しいと思いました。
他人にやらせる方が大変だと思うけど?
コーディングを外注するには仕様を完全にさせないと駄目だしね。 ゲームルールの調整なんて完成間際までやってるよw
ここに居る人は基本ぼっち製作だよね? 企画マジで無理だわー
複数人サークル製作は殆どがスクリプトか何らかのツール使用だな。 C++でコーディングしてる奴は大抵ぼっち。ナンデカナー
プログラムは何行くらいになる?だいたい。
10万はいかない
1万は行くの? グラフィックの数はどんくらい?
規模なんてピンキリだろうに。
ゴミ箱にゴミを投げ入れるようなのは1万行いかないだろうな
ってか、ヘッダファイルとかソースファイルとか分散しまくってて行数が分からない。 今公開中のは、共通の自作ライブラリ併せて1MBくらいになるようだけど。
ポケモン本編くらいのゲーム作るとしたら規模はどんくらいになる? ソースファイルだけで2万行超えますかね?
>>878 1kb=1024文字だから
1MBってその1024倍ですよね?凄いの作りましたね。
公開してるならやってみたいです。どこですか?
ソースの行数なんて規模と何も関係ないだろ むしろソースが大きいってのは悪口にすらなりえる せめて聞くなら作業時間とか聞け
あのサイトのコメント消せないから嫌いだわ。 質問する勇気のある奴以外がアイディア横取りするとか最悪極まりない。
思い付きに価値はない。アイデアと思い付きの間には深い溝がある。
>>880 やだお(^ω^)
この板のどこかでリンク張ってるから適当に目星付けてくれ。
そもそもソースコードの規模や作業時間は
ゲームの質と全くと言っていいほど関係ない。
RPGなんか基本部分ちょろちょろっと作ったらあとはスクリプトかなんかだろ。
>>880 は単に規模のでかいゲームを作りたいだけなんかね?
質問しといて後で消すとかありえんだろ
質問と回答をデータベース化して FAQとして残すのが目的みたいなもんなのにね こういう人が「解決しました」とか言って 詳細書かずに立ち去っていくんだろうな アイデア横取りってのも意味がわからないけど 適当に例題作ればいいだけじゃね? それとも現在作ってるゲームのソース全部アップが条件だったりするわけ?
いったい何を揉めてるのかわからん。
>>882 自分は1つの作品当たり作業約1年(企画は別)で見積もってやってる。
1人でやってる&毎年経験のない別ジャンルに挑戦するんで時間かかり気味。
ゲームの内容量は最近の市販ゲームの体験版くらい。
とても他人に公開できるレベルじゃないんですけど、身内に自慢したりとか。
スマホゲーム並みのミニゲームだったら1ヶ月~3ヶ月くらい。
例えばもしポケモンみたいな育成系RPGを作るとしたら、RPGのノウハウがないと中々組み上がらないだろうし、
何よりあの量のドット絵や音楽を用意するだけでプログラム書くより何倍も時間かかる。
全部フリー素材から持ってくるなら話は別だけど。
>>889 スマホのミニゲームですら1ヶ月?
そういうの聞くとちょっと遠慮がちになるなぁ…
ドット絵のないゲームっていったら四角とか円しか出てこない ブロックゲームしか思いつかん… これじゃぁモチベーション保てねぇ…
1ヶ月はかなり短いと思うけどねー
1ヶ月て何時間なんだ?人によって差が有るだろうし 作業時間以外でも考えてたりするから一概に言えないけど 実作業時間でカウントするべきでは
ボンバーマンに似たゲームが350時間ってどんだけ大変なんだろうw authorは結構プログラムに精通してる人なのにw
他人の作業時間なんて気にするだけ無駄
>>891 それでいいじゃないか。■は鬼、●は逃げで2D鬼ごっこゲーム。
キャラは32×32をペイントで塗りつぶしただけ。
マップは1000×1000ドットくらい。障害物あり。
このミニゲームなら素材集めなんて十秒で終わるから。
結果的に2週間でできた。見た目は残念仕様。でも結構好評だったw
クイックスみたいな
898 :
名前は開発中のものです。 :2013/03/13(水) 01:26:37.97 ID:ArVGqLyP
立方体を適当に回転させたりするだけでかなり見栄えが良くなるよ!
なんで32x32なのに1000x1000なんだよ
>>896 データファイル無しでどうやったら2週間もかかるんだよwww
2週間かけて作ったのが80年代のしょうもないパックマンもどきのゲームってwwww
901 :
名前は開発中のものです。 :2013/03/13(水) 19:39:10.97 ID:kxVMaZHs
会社員してると土日しかやる気出なくてつらぽよ
知恵を貸してくれ
http://codepad.org/9n8IdxAI ( DxLib_End() 入れ忘れたんで、実行してくれる人は入れてください )
を動かすと、回っている青い円の周りにたまに角ばった赤色が見える時があるんだ
なんとかならないかな、これ
もしかしたら、オレの環境だけ起こる現象かもしらんけど・・・
あ、ちなみに DrawCircle の色を GetColor( 0, 255, 255 ) にしたら見えなくなる
特に出ないな、、、ディスプレイドライバの設定変えてみては?
DXライブラリのバージョンは?
ドライバ確認したけど最新版だし、変な設定してない 色を変えたら発生しなくなるからドライバ関係ないかも・・? ソフトウェア描画やってみたけど、結果はダメなままだった DxLib のバージョンは最新 ( 3.10a ) 使ってます オレ以外の環境の人で特に発生しないなら、気にしないようにしようかなと思っている
色を変えたら発生しなくなるからドライバ関係あるかなと思ったんだが。 物理的なケーブルだったりすしてw
カラーキーの問題じゃね?
OSと 画面の色ビット数と リモートデスクトップ越しで実行してるか or 仮想マシン上で実行してるか を確認するべきな気がする
昨日の青い円に赤が見える現象の人です dxdiag して大事そうなとこだけ抜粋してみた --- System Information --- Operating System: Windows 7 Professional 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.130104-1431) DirectX Version: DirectX 11 DX Setup Parameters: Not found --- Display Devices --- Card name: NVIDIA GeForce GTS 450 Manufacturer: NVIDIA Chip type: GeForce GTS 450 Current Mode: 1920 x 1080 (32 bit) (60Hz) Monitor Name: 汎用 PnP モニター Output Type: DVI カラーキーは DxLib で設定するものですか? それなら、コードの通りなので何もいじってないです ケーブルの問題は・・・ 自信ないです・・・ OS, 色ビットは上記で、リモートデスクトップや仮想マシンなどの 特殊な環境では動かしていません あと、昼から動かしてて気づいたんですが 赤い線を通過するときだけ青い円が変になることがわかりました 試しに全部の赤い線を消してみたら、何も問題なく表示されています
やってみたけど何もおかしくなってなかった
何もおかしくないな nvidiaコントロールパネルのグローバル設定いじってるとかじゃないの?
グラボの設定いじったりはしてないんですけどねぇ・・・ 誰もオレと同じ症状にならないなら、オレの環境依存っぽいので考えないことにします 検証に付き合ってもらってありがとうございました
ソフトウェア描画でも同じ症状が起こるというのが、少し妙ではあった。
そうなんだよね。 両方で起こるならもうモニタのせいとしか・・・
スクショ撮ればモニタのせいかどうか分かるんじゃないか?
スクショは初期段階で頑張って撮ろうと思ったけど、2, 30 回失敗してから諦めてた そうか、モニタが変な可能性もあるんだな というわけで、描画対象画面を画像として保存する関数を使って 毎フレーム保存してみたところ、問題なく描画されていた これはモニタのせいっぽいですね
なあすごく初歩的な質問かもしれんが RPGやアクションに限らず、いや3Dでも2Dでも使われてる、 よくキャラの足元の地形の設定に応じて足音や砂煙とかのエフェクトの使い分けってどうやって判定してるんだ? 一応3Dを扱ってるとして考えてるんだけど モデルの該当箇所に簡単な形の判定用モデルでもくっつけとくぐらいしか思いつかん
古い様式のトゥームレイダーのRoomEditorの場合では、 床の形状が碁盤の目のようになっていて、 フロアデータと呼ばれるデータの格納部分があります。 そこに床ティクスチャと共に床属性を加えています。 例えば、木の上、石の上、水の上によって足音が変化する。 それら全部のデータをチャンク形式で塊にして、 レベルデータとして1ステージ分を1ファイルで管理しています。
頂点の色をIDとして分けるとか属性用のテクスチャを用意するとか
参考になったよありがとう テクスチャちょっと考えていくしかなさそうだな
925 :
名前は開発中のものです。 :2013/03/22(金) 13:52:05.61 ID:7uDI1c1K
DXライブラリって、どの程度のスペック(オーバヘッド、制限)のものなん? 調べもせずに聞いてみる。
普通のスプライト処理だが、殆ど気にならない。 まぁ比較もしてないのだが。
>>925 オーバーヘッドはそこまで無いんじゃ無いかな。
制限は、普通に公開APIよりも多い。(まぁ、当たり前だが)
現実的に3Dバリバリやりたいです。とかの人以外なら、使用に問題無いと思うわ
928 :
名前は開発中のものです。 :2013/03/23(土) 01:00:40.63 ID:hF6uJ46m
Android版との平行開発用に考えてたんだけど、十分いけそうね、ありがと!
Android、Windows向けのゲームを作るのにJava+OpenGLじゃないんかい そっちならついでにLinuxやOSXもいけるのに
930 :
名前は開発中のものです。 :2013/03/23(土) 02:05:28.35 ID:hF6uJ46m
Androidのゲーム開発をJavaでやるのは罠。 OpenGLESがインスタンス生成破棄しまくってGCまみれになって死ぬ。
いや、なんというか、Androidなら、C#とかMonoが良いんじゃないか? Unityとかの基盤技術だから、AndroidもWindowsもMacOSも問題なく対応できるし、 なんだかんだでこれからのゲーム作りの一角になりそうな予感するし。 Javaも、マインクラフトなんかでも分かる通り良いと思う。 正直、Androidも考えてるなら、C++にするにしてもDXライブラリは辞めた方が良いよ Windowsだけなら明らかにDXライブラリが一番良い道だと思うけどね。
なんか無能な知ったかぶりばかりでワロタ
933 :
名前は開発中のものです。 :2013/03/23(土) 02:11:59.75 ID:hF6uJ46m
なんでAndroidでDXライブラリ使う話になってんだよwww
>>933 だれもそんな事は言ってないとおもうが・・・・・・
935 :
名前は開発中のものです。 :2013/03/23(土) 02:23:03.65 ID:hF6uJ46m
あー、説明が悪かったな、Android版の描画エンジンは既にあんのよ、Cで。 で、これにコンパチなWindows用のCな描画エンジンを作りたいな~って話です。 Androidで絵を描こうと思ったら、現状OpenGLESしかござんせん(DXライブラリとかナイヨ)。 スマソw
936 :
名前は開発中のものです。 :2013/03/23(土) 02:23:56.86 ID:hF6uJ46m
>>931 の最後の2行はそう言う意味じゃなかったのか、すまんw
>OpenGLESがインスタンス生成破棄しまくってGCまみれになって死ぬ。 GCを持つ言語の問題であってOpenGLは関係ない >いや、なんというか、Androidなら、C#とかMonoが良いんじゃないか? いやなんというか言語と環境の区別はつけてほしい >Unityとかの基盤技術だから、AndroidもWindowsもMacOSも問題なく対応できるし、 対応できるのはUnityがそうだからであってC#は関係ない そもそもUnityの実装はCとC++
OpenGLでwindows, android, iphone 全部カバーすればいんじゃないの?
クロスコンパイルのハイエンドエンジンを自作かと思いきや、 やっぱりただの無能でしたという話か
AndroidにDxLibがあると思ってるわけじゃないぞ むしろAndroidにあるなら、DxLibでいいって話になるだろ Java+OpenGLならjarとapkを出力できるようなライブラリとかあるんだし そっちの方がいいんじゃないかと思っただけの話だ 俺なら一つのゲームに二つソースを書いたり、描画エンジン作ったりなんて面倒でとてもできない
さわったことないけどCocos2d-xとかでいいんじゃない
942 :
名前は開発中のものです。 :2013/03/23(土) 02:45:33.29 ID:hF6uJ46m
OpenGL と OpenGLES は別モノですぜw
OpenGL/OpenGL ESを包括してビルド時に切り替えるライブラリとまで説明しない理解できないのか JavaだとGCまみれで死ぬなんて言ってる時点でお里が知れるがな まあ悪魔で提案しただけだから、ベターとは思わないけどやりたい方でやりゃいいさ
944 :
名前は開発中のものです。 :2013/03/23(土) 05:19:25.29 ID:hF6uJ46m
ごめんね、みんなの専門外の話になっちゃってごめんねwww だよね、やったことないトコの話は分かんないよねwww すぐ規制されちゃうからもう消えるねwwwwww
他スレで暴れていた無能なメンヘラ外人じゃねこいつ。 あいかわらずレベル低いなぁ~。
946 :
名前は開発中のものです。 :2013/03/24(日) 00:58:40.48 ID:cFYDzMb9
お前らなんでそんなに必死なんだよw
サンプルモデルはxViewerで見てもフレーム位置がちゃんと設定されている 一方俺のモデルはxViewerだとフレームが全て足元 RockDeBone2使ってるんだけどちゃんと設定しないとダメなのかな、分からない…
話は変わるが、 海外の17歳の学生が作ったスマホ向けのアプリが ヤフーに28億円で買われたらしい みんなも金になるようなアプリを作ろうぜ
949 :
名前は開発中のものです。 :2013/03/28(木) 03:05:12.92 ID:ALzQwtXE
ここの連中は一般社会に背を向けた奴ばっかだから無理無理w PC使ってオナニーしてるだけですし。
人工知能と自然言語処理とか凡人が手を出そうとする分野じゃないよな
>>950 そんな事無いぞ。今の将棋AIの基本となってるbonanzaなんて、将棋も素人な人が、
生物学の研究の片手間に作ったプログラム(アルゴリズム)が基だし。
全然関係ない分野の人がちょこちょこっとやるだけで凄い爆発的に進化する事ってよくあるし。
人工知能も自然言語処理も、言い方悪いが、まだ始まっても無い分野
本当にモノになるのはこれから10-15年の間だろう。
今からやれば、その道のプロになるのも夢じゃ無い。
プログラム(アルゴリズム) 凄い爆発的に進化する 頭悪そう
ボナンザの作者エリートだろw
RDF/OWL推論とかニューラルネットワークを大学でやってたけど 結局コンピュータには人工知能なんて大げさに呼べるようなことは できそうにないと気付いて関わるのをやめた。
フリーゲームをダウンロードしたら、exeファイル一個しかないのがあったんだけど、ああいうのって画像ファイルとかどうやってるの?
リソースにうめこんでいるのではないでしょうか?
exeファイルの後ろにつけるという手も
プログラムによる生成だな
色々方法があるんですね。 リソース埋め込みとかexeの後ろとかでぐぐります。ありがとうございます。
リソース埋め込みだとビルド時間が長くなるからオススメしない
リソース埋め込みは有償版じゃなきゃできなかったような
そうだっけ?リソースコンパイラとリンカがあればいけるんじゃね?
2010と2012で違うからなVSは
(何でこのスレに書いたんだろう・・・)
有償版にしかないのはリソースエディタ リソースコンパイラは無償版にもついてるし 埋め込むのは可能
別に有償版あるからどうでもいいです。
ウインドウのタイトルバーみたいなとこドラッグされても 中で処理続けるようにしたいんだけど、スレッドを分けるしかないかな?
スレッドを分けてはいけないのだが。 DXライブラリ内部にあるウィンドウ プロシージャで WM_MOvEあたりが呼ばれているところを変えるべきだな。
SetUserWindowして自前でメッセージループ処理すれば何とかなんじゃね?
それで何とかなりそうだ。
おおサンクス! いろいろやってみる
タイトルバーをドラッグすると、DefWindowProcの中で隠されたメッセージ ループが回りはじめて、タイトルバーを離すまでDefWindowProcが返って こない。ほかにも メッセージボックスが表示されてるときとかも、 この挙動を示す。 (=ユーザの書いたメッセージループは無視。DefWindowProc の中の 隠されたメッセージループを経由して直接ウィンドウプロシージャに メッセージが飛んでくる。PostThreadMessage でウィンドウ無しのスレッドメッセージ がロストするのは隠されたメッセージループが回ってるこのタイミング) ※なんかこのへん KiUserCallbackDispather がやらかしてるらしいんだけど、 WinDbg でカーネルシンボル落とすところまでやってないんだよね。 っていうのが、あるので、WM_TIMER で定期的に起こしてやるか(フレームレート は当然落ちる。)処理するルーチンの最後で自分自身にPostMessage してやって ウィンドウプロシージャが再度よばれるようにするか、(PeekMessageを使った メッセージループの挙動に一番近くなる・・・ような気がする) WM_NCLBUTTONDOWN メッセージをDefWindowProc に頼らず自前で実装するか、 してやらないと駄目だとおもうなぁ。(これはアドホックすぎて、自分はあきらめた。 隠されたメッセージループがどこにあるのかわからん。) WM_APP_UPDATE = (WM_APP)+? なウィンドウメッセージをひとつ用意しといて、 常に WM_APP_UPDATE が1つメッセージキューにあるように自分自身に当てて投げてやればいいかも。
974 :
973 :2013/04/01(月) 01:09:42.12 ID:Qf5Ey224
DxSystemWin.cpp の NS_ProcessMessage() はそんな単純じゃなかったので 自己ポストするのは、無理でーす。 垂直同期待ちするスレッドを走らせて、そちらから適宜PostMessage する方法を進言します。
ウィンドウを掴んでる・動かしてる間は ずっとWM_MOVEがループしてるだろうからそこに switch(UINT msg){ case WM_MOVE: if(isFPS){ GameUpdate(); GameRender(); } return DefWindowProc(); default : return DefWindowProc(); }
メッセージ・ウィンドウ内でWM_MOVEが呼ばれているとき、 case WM_MOVE: return DefWindowProc(); で処理を返すと ウィンドウを掴んでる・動かしてる間は WM_TIMERやWM_PAINTが間(メッセージ・ループ)に挟まれず、 ずっとWM_MOVEだけが呼ばれ続けた覚えがある。 Win32の標準GUIにあるスクロールバーとかメニューバーと Direct3Dを混ぜたときは他にもゲームレンダリングをさえぎるような ウィンドウ・メッセージが幾つかあって、プロシージャを扱うのは結構面倒だったりする。
今いろいろと練習中で、キャラのステータスを表すのに今までは手っ取り早く配列とenumの組合せ使ってたけど それよりも汎用性をもたせたくて、map<string, int(能力値)> status みたいにして、 character[i].status["HP"] みたいにアクセスできるようにしたいんだけど、 このままだとキャラごとのステータスのmap全部に"HP"とかのstringが保持されてしまう。 これを解決するような方法ってある? 文字列をポインタで示しても、配列+enumに比べたら ステータス数×キャラクタ×ポインタのサイズ分の容量を食うことになるよね・・
そんな細かいことを気にするぐらいならSTLを使うのなんかやめてしまえ
[]演算子でもオーバーロードしたら良い
けど手間考えると普通にクラスつくるのと変わらないし後は
>>978
>>978 >>979 素人だから細かいことかもわからなかったんだ、ありがとう。
色々みてたらスクリプトの変数もmapみたいに文字列で記憶させてるみたいだし良いのかな
書き忘れていたけどコンパイラによってはunordered_mapというのが使えて 場合によってはそっちのが速くなるから測ってみると良いと思う
昔パラメータ名が不定の場合でやってた手法は 文字列をグローバルにアクセスできるsetに入れる そのアドレス値をキーにmapを生成する クラスや関数でよく使うキーは初期化時にアドレス値を変数にしておいて 数値でアクセスすることで多少の高速化
mapで文字列使うのに抵抗あるなら、定数使えば? まぁ俺ならキャラクタークラス作るけど。
正直、977がなんで、こんなファンキーな作り方してるのか分からん。 自分も983に同じく普通にキャラクタクラス作るだけだな。
オーバーロードじゃなくてオーバーライドだ
恥ずかしい
>>984 実はJavaScript使いなんだよ
Luaとかの変数もローカル変数じゃない限りただのテーブルらしいしな
2Dマップで時間の演出を出したいんだけど 夕焼けとか夜とはただ半透明なフィルターをかければ良いだけなんですが 光源の処理はどうしたらよいかと・・・ なにかアイデアをいただけないものでしょうか?
A::グラフィックをそれぞれ用意する。 B:気にしない
時間の演出っていわれてもどんなのかわからんぜ
2Dのマップで時間経過ありというと、ドラクエ3みたいなイメージが出るが そういうイメージ? 光源の処理、ってのが何を表しているかよくわからない。 夜になったら街灯に火が入るとかそういうこと? もしそうなら、上から半透明の明かりのグラフィックを重ねればいいと思う。 「光源の処理」の意味が違っているかもしれないので、違ってたら説明頼む。
3Dで処理してカートゥーンレンダリングとか。 スプライト処理ならグラフィックを用意する以外には 目から鱗的なアイディアがいるわな。
993 :
988 :2013/04/02(火) 18:20:32.87 ID:iB3qbe5g
俺は光源の処理ってのは、 朝は東から日が照るから、影は西に、 夕は西から日が照るから、影は東に、 って意味だととった。
>>992 良いのかなって言うか、そうしたいならすれば良いって話だと思う
どっちかって言うと、「光が当たってる場所が明るい」より「当たらない所は暗い」を意識した方がそれっぽいと思うが
次スレ だれか たのむ
ume
>>997 乙です
>>993 ,994
自分としては夜に松明などの光源範囲だけ明るくしたらいいかと思っていましたが、
日の向きによる影の伸び方を考慮に入れると面白そうですね。
あと、遮蔽物とかの事も重要ですよね・・・
しかし、フィルター一枚かけただけで処理が劇重・・・
道のりは険しそうです
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。