スレ立て乙
おつ
>>1乙
キー処理部分だけどこんな感じか?
int Key,BackKey;
Key = GetJoypadInputState(DX_INPUT_PAD1);
if(Key != BackKey){
一回だけの処理
}
>>1 乙 俺の貼ったテンプレを使ってくれてありがとう。
>>4 ソース眺めること数分……
BackKeyってBackSpaceキーじゃなくて前フレームの入力情報かよ!分かりづらいわw
前スレ994(入力データを保存/判定する便利クラスを作った人)がどういう処理をしてるかまでは分からんので、
あくまで、同じようなクラスを作った自分の場合ね。
【1】データ形式
各キー(上キーとか1ボタンとか)ごとに、ON/OFF及びその状態が何フレーム続いてるかを保持する構造体を用意。
この時、DXライブラリで用意されている PAD_INPUT_XXX とは別物として考えること。
【2】メインループ
メインループの頭で、GetJoypadInputState() のラッパ関数を呼び出す。
そのラッパ関数の中でゲームパッドの入力状態を調べ、【1】の構造体の中に、ON/OFFとフレーム数を代入。
この時、ゲームパッドの各ボタンと【1】の構造体との紐付けを変更することで、キーコンフィグにも対応できる。
また、ゲームパッドからの入力を捨て、別途保持していたデータを流し込むことでリプレイ機能っぽくもなる。
【3】実際に使用する
ゲーム中で使うときは、【1】の構造体がどうなっているかを見る。
ここも関数化すると良い。押した/離した瞬間や押しっぱなし検出、キーリピートなどもここで。
物理的な入力情報と切り離しているので、キーコンフィグ/リプレイ/ゲームパッド番号などに影響されない。
ただしメニュー画面など、物理ボタンの情報を見たほうが良いかもしれない。
6 :
5:2012/06/11(月) 14:43:12.84 ID:JqpTmrqe
言い忘れ。
DXライブラリ標準のパッド入力関数も、実際に物理キーを見てるわけじゃないと聞いた気がする。
だからそういう意味では二度手間だと思う。
新しいスレになったしゲーム作るかー
記録開始フレームと
前保管値と現在値のxorがゼロじゃなくなったフレームを保管し続ければいいんじゃないの?
>8
乙、参考にさせてもらうぜ
>9
それは何に対して?
>>8 おおおお、良いね
2Dで更に使いやすくなるのか
DXライブラリをラップしてんのか
DXライブラリの中の人も、実際にはラップして使っとけ〜みたいなことを言ってた気がする
実際に使うときは普通ゲーム状態を反映する関数でラップする・・
チュートリアルを追加したよ
パックマン作ろうと思ったが結構大変だな
やはりシューティングが一番サンプルに向いてる
アクションはリアルタイムだからな…
初心者には当たり判定やマップの描画が辛過ぎる
だからRPGをオススメします
無い無い無い無いwww
RPGは、リアルタイムな要素を型に当てはめなきゃいけないから辛いw
PC98時代みたいなパタパタ移動ならまだしも
多人数で作るならRPGがオススメだがな
何せ作るのに必要なデータが山ほどあるからな
パタパタ移動の何が悪い!!
21 :
名前は開発中のものです。:2012/06/14(木) 19:55:15.44 ID:oQCpmuRu
なぜ皆は平安京エイリアンを忘れてしまったのか
サンプルの簡単ゲームでも皆無
クソゲーだからだろ
初級者向けならSFCのドラクエとかDSの世界樹ぐらいで十分だろう。
このスレって実はこんなにレベル高かったのか
油断してた
RPGは状態遷移が多すぎて頭こんがらがる
ドラクエ式だってマップの時とメニュー開いてるときと戦闘シーンがあって
戦闘シーンにはさらにコマンド入力シーンとコマンド実行シーンがあって
シーン間でいろいろ情報のやり取りがあってetcetc
最初に作ったのがRPGって人は誇って良いと思うよ
SFCのドラクエとかプログラムの前にグラフィックと音楽が無理すぎだろ
SFCのドット絵とか芸術レベルやぞ
>>22 夢見てないで、出来るところからやれって話じゃないの?
物を作る側の人間の話として
>>25 素材もってくるとしたら、やっぱりツクール向けの素材屋からでしょう。
それを考えると意外とレガシーRPGが一番初心者向けかもしれん。
>戦闘シーンにはさらにコマンド入力シーンとコマンド実行シーンがあって
いくらなんでもそれくらいは簡単でしょーよ
初心者でも出来る
>>27 初心者が画面処理や内部管理や、その他ロジックについて勉強しながら応用して、そして実際のコードに落としていく事考える前提で言うと、
余計な物多すぎる気がするんだけど、その辺はどう考えてるの?実際の内容と経験的な話として
>>24 発想を変えてみたら?状態遷移を使うからややこしくなると。
スレッドを使ってみるとか、スクリプト言語を試してみるとか、
やりようはいくらでもある。一つのやり方に固執するからこそ、
余計にややこしくなる。
フィールドのみ、もしくは戦闘のみくらいが無難な気がする
じゃローグで
RPGとかプログラムよりもシナリオグラフィック音楽成長システムバトルシステムとか色々プログラム以外に考えないといけないことが多すぎ
パズルとかがいいじゃね背景がスクロールしないで1画面完結型のミニゲーム的なのがいいと思うよ
>>33 実際、テトリスや倉庫番は定番の1つだしねー。
>>33 そしてその、多すぎるゲーム内容をまた、実際にプログラムに落とさないと形にならない訳だしな
とりあえず、画面固定のロードランナーとかからで
それか、バーガーバーガーとか
RPGはリッチなものという固定観念がありがちだよな
mapは1次元、先に行くほどランダムエンカウンターが強くて一番奥はラスボス
1匹倒したらHPと攻撃力が1,1倍up
一番最初まで歩いて戻ると町で回復
とかのプアRPGでも、一応RPGだ
>>29 何を指しているのかわからないけど、
イベントとか成長システム、魔法、アイテムがほぼなくても成立するでしょ。
スクロールのない小さな一画面フィールドでモンスターに出会って、
殴って倒して、町に帰って回復できればそれで一段落。
シナリオがどうこうとかゲームとして完成度が高いってのを
求めているなら、それはもう初心者ではないはず。
そこまで削るならもうマップも必要ないしテキストだけでRPG作れちゃうな
作る目的がDXライブラリやプログラムの学習だとしたら、
やっぱり形にするための最低限の形でも必要な要素が全部詰め込まれてるSTGに落ち着いてしまう
そうそう。つまりそこまで削る前提で言うと、RPGである必要が無いってこと
ゴミ箱にゴミを投げ入れるクソゲーでも作ってろ
>>40 まだC++に手を出してない頃、そのサイトみながらツールでSLGの移動アルゴリズム組んだわ
懐かしい
作るの難しいからこの要素は削ろう
これじゃいつまで経っても成長せんでしょ
それはもちろんあるね
ただ、優先するのは、何か作品を完成させること、だと思う
最初の作品が完成すらせずに挫折するよりは、
要素を削りまくって一つ完成させるほうがいいよ
もちろん度合いの問題はあるけど。
「hello worldできました!ゲーム完成!」
とかないし
トップダウン設計しかないの?
システムの骨組みに成功すれば、そこから増築・改修は可能。
>>45 今回のような場合は。要素を削りまくった上で
設計はトップダウン、実際の開発はボトムアップ……くらいかなあと思っている。
俺は最初に一つのアイデアから最もシンプルなゲームを作って、
それにマッチするような要素をどんどん追加してくよ
作ってて楽しいよ
基礎部分をシンプルに組んだ後、がむしゃらに機能追加していくのって楽しくて良いよな
あんま考えナシだと詰んでしまう場合もあるけど
構造化の段階で効率の良いもの作ろう作ろうと考えすぎて手が止まってしまう方が俺としてはツライ
>>40 よし、言いだしっぺの法則でお前がRPG講座始めろ
講座が欲しいっていうのは結局のところ、そのジャンルの慣例とか定石が知りたいって意味なのか?
もし、実現方法がわからないって意味で言ってるならそこはもうちょっと頑張ってほしいが
ツクールを触ってみるべきだな
どうやって組めばいいかがわかってくる
脳内でフローチャートが出来上がるねツクールは
あれさえ分かれば同じ命令の関数を作ることも出来るし
技術があるならトップダウンでいいけど
技術があいまいの場合、
トップダウンですすめていって、
できないことがぶちあたると詰むw
ボトムアップでできることをすすめていくとなんとなくできるが
構造がつぎはぎがちになってこれまた詰むw
そうやって何回か挫折したあと、
ようやく曖昧でない技術だけでトップダウンで作れたりするわけだなw
>そのジャンルの慣例とか定石が知りたいって意味なのか?
そうなんだけど、結局そういうのはないんだよね。
一つは仕様の差があるのと、もう一つは速度を意識しないといけないから。
Webプログラミングなんか単純な定石で固まってるのに。。。
速度って?
パフォーマンス、処理速度のことかな
どっちかというとC++スレ向きの話な気もする
>>53 トップダウン以外ありえない
最初に見落としがあるとかで技術的な壁にぶち当たったら
涙を飲んで、今の技術の範囲内で実現できるやり方に変える
詰んだとかいうのは気合が足らん
ボトムアップってそもそも何も出来なくなっちゃう
やっぱりトップダウンやな
トップダウンで計画を立ててボトムアップでプログラムするのが普通だろ
男ならビッグバン
ミドルスパイラルでやるわ
アジャイルでいいじゃん
\エクストリーム!/
作るゲームジャンルや規模によっていろいろだよな
ボトムアップ設計はラッパークラス作る場合には必須だと思うんだが・・・
まず瞑想して
設計の全体像を考えたら思いつく所からコードを書き連ねて行く
瞑想のリファレンスマニュアルください
WaitTimer(10000000);
ヴァルキリープロファイルみたいな感じに動いてるドット絵ってどうやって処理してるんですか?
部位ごとにアニメーションさせて、この部位はこの位置から描画とか決めたクラスで包めばいいんですかね・・・
サンプルとか館見ると同じ間隔で画像切り替えぐらいしか書いてなくて、
もうちょっと凝った演出を知りたかった
FLASHみたいに簡単にアニメーションを作成できるツールがほしい・・・
ドラクエ7だったか忘れたけど戦闘に入る時の画面が割れるようなトランジションを応用すればやれるんじゃない?
>ヴァルキリープロファイルみたいな感じに動いてるドット絵
まずそれが一般人には分からん 動画うpくらいしろ
コマ数の感じからして、これは画像としては1コマずつ全身像を持ってるんじゃないかな
ドット絵を起こすときに絵師がパーツごとに工夫して描いたりはするだろうけど、
そこは絵師の分担
なるほど・・・これ全身絵の連続だったんですね
主人公の周りに浮いてる盾とか、独立してるように見えてました
VPは武器変えてもグラフィック変わらんからそうだろうね
77 :
名前は開発中のものです。:2012/06/18(月) 11:14:42.31 ID:5Ku1SYVl
多関節キャラを半透明にすると、継ぎ目のところが重なって見えちゃうよ。
盾だけ別パーツになってるんだと思う。
多関節で動かしてから、一枚絵に合成して表示するという方法もあるけど、
普通に描くよりモーション作成等の手間がかかるから、そんなことやらないと思う。
あのゲーム処理落ち一歩手前で頑張ってるからそんな面倒な事でも軽くなるならやってるかもしれん
中期テイルズのキャラドットとか、おそろしい分割具合だったな
適当に作っていった縦シューに「そうだ影をつけよう」と思っただけで詰む
他の敵に影が重なるのを防ぐには、タスクを表示優先順位でリストでつなげた管理で困ってしまった
全てのスプライトをフレームごとに登録してソートして表示する仕組みを作ろうとして詰んだ
正解は想像するに、表示を機体の表示Renderと影の表示KageRenderに分けて
まずすべてのタスクで影表示、つぎに表示優先度通りに機体を表示、で足りてた
すべてのスプライトを描画順位つけて登録して描画するのが一番スマートだし、
今後の為にも頑張っといたほうがいいと思う
コンテナに積むならvectorが楽
ランダムアクセスしないし、ソートしやすいし
Zバッファとか使えないの?
影とか、本当は一番スマートなのは、Zバッファ用にfloatフォーマットで用意したオフスクリーンの単一バックバッファに
光源ベクトルからレンダして、描画処理時にそれ参照して影落とす方法だけど、
シェーダ書けない環境だと無理
縦シューなら、
自キャラ Z高
影
地形 Z低
でZバッファでなく、Z位置をキャラと地形の真ん中にいれて
影モデルを真っ黒にして描画したらそれなりにみえるのでは?
2dでも3dでもこれでできるとおもうけど
Zバッファ使ったら重いだけだろ。
>表示Renderと影の表示KageRenderに分けて
これでいい。だけど半透明の影だと重なった影の濃さが問題かな。
>>85ー86
Zバッファって別に特別な別の機能な訳じゃなくて、
その高低を判断して描画される時、そのもので中で使われる仕組みだよ
DXLibの範囲だけで触ってるとわかりにくいかもしれないが
あと、ピクセルのアルファ値使った合成についても、結局ざっくりしたラッパーであるDXLibの中の、
そのまたさらに通常の固定パイプラインの中で、結局ピクセルシェーダで演算された合成結果が出てる訳で、
その辺スマートに扱おうとすると、要る処理だけ自分で書いてまとめた方が、本当のところ都合が良かったりする
その縦シューの画面アップしてくれたら簡単な方法がわかるんじゃない
縦シューといっても3D見下ろし、2Dスプライトどちらかわからないし
一枚テクスチャにUV移動させてもいいかもしれないし
3D背景に2Dキャラでお願いします
>>87 私は2D前提で話してるけど、Zバッファは切るもんだと思ってる。
2Dシューティングの影で、重なりや高低による濃さをちゃんとやるなら
ピクセルシェーダよりスレッド+ソフトイメージ(CPU+システムメモリ)で
やるのがいいと思うぞ。
表示優先度順の描画は、表示優先度順ソートをつけたコンテナMAPに積み込むのが
よさそうに思えるけど実際はどうなんだろう
シューティングゲームの処理の順番ってどうすればいい?
キャラクターの移動
攻撃のあたり判定
キャラクターの攻撃
キャラクターの被弾時のリアクション
入力判定とプレイヤーのアクション
敵と敵弾のアクション
それ以外のアクション
当たり判定
描画
ってやってるけど、根拠は忘れた
ただ途中で何回か直した記憶はある
強いて言えば攻撃の前に当たり判定と消滅があった方が良いくらいで後はどうでもいいんじゃね?
あと余談で俺の場合だけど、速さの表現には移動距離を大きくするんじゃなくてイベントのループ回数を増やしてる
一回の移動を一ドット以内にすれば「一度に4ドット移動させたらすり抜けちゃった」ということも無いね
一ドット移動を四回すれば当たり判定の抜け落ち無し
でもそのときには当たり判定も四回する必要ありますね
>>95みたいにしないと曲線の時とか直前の情報持たせることになって面倒なのよね
うむ、わからん
凄い速度の時にキングクリムゾンが発生する
ループ回数を増やすの意味が分からない
処理の回数を増やして何回にも分けて移動するってこと?
すり抜けはわかる
・直前の情報とは
・ループ回数増やしたら当たり判定も増やさないと意味ないけどそこをどうしてるのか
がわからん
前者は、例えばどんな速度でも軌跡は同じ、というタイプの移動をさせることを意味しているのかもしれない
曲線運動をさせる場合、そのタイプの移動もありうるけど、
速度を上げると旋回半径も広がるようなタイプの移動もありうる、と思う
>>100 だと思うよ。
1フレームに10ドット移動するキャラが居るとして、
内部的には、キャラの座標を一気に+10するんじゃなく、+1移動を10回や、+2移動を5回などとして処理する。
ま、呼び出し側は Move(10); みたいに書くことになるだろうけど。
基本的に、前回の位置は取っておくものだと思ってる。
前回の位置と現在の位置が分かれば線分が作れるし、速度も分かる。
>>103 なるほど、そういう意図があるのなら、わかった
上から下へ1000、左から右へ1000ドット
1フレームで移動する速度をもった2つの当たり判定はどうするんだ?
意図わかってる?
複数回移動させるのは、すり抜け防止のために移動を分割するってことだよ?
>>105 1ループで1フレームだから、1フレームで2回以上の処理は無理じゃね?ってことか
500と500に分割したら2フレームだからな
for(int i=0; i<1000; i++)
{
up_down_obj.move(-1, 0);
if(atari(up_down_obj, left_right_obj))
{
up_down_obj.move(1,0);
}
left_right_obj.move(0, 1);
if(atari(up_down_obj, left_right_obj))
{
left_right_obj.move(0, -1);
}
}
なんで無駄に汎用性もたせようとしてんの?
作る段階で高速度になりそうなやつだけ必要な分分割するんだよ
高速同士のケースは考えないってこと?
そのすり抜けがどうしても嫌な奴はもっと高品質の当たり判定つかえよ
低品質どころか何のあたり判定にもならんだろ
汎用性とかそういう問題じゃなくて根本からまちがっとる
動いてる物×動いてない物しか通用してないんだよ
動いてる物×動いてる物では当たってないのに当たったりするw
すり抜けも味付けのひとつと思えばよい
>>116 パックマンを思い出した。あれ、すり抜けあるよね?
>>110 そもそも気にする必要がない、と考えてる人も多いんじゃないかろうか。
物理シミュレーションを作ってるならともかく、少なくともゲームなら。
>>112 それも1つの手じゃないかな。出来ないから妥協するとかじゃなくてさ。
人間が「すり抜け」を感じるのって、
動く物体が大きな壁にぶつかったり、直線上を反対の向きで移動してる物体同士がぶつかった時だと思う。
だから逆に、それ以外の場合だと、
人間は単に「ぶつからなかった」と認識するだけで、「「すり抜けた」とは感じないんじゃないかなって。
すり抜けるだけじゃなくて全然当たってないものが当たっちゃうよ。
それもたまにじゃなくて、かなり頻繁に。気にしないで済まないよ。
1フレーム内で、
オブジェクトAが(0, 0)から(1000, 0)に移動
オブジェクトBが(0, -200)から(0, 200)に移動
とかってこと?すり抜けるかこれ?
値間違えた。
3行目は オブジェクトBが(500, -200)から(500, 200)に移動
すり抜けないためには
一番速い物をループ数として、それ以外の物が1ループで
自身の速度 / 最高速の速度で動く必要があるな。
一番速いのが1発の弾丸(速度100)で、他の物体(壁やキャラ・弾丸)が
10体だとすれば100*11回判定すれば正しく動作するが、これでいいのか?
いいんじゃないの?
結局こんなもの苦肉の策で、ある程度動けば精密性なんてどうでもいいだろうからループ数は大幅に下げるだろうけど
つまり…どういうことだってばよ?
>>121 うーん、頻繁にあるのか。
自分はそういう経験がないから、いまいち分かんないや。
>>128 ゲームプログラミングの技術って、
「それっぽく見せる技術」も大いに含まれてるしなー。
グラディウスのブツブツゾーンとかいくらでもあるだろ
東方ですらすり抜けガードはしてないしなぁ
東方の一番小さな弾で仮定して、自機の当たり判定を2ドット、弾の当たり判定を6ドットとしても、
すり抜けるには毎フレーム8ドットも移動してないといけない
60fpsだとこれは恐ろしいスピードだぞ
自分から突っ込めばすれ違う可能性もあるけど、たった一回のまぐれにかなりのリスクを伴うから考慮する必要ないし
レーザー攻撃とかも厳密には極めて速い弾を出し続けてるだけかもしれないけど
それはもう別の当たり判定法則を使った方がいいに決まってるよな
>>91 見かけ上2Dでも3Dでもどっちでも同じだけど…
それ、動作の詳細的にはラスタデータをBitblt合成する方が良い、って言ってるように見える
>>109だと挙動がおかしい。
>>124だと正しく動くが処理が大きい。
なら
>>124から判定をざっくり粗くすればいい。
それでも重ければ、最高速の弾丸と敵や弾丸の最大出現数の掛け算値を
抑えるようにゲーム側の仕様を調整する。
他のゲームがどうのこうのいってどうする。
int var = 8; /* 8ドットの粗さ */
int max_speed = 100; /* 最高速 */
int loop = max_speed / var; /* ループ数 */
int bullet_move = 自身の速度 / 最高速 * var; /* ループ当たりの弾丸移動量 */
じゃあ1フレームで(0,0)から(0,5)に移動する物体aと
(-2,2)から(2,2)に移動する物体bの
衝突判定っどうやるの?
それぞれでループして判定するとすり抜けるし
あたり判定マップを使ってそれぞれに登録させる(10回?)と、
今度はすり抜けたはずなのに当たる
ちゃんと交互に動かしてやればすり抜けないだろ
線分交差判定でだいたいすり抜けはカバーできるだろ
DXライブラリとかから入ってきて、さらに根本(モノの考え方)がわかってない人にありがちなことだけど
1フレームとかドットとかそう言った単位に拘るのはビューとメッセージだけでいいんだよ
ビューには表現方法に限界や制限があるけど内部数値の表現方法は無限大だから
>>135みたいなのは考え方のスケールが間違ってる
>>135 片方が終わってから片方動かすとか…ないな
そのすり抜けは意図的に起こそうと思って起こせるものなのか?
ってのを考えてみたほうが
>>139 そんなこと言われたってどうすりゃいいのさ
a動かす→b動かす→判定→a動かす…でいいじゃん
で両方必要なだけ動いたら抜ける
>>142 △ すり抜けは諦める
○ すり抜けないようそもそもの当たり判定自体を大きくする
○ すり抜けないようそんなに速いオブジェクトを置かない
◎ スレを移動する
画像すり抜け総合スレッド
すり抜けの話だけにスリ違いってか。
>>135 これって、あたり判定は、その座標と完全に一致したかどうかで見てるのかな。
半径が書いてないからそうなのかなって勝手に思ったんだけど。
だとすると、衝突しないのが正解だよね?
aは1フレームあたりの移動力5
bは1フレームあたりの移動力4
aが1移動する間にbは4/5しか移動してないはず。
ということはaが(0.2)に到達したとき(=2ループ目)には、bはまだ(-0.4,2)にいるだろう。
私としても
>>144の○二つが好きだなぁw
実際そうやってSTGを作ったよ。
>すり抜けないようそんなに速いオブジェクトを置かない
は無理だろ…まず自機弾が…
飛び石状態で移動する物が交差したか?って判定するだけの話なら、
前回位置を点A、今回位置を点Bとして、A→Bの直線上に何があるか、って見るだけじゃないの
こんなの、マウスやタブレット使ったアプリケーション書くときにも、
内容によっては似た処理書くでしょ
なんで延々話してるんだか
自機弾ってかなり判定デカいからすり抜けないだろ
普通見た目より大きくするぞ
>>149 当たり判定を複数用意する方法と、線分の交差判定をとる方法、どっちにもメリットとデメリットがあるのよ。
分かりやすいのは前者だと思う。
>>151 複数てのはどういう複数?
飛び石の、とかレイ飛ばして判定が必要だとか、そういった場面で
ゲーム類だと、個人的によく書く処理は後者の方かな俺。すっきりと。
逆に荒い固定のマス目が論理上の1単位で、最速がメインループ上
スキップ無しになるような作りなら、単純な座標完全一致にするけど
あと、特にデメリットは無いと思うが
>>153 例えば軌道が曲線を描く場合なんかだと、
その軌道と実際の当たり判定が異なり、それが問題になる場合もあるかもしれない。
あくまで、「かもしれない」だが。
デメリット=スプライン曲線がわからないアホには線分判定が作れない
極小で超高速で曲線を描きながら突っ込んでくる敵機敵弾が溢れているとかおそろしいげーむですね
てか、何がわからないのか
数学ってほど数学の話でもないし、アルゴリズムとしても単純なのに
今回弾Aと前回弾Bの線分ABと
今回キャラCと前回キャラDの線分CDが交わるかどうかの判別で
中学校の数学でいいのではないのかい?
解ナシ(ドヤァ)
>>135はaとbの線分が交差したかどうかでみれば交差してるけど、同一の座標に存在することがあるかと言われればないよね。
やっぱり、弾やキャラのあたり判定の大きさとかも一緒に考えないと無理だと思う。
個人的にはSTGの1フレームにそんな精度を求める必要はないと思うけどw
>>158 >曲線だって普通はn角で直線近似するでしょ
そりゃそうなんだけど、そう細かくして行ったら、どんな判定方法でも大して変わらんって話ね。
実際ゲームで使うかどうかは怪しいし、仮に必要な場面に出会ったとして、
自分も同じように直線で近似させると思うんだけども。
ぶった切るけど3Dって2Dと違って難しいんだな
2Dの移動はxy入力→DrawGraphで出来るけど3Dはxyz入力(VGet)→MV1SetPositon→MV1DrawModelでいいのかな?
当たり判定が難しいとかスプライン曲線が云々言ってる奴は今すぐゲーム作れ
ゲーム作ったことないだろお前ら 感覚ってもんが育ってねぇ
>>164 それでいい
でも自分が直感的にできるようにラッピングするべきだな
>>162 座標の完全一致じゃなくて、線分に対して対象との距離がどのくらい以下なら触れている、って普通考えないか?
そうだけどそんなこと一言も書かれてないじゃん
>>167 誰のどの話について、その文句が出てるのかはっきりしない
全部書いてくれないとわからない、って言いたいの?
>>166 もちろんその通りだよ。
ただ、それについては
>>147で指摘したんだ。
でも別になにも応答がないし、その考え方に対して反対もなかったから、そういうこととして進めた。
3Dはいずれ作ってみたい
その前にモデル作る技術身につけないといかんが
3Dモデル描画関数に行列とモデルハンドルを渡すのでは無く
モデル内に行列を状態として持たせる方式にしたのは
ポインタや参照の利用を避け、なおかつ
巨大な構造体の値渡しを少なくするためなのだろうか
DirectXの構造体そのまま使うと
DirectXのヘッダが必要になって
DirectXのインストール・設定が必要になるからだろ。
そっくりの構造体をDXLIB側で定義して詰め替えるのは
オーバーヘッドになるからしない。
>>169 そうだったか
>>171 x形式の事言ってるのなら、あるいはそうでなくても、観点自体が全然違うと思う。
単に初期姿勢の定義。
あ、D3DXMESHの話じゃなかったのか
スマソ
>>172 なるほど、そういう観点もあるか
SDK無しで使えるってのもDxLib強みの一つだしね
176 :
名前は開発中のものです。:2012/06/20(水) 22:29:28.98 ID:di2Pwmar
UNITYがでたんでDXライブラリみたいな時代遅れの遺物はいらんでしょ
177 :
名前は開発中のものです。:2012/06/20(水) 22:34:14.15 ID:sVK+nLbX
ステマうざい
あんな権利主のチンコの振りようで今までの努力がパーになるかもしれないようなもん使うなんてリスク管理ダメすぎるだろ
そこでDirectX、OpenGL直ですよ
C#よりもC++の方が色々と楽だしな。っつーか、どこがシャープなんだろ??
目の付け所
モバゲ関連会社みるとunityはスマフォ方面で伸びてる気がする。
俺はsiv3Dに乗り換えるつもりだが、リファレンスなくてソースハックする悪感。
C++++ → C#
siv3D出たの?俺も期待してるけど何できるか分からんし
DXライブラリで2D、Sivで3Dって使い分ければいいのに
Siv3Dの方が性能いいだろう。
インターフェースもC++で使いやすいはず。
だがDirectX11らしいからwin XPで動かん。
関係者うぜぇ
あんなデモで性能良いとかわかるわけねーよ
DXライブラリがしょぼいのは明らかなわけで。
だがEasy3D, Selene とかの経験から
作者の根気が性能より大事なことにも注意しないといかん。
Siv3Dは大学の団体(サークル)で運営されそうだが、
所詮学生だからすぐに飽きて放置になる危険も大きい。
どこが明らかなんだ?
ライブラリの性能の良さとはなんぞや?
俺はDXライブラリこそDirectX利用の描画ライブラリとして最高にシンプルで自由度があると思っているのだけど
もちろん非公開関数を含めた上でな
描画は機能がなくて自由度は低いし、
フォントやグラフィック描画はハンドルを使う方で統一させなかったりして
シンプルさに欠けてると思うが。
どこが最高にシンプルで自由度があるんだ?
たまたま自分が使ってるから思い込んでるだけだろ。
もしかしてID:NB/uR81nは何から何まで用意してもらえるのがいいライブラリだと思ってるんだろうか
描画ライブラリで大切なのは仕様を厳密に再現できることだと思うのだけど
それにしてもしょぼいとか性能が低いとか、プログラマにあるまじき曖昧な表現ばかりする奴だな
そもそもDXはそれ自体に頼らないようなつくりにしてるって作者が言ってんじゃん
子供だなー。
こっちは理由を挙げたがそちらは何も挙げていない。
DirectXにある関数の名前を変えただけのようなライブラリは使いやすいとはいえない。
だから作者も、もう一段ラップするとこを勧めてる。
他ライブラリの作者はそこまでワンパッケージでやっている。
それはむしろ「自由度が高い」と言うべきなのではw
何を言うのかと思えば「子供だなー」かよwww
笑かすなww
必ずしも高性能・多機能なものがシェアをとるとは限らないのがこの世の常。
seleneとかもうライブラリじゃなくてエンジンだからな
少なくとも独自フレームワークの仕様を強要してしまったらそれはもうライブラリとは言えないと思う
>>194 いや、制限が強く自由度は低い。
フレームワークのようにシンプルに扱いやすいわけでもない。
いやだからそれなら自由度が低い部分挙げてよ
DXライブラリ並みにサンプル付きのリファレンスがあれば良いんだけどね
リファレンスがないと作者のオナニーにしかならん
自由度って言葉の意味を勘違いしてないか?
フレームワークって自由を下げてるものなんだけど
こんなのが関わってるSiv3Dなんて程度が知れるな
ユーザーが多い分、妬まれてるな
今風のエフェクトや特殊処理を簡単に扱える=自由度が高い
そういうのを自分で工夫してやらないといけない=自由度が低い
みたいに思ってるのかな・・・
甘やかされた初心者なんだろうな…
思ったことがすぐ出来るのが自由度だと思ってるんだろうな
普通は思い通りの事を実現できるのを自由度っていうもんだが
前者みたいなのはツクールでも弄ってればいいんじゃないかな
ただ、例えばDirectXネイティブで書けるような自由は、逆にDXLibの範疇に限定したら当然無いんだけど、
その事言ってるんじゃね
てか無いって言うか、逆にそれならDXLibなんて特に不要だから、単に使わなきゃいいだけなんだけども
DirectXでSPRITEを使えばDXライブラリとの難易度の差なんてほとんどないよ
初心者がコケるのはWin32の部分
>>210 俺はどっちかって言うと3Dの部分も含んだ意識だった
あとDirectSoundとか。ついでにXAudioとか。
スプライトだけとか狭い限定的な部分見たら、そうかもしれないが
逆にDxLibの薄さで言うと、別の狭い限定的な見方をしていけば、
例えばwin32との差が大して無い物もあるので、同じことかなと
スプライトは今のPCじゃ恐ろしく速度出ませんよ
初心者が妬んでいるのか。人格批判に終始しているな。
そんなことより俺の質問答えてよ
>>199 俺が出来ないことをライブラリがやってくれない
俺の出来ることはほとんどない
(俺が)DXライブラリを使っても自由度が低い
>>215 どうせ人格批判、質問、根拠のない小学生みたいな感想文、
草付き一行レスしかしないんだろ?
わざわざ煽りの相手をすることもない。
DXライブラリしか知らない狭い知識の自分を正当化するために
DXライブラリを完全無欠と信じたいなら、それもいんじゃないですか?
だってお前複数行で答えなきゃいけないような事何も言わないじゃんw
ほらほら怒り出した。
ID:NB/uR81n
今まさに人格批判をしまくってるアホは放置でつよ
無知と馬鹿は罪ですよ
勉強しなおして出なおしてこい!
というかここDXライブラリのスレなんだしDXライブラリ使わないなら出てけよと言いたいw
なんかエラい事になってるな
コード書こうぜ
seleneでもこんな奴が沸いてたのを思い出した
ドキュメントが整備されてない。
思い通りに行かないとき、正常動作なのか異常動作なのか分からない。
メッセージループが独自。これは自由度を大幅に制限している。
てか、この設計のせいでライブラリ全体が歪んでる。
リソースのハンドルがint型。型システムの恩恵をわざわざ捨ててる。
バグが多すぎる。さらにアップデートするともれなくバグ発生。
テストコードがないため、そういうことにも気づかずにリリースされる。
節操のないAPI追加。似たような機能と名前のAPIが大増殖。
ちょっとライブラリ批判を行うとライブラリ戦士が登場して
ライブラリ批判封じと人格批判を始める。
だからいつまでたっても問題が共有されないし改善案も練れない。
>正常動作なのか異常動作なのか分からない。
これは他のライブラリでも、
使い方が間違ってる(正常動作)のか例外状態(異常動作)なのかはわかりにくい。
というか、理解するまでわからないのが普通だろ。つーか戻り値見ろよ
メッセージループに関しては
そういう設計思想(初心者が理解し難いだろう複雑さは排除する)なんだからしょうがないだろう
それで歪んでるとは俺は思わないが
あとは概ね同意だな
特に型に関してはint1個を適当に構造体でラップすりゃいいのにとか確かに思うな。
直接アクセスさせる必要は全くないし
何を指して言ってるのか全然分からない御託に対して同意できる所があるなんて凄いな
ちなみに褒めてないぞ
>>225 >特に型に関してはint1個を適当に構造体でラップすりゃいいのにとか確かに思うな。
どっちかって言うと、C/C++プログラマ的に真っ先に浮かぶのは普通 typedef だと思うが
どういう処理をしてるか全く分からないけどとりあえず構造体にtypedef使ってるわ
なぁにこれ
>>224 お前が挙げた他のライブラリにも多くて、DXライブラリが特にって要素もそれほどないな……
バグだって他のライブラリもかなり多いし、DXライブラリは休みなく更新し続けてることでカバーしてる
最新版に差し替えるだけで常に開発に影響せずに保守できるのがライブラリの強みだし
メッセージループだって、seleneとかメッセージループなんてもんじゃない規模で縛ってるし、
これによる弊害はネイティブなWinAPIとの併用が出来なくなることくらいだけど、
じゃあ、他のライブラリはWinAPIをそのまま組み合わせて使用するようなことができるのか?
でも一番の突っ込みどころは、「型システムの恩恵をわざわざ捨ててる。」の一行だなw
型システムってなんやねんw 恩恵を受けるように書いたらどうなるんだろうなw
DXLibに用意されてるメッセージループを使わないで、
その他の機能だけ、出来合いのサブルーチンとして利用してもいいんじゃね
>>229 えらく初歩的な話だけど、変数名に当たる部分を新たな型として明示する指定
別の構造体とかでラッピングしてしまえ、ってのは、JavaやC#だとそうするけど、
C/C++だとそうでなく、コンパイラ指示でおkが普通って話。その用途の場合は。
>>229 C言語なら構造体にtypedefはデフォだな
>>224 >リソースのハンドルがint型。型システムの恩恵をわざわざ捨ててる。
ポインタと構造体を極力使わないのが当初のポリシーだったんだと思うが
最近の追加API見る限り崩れているな。
あとハンドルがint型なのはリソース解放の管理を
初心者が学ばない悪い習慣の温床になっているはず。
ライブラリ終了時に確実に全てのリソースを解放してくれるのは良いと思うが。
ハンドルがintなのとリソースの開放をしないのは全く関係ないだろ?
こういうおかしいことばかり言う奴が偉そうにしてるのがなぁ
なぜDxLibは生のintをハンドルに使用しているのは
覚えなきゃならないものを極力少なくしてるんじゃないかね。
初心者には、一度に新しい単語を複数見せるとパニックになるかもわからんし(偏見です
別にintで困ってないしどうでもいい
つまりintで良い(いい)んと
>>235 君は無知なんだからもう黙ってたほうがいいよ。
恥の上塗りにしかなっていない。
初心者向けライブラリでも、君の人格障害までサポートできないんだ。
>>239 そういう意味じゃないんだよ
>>240 人格障害はお前のことだろw
DXライブラリ使うわけじゃないのになんでここに居るんだ?
DXライブラリは初心者向け、ってことでな。
2chにスレが立ってから、君みたいなスレ住人相手に自己満足に耽る輩が何回も来ている。
大体1スレに1回は来てると思う。
相手してくれてるだけでも幸せだと思っておいた方がいいよ?
むしろスレを加速してくれるのでありがたい
そういや前は2Dアクション斜面くんが居たっけ
共通してるのは、未熟で、どこかおかしい考えしてるのに、妙に自分の正しさを主張するあたりか
>>236 完全にポインタ(メモリの動的確保)なし、プリミティブ型(int char double)と配列、
関数だけでミニゲーム作らせる意図があるならそれはそれでいいかもしれないが、
一部構造体使ってたり関数ポインタの解説があったりすると
当初のポリシーがぶれているように見える。
NGID登録した
>>245 構造体はネットワーク通信とか3Dグラフィックとか
それなりに複雑で応用的な部分にしか使われていないという認識だったが。
関数ポインタは、サンプルプログラムとして軽く触れているだけだな。
むしろ構造体とかにまったく触れないのもどうかと思うけどな。
初心者がステップアップしていけるってのも割りと重要でしょ。
何でこのスレはこんなに煽り耐性が低いと思う?
みんなステップアップしてよそに行くから、住人の入れ替わりが早いんだよ。
たぶん。
意味不明なことを喚いて相手にされないと
低レベルのレッテルを貼るのはキチガイのテンプレ行動だな
構造体とか基礎の範疇だけど
>>247 >初心者がステップアップしていけるってのも割りと重要でしょ。
例えば、 LoadGraphScreen と DrawGraph を順に覚えて
混乱しながら違いを理解するより、DrawGraphしかない方が
初心者は手っ取り早く基本を抑えることができる。
同様に初心者も構造体とポインタの単純な使い方を後まで
避け続けるわけがないんだから、それなら遠慮なく使われていたほうが、
C入門書にはない実用的な使い方の例を示すことにもなって理解を助ける。
初心者なんて誰でも最初はそうで、
でも長い開発の経験の中では、全体の何割もない期間の話で、
そもそも向かない人はやめてくだけだから、
そんな丁重に扱わなくてもいいと思うが。好きな人は自分で勝手に歩くし
見え見えの自演だな
正直DXライブラリ使ってるならポインタなんてセーブデータくらいしか…
>>247 >何でこのスレはこんなに煽り耐性が低いと思う?
負け犬の馴れ合いを求めてるんだろう。
「自分馬鹿だから全然わかんねーしw」
「俺も馬鹿で初心者だから気にすんなw ずっと馬鹿でいようぜwww」
……みたいな空気で、嫉妬深く程度の低さを共有したがる
永遠の初心者はどこにでもいる。
で、嫉妬心で攻撃してみたものの、軽く返り討ちにあってしまった結果、
恨み亡霊となってねちねちと一行悪口を言ってるのが連中の才能の限界。
>>244 あれはDXライブラリスレとしてはスレ違いだったかもしれないが、それなりに有意義な部分もあった
ところで、ここは ゲーム製作技術板の DXLib スレだと聞いて
来てみた俺がいます
ワナビか
つーかDXライブラリっての使えばtypedef知らなくてもゲーム作れるってマジかよ??
そもそもC++だとtypedefを使う機会があんまり…
ああ、これが自己投影というものか。
むしろ C++ だと typedef なんてめちゃめちゃ有りがたいが。
boost::shared_ptr<HogeClass> hoge; だとか、
std::vector<boost::shared_ptr<HogeClass>> vecHoge だとか、まして
for(std::vector<boost::shared_ptr<HogeClass>>::iterator it = vecHoge.begin(); it != vecHoge.end(); ++it)
{ /* 略 */ }
なんて、毎度毎度書いたりしないでしょ。 他細かい部分で、unsigned char を byte にしたいだとか、
他自前のテンプレートクラスについて、バリエーション予め用意しておくだとか。
使う機会めちゃめちゃあるじゃないって思ったが、もしかして Better C な内容しか書かないといらないのか
11だとautoが入ったな
>>262 C++11はちゃんと調べて無いんだが、あれって型推論的なものと聞いたが
C++でダックタイプってのもどうなのよってのはあるが
std::vactor<T>とかテンプレートクラスに
typedef使うのは常套テクニックだな。
代わりに継承を使う場合もあるかもしれんが。
俺も詳しく見てないけど
使う感覚にしちゃテンプレートとかポインタと指して変わらんと思う
便利なら使うってのでいいんじゃね
さっきの例で使うならiteratoのところ宣言する面倒無くなるし
>>265 あぁそうか… コンパイラがポインタの先のテーブル見に行って推論みたいな、そんな感じなのかな
その意味で言うと、イテレータに限らないが、なんでも省略可能になっちゃったりするんだろうか
Perlみたいな… って想像したくないんだが。
>>264 テクニックって言うか、単純に見づらくなるからってのと、
あとコンパイル時解決と実行時解決の使い分け次第じゃね
他だと、関数ポインタを引数に取るコールバックだとか、それに類する所で boost::function とか
まして boost::function なんて、マルチスレッドコード書くときお世話になりまくる。
関数のシグネチャを毎回書くのは保守性の観点からもアレだから、やっぱりこの辺も typedefするのが普通。
無かったら C++ 辛いになってしまう。
あとあれだ、DirectX絡みでいうと、DXLibの範疇だと用がないかもしれないが、
頂点バッファにカスタムFVFで頂点定義する時、定数渡して定義固定化したバッファのクラスや構造体作るときに、
テンプレート化してさらにtypedefして使ったりする。俺の場合だけど
>>224 >リソースのハンドルがint型。型システムの恩恵をわざわざ捨ててる。
ハンドルより、定数が全部int型で定義されてる方が気になるなあ。
例えば、SetDrawBlendMode() の第一引数とか列挙型で定義しといて欲しい。
ハンドルとか別にintでもなんでもいいんだけどさぁ、
せめてモードとかタイプとかの指定にはenumを使って欲しい
非公開の関数だとヘッダ見ても何を指定すればいいのかわからない時があるんだよなぁ…
ハンドルがtypedefだと間違った変数渡しても勝手に変換されるから意味ないでしょ
structにしとくとコンパイル時にエラー出るから便利だよ
関数に変数を指定してPlaySoundMemで使いたいんですが、これをどうすればいいでしょうか?
具体的には、se_play関数の引数に変数名を入れて他から指定番号のSEを呼び出せるようにしたいのです
void se_play(char se_number){
PlaySoundMem(se_number,DX_PLAYTYPE_BACK);
}
vc++2008でDXライブラリ使ってたらインターネットブラウザがすごく重くなったんですが
これがメモリリークというやつですか?
LoadGraph関数のリファレンス読んだんですがサンプルではfree()関数で開放はしていません。
自動的に開放されるというわけではないんですか?
自動的に開放はされない
DxLib_End呼んで終了するかDeleteGraph使わないと開放されない
まだやってたのか
自分を客観的に見れない馬鹿はどうしようもないな
DrawGraphとかPlaySoundMemってポインタ使えないの?
どういうことだろう
ポインタから実体の値を呼び出すには*hogeとすればいいけど
使えるのかありがと
ハンドルのポインタだな。
int sound1, sound2;
int *pHandle = &sound1;
se_play(*pHandle);
でも
>>272 の引数はcharなんだよね。
たぶんツリーでハンドルのこといいたいんだろう。
std::map< std::string , int > tree;
void se_play(char* name){
std::string key = name;
int handle = tree[key];
}
280 :
272:2012/06/22(金) 15:09:59.09 ID:l51oT9C4
>>279 そんなやり方があるんですか、どうも!
DXライブラリを更に省略したくて作ってたんです
初めてip被った…
DxLibModelViewerでメタセコのモデル読み込んだらテクスチャが真っ白になっちゃうんだけど解決法ない?
前に一回だけちゃんと表示されたけど条件が分からん…これじゃMV1が使えない
一応ファイルの場所はあってるんだけど
>>282 パスに空白や日本語とか
よくあるそれ系の話とか
日本語はいけるはず
絶対パスになってるんじゃないかな
ありがとう真っ白直ったよ
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
の関数で、何も押してないという判定は出来ないんでしょうか?
サンプルには無かったんですが…
>>286 結論から言うと、if(key==0) で行けると思う。
GetJoypadInputState() のサンプルが何やってるか理解すれば、おそらくその疑問が出てくることはない。
余裕があれば、「二進数」「ビット演算」「AND演算」といった単語を調べてみてくれ。
>>286 ただそれだけの事ならサンプルなんていらないでしょうに。リファレンス読んだ?
あるいは、想定した値にならない=不具合の可能性があるって事?
初心者にゃビットはちょっとわかりにくいだろうな
ボタンやプルダウンリストやドラッグバーとかのdxlibのdll何処かにおいてませんかね
HSPみたいにボタンイベントもあるけどDirectXでメッセージループで描画もするってこと?
お前ら今なに作ってる?
フレームワークをシンプルにしようとwizardryを作りながらテストしてる
もともと3DRPG作ろうとしてたけど、もうwizで良いんじゃないかと思えてきた
>ボタンやプルダウンリストやドラッグバ-
Win32 APIのGUIとDirectXやOpenGLは相性悪いから
DirectXで描画するGUI作るしかないんだよね。
マップデータ作成ツールとか、ツール作成用に使うような
デザインがしょぼくてもいいやつならライブラリ化できるが、
そうでもなきゃ自分で画像用意して作るしかない。
2DSTG作ってる
色々参考にしてスティックでカメラの方向に移動するのとカメラの回転は上手くいったけど
モデルを入力した方向に向かせるのが上手くいかない…これだとモデルが真逆向いてしまう、どうすればいいだろう
int i,j,k;
GetJoypadAnalogInput(&i,&j,DX_INPUT_PAD1);
i = i * -1;
k = (i * i) + (j * j);
if(k > 200 * 200){ //しきい値
p1.dir = cam.dir + atan2f(i,j);
if(p1.dir < -PI)
p1.dir += 2 * PI;
else if(p1.dir > PI)
p1.dir -= 2 * PI; p1.dirtmp=p1.dir;
}
//描画---------------------------------------------
MV1SetRotationXYZ(p1.model,VGet(0.0f,p1.dirtmp,0.0f));
>>296 1.カメラの初期回転角と、モデルの初期回転角を揃える = カメラから見て、モデルが向こうを向いているようにする
※もしも初期状態が、「モデルがカメラを向いている」 のなら、
向きのベクトルは 180度逆なのだから、反転させる
※あるいはカメラの向きに対して、常にモデルは向こうを向きたい、のならば
単純にカメラの回転角をそのままモデルの回転角に適用する
2.移動に関しても、単純に正規化した回転後のベクトルに移動速度を掛けた物を、加えていくだけ
じゃないの?ただこれだとなんていうか、面白みはあんまりないけど
てか、ベクトルとか行列で情報持っておくと楽よ
クラス10個ぐらい作る過程で単体テスト全くしてない
怖い
怖いと書きこむ暇あるならテストする暇もあるんじゃないのか
GetJoypadAnalogInput(&x,&y,DX_INPUT_PAD1);
この&xと&yから数値をfloatに移したいんだけどアドレスだからどうすればいいかな?
ポインタの事勘違いしてるよ多分・・
float a;
a = (float)x;
これでおk
>>302 エラーは起こらないけど値が入ってないね
atan2でfloat使いたいから試してるけど詰んだ…
atan2に渡すときにfloatにキャストすりゃいいじゃん
なにを悩んでるの?
int x,y;float a,b;
GetJoypadAnalogInput(&x,&y,DX_INPUT_PAD1);
a=(float)x,b=(float)y;
DrawFormatString (320,320,GetColor(255,255,255),"aは%d",a);
DrawFormatString (320,340,GetColor(255,255,255),"bは%d",b);
b = b * (-1);
p1.dir = atan2(b,a)*180/PI;
これで確認してるんだけどaもbもずっと0なんだ
なんとなくアドレスが原因ってのは分かるけど解決法が分からない
>>306 とりあえす、b=b*ー1.0f; とか
あとアドレスは関係無いと思う
ちなみに指してるアドレスがおかしい、みたいに疑うときって、普通は
例えばポインタにあらぬアドレス値0xccccccccが入ってる、だとか
配列やmallocで確保した領域の、想定外の場所指しちゃってて、間接参照で引っ張ってきたらでたらめな値帰ってた、だとかの時
ほんとだよくみたらフォーマットがデシマルwww
あと
b = b * (-1.0f);
p1.dir = atan2(b,a)*180.0f/PI;
って明示しておくと警告もきえるはず
みんなありがとう
少し改善したので後は自分でなんとかします
メインループをツクールのRGSSみたいな書き方で処理することは可能ですか?
とりあえずRGSSは
nless Font.exist?("UmePlus Gothic")
print "UmePlus Gothic フォントが見つかりません。"
exit
end
begin
Graphics.freeze
$scene = Scene_Title.new
$scene.main while $scene != nil
Graphics.transition(30)
rescue Errno::ENOENT
filename = $!.message.sub("No such file or directory - ", "")
print("ファイル #{filename} が見つかりません。")
end
グローバル変数$sceneにクラスを格納してクラス内部でループを回しています
格納しているクラスがnilになるとbreakしてゲームが終了します
DXライブラリだと型の宣言でグローバル変数の型のクラス入れないといけないからどうなんでしょうか
DXライブラリ全く関係ないね・・
>>313 C++の基礎(入門書程度)が分かればできます。
しっかしRubyって最低の糞言語だな。
1文字短くするために可読性落としまくりじゃん。
C++, Java, C# やっとけ。
C++ でオブジェクト指向プログラミグができます
オブジェクト指向はわからないけどゲームは作れた
「対象物が視界に映っているかどうか」を判定する簡単な方法はないものか
単純にカメラの視野に入ってるだけじゃなく、対象物とカメラの間に別の物体があって遮蔽されてる場合も考慮したい
カメラ座標から対象物の座標までの線分と、全オブジェクトの当たり判定を
MV1CollCheck_Lineで計算するのは処理コストがきつそうで…
そんなこと言われても半分ハミィしてるオブジェクトとかどうすればええねん
rand()
分離軸とか使えそうよね
最近知った言葉で詳しくは知らないけど
>>313 Rubyは分からんけど、Stateパターン(もしくはStrategyパターン)のように見える。
もしそうなら、自分がそんな感じでやってるなあ。
実際のやり方がどうなのか、グローバル云々に関しては
他の人も言ってるとおりC++を勉強しようぜ、ってとこかしら?
>>319 鎌田さんの本によるとオクルージョンクエリを使うと画面上の特定モデルのピクセル数がわかるとか
DXライブラリの機能に無いけどな
それはDxLibの機能とか言うより、誰かや自分がそう実装する話だな
普通に考えて
ぐぬぬ…
やっぱカメラ座標と対象物のセンターボーン座標との線分でチェックするのが一番軽いんかな
遮蔽物をポリゴン単位でチェックすると重いから、Position基準の円柱ってことにして…
もっと単純で正確で軽い方法がありそうなのに閃かない このもやもや感('A`)
レスくれた人ありがとう
>>326の関数も試してみる
目標に向かって透明な弾を撃って
当たったかどうかで判断すればいいんじゃないの?
329 :
313:2012/06/29(金) 21:59:02.60 ID:ht0TuKRy
基礎を固めることにします
ありがとうございました
330 :
名前は開発中のものです。:2012/06/30(土) 00:50:09.80 ID:MdoK1Jjw
>>328 それで良いなら、むしろシェーダで色情報じゃなくて、任意のオブジェクトIDをバッファに書き出すようにして、
そこから任意ピクセルにあたる部分の値拾えば簡単
じゃなくて、「全体として、画面に見えている物のリスト」 が欲しいなら、その方法及びこの方法は使えない
マイクロソフトのVS2010 Express Edition のページ落ちてる?
これないとDxLibも面倒くさい事になるんだけど
まだ2008で使ってるわ
>>332 2008のほうが軽くて使いやすいからそれでok
>>334 VC2010は、2008から
特にIntellisenceの部分で大きく改良されていたと記憶する
boost級のtemplateの山でも、かなり良い仕事してくれたはず
まぁ環境によっては激重らしいし、そこは個々人で選択するころだろうな
DxLib的には、2010の方はプロジェクト毎にライブラリの
参照ディレクトリを設定する必要があるので
手間といえば手間だな
VS2008とVS2010のインテリセンスの話なら
c++/cli でVS2010で使えなくなったので
かなり不評で超絶劣化といわれとるじゃないかw
あ、あとロジェクト毎にライブラリの参照ディレクトリを設定する必要はないぞ
3Dモデルの攻撃当たり判定ってコリジョンの関数でやるのかな?
>>335-336 え、C++/CLIの話も含めるの?
だとしたら確かに劣化だけどさwww
以前、C++/CLIでDxLib.DLLの.NET向けバイナリ作れないかなと試したことがあったけど
ライブラリの競合だかなんだかで結局実現できなかったことを思い出した。
今でもやっぱり無理なのかね。
あんかみす
>>339は
>>337-338宛て
ついでに追記。
> あ、あとロジェクト毎にライブラリの参照ディレクトリを設定する必要はないぞ
オプションの「プロジェクトおよびソリューション」にある「VC++ ディレクトリ」が
完全に使えなくなってたから、できないものかと思ってた。
VC2008はここで設定できてたんだが。
俺が使ってるのがExpress Editionだからかな?
ふて寝する。
もう訂正しない。
スレ汚しごめん。
別のソフト(ブラウザとか)を選択してるときも、ソフトを動かし続ける設定って出来るんでしたっけ?
関数リファレンス見ましたがよくわかりません。
SetAlwaysRunFlagでした、自己解決です
スレ汚しすみませんでした
ジョイパッド振動の関数でオナニー
EclipseとかVC++以外にDxLib突っ込んでる人はいないのか・・・
ぐぐると、いるみたいだね
俺もEclipseのオートフォーマットやリファクタリングで楽できるといいなと思うんだけど、
でもぐぐった感じだと、CDTはまだJDTの便利さには達してないようなんだよな
>>346 だってC++の言語仕様考えてみても
それは無理っぽいか、またはかなり厳しい事気づくでしょ
自分だったらどう処理するかって考えてみ
CDTの機能がJDTほど充実してないのは言語仕様も原因の一つってことか
正直エンドユーザで勝手なこと言う、って立場から発言してるんで、
自分でどう処理するかは棚に上げてるわ
自分が作るツールについて同じこと言われたら、
>>347みたいなこと言いたくなるけどね
>>348 ゴメン悪意は無いんだ
機能として入れにくい理由を考えちゃうのも
プラグラマの性っていうか
いやまぁこっちも突っ込まれるようなこと言ってるわけだし気にしないで
俺も
>>345と同じで、VC++以外のを使ってる人の体験談がききたいだけなんだ
ある角度aラジアンから、
プラスマイナスbラジアンの範囲の中でランダムに角度を取得したいんだけど
小数点以下の乱数関数が無いのでどれくらいの制度が必要だとかがわかりません。
どうしたらいいですか?
また、処理内容は
a-b+GetRand(b*2);
のような感じでいいでしょうか?
それ、DxLibの話じゃないような
じゃないね
354 :
名前は開発中のものです。:2012/07/02(月) 08:32:21.39 ID:dlpj0XSP
a-b+GetRand(b*2*100)/100
今まで使ってなかったから気付かなかったんだけど、
GetRandって「引数の値+1」パターンが出る関数なのね。
DXライブラリでリアルタイムのSLG作ってるんですが、刻一刻と変化する状況
に応じて画面に多数の文字列を描画するので、現状はDrawFormatStringと
DrawStringを使ってるのですがかなり重くなります。
何か改善策はありますか?
>>356 適当な32bitRGBAのDIB生成してTextOutしてから、合成とか表示
現時点ではよくわからないですが、調べてなんとかしてみます。
超速レスありがとうございました。
>>356 DrawFormatStringToHandleみたいなやつ使え
DxLibって文字テクスチャをバッファリングしてたはずだから
そんなに重くなるとは考えづらいんだけど
文字列描画をオフにしたら軽くなるってこと?
CPUの使用率が跳ね上がる現象なら、うちでも起きてる。
いろいろ試した感じだと、エッジをつける処理が重いらしい。エッジ外すと、とたんに使用率が落ち着く。
エイリアスは?
>文字テクスチャをバッファリングしてたはずだから
ハンドルを使うほうのAPIだけな。
あとフォントの大きさや種類を毎フレーム設定してる可能性もあるな
大きさや種類を変更するときにキャッシュを全部破壊して再設定している。
マルペケつくろーのDirect3D文字列ビルボードを参考にするといい。
エイリアスはそうでもなかった。
CPU使用率的には、2,3上がったかなというくらい。
>>363 なるほど、そうだったのか
だから
>>359はToHandleを奨めてるのね
これは良いこと聞いた
枠と中身の、二枚の画像で表示するHPゲージってDrawRectGraphでいける?
HPに合わせてずらして表示するからそのままじゃはみ出るんだ
よく知らないけどマスクとか使った方がいいのかな
むしろそういう目的に使うもんなんだと思うが、
ハミ出ると言ってることから、自分の想像している物とは全く別のものなんだろう。
マスクはいらない複雑なことしなければDrawRectGraphだけでいける
使い方が悪いんじゃないかな
SrcX,SrcYかWidth,Heightをずれに合わせて
調整しないとそりゃあはみ出るのだわ
DrawBoxで余裕
画面外のキャラクタやマップチップはなるべくDrawGraphしないほうが
処理やメモリに負担がかからないですか?
できるだけキャラやマップチップが画面内か画面外か判別してやったほうが
いいのかどうか、結構大き目のマップなので悩んでいます
判別しないと重くなるよ
自分はそうだった
やっぱ画面外でも描画処理すると重いよな
他スレで大丈夫って言ってるアホがいたよw
関数によるけどな
ある程度の簡単な描画までなら大丈夫
マップチップみたいなのは多分画面外も命令出されそう
DxLibの範疇外の基礎の話だけど、
普通に考えると、描画そのものはクリップ外にBitbltしてもビデオメモリへの転送はされないから、その分重くなるわけ無いんだが、
ただ実際にはオフスクリーンバッファへの書き込みを、自分等が描画と言っている場合、当然それは処理されるので、
実装内容と条件次第
あと当たり前だけど、マップやなんかの処理するような時、画像イメージ以外にもなんらかするはずなので、
基本的に範囲外はスキップするロジック書くのが普通
みなさんありがとうございます
範囲外は描画しないようにしておこうと思います
背景スクロールで、画面サイズに等しい1枚絵を4枚描画することはあるけど、
それくらいだと殆ど気にならないな
今は9割方3D処理だろうから
転送されるのは頂点情報とテクスチャ情報と
シェーダのパラメータ(行列とかライトとか)ぐらいじゃないの?
(他にもあるかもしれないけど)
間違ってたら教えて
まぁどちらにせよ、描画領域範囲外の要素についても
全部のトランスフォームとラスタライズが行われてしまう訳だし
事前に判断できるなら、省略した方がいいだろうね
>>378 大体合ってる。渡すのはそうだけど、
グラフィクスパイプラインのその先(ピクセルシェーダのステップ)で、
クリップ外のフラグメントは普通転送されないから、その分が、その分だけ
軽いと言えば軽いが、
重さの要因はそこだけじゃないので、って話。むしろ大抵はそこじゃないって事
実際に描画されなくたって、テクスチャが複数に渡る場合にテクスチャの切り替えはされてるから、
非常に重くなる場合もある
>その先(ピクセルシェーダのステップ)で、
グラボに転送した後じゃクリッピングされても十分重いよね。
最近のCPUやOSは賢いから何でも最適化してくれる〜とかデタラメいうやついるけど
基本原理は抑えないとな。
一面芝で覆われたレース場の上に、アスファルトのコースを描画する場合、
レース場全体に芝を一度描画してしまい、少し高さをずらしてコースを上書きする場合と、
コースに合わせてあらかじめ芝ポリゴンをカットして無駄なく描画する場合で、
ポリゴン数と描画面積がそれぞれで違ってくると思うんだけど、どっちが適切?
どんなPCを対象にするのかとしか言えない
画像を描画するのはGPUの負荷、描画範囲を自前で制御するのは基本的にはCPUの負荷
クライアントの環境は当然予測出来ません
レース中にコースが変形とかしないなら
予めポリゴンカットしたものをキャッシュしとくのが一番なんじゃないかな
>>385 変形すると2度手間になるし、テクスチャも動いちゃうね
ご意見ありがとー、変形しないのでカットしておくことにします
俺はこう作ってる、みたいな人いそうだったんだけどなー
アスファルトをコースのあわせて長方形で雑に描画した後芝を雑において
アスファルトと接するとこを頑張って曲線にする
テクスチャの色を変えて描画するのに、フィルタ使わずにできる方法ってある?
頂点色変更して描画ぐらいできそうな気がするんだけど
フィルタってのはよくしらないけど、SetDrawBrightとSetDrawBlendModeは使ってる
そういうのを使わないってこと?
このスレ、シェーダなんか使ったこともないやつが
シェーダシェーダいうよねw
質問厨の要望に応えるHLSLが書かれたことは一度も無いwww
で?
あたまがわるくてシェーダをかけないぼくのかわりにだれかつくってください、って素直に言えよw
最大公約数的な回答をする方もどうかと思うがな
色変えなんてサンプルあるしな
基礎レベルのほんの数行のピクセルシェーダすら
他人に書いてもらってコピーしたいとかどんだけ
>>391 満足に作れない奴が妄想で能書きを垂れるスレだからな
>>391,397
無能な奴の頭の中ってこんななのかw
自分ができないなら周りもできないと思い込めるとかおめでたいなぁ
とはいえ俺本人はまさに>393程度のレベルなんで反論できんw
いや流石に作ってとは言わんけどさ
>>398 そのレスにファビョる時点で無能知的障害者確定だなw
マトモに作ってるなら顔を真っ赤にする必要などこれっぽっちもない
まあ、俺はお前みたいな知的障害者と違って既に4本作ったがw
まあ、過去レスでニワカ知識を垂れ流し捲った本人が指摘されて発狂してるんだろうが、
実際に作ってる人間なら、想像&伝聞丸出しの有象無象の能書き群を見りゃ誰だって同意するだろうに
お前、以前にもスレで何かのたまってた奴だな
考えをまとめずに連レスするからすぐわかったわ
ってか考えてみたら、
>>388の質問に対して
「シェーダでもできるよ」ってのは回答として別に
おかしいところは無かったでござる
>>388の質問の意図が知りたいな
>>402 何言ってんだ?アホさを指摘され、実力を証明する機会を与えて貰ってさえ、
無能ぶりを晒すことしか出来ないことが皆の予想通り全てを物語っているが…
完全に前の荒らしが返ってきちゃったなぁ
作ったモノを出さないのに作ったと豪語するアレさ
自分の意見に周りも賛同してるという勘違い まさに
>作ったモノを出さないのに作ったと豪語するアレさ
自分が指摘されていることだということにさえ気付けない
知的障害者だったのか…
>>406 >まあ、俺はお前みたいな知的障害者と違って既に4本作ったがw
お前が偉そうに言えるのはこれの証拠だしてからだぞw ほら早くw
「4本作った」程度で証拠とか、「豪語」とか言っちゃうような
知的障害者は確実に一つとして作ったことが無いんだろうなあwww
そんな知的障害者の弁
「無能な奴の頭の中ってこんななのかw
自分ができないなら周りもできないと思い込めるとかおめでたいなぁ」
だれだっけ?
すぐ知的障害者っていうの、坂作れない君だっけ?
・知的障害者の哀れな常套手段
「話題を完全に摩り替えることにより、一切反論出来なくなったことを自ら証明する」
>>410 お前が言ってるの、みんな自分のことじゃないかw
コンプレックスの裏返しなのがわかるな 無能君w
まあ、予想通りこの知的障害者には論理は通用しないわな…
チョン・ファビョン氏「無能な奴の頭の中ってこんななのかw
自分ができないなら周りもできないと思い込めるとかおめでたいなぁ」
「そのレスにファビョる時点で無能知的障害者確定だなw
マトモに作ってるなら顔を真っ赤にする必要などこれっぽっちもない 」
チョン・ファビョン氏「作ったモノを出さないのに作ったと豪語するアレさ 」
↑でも本人は出来ない
チョン・ファビョン氏「お前が偉そうに言えるのはこれの証拠だしてからだぞw ほら早くw 」
↑でも言い出しっぺの本人は出せない
チョン・ファビョン氏曰く「お前が言ってるの、みんな自分のことじゃないかw
コンプレックスの裏返しなのがわかるな チョン・ファビョン氏君wwwww 」
君ら、せめて技術の話しろ
誹謗中傷してプライド満足させるような稚拙な会話しかしてないぞ
答えられる質問が来たらまかせろ
俺のログには何もないが
ID:QVl8NSXj
作ったこともない馬鹿は黙ってれば良かったのにね
頭が悪過ぎると一周しちゃうんだろうなあ
頭が弱いなりに上級者を気取りたいんでしょう
「どんなPCを対象にするのかとしか言えない
画像を描画するのはGPUの負荷、描画範囲を自前で制御するのは基本的にはCPUの負荷」
こんなトンチンカンな事を言うくらいなら黙ってればいいのにと思うけど
seyana
通の一言↓
「シェーダで(ドヤっ」
>>418 お前がそれの意図が理解できないくらい馬鹿なのはわかったからID変えて自演するのやめろ
>>421 特定環境下のみで動かしたいような奇特な奴などそもそもいないし、仮にいたら最初から特記するだろう
そんなことさえ考慮できずに、勝手に条件を付加してドヤ顔でニワカ知識を披露するような奴に違和感を覚えない馬鹿はいねーよw
一人の馬鹿が暴れてただけならいいけど某掲示板見ていても結構ヤバイのいるからね〜 QVl8NSXj=S9pVKMjp
423 :
名前は開発中のものです。:2012/07/10(火) 04:47:49.34 ID:cpnOwAOP
>>422 書いた後に大概自分で気付くものだが、
本物のバカは自分では気付けないという事を最近痛感した
ROMっていないで優しく指摘してやればよかった
こいつあ本物でっせ
俺はわざわざ説明してやるより放っておくよw
>>423
全部自演ワロタw
フルボッコに耐え切れず自演認定とかなにそれかっこいい
いや小学生レベルの頭なんだなホントに
バレないとでも思ってるんだろうかこんな時間なのにw
自分を客観的に見れない馬鹿はホント恐ろしいな
ID:wwSLCUas
ID:7bMOFUC6
ID:lTRi+l6H
ID:cpnOwAOP
ID:YDnIaUfq
429 :
名前は開発中のものです。:2012/07/10(火) 05:22:37.53 ID:wHn1f+Uz
ID:6W2P/hkX
こいついてえwwww
日付変わったんだからリセットしろよお前ら・・・
どーでもいい事でリソース無駄遣いすんな
DxLibの話しろ
知ったか雑魚はROMっとけ・・・
3D横アクションの影についてなんだけど、影グラフィックをdrawgraphでキャラの足元にくっつけるだけでいいのかな?
ジャンプした時浮くよねこれだけじゃ
>>433 Y座標を地面に合わせてXだけキャラの座標参照するだけじゃないの
レイ飛ばすとか
またあいつが湧いてたのか
メディアリテラシーって大切だね
とりあえず、スキニングシェーダ書く話とかしようぜ
>>437 もしもそんな真面目に影落としたかったら、
光源からのベクトルを視点として、オフスクリーンバッファに光が当たっているフラグメントの情報書き込んで、
2パス目でカメラの視点からレンダ処理するとき、そのバッファを参照しつつ、
光が当たってない部分を影として描画
とか
あ、ごめん、それだけじゃダメか。
えーと、忘れた。昔書いたコード見ないと忘れた
そこまでできるならこんな質問しないだろ
画像影でいいなら光源位置はあまり気にしなくても、地上から離れるほど薄くするってだけでそれっぽくなるよ
もしかしてビルボードの反転って出来ない?
どうも関数が見当たらない…
extern int DrawBillboard3D(
VECTOR Pos, float cx, float cy, float Size, float Angle, int GrHandle, int TransFlag, int TurnFlag = FALSE ) ;
最後の引数にありますがな。
うおお、隠し引数あったのか…ありがとう
通の一言↓
「シェーダで(ドヤっ」
>>444 DXライブラリの場合は特に、ヘッダファイルこそが真のマニュアル
よっぽどくやしかったようだね
てめえらまとめて消えろ
邪魔
闇の炎に抱かれて
最近あちこちで自演キチガイみるけどまさか同一人物じゃないよな
シンクロニシティか
どっちもキチガイっすなぁ
何が彼をそこまで駆り立てるのか
戦ってる連中はどっちも中・高・大学生だろう
若き掲示板戦士たちを見守るほかない
なにその犯人は10代から30代もしくは40代から50代かそれ以上的な
スルーしないならどいつも同レベル
学生さんはスルー
単純な荒らしなら子供の場合が殆どだろうが
こういうタイプの荒らしは精神年齢が中学生で止まってるおっさんだろう
傍観者気取りの連中も邪魔
まとめて消えろ
もうこのスレ要らなくね
争う事でしか伸びない品
要らないならスレ閉じればいいんじゃ
まあ今から始めるならunityとかの方がいいもんなぁ
ならそっちのスレに行けば良い
それともこのスレを潰してからでないと移動できないの?
ここはDXライブラリを使ってる人のスレですよ
|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
|| ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
|| ○重複スレには誘導リンクを貼って放置。ウザイと思ったらそのまま放置。
|| ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
|| ノセられてレスしたらその時点であなたの負け。
|| ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
|| 与えないで下さい。 Λ_Λ
|| ○枯死するまで孤独に暴れさせておいて \ (゚ー゚*) キホン。
|| ゴミが溜まったら削除が一番です。 ⊂⊂ |
||___ ∧ ∧__∧ ∧__ ∧ ∧_ | ̄ ̄ ̄ ̄|
( ∧ ∧__ ( ∧ ∧__( ∧ ∧  ̄ ̄ ̄
〜(_( ∧ ∧_ ( ∧ ∧_ ( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
あらら、アンチ認定されてもうた…
俺もdxlibにはお世話になってるしアンチでは無いのだが
ただ今から始める人はそっち行くだろーなーって思っただけやで…
過去のパターンからして他のライブラリを持ち上げにくるアホは多いから仕方ない
unityでスマフォゲーム作る会社も増えたな
DXライブラリ以外の環境に手を出してみるのも悪くないさ。
そして戻ってきたときに、そちらで得たノウハウを活かすことだって出来るんだから。
DXライブラリの一番の欠点って
ループじゃないかなって思うんだけどどうかな。
描画ライブラリの癖にループまでやんなよ、みたいな。
そんなに自分でループ書きたいの?
ProcessMessage使わなけりゃいいんじゃないのか?
必須だったっけコレ?
試してみたら必須じゃないな
ちゃんと自前でメッセージ処理すれば何も問題ないと思うので、自分でできるならやるがよろし
試したみたってどんなコード書いてみたの?
ProcessMessage()はWin32のPeekMessage()そのまま呼んでるだけでしょ。
メッセージループ自分で書きたいとしたらGUI関連だと思うが、
GUIツールならJavaかC#で作るしかない。
ProcessMessageは中でもっといろいろしてると思うけど
>>478 なんでそこで、JavaかC#しかない、なの
きょとんとするわ
してるね
他になんかしてんの?
きょとんとしていいのは可愛い女の子だけだ
男のキョトンとか誰得だよ
ProcessMessageは画像読み込み関連とかの処理もやってるから、自前でやろうとしても実装見ないと無理だぞ
それって別スレッド読み込みだけじゃなくて?
音声バッファの送信とか、定期的にやらなきゃならないことは全部詰まってるよ
それくらいならソース改造で分離できそうだな
>画像読み込み関連とか、音声バッファの送信とか
なんか嘘っぽいな
まあたしかに俺は適当に言ったんだけどね
たしか音声関連関数のリファレンスにそんなこと書いてあったような気がしたから
適当かよあぶねーな
いややる気あるならソース見れば?全部一発で分かると思うけど
なんで適当に言った奴が偉そうなんだ
// サウンドの周期的処理を行う
NS_ProcessStreamSoundMemAll() ;
ST_SoftSoundPlayerProcessAll() ;
// メインスレッドが処理する非同期読み込みの処理を行う
ProcessASyncLoadRequestMainThread() ;
// 演奏の周期的処理を行う
NS_ProcessMusicMem() ;
// キーボード入力の更新処理を行う
UpdateKeyboardInputState( FALSE ) ;
// パッドの周期的処理を行う
JoypadEffectProcess() ;
// 通信関係のメッセージ処理を行う
NS_ProcessNetMessage( TRUE ) ;
// キー入力処理を行う
{
// フラグをたてる
EndFlag = TRUE ;
NS_ProcessActKeyInput() ;
// フラグを倒す
EndFlag = FALSE ;
}
これぐらい?
あとこれか
// クライアント領域から出ないようにする設定で、且つクライアント領域内に居たら出れないようにする
if( WinData.NotMoveMousePointerOutClientAreaFlag && WinData.ActiveFlag && WinData.WindowMinSizeFlag == FALSE && WinData.WindowModeFlag && WinData.SetClipCursorFlag == FALSE )
{
POINT MousePos ;
GetCursorPos( &MousePos ) ;
if( WinData.WindowRect.left < MousePos.x && MousePos.x <= WinData.WindowRect.right &&
WinData.WindowRect.top < MousePos.y && MousePos.y <= WinData.WindowRect.bottom )
{
WinData.SetClipCursorFlag = TRUE ;
ClipCursor( &WinData.WindowRect ) ;
}
}
今ひどい誤爆を見た。
GetColor() のコストってどれくらいだと思う?
別にそんなにたいしたことしてないんじゃないかと勝手に想像してたんだけど。
毎回GetColor()するのと、色見本クラスをシングルトンかなんかで用意して、色指定するときにそこからGetするのと、どっちがいいんだろうか。
ループ中にGetColor()しまくるコードでもまったく重さは感じない程度なのは確認済みだけど、やっぱりお行儀悪いかな。
なんか気持ち悪くはあるな
重さを感じないのなら好きにやれよ
シングルトンを使う理由は特にないと思うよ
決まった色を使うのなら、定数にしておくだけで良いかと
実測が最善手だよ
ソース読みきれないけど画面モード次第みたいだね
単純なビットシフトだからさほど影響がないだけで、
256色ならループで近似色探してた
よく使う色は初期化時に変数などに入れておけばいいし
シングルトンもありだと思う
8bppなら近似色をパレットから検索してくるとか内部でやってんのか
結局のところbppを変えない限り同じ値が返ってくるんだろうが
インラインになってなければ少なくとも関数コールのオーバーヘッドはあるから
ループの中で同じ色をGetしてるならループ外でテンポラリに取得しておくくらいはするべきだろうけど
よくある問題遠くで弄った値を使うの気持ちわりーんだよなー
実測結果待ち
と思ったらソース読んだ勇者がいたのか
ところでビルボード関数の画像って3D扱いでいい?
どうやって3Dとの判定しようか迷ったけどコリジョン持たせられるのか?
サンプルを参考にしてDrawFormatStringToHandle使ってるんですけど全角だと文字化けしますね…
半角だと正常表示なんですけどバグでしょうか?
strbuf[0] = word[0];
strbuf[1] = word[1];
strbuf[2] = '\0';
DrawFormatStringToHandle(x,y,GetColor(255,255,255),font,"%s",strbuf);
どんな文字コード使ってるかは知らないが、
エンコードによっては全角が2バイトに収まるとは限らないからな
と思ったけどDxLibってSJIS固定なんだっけ?忘れてください
VC++2008でマルチバイト文字設定にしてあるから文字がどうってことはないと思うんですが…
ちなみにフォントはこれです
font = CreateFontToHandle("MSPゴシック",22,4,DX_FONTTYPE_ANTIALIASING_EDGE);
"MS Pゴシック"にしたら直ったりして・・
自己解決です、物凄い初歩的なミスでした
お騒がせしました
何が原因だったのか書いてくれるともしかしたら他の人の役に立つかもしれないので助かるのだけど
strbufがintで宣言されてました
intでも半角入るの知らなかったので何が原因か悩んだのです
くだらな過ぎて案の定何の役にも立たない件
515 :
名前は開発中のものです。:2012/07/16(月) 19:45:41.28 ID:314s3kX8
一行ずつファイルのデータを読み込もうとしたが読み込めず、
DxLibにバグがあるかのように匂わせつつオチはバイナリファイルだったと
そんなレベルのトピックで埋め尽くされつつある某掲示板を思い出した
安心しろ
ここも腐海に飲み込まれつつある
PGスレは煽りキチガイが多いな
520 :
名前は開発中のものです。:2012/07/17(火) 00:12:12.55 ID:JxnH7ap+
煽られたガチ雑魚が発狂したと聞いてwwwww
実力も無い、実務経験も無い、国家資格さえ取れない、自分で出来る限りの努力さえせずに丸投げ
そんなキチガイなどどこに行ったって爪弾きにされるわ
DXライブラリが優秀過ぎてゲーム制作の敷居が極端に下がったことが
妙な勘違い消防が増えている要因なのだから皮肉なものだ…
インラインアセンブラまで組んで高速化し、仕様追加要求にも随時対応している
あの管理人さんにだけには頭が上がらないわ
dxlibが遅いとか言っている奴に限って
そいつ自身のソースに笑えない次元で問題があるからな
ゲーム関係の功労賞があったらノミネートされててもおかしくないレベルだと思っている
これが無ければ生まれなかったゲームは四桁いってると思う
WindowsのTCHARについて理解するのは基本中の基本
wchar_tに収まる内容とか
基本といいつつサロゲートペアの対応がOSで違うから厄介
CharNextWは処理してくれないし
wchar_tは本格的に対応するにはS-JIS以上に面倒
またライブラリ戦士が戦ってるのか
少しまえはチョンがどうだの政治がどうだの誤爆を装って妄想書き込んでるし
質問厨のほうがマシ
実力を比べてないのに雑魚とか言っちゃうのは小物・雑魚の法則
あるよね
雑魚という言葉に超反応を示し、顔を真っ赤にしてファビョるのが雑魚wwwwwww
>>529
531 :
名前は開発中のものです。:2012/07/18(水) 02:47:14.96 ID:DW66VTUQ
>>529 インラインアセンブラも知らず実務経験もなく国家資格さえ取れない知的障害者
発狂晒し上げ
>>525 雑魚と言われたキチガイ朝鮮人よほど悔しかったのね
まーたすぐ知的障害者とか言っちゃう自演君が帰ってきたのか
いつも自演見破られてフルボッコにされるだけなんだから帰れ精神病患者w
ゆとりネトウヨ青年による政治運動をお楽しみください☆
マップエディタ作ろうと思うんだけど、DXライブラリのグラフィック関数て使えるもん?
使うのそれくらいだったら、DxLib_Initは呼び出さんでよろしかな
グラフィック関数てなんだよw
在日ってネトウヨって文言好きだよね
ツール類はC#でマウスでボタン貼り付けたりボタンが押されたときの処理を書いたりで作った方が早いよ
スクロールバーとか自作したくないだろう
ゆとりはDXライブラリのスレッドで在日を語り、在日と戦うのかw
所構わずナショナリズムを喚き散らすのはゆとりじゃなくおっさんだろう
>>535 なんでそれを呼び出さないという発想が出てくるの?
>>535 マジレスすると、DxLib_InitでDirectXの初期化や
ウィンドウ生成とかやってるから
呼び出しは必須。
みんなレスありがとう。調べてみたら作ったウィンドウのハンドルを非公開関数でDxLib初期化前に渡せば良かったみたいだ
ウヨと言ってもそいつら欧米とかには友好的だから右翼とは言い難い
ネット右翼
主に韓国で最も使われている言葉で
その語感から政治信条が絡むと誤解されているが、まったく関係ない。
用途:気にくわない相手に付けるレッテル
バージョン上がったというのにおまえらときたら
さて差し替えてくるか
いつの間にかCreateVertexBufferなんて関数が出来てたのか
>>548 もしかしてそれ、DirectXそのまま?
普通にやってて使えそうなのはDrawRotaGraph3くらいかなぁ
あとはバグ修正か
縦横別の拡大率で拡大できるのか
それは良さそう
おおやっと来たか!!
自前で実装しようとしてたとこにグッドタイミン!
553 :
名前は開発中のものです。:2012/07/21(土) 20:05:14.15 ID:kU4yXP4f
シングルトンって何ですか?
javaで聞いたことあるんですが。
「インスタンス一つしか作られない」ことを保証するしくみ
DXライブラリ シングルトン でぐぐると、DXライブラリと絡めた解説が見つかるな
DXライブラリまったく関係ないだろ
クラス使わないし
デザパタの話であって、DXLib全く関係ない
シングル豚
ライブラリアンなんちゃらをやたら宣伝してた厨房を思い出すな
>>545みたいに政治宣伝をして赤っ恥をかかないでくれりゃいいけど
荒らしに触るのも荒らし。
というより、560は荒らしてた奴だろ
すみません
VisualC++2010でしばらくやってると、今まで実行できてたプログラムでもビルドエラーが出るんですが
どういうことなんでしょうか
kwsk
565 :
名前は開発中のものです。:2012/07/22(日) 22:40:23.40 ID:PLX96IZ8
ドンキーコングでさタルに入って追っかけてくるクリムゾンいるじゃん?
あれってプログラム的にはどういうアルゴリズムなんだろう。
ポニーテールジャンプでゆったり飛んでいるときも方向にあわせて
追いかけてくる。
DXライブラリに関係あんの?
しかもそれすら理解できないようならやめとけ
多分ビルド設定あたりのミスだろう
>>565 単純にキャラのx軸に向かって走るようにしてあるだけだろ。慣性があるから方向転換に時間がかかるし。反応速度早ければ10フレームに1回方向を判断するとか
2Dアクションで着地処理作ってる人って、着地した時のずれってどう直してる?
12ドットみたいに早いスピードで落下した時とかだとおおまかな位置は出せても数ドット着地点が上下にずれるよね?
夏本番の予感
緊張の夏…
なんちって
>>569 ズレたあと何かの処理をする前に位置を補正すればいいだけだろ
kwsk
てか何で地面との衝突判定無いのそれ
地面超えてたら地面の位置に置きなおせばええんちゃうのん?
MMFでも使っとけ
確かその辺の2Dアクション関係の機能が
最初から入ってたはずだから
でもまあ、ブロックとの当たり判定って詰まるところだよな。
自分でも未だに正解は見えない。
初代FCスーパーマリオみたいなことをやりたいのか、
そうでないのか
参考にするシステム次第で変わったりするかも
こういう堂々と悪びれもなくスレ違いな質問する奴が
どういう思考回路してるのか少し調べてみたいんだけど
>>576 矩形の交差判定計算して終わりとか、そういう事でなく?
跳ね返りも意識するなら、進行方向のベクトルに対して、触れた線分との角求めて、符号反転するだけとか
>>578 わかんないから代わりに処理書いて、って言いたい所を、みんなならどう書く?って、
子供だましな言い方で誤魔化そうとしてるだけだと思う。
2Dマップチップ型の昔ながらのアクションの場合、めり込んだぶん戻すんだよ
めり込み状態のときのマップチップ内での座標を調べるんだ
めり込み時の座標の比較は、物体衝突時の反射力とかにも応用できるぞ
>>580 つまりどのスレに書いてるかまったく意識してないわけか
Twitterか知恵袋にでも行ってろよ
>>569の意味は理解出来るが説明不足感はある
交差部分の座標が出せないからDXライブラリがどうこうって話だろ
585 :
名前は開発中のものです。:2012/07/24(火) 15:12:17.37 ID:fGHBqiZy
2dアクションって誰が作ってもプログラム同じなのかな?
頑張っても人と同じものしかできないと思うと何か欝になってきた。
同じプログラムになるってことは100%ないと思うよ
コピペしたコードを繋ぎあわせてるだけじゃないなら
コードの中身は大した問題じゃないだろ
588 :
名前は開発中のものです。:2012/07/24(火) 16:26:51.58 ID:fGHBqiZy
>>586 まじで?
これ他人は思いつかないだろうなって思う
ソースコードとか自分で作っててある?
サンプルで基礎を学んで、後は応用を利かす感じかな
590 :
名前は開発中のものです。:2012/07/24(火) 16:48:41.79 ID:fGHBqiZy
>>589 やっぱり応用ね。
でもさプログラム組んでいる途中じゃないと応用的な事思いつかなくない?
俺は寝てる間に夢でアイデアを見ることが多いな
よほどおかしな書き方しなけりゃ誰が書いても同じようなものになる、
というかそうであるべき。
つまりDXライブラリみたいなライブラリは誰が書いても同じ物になるわけだ
目指す方針が同じなら、似たような感じにはなるだろうな
目指すものが綺麗なコードを書くことなのか、ゲームを作ることなのか切り分けることが大事だと思うよ
Hello,World!を出力するプログラムですら幾通りかの方法があるんだから
それより規模の大きなゲームプログラムで同じソースになる方がおかしい、って感じかね
おかしいわけないだろ!!いい加減にしろ!!
最適を求めるならコードは限られてくるね
でもセオリー知らないはじめのうちは、気にせず好き勝手書くのが一番いいよ
さすがにゴリ推しすぎるところがあったらスマートなやり方調べたほうがいいけど
お前らは先にもっと最適なスレを探すべきじゃないのか
C/C++以外の言語からその辺の判断に対するヒントを得たら?
JavaとかPythonポリシーに従うアプローチをとるならば
誰が書いても同じようになる単調な設計を心がけるべきだし、
PerlとかRuby好きな人ならコードの短さに重点置くでしょ。
プログラマに任せるってのがCのいいところなんだよ
MMEでHLSLかじってからDXlibで作り始めてようやくそろそろエフェクトにも手を出そうかなってところの初心者で
http://www.dotup.org/uploda/www.dotup.org3234839.png こういう元画像のテクスチャをビルボードの形で
http://www.dotup.org/uploda/www.dotup.org3234845.jpg こんな風に違和感なく3D空間に表示したいんだけど何か方法あるかな(画像は試験的に立方体にテクスチャ張ったときのだけど)
一応色々考えたんだが合成でも出来そうになくて方向性が思いつかない
HLSLのときは
Color = tex2D( ObjTexSampler, Tex );
Color *= float4(1,1,1,1);
Color.rgb = float3(1,1,1) - Color.rgb; //色の反転
float Gray = (Color.r + Color.g + Color.b ) / 3;
Color.a = 1 - Gray;
clip( Color.a - (0.01) );
Color.rgb = float3(1,1,1) - Color.rgb; //色の反転
Color *= float4(0.3,0.8,0.5,1);
みたいなことを拙いながらやってごまかしてたんだが
これさえ出来ればDXlibは個人的な経験がそのまま流用できるから文句の付け所がないんだ
人任せで申し訳ないけど教えて欲しい
何が言いたいのかいまいちよくわからん
板ポリ一枚のモデルを作るんじゃいかんのか
SetDrawBlendModeの予感
>>605 SetDrawBlendModeは真っ先に一通り試しましたがうまくいかなかったつもり
これでいけんじゃねーの?ってブレンド方法あったら教えて欲しい
まず画像では元画像は白っぽいけど、動的に緑色以外の色にも変化させたいのか?
そうじゃないなら問題を簡単にするために元画像から緑にしとこう
>>604の二枚目を見た感じだとただのアルファブレンド(画像側にそういうアルファチャンネルをつけて)でいけると思うよ
>>607 今は単色でもエフェクトごとに変えればあんまり問題ないけど
最終的には展開時間を設定してそれに沿ってRGBAを変化させたいから
動的に変化させたいということになるかな
以前にアルファチャンネルつけたpngでやってたと思うけど
一応別のソフトを二つほど落としてやってみたが
案の定四角い黒ベースの画像が描画されるだけだった
何か見落としてる部分があるんだろうか
元画像が0,0,0じゃなかったのか他のでなら角は取れて以前のように丸くはなった
けどやっぱりフチは黒っぽいのが入る
白一色しか残ってない画像なのに
ビルボードで3D表示って無理でしょ
必ずこっち向くよ
>>609 荒業:そのシェーダ内で、テクスチャサンプリングする時、UとVの下限上限決めて、フチを捨てる
加算合成か、透過度付きPNGで解決
どう考えてもアルファブレンドが正しくできてない
これもしかして背景より先にエフェクト描画してるから、半透明部分がかぶさってる背景部分が描画されてないだけじゃ……?
あああああ出来たよ描画順だったほんとにありがとう
MMEのときも同じ間違いを犯してたのに全く
でも今回は一応意味があって、ここ水辺のマップなんだけど描画順をエフェクト→マップにしないと
カメラ→水面→エフェクトの並びになったときにZバッファ使ってる以上描画されなくなるから
意図的に描画順を変えてたんだ
半透明問題ってやつだね
今度はこれが出てきたんだけどなんかいい方法あるかな
それはかなり難しいなぁ……
自分にゃ対策思いつかないや
Zソートとか?
>>620 それも奥の画像から描画するようにしないといけない
>>619 Zソートってのが言葉ぐらいしか調べても出てこなくて
どういうものかちょっと把握してない
解決の糸口になりそうでマークしてはいるんだけど……
>>621 一応それは疑ったけど
これってZバッファ使えばちゃんと奥から描画されるようになってる訳じゃないの?
勉強不足で申し訳ない
>>623 根本的に勘違いしてる
Zバッファは描画した画像の深度を記憶しておくだけだから、ソートは自分でやらなくちゃいけない
>>620 アルファチャンネルのほうは、α値が0だとZバッファへの書き込みも全部スキップされるので、その部分が削れて丸く見える
Zバッファは「書き込みをするか、しないか」の判断材料になっているだけで、合成には無力だよ
解決法は
>>621
>>624-625 ありがとう勉強になります
方向性が見えたのでもう少し調べながら時間をかけて解決していくよ
もう一つ疑問があるんだけど
>>608で述べたみたいにエフェクトの色って変える方法あるかな
それを見越して素材は白黒のを作ったんだけど
描画輝度の変更とかいろいろ
あるぞ
よく探すんだ
>>629 まじっすか
サーセン色々探したり試行錯誤もやってみます
今日はほんとにありがとう
ずっと立ちはだかってた壁が無くなったよ
当面は心配事もなく開発できそうだ
なんか連投規制くらった
この板って毎時5回が限度?
なんにしても連投スマンかった
631 :
名前は開発中のものです。:2012/07/26(木) 22:48:14.28 ID:KSmi4eDd
つか、もうさ、DirectXは終わりだから辞めた方がいいよ
Directx10とか11ってもうホビーユース完全にあきらめたでしょ
Directxは9まで。よって、消えゆく技術
DirectXのスレで言ってこい
ここはDXライブラリのスレ
633 :
名前は開発中のものです。:2012/07/26(木) 22:56:32.34 ID:KSmi4eDd
>>632 DXライブラリも一緒に消えるだろ。バーか
理解力0か?
教えてやるよ
DXライブラリってDirectX使ってるんだよwwwww
>>633 はいはいDXライブラリの仕様も知らないアホはとっとと帰ってくれw
やっぱりZソートとついでに半透明問題も解決しといたほうが良さそうなのでしつこいが教えて欲しい
まずSetUseZBuffer3DのZバッファを「使用する」って具体的にどういう操作をしているんだ?
SetUseZBuffer3Dを使ってSetWriteZBuffer3Dは使わなくても半透明問題はあるもののパーティクルの描画順がバラバラだったのが正されている
しかも両方使うとやっぱり描画順はバラバラのままだし
ちょっと意味が分からん
そして自力でZソートってのが一番の課題だけど
これをきっちりやれれば半透明問題もαブレンドの問題も解決するよね
パーティクルのステータスは公式のサンプルプログラムの パーティクル基本 にのっとって構造体配列で管理してて
これをZソートをするのにqsortかsortを使ってやればよさそうだけど
これはSTL構造体に直してsortを使うほうが将来的にもいいだろうか
また、この構造体配列はエフェクトの種類ごとに別々のステータスを持たせることになるんだけど
こいつらをZソートしようと思うと 大量の種類の 構造体配列の塊 からカメラとの距離情報を抜き出してソートする必要がありそうで
そうなるとエフェクトの種類がごちゃまぜになるから一意的な描画関数で描画する訳にはいかなくなる(サイズや色の展開、変形、回転、ハンドルも違う)
どんな解決方法があるかな
なんかいい表現方法があるんだろうか
STLにする必要があるならそっちの勉強や移行の作業も後になるほど増えるし方向性は早めに決めとくべきだと思って書かせてもらった
よろしくお願いします
毎回n lg nかけるくらいならヒープか木にすりゃいいと思うけどね
本家掲示板で質問すれば?
Zバッファを使用するってのはZバッファと比較しながら書き込むってことだね
Zバッファを使用しないで書き込むと前後関係を無視するから、後から描いたポリゴンが常に最前面に表示される(つまり2D描画と同じような挙動になる)
あっちの掲示板で受け答えしたほうがより多くの人のためにはなるだろうがこっちでも俺の勉強にはなるからいいや
その画像にはいろいろ光源系のエフェクト使われてるけどどれのこと言ってんの?
太陽の位置からマップモデルに光がさして、当たる部分は明るくなって影になる部分は影が出来てるところ
画面自体が白い感じに明るいのはレベル補正的な何かだよね
影はデプスシャドウ、白いのはブルームエフェクトかな
どちらも公式にサンプルあるでよ
>>643 ありがと
漏れ出る光だけじゃないのね…
ゲームプログラミングの館見れん・・・
落ちたんじゃね
あそこ一時を境に更新やる気なくなったよな
あそこらへんは全部読み漁ったからいい
649 :
名前は開発中のものです。:2012/07/30(月) 19:36:03.61 ID:xPIg/R/g
うわあああああ、バグ見つかったっぽいけど結構組んだ後だから検証プログラム作るのめんどい
どういうバグよ
>>644 大体それがどういう処理だかわかってないまま、
関数一つで思うようになると思ってる発想が凄い
まーた煽りか
3D関係はめんどい
現在使用してるバージョンから最新版までの更新内容見なおしてみたら多すぎワロタ
とりあえず様子見にオンボードのintel HD3000で3D作ってたんだけど
グラボ積むならゲフォとラデとどっちがいいとかあるかな
ゲフォのが評判よさそうだけどラデのほうが積む上で都合よくてためらってる
それともDXlibじゃあ特に関係無いだろうか
まあエフェクト充実するまでもうしばらくは積む予定ないんだけどそのうち必要になりそうだからさ
大差ないんじゃね
迷ったら両方買っとけ。
どうせ、ユーザサポートで必要になる時がくる。
ゲフォが評判いいのは、プレイヤー側としての見方なんだから
むしろ問題があるといわれるラデの方が製作者側としては都合がいいだろ。
ゲフォで動くけどラデで動かない、なんて状況を回避できるぞ。
あとどうせグラボなんて数年でおしゃかになるんだからあまり気にすんな。
そこら辺はDXライブラリ側で対処してくれるからなぁ
えぇと、初心者的な質問はココでよろしいので?
プログラムが徐々に膨れ上がってきたから複数のファイルに分けた、ところで詰まったので質問失礼します。
Aファイルで自機の動作を書いて、Bファイルで弾設定を書いてる最中なんだけど、Bファイルで弾の発射位置を
Aファイルで設定した方向キーで動く自機位置と同調させるにはどうしたらよいのでしょう。
>>660 とりあえず、自機の座標を帰す関数を作っておき、弾を発射するときには
その関数を使って弾の初期位置を設定するといいと思います。
更に言えば、もしも各種変数をグローバル宣言しているような状況であれば、
早めに自機の状態および処理のクラス化を検討することをお勧めします。
めんどくさいんで、もうファイルは一つのcppにインクルードする形で分割してるわ
>>660 初心者ならexternでググると幸せかも
なぜここで聞けばいいと思ったのか
若干スレチだけど1作品にどれくらい時間かける?
2Dシューティングなんだけど手探りで作ってたら4ヶ月ぐらいかかってるんだけど
一週間で作ったSTGと一年掛けて作ったSTGがある
2年掛けて完成しないSTGと5日で作ったFPS
1週間で作ったSTGと1.5年かけてまだ開発中のSTGが
長くて半年くらい。作っていない期間もあるから実質だと3ヶ月くらいか
でも元となる部分はいつも使いまわしてるから一から作ると一年くらいかかるかも
今まで最短が10ヵ月。新作は1年かかったな。
ただし、色々条件が違うから単純にこれでは測れない。
10ヶ月で作ったヤツはリリース後にデバッグ作業で3ヶ月くらい費やしたし、
1年のヤツはデバッグ時間が長かったおかげでリリース後にバグ報告はゼロだし。
最短は、土日スレ用に作った2日だったかなあ…。最長も2ヶ月くらいだけどさ。
単純に3.06cに差し替えたらDxLib::DrawLineで引いた線が表示されなくなった
公式で既出じゃね?
3.08で追加された関数はリファレンスにまだ載ってないのか……。
3Dのモデル関係の話だけど
1.モデルの各フレーム(メッシュ)の座標は取得できないか
2.アニメーションデータを作ってモデルを動かすことになるようだが、腕などフレームを3D空間上の対象の動きに合わせて動かすことは出来ないか
この2つって出来るの?すごく大事な要素だと思うんだけどリファレンス見ながら考えても方法が思い浮かばない
2つ目は多少関節とか変になってもいいから何とかしたい
2番は意味が分からないけど1番は関数あるじゃん
2はなんだろうね。
例えば犬の散歩で、手にリードを持ってて、犬が勝手に走り出した時、
そのリードに腕がひっぱられる、みたいな動きの事かな?
2はIK(インバースキネマティクス、inverse kinematics)のことかな。
DXライブラリの機能にはなかったとおもうけど、3D全般におけるIKの解説なら探すといろいろある。
例えば人型モデルの顔を適当なオブジェクトに注目させるってことでしょ?そんな難しそうなことなのか
えっと、1って関数ある?
モデルの座標はあってもフレームやメッシュの座標は見当たらないんだけど
2は
>>677みたいな用途にもなるのかな
まあやりたいことは手に持ったライフルを対象の方に向け続けてちゃんとその銃口からエフェクトを出したいだけなんだけど
他にも1はモデルの一部分からエフェクトを出すときの全てに関わってくると思う
で、DXライブラリのモデルのアニメーションってMMDとかであらかじめモーションを作っておいて
それを状況に合わせて再生するって形になってると思ってるんだけど
腕の動きは、あらゆる位置・相対角に移動する対象に向ける必要があるわけで
その全てにモーションなんか作れないから
単純に各フレーム(ボーン)の角度なんかを関数として指定して動かすしかないと思うんだけど
これってDXライブラリじゃ出来なさそうに見えるんだけど
なにか俺の知らない方法とか認識の間違いとかがあるなら教えてくれないかな
ってことなんだ
できない。
>その銃口からエフェクトを出したいだけなんだけど
関数じゃなくて基本的な問題じゃん…
素人が無駄にロジック考えても、基本的に的外れで質問すらも迷走する
やりたいことを書くのが一番はやい
>>683 じゃあ>手に持ったライフルを対象の方に向け続けて
この部分どうすれば出来るかな
エフェクトの件(フレームの座標)は完全に自分の見落としだったけど
後者の方、質問が迷走してるって言うなら何か方法があるんだろうし教えて欲しい
あと
>>682 関数じゃなく基本的な問題ってどういう意味だろうか
パーティクルの発生点を得てそこからそのパーティクルの運動を記述して
ついでに種類によっては対象と重なった時など当たり判定をつけてそれに応じたステータスの増減の処理をさせる
ゲームを作る上でこんなことしか思いつかなくてこの方向性で書いてるんだけど何か勉強不足な点があったかな
エフェクトのクラスって出るたびにnewする?
マインクラフトのエフェクトがそれだったんだが
そんなこと怖くてできない
自分で作ったスレッドで DxLib の関数呼び出すとバグるんだっけ?
それとも、いくつかの関数は大丈夫なのかな?
ProcessMessageはメインスレッドっていうかDXLib_Initを行ったスレッドじゃないとダメってのは知ってる
あとLoadGraph系は別スレッドでも動いたよ
>>685 数が少ないなら、毎回newでも速度に差はないはず。
ただ、最初にまとめて確保する方法も、大したデメリットがあるわけでもないと思う。
描画止まらないようにProcessMessageだけ別で回してるけど動いてるが
>>688 それたまたま動いてるだけだよ。
別スレッドで可能なのは画像ファイル→メモリバッファへの変換だけ。
Windows, DirectX9の制約だからこれはどうにもならん。
>>691 昔のソース見直したらその通りの実装で動いてたわ…記憶力がヤバい
>>685 エフェクトのクラスをnewする時より
STLのコンテナの格納数が増える時のほうが処理落ちする
最初に多めに確保すりゃいいだけだけど気付かなくてハマった事あるわ
>>693 それってSTLのコンテナにポインタで持たせてないからじゃね
コピーコンストラクタの処理もあるだろうしクラスによっては激重になりそうだな
普通はポインタだよな
実体丸ごとなんて、よっぽど何か理由が無い限り普通はしない
逆じゃね?
よっぽどの理由(リアルタイムゲーム利用とか)が無い限りポインタで持たない
>>696 コピー常に発生するのに、何故。
リアルタイムゲームとか全然関係ないけど
コピーコストが全く苦じゃない時って意味ね。
それが嫌だという理由があってポインタ格納をはじめるんだと思うけど
基本的に、メモリイメージのコピー動作もそうだけど、構造体やクラスでオペレータオーバロードがある場合に
挙動が意図と異なる可能性がある訳だから、そういった気にするべきポイントが増えるのが煩わしいので
デフォルトをポインタのコピー格納にするかな。 どっちかって言うと。
例としては、C#やJavaが、基本的に常に参照の形で持ちまわるように作られたのは何故か、と言うような、
そんなイディオムから想像してみてもわかると思うけど。
動的ゲームでコンテナに詰めるのがポインタじゃないとかありえない
速度の影響はかなりでかいぞ
>>691 メモリバッファってのはグラボ上のメモリ?
それとも CPU で扱うメモリ?
前者なら LoadGraph 系列は動いて、後者なら LoadImage 系列が動くってことだよな
>>700 リアルタイムゲームで動的にメモリ確保はありえない
最初に全確保するからポインタじゃなくていいんだよ
わざわざポインタ使って複雑にするより素直にコンテナの機能を使おうぜ
↑こいつ全然分かってないな
704 :
700:2012/08/17(金) 00:09:00.68 ID:qx4mL0Ah
配列で実態を確保→そのポインタをコンテナで管理
だな 俺は
描画深度によってソートしてから描画したりするから、どうしても軽くなくちゃいけない
毎フレームソートするとして、ポインタのみなら数千個まで処理落ちなしで捌ける
実態そのままだと、大きさが250バイトだとして、数百個で処理落ちするようになる
やってたのはエフェクトじゃなく弾幕の弾の管理だけど、ほぼ同じこと
>>702 お前多分、意味をよくわかってない初心者さんだろ
言ってる内容もいい加減だし、ポインタを複雑とか妙に特別視してるし
ウザいならレスしないでください
わからないだけです
リアルタイムゲームで動的にメモリ確保はありえないのに
STLコンテナは問題ないらしい。
魔法のおまじないプログラミングはコンテナやライブラリを全能と信じ崇め、
ポインタなど自分がわからないものは他人にもわからないで欲しいので
触れてはならぬと無知を説く。
一方で傲慢にも上から目線で人にアドバイスをするなど自意識は強いようだ。
例「やれやれ、素直にコンテナの機能を使おうぜ 」
ポインタは言うほど複雑じゃないとはいえ、***p とかは流石に匙を投げたい
709 :
700:2012/08/17(金) 23:59:11.42 ID:Jb6c3vMk
*((*(p+1))->pp)とか
おっと
709も一行で短く押し込まなければ済む話だと思うが。
Foo** ppFoo = p+1;
Bar** ppBar = *ppFoo->pp;
Bar* pBar = *ppBar;
>>701 >バッファって?
グラボのVRAMではないく、普通のシステムメモリね。
>DXライブラリのどのAPIが動く?
Direct3Dと接触しないシステムメモリ上での操作である
LoadSoftImage、LoadSoftImageToMemを別スレッドで行い、
後にGUIのメインスレッドでCreateGraphFromSoftImageを用いて
システムメモリからVRAMに変換すればいい。
>>705 ポインタのバグは致命傷になりやすい
難易度とは関係ない
>>707 特別な事をしなくても静的確保可
元レス(
>>700)はそれが出来ないと言ってる
すでにある機能を別途実装する意味は?
コンテナの機能プラス、ちょっと一手間って感じ
既にある機能を再実装するわけじゃないよ
ちなみに
>>700はソートのことを言ってる
コンテナをソートすると普通は実体も並べ替えられるから重いんだよ
相変わらず何言ってるのかわからんぜ。
しかしDXライブラリと関係ない話は別でやろうってわざわざわけたのに何やってんの。
>>712 静的確保が自分でアロケータ書いてSTLのアロケータを置き換えるという意味なら合ってるが、そうとは読めんな
もうちょっと規模の大きなゲーム作ってみれば実体をコンテナに突っ込む事のアレさが分かると思うよ
理由なんて上に書いてあるのになんでまた聞いてんの
ほんと最近の教科書どおりの回答だよなぁ
実際使ったこともないのだろう
ソートするときはインデックス配列を別に用意してそっちをソートしちゃう・・・いろいろ別のものにも使いやすくて良いよな
ポインタ嫌ならスマートポインタに置き換えりゃいいじゃん
レス読む限りじゃ静的確保の意味を勘違いしてるっぽいな
>>712 君が言いたいのはstd::vectorの実体メモリのサイズに
予め最大値の固定値を与えることだろう。(静的確保ではなくプーリングだね)
しかし
>>693 から始まっている話の前提は最初に全確保できないこと。
闇雲に大きなメモリを与えられず、絶対にstd::vectorの内部サイズが変化しない
確証がなければ"重くない動的確保"が必要なわけで、
それを行う為にポインタ型の配列が必要なわけだ。
いいから他所でやれ
よくわかんないけど毎フレームごとに当たり判定リストをオブジェクトの数だけ当たり判定のポインタをpush_backとclearしてるのマズイ?
大丈夫だと思う
途中で要素を削除する場合がないなら
ポインタ型なら要素の削除してもソートは重いうちにはいらんと思うぞ
スレチなんだがDXライブラリの3D機能に不満を思ってDXUT11で1から作り直したぞ。
やっと草原に木のモデル写してマウスで操作できる所まで来た。
3ヶ月かかったがな。
あと、シェーダとかセマンティクスとか無駄に3Dに詳しくなった。
3か月も時間無駄にして成果が出てないのかw
>>728 その不満点をあげればスレチじゃないんじゃね
具体的によろしく
>>729 成果どころかゲーム部分にまだ何一つ手をつけてないぜ。
表示するだけ。Oh....
>>730 地形を描画するのにDrawPolygonIndexed3Dを使ってたんだ。
2次元配列に高さデータ収納して格子状の点にそれぞれ高さ持たせた立体的な地形。
そんで高い部分は山、低い部分は草原にするつもりだった。
だから山肌と芝生のテクスチャをα透過で重ね書きしようと思ったんよね。
でもDrawPolygonIndexed3Dは対応してないしどうしようってなってSDK漁って最初から。
RTS作ろうなんて奇特な人少ないからこういう不満も珍しいかもな。
2D機能使わないならDXライブラリじゃない方が向いてるんじゃないかとか思ったりして
考え方の一つとしては、決して間違ってはいないな
>>728 移植にどれぐらいの時間がかかった?
なにかコツとかある?
>>734 いやだから土日メインで3ヶ月。
勉強しながらだし、ほぼ何も出来てない現時点でもステップ数1200行超えてるからね。
コツはコピペと置き換え機能上手く使うこと。
ゲームでよくある「NOW LOADING」画面を実現しようと
ローディング処理をマルチスレッド化したんだけど
親スレッドでローディング(LoadGraph等)して、子スレッドで表示か
子スレッドでローディングして、親スレッドで表示か
どっちがいいんだろう?
DXライブラリ関数は常に同じスレッドで呼ばないとどうなるかわからないって言ってたよ
やるなら子スレッドで独自にメモリにコピーするまでだろうね
DXライブラリでマルチスレッドとかできるの?メッセージ処理とか改造しないといけないと思うよ
俺なら「ファイル読み込み」→「画面更新」のループで処理するな
別段重い処理でもないし
自前でデコードや暗号化等をしないなら非同期読み込みで十分
非同期読み機能あったんだ・・知らなかった
int型画像ハンドルをコピーするための関数って何?
画像を普通に代入じゃなだめなのか
見れば分かるんだから聞くなよ
というか、言ってる意味がわからない。
画像を代入って何?
わからないならレスしないで下さい
ウザいだけです
そんなんじゃ答えて貰えないぞ
画像ハンドルの型はintという点を理解できないなら説明しても無理だし、
理解できてるのなら説明する必要がない おわり
>>736 状態遷移クラス(しばしばシーン管理クラス(CSceneManager)とも呼ばれる)から
アイキャッチクラスや読み込みクラスを呼ぶのが良いだろう
直接的な回答としては「どちらのスレッドも子」だ
DXライブラリの初心者ってよりプログラムの初心者みたいだな
よってスレ違い
画像関係で俺はみんながどうしてるか知りたいのは
使用する画像のファイル名をどう管理して、どのタイミングで読み込んでるかだなぁ
例えばゲームの初期化時にキャラクターを生成していくときに画像のファイル名をコンストラクタの引数にするのか
画像は先に一括して読み込んでおいてハンドルを引数にするのかとか
ハンドルのポインタ渡してるのは俺だけだろうな
キャラクター名にコンストラクタ内で拡張子付け足してファイル読み込み
ハンドルは非公開メンバ
垂直同期待機無しで60 fpsにする場合
Sleepでやったらダメなんですか?
状態変移の良い実装、教えて頂けませんでしょうか?
セガ本でも買え
>>750 自分はミニゲーム中心なので、プログラム開始時に一括ロード。
シングルトンなリソースクラスに、画像や音声を全部まとめる。
大規模なゲームだと悪手だと思うけどね。
>>754 State/Strategyで。
757 :
名前は開発中のものです。:2012/08/23(木) 21:37:17.43 ID:miZ6GH9o
>>753 timeBeginPeriod使ってタイマー精度高くしないと
Sleep(1)とやっても環境によって10msとか待つ
高くしても1msになるかは環境次第だが2msぐらいにはなる
>>751 そこそこいるんじゃね?
再読み込みしても再取得しなくて良い利点が大きい場合多々ある
>プログラム開始時に一括ロード。
読み込めてしまう量ならそれが一番だと思うぞ。
量が少ないならロード時間も短いはずだし。
カードゲームとかRPGだと素材全部を
ノートPCのビデオメモリに入れるのは無理だと思うがな。
俺は独自のフレームワークを組んで、画像読み込み関数で「即読み込み」か「初使用時に読み込み」かのフラグを付けて読み込んでるな
使用するときその画像のフラグと読み込み状態を調べて、未ロードだったら読み込みとか
メニュー画面の背景とかはそうすると初期ロード時間を稼げる
カードゲームとか静的なゲームならカードは全部それにしてもいいし
ただグラボの挙動がわかってないんで、読み込み続けてVRAMからあふれた場合どうなるのかわからん
俺は画像データ分、ハンドルを格納する変数を用意しておいて、
その変数が-1だったら未ロードだと判定してロードしたりしてるな。
もちろん画像を消したら変数に-1を入れるのを忘れないようにしないといけない。
>>750の答えみんなサンクス
一括は画像に対する一意キーの扱いで悩むけど頑張って管理するしかないよね、精進します
>>753 DXライブラリのGetNowCount()使って、
timerで60fps実現してる
>>762 >一括は画像に対する一意キーの扱いで悩むけど頑張って管理するしかないよね
クラスか構造体に全部突っ込んでシングルトンなりグローバル変数でいいと思う。
画像ロードする初期化関数をDXライブラリ初期化後に呼ぶ事だけ気をつけて。
描画のFPSと内部処理のFPSって同じにした方が良いのですか?
それがわかんないうちは同じにしとけ
ほとんどのゲームは同じだから
シューティングゲームでの当たり判定について質問です
2点間距離の計算を使うとして、
1つの攻撃弾位置と全ての敵位置をif文で調べて判定するのが手軽な方法なのでしょうか?
一番簡単なのはそれだな
高速化とか考えだすと結構複雑になるから、「判定する必要があるもの同士」を心がけるのが楽
>>765 FPS(ジャンル名)であれば別にしたほうがいい
せっかくの洒落に突っ込むと、それFPSだからじゃなくてネットワーク同期の問題なので、
オフラインのFPSでは可変フレームにする必要はない…
文字列型ってcharじゃなくてstring使ってるんですか?
Dxライブラリの関数に渡すときだけc_strで変換してるとかですか?
文字列の連結とかcharだとめんどそう。
誰に聞いてるんだそれ
ちょこちょこやるときはその場ごとに全部バラバラだな
好きなようにやればいいよ
連結とかsprintfでオールOKだろ
現在のバージョン、テクスチャ分割処理を行わなくなったってことは、
640*640の画像を読み込むと、1024*1024の画像として読み込むってことでおk?
ほんとだ、こんな変更されてたのか。
とはいえ自分の場合、普段から分割しないように設定してたから、あんまり変わらんかもしれんが。
ゲーム制作系のネットの記事見てるとたまに1000FPSがどうとか言ってるのを見かけるんですけど
あれどういう意味なんですか?全処理が1ms以内で終わってるってこと?
そんな軽そうなものには見えなかったりするんですが
テストプログラムでもよっぽどじゃないと1000とかでないな
fpsじゃなくて1000msじゃないのか?
秒間1000フレームってことでしょ
2Dで待ち挟まなかったら1000出るわ
ディスプレイのリフレッシュレートは60とかだからFPS1000とかあっても表示としては無意味だけどな
DX SDKのサンプルとか今のPCでやったら1000FPS超えるよ
リフレッシュレート以上にFPSを上げることに何の意味があるのか分からない
>>765にあるような話じゃないかな
描画はモニタにあわせればいいけれど、レースゲームなどの物理演算が肝になるようなものは
細かく刻めば精度が上がると思うよ
>>783 ある処理が占有する時間が短くなれば、当然同じフレーム単位で他に出来る処理が増えるじゃない
プログラマじゃないとわからない話かもしれないが
最後にScreenFlip挟めばなんでも60FPSになるんじゃないの
フライトシミュレーターのカメラ制御で使える関数ってありますか。レースゲーでいったら車内視点でプレイできるようにしたいのですが
3Dライブラリ
>>783 インプットの精度をあげる為
正確にいうとFPSじゃなくて内部レートの話だけどな
格ゲーにたまに内部FPSが120なのがあるね
ゲームパッドって動作周波数60Hzじゃなかったっけ?
タッチパネルとかだと、1/60秒以内に複数個メッセージが飛んでくる事がある
うちにあるタブレットPCで実験した時には、1/60秒で5回ぐらい飛んでた
ゲームパッドも、機器によっては動作周波数が違ったりするんじゃ無いかな
USBならHIDクラスなので1000Hzとか出来ちゃうからな
PSコントローラーの変換機でも100以上あるはず
int ChangeVolumeSoundMem( int VolumePal , int SoundHandle )で音量を設定したいのですが、
volume0〜255の範囲とされているにもかかわらず、2ぐらいの数値を入れないと音量変化しません
何が起きているのでしょうか
バグか知らんけど10や20くらいじゃ全然音量変わらんよねそれ
謎だわ
>>796 比例してるのかと思ってましたが全く違うのですね
ありがとうございます
>>797 その辺はDXライブラリの仕様というよりは、人間の耳の仕様だな。
音量の単位としてデシベル(要は比率)で表現されるのも、そのせい。
もちろん、その辺を加味して、一次直線に聞こえるようなラッパ関数を作ってしまうのもアリ。
そこら辺まではDXライブラリ側でやってもいいと思うな
いやいやそんなことされたら音を扱う際にめんどくさくなるよ
いちいちDXライブラリ上で音量確認しなくちゃいけなくなるってとこ?
>>801 「音」の世界だと音量は比率で表現されるのが常識だから、下手にDXライブラリ側で再計算しちゃうと、
別のプログラムやら何やらを持ってきたときに、逆におかしくなっちゃうってことなんじゃない?
ま、コンフィグ画面でユーザに音量を調節させるとかなら、
一次直線で変わるようにした方が親切なんだろうけどねー。
感覚の知覚が対数的だからそのままでいいと思うけどなあ
リファレンスにあるように最大値の何割の音量という具合にすれば
特に問題は無いはず
自分はどうやってたっけな?とソース見直してみた。
ユーザに対しては、0〜5の6段階で設定させるようにして、
それぞれ、0, 16, 64, 128, 192, 255 に当てはめるという謎の処理になってた。
何故こんなことをしたんだ、当時の俺(´・ω・`)
俺は255までの100を100%として設定してる
806 :
名前は開発中のものです。:2012/09/20(木) 18:25:23.64 ID:lvqAp42H
すみません、DXライブラリを使おうと思ってるんですが
osがビスタの32ビットでも大ジョブですか?
多分ダイジョブです
3Dのモデルって何で作ってます?
動きはどのソフトで入れてます?
809 :
名前は開発中のものです。:2012/09/21(金) 01:15:41.93 ID:M0GjeHP4
自作ソフトで作ってます
自作ソフトで入れてます
すいません。画面全体を赤っぽい感じにしたいんですがどうしたらいいですか?
アルファブレンドで赤い画像を上から描画するのとは違う感じの
透明感のない感じで赤っぽくしたんですがDXライブラリの命令でできますでしょうか?
加算合成?というのが近いとおもうんですが
0,255,255でDrawBoxを減算
おお!SetDrawBlendModeのDX_BLENDMODE_SUBを指定すればいけそうですね!
サンクス!
ESP能力者を見た気がする
赤っぽくしたいなら青と緑を減らせばいいじゃない
っていうのはポイントだな
255,0,0を乗算でもいけるよ
っていうかピクセルシェーダでグレースケール変換的なことするのが模範回答かも
効果に比べて重いじゃん
いろんな色に対応できるというメリットはあるが
減算合成も思いつかない人に無茶言うなよ
最近スレの流れ遅いな
ゲーム作ってる人が少ないのかと思うとちょっと寂しい
俺がスレ見なくなったからな
Twitterで検索するとDXライブラリ結構使われてるなと思うよ
学校でも教材としてや部活・サークルなんかでも使われてると思しき呟きあるし
単にこのスレ見る人が減っただけじゃないかと
見てるし作ってるけどROMってるので
すいません。画面全体の中の黒い部分のみを赤色に変化させて表示させたいのですがDXライブラリの命令でできますでしょうか
予め赤でクリアしといて黒を透過色として普通に描画しかないすかね
黒い部分のみを赤色に変化させてっていうのがよくわからん
画面いっぱいに加算合成で赤い四角を描画した状態が「黒さを赤で塗りつぶした」状態だぞ
マスク的なことをやりたいのならジャギが出ないようにするとかの考慮でまた実現できるかどうかが変わる
バックバッファを書き込み可能にしといて
GraphFilter系関数でDX_GRAPH_FILTER_BRIGHT_CLIP
上1行ミスった
バックバッファをMakeScreenで用意して
828 :
名前は開発中のものです。:2012/09/25(火) 11:03:57.89 ID:N0kl0zss
3.08eが出ているね
また自作改造版DXライブラリをバージョンアップする仕事が始まるお・・・
地味に面倒な作業ではあるなw
俺用フレームワークは、途中から諦めてDXライブラリ自体には最低限しか手を入れないような作りに…。
siv3Dのベータが出たぞ
作者乙
Siv3DはDX11世代の国産ライブラリとして期待してるけど
正直開発が遅すぎる
開発中にDXライブラリがD3D9やMMDに対応しちゃってもうDXライブラリで良いやって話に
そもそもDXライブラリ使う層って、動作の安定したDirectX9のゲームを作りたい保守的な人達なイメージが
バージョン上げて動作テストしたら古いPCだとやたら重くなった
調べてみたらシェーダー使っていなくても
SetDrawScreenあたりのエラー処理が省かれているせいで
環境によってはシェーダー関連の警告が延々と出てしまうようになってるっぽい
もう古いPCではソフトウェア描画にしとけってことなのかもな
バグかもしれないから報告したほうがよくね
DirectX9 は入っているけどピクセルシェーダーは2.0未満の古いノーパソだからなあ
今の3Dの時代に古いPCにも対応させろって言うのも妙な感じがするし
この辺に対応させるならバージョンを少し戻せばいいだけだし
報告として上レスに書いたけど、個人的には仕様でいいんじゃないかと思う
仕様で良いと思うけど、知らないと動作環境として明記できないとこだな
今はスマフォでゲーム作るのが流行りだから
新規の人はC++自体やらなそう
はい化石です。
なんか近い話題になったから聞くけど
DrawPolygonIndexed3Dのリファレンスに
>尚、頂点インデックスは型が unsigned short なので、使用できる頂点データの数は最大で 65536個となります。
ってあるけどどこ弄ったらunsigned longとかに書き換えれるかな
そもそも弄るファイルはDxLib.libでいいの?
改変の仕方とかググってもあんまり出ないから分からん
そういう改変はしんどいと思う
まずソース見てちゃんと理解してからじゃないとバグでるし
DXLIBは古いPCの2Dゲームがメインだからメモリ節約の16bit(USHORT)だけど
そこを32bit(UINT)にして3Dモデルをより一括にレンダリングすることはできる。
いや正直に言うけどDirect3Dは全くわかってない
ただDXlibの管理人さんは
>DrawPolygonIndexed3D は比較的単純な構造なのでDirect3D9の知識があれば DrawPolygonIndexed3D の中身を
>追っていただければ簡単に unsigned long 対応は可能です
>ただ、最低限の Direct3D9 の知識は必要です
とは言ってる
で、
>グラフィックスデバイスによっては一度に65536頂点以上を扱えないことがある上
>65536頂点以上扱える場合も unsigned long で表現できる最大の値まで対応している
>というわけではなく、グラフィックスデバイスごとに差異があります
>unsigned short を使用している限りは少なくともそのあたりのことを気にしなくて良いので、
>少し手間かもしれませんが unsigned short を使って何回かに分けて描画する方法をお勧めします
っていうのが理由らしい
DXlibってあくまでもC++のライブラリだよね?
どっかの記述を単純にunsigned longとかに置換するだけじゃダメなの?
インデックスバッファの形式をDirect3Dに通達する部分があったはず
インデックスバッファを作成するところだったか、デバイスにセットするところだったかは忘れた
型を変えたらそこも変える必要があると思う
>>DXlibってあくまでもC++のライブラリだよね?
Direct3DもDXlibもC言語のライブラリだし
シェーダやアセンブラを変に意識しているのなら今回は全く関係ない。
リンク貼ってやったんだから少しは読めよ
IDirect3DDevice::CreateIndexBufferにD3DFMT_INDEX32を指定して
IDirect3DIndexBuffer::LockにUSHORT[]ではなくULONG[] or UINT[]のポインタを
渡すようにDXlibを変更すればいいはず。
ここまでやってもらってコンパイルすら出来ない俺はゴミですかそうですか
公式の自動解凍のコンパイル前のDxLibMakeのどのファイル弄ればいいかも結局分からん
CreateIndexBufferとかで大体のファイル検索かけたりしたけどリンク先のような引数の構成のところは見つからなかった
しかも一応コンパイルできるか確認にやってみたら指定されたファイルが見つかりませんってコンパイルさせてくれないし
まず使用されてるライブラリを見つけてきて修正入れるのも大変だからね
「DxUseCLib スタティックリンクライブラリについて.txt」を読んで必要な外部ライブラリを突っ込まないと
うわ……
txtは全部読んだと思ってたのに
毎回こんなすぐレスくれる人は一体何者なんだほんと助かりますありがとう
>847の変更すべきファイルは
DxUseCLib.libのコンパイルに必要なDxUseCLib.cppとDxUseCLibOgg.cppの部分でこれに手を加える必要があるの?
あととりあえずDxUseCLib.libのある階層を追加のインクルードディレクトリに設定してビルドしてみたんだけど
結局指定されたファイルが見つかりませんってエラー吐かれるんだけど
まだ足りないものがあるのかそれともパス指定がまずいのか
その程度のこと判断できないようでは無理でしょ。
明らかにレベルが達してないよ。
まずビルドできるようにするために、そのテキストに書いてあるライブラリを揃えないといけないんだよ
ちょっとてこずるだろうけど書いてある通りにするだけだし、それで詰まってるとライブラリ自体の改造は難しいと思うよ
DXライブラリ自体のバージョンも日々上がるから、改造後の保守の問題も出てくるし
揃えるライブラリってDxUseCLib.libのコンパイルに必要なDxUseCLib.cppとDxUseCLibOgg.cppをコンパイルするのに必要なだけで
DxUseCLib.libがあればDxLib.libはコンパイルできるんじゃないの?それでもライブラリいるの?
全部揃えればビルド通るようになるんだからビルドできてない時点で面倒臭がるな
>>853 DxUseCLib.libあればコンパイルできるよ
割とどうでもいい修正のために、スレ住人の手を煩わせてまでやる必要ってあるの?
>>845見る限り修正しても問題はあるわけだし、普通に使えばええやん
修正目的と手順をきちんと整理して、スレに貼るなり何なりしてくれると
資料として残るから有効なのではないだろうか。
それを使う人が多いか少ないかは分からないけれど。
DerivationGraph で分割指定をした後
バイリニアで拡大したら隣の領域がはみ出してきちゃった
元の参照画像全体が拡大された後に指定領域が切り出されるのか
逆だと思ってたよ
DXライブラリとC++で作られたプログラムのソースとか
どっかにありませんかね
パク…参考にしたいです
やたら見かける印象だが
>>857 間違っています。
以上。
はい次の方。
何が?
>>858 要はテクスチャを一部だけ表示するようにしてるだけだからね
内部では分割されてるわけじゃない
別のマシンに持ってくと大丈夫だったりするみたいよ。
あと画像サイズ、分割数、レンダラの種類をいじると改善される場合もあるとか。
865 :
858:2012/10/02(火) 23:40:49.01 ID:X5RKuQ8u
画像リソースをいじりたくなかったから
uv座標を少しだけ小さめに取る描画関数を追加して解決としたよ
DXライブラリでゲーム作ってるけど本当ここにいる人達の会話についていけないわ
簡単な2Dゲーム作るだけで幸せ
俺もここでの会話はさっぱり理解できんわ。
けどゲームはそれなりに作れてます。
RPGでパーティ管理とかアイテムの管理とかは
vectorかlistでいいんですか?
色々調べましたがvectorは要素数増やすとメモリの再確保で
めんどいバグが出る可能性があるとか見つけたんですが
安全性ならlistでいいんですか?
それ以外になにかあるんでしょうか?
mapがいいよ
870 :
名前は開発中のものです。:2012/10/04(木) 07:20:04.10 ID:khBATFa3
RPGは処理速度気にしなくても大丈夫だと思う
となるとやっぱりmap
俺はlistばっか使ってる
上限数がある程度決まってるんなら予約しとけばvectorでいいし
要素の途中を参照するならlistよりはdequeが適してる
874 :
名前は開発中のものです。:2012/10/04(木) 13:05:10.54 ID:u+7K31uk
データベース
875 :
名前は開発中のものです。:2012/10/04(木) 15:27:13.06 ID:1X+4oyye
本当に伸び縮みや間に挿入がなければ固定配列に越した事は無い
静的配列のこと?仕様変更まで見据えると使いづらい気がするんだが
それ含めての話だろw
まあそうなんだろうけど、一回作った後に変えたくなることは多々あるし
まして、パーティ管理アイテム管理なら使いまわせるし
879 :
868:2012/10/04(木) 23:20:30.09 ID:I+U+3QyH
全アイテムなどのデータベースはmapがよさそうな感じですかね
とりあえずvectorで書いてしまっているのでreserveで要素数固定させて書いてみます
listとかdequeは使ったことないので勉強しますmapもか
ありがとうございました
880 :
名前は開発中のものです。:2012/10/05(金) 15:59:47.66 ID:YCSftqcx
公式のシューティング基本のサンプルを改造してグラディウスのような横シューティングを作ろうと思ってます
そこでサンプルの
// 位置を上にずらす
ShotY[ j ] -= 8 ;
// 画面外に出ていたらショットデータを無効にする
if( ShotY[ j ] < -32 ) ShotValid[ j ] = 0 ;
辺りを改造して右に飛ぶようにしたいのですがMAX_SHOTの4個しか飛ばず、どうやら
// 一つ前のループでショットボタンを押していたらショットは出さない
if( ( Key & ~OldKey ) & PAD_INPUT_A )
{
// 使われていないショットデータを探す
for( j = 0 ; j < MAX_SHOT ; j ++ )
{
if( ShotValid[ j ] == 0 ) break ;
}
// もし使われていないショットデータがあったらショットを出す
if( j != MAX_SHOT )
{
この辺りがうまく飲み込めず右に1画面4発ずつ画面上から消えたらMAX_SHOT以下まで発射ということができてないと思うのですがどのあたりがポイントなのですか?
個人的な感じとしては弾が画面外に行った判定ができてないと思うのですがどなたかアドバイスいただけないでしょうか?
参考
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N5 勉強不足のいたすところですがよろしくお願いします
Y位置で消去判定してるんだから、そこもXに書き換えて弄らなきゃならんだろ
882 :
名前は開発中のものです。:2012/10/05(金) 16:20:49.93 ID:YCSftqcx
>>881 すみません
書き忘れです
if( ShotY[ j ] < -32 ) ShotValid[ j ] = 0 ;
この部分はXに書き換えています
-32という部分がこの記述の場合座標かと思い
if( ShotX[ j ] < 640 ) ShotValid[ j ] = 0 ;
とかやってみたのですがダメでした
根本的に違うのでしょうか?
if( ShotX[ j ] > 640 )じゃね?
884 :
名前は開発中のものです。:2012/10/05(金) 16:26:41.34 ID:YCSftqcx
>>883 あぁなるほど
-座標で元のが外行ってたからShotX[j]が表示領域より大きくなったとき判定すればいいのですね
まだまだ頭が鈍いようです
ありがとうございました!
GIFってPlayMovieToGraphで再生できるけど
PNG画像みたく画像の透過情報を利用して背景の透過ってできないんだろか
0からmain関数の記述から始めろって
ツクールとか既存のソースの改造とかから入るやつの気が知れねえわ
結局よく分からなくて混乱するだけじゃねえのかと
888 :
名前は開発中のものです。:2012/10/07(日) 12:31:11.30 ID:XtmeymLX
>>887 ならツクールでクソゲーでも作ってろバーカ
ほらな?
人には向き不向きがあるんだよ
あと、このスレには君の先生はいない
俺は答えた側なんだが、学習段階はトンチンカンな質問しちゃうのは仕方ないと思ってる
その段階を卒業できるかどうかは人によるけど、ずっと質問べったりじゃなけりゃ、
1,2回くらいならそういう質問にも親切に答えてあげたいと思うよ
それはまあ確かに。
「何言ってんのお前」と指摘してる側が理解してないだけのパターンも実際には結構あるけどなw
こんな話題の時にものすごく初歩的な質問でなんだが
float a;
a = 10/100;
これってなんでaは0.10000000にならずに0.00000000になるの?
10も100もintだから
それはさすがにCの本を読み直した方がいいっすよ 俺も初級者だけども
(10/100)の型がint
そして次に、0.2や0.3は出来るのに0.1にだけならない!という質問が
float a;
a = 10.0f/100.0f;
もうなんか本当にごめんなさい
助かりましたありがとう
なんか作ってて麻痺してたわ
そういうことにしといて…
感覚的な慣れが必要なとこだよな
実行ファイルをバイナリエディタで見ると普通にゲーム内で使用している文章が見れちゃうんだけど
外部から読み込む以外の防方法ある?
その「外部」だって、そちらをバイナリエディタで読めば見えちゃうわけで、
見えないようにする手段は、どちらも大して変わらんですよ。
ただまあ、データと復号手段が同時に提供されている以上、究極的には無理だとも言えるが。
外部からの読み込みで、かつアーカイブにまとめて暗号化すれば基本的に見られることはない
その暗号化のキーをexeのバイナリからわからないように工夫してな
>>904 その方法は思いついたけど
文章をいじるたびに外部をいじるのはちょっと気が引けるから
外部から読み込む意外がいいんだけどないかな?
char *str;
str="セリフ";
いままでこういう風に内部でやってきてたから
それだとソース自体を暗号状態で書かないといけないから不可能
やれるとしても非現実的な方法しかないぞ
>>906 うあーやっぱりそうか・・・
こうなったら徹底的にやるしかないか
ありがとう踏ん切りがついたよ
暗号化したテキストファイルをリソースとしてバイナリに食わせちゃえば外部ファイルという部分は解決する気がする
>>905 これは感覚の問題でしかないが、どっちかって言うと
文章を弄るたびにビルドし直す方を躊躇するべきだと思う。
ていうかバイナリエディタで中身覗いちゃうような人の事は別に無視してもいいと思う。
商業のRPGなんかでも、データを覗くと生テキストそのまま入ってるとか多いからな
台詞とかはXMLにしてる
913 :
名前は開発中のものです。:2012/10/09(火) 19:20:50.52 ID:1/3DTW0z
さすがにXMLはやりすぎに感じる
簡単にアクセスできればなんでもいいと思う
過去になんらかのデータ(XMLとかでも)を簡単に扱うモジュール書いてて、その使い回しとかよくやる
嘘XMLくらいならパーサ書いたことあるなあ。
ゲームに使ってみようかな。
C++はリフレクション無いからDOMからマッピングするしかなくめんどい。
XML<==>Objectでマッピングするところのコードの自動生成ツールがほしい。
あああああああああああプロセスが消えてくれねえええええええええええええ
ブレークポイントつけてF10ぽちぽちして確認しても、ちゃんとメインループ抜けてるのに
メイン関数の最後の return 0; までいってるのに
ウィンドウ消えてもプロセスが残ったまま
visualstudioのほうも(実行中)になっててShift+F5でデバッグ終了しないとプロセスが消えない
exitやらabortやら試してみたけど無意味だった これはもう駄目かもわからんね
dxlib_end通ってる?
>>918 うん。メイン関数の最後は↓みたいになってる
while( ProcessMessage() == 0 )
{
//** いろいろな処理 **//
if( endFlag ) break;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
処理めっちゃ書いちゃってるしそこが原因だとしても手遅れ\(^o^)/
最後のreturn通っててプロセス残ることなんてあるのかぁ・・・
最初のDXライブラリの設定をvspropsファイルに書き出したいのですがどうすればいいのでしょうか?
今のところ前のプロジェクトを丸ごとコピーしていますがかっこ悪いのでvspropsを使いたいです。
ちなみにvs2008なのでpropsではなくvspropsファイルです。
>>919 スレッドとか使って場合はスレッドの開放をちゃんとやってるか確認
自身の環境で公式サンプルでプロセスが残るか確認
残る場合はコンパイルオプション等自身の環境が間違っている可能性あり
公式サンプルでプロセスが残らない場合は自身のソースがおかしい可能性大
骨格以外コメントアウトしてプロセスが残るか確認
プロセスが残らない場合は地道にコメントアウトを繰り返して問題箇所を特定
残る場合は骨格の作り自体NG
>>921 それしかないですよね(´・ω・`)
地道に頑張ります
手動で二分探索
すまないがだれか助けてくれないか。
フレームレートにあわせてキャラの移動スピードを調節するための関数を作ってるはずなんだが
読み込みの段階で応答なしになってしまう・・・。サンプルプログラムと同じ事を書いてるはずなのだがうまくいかない。
グローバル変数のfloat idouryou[移動ピクセル数]は習得したフレームレートから実際の座標の移動量を格納する為のもんだ
void SetFrameRate(){
float frametime = 0;
unsigned int s = GetNowCount();//計算開始時刻
for(int i = 0; i < 30; i++){
ScreenFlip();
unsigned int e = GetNowCount();//計算終了時刻
frametime = frametime + e - s ;
s = e;
}
frametime = frametime/30;
for(int i=0; i<20; i=i++){
idouryou[i] = i / frametime * 16.67;
}
}
i=i++
なにこれ?
i++のインクリメント効果を代入で打ち消してるよね
>>925 そうなの?
i=i;
i++;
と同じ意味ではないの?
なんでi=iをするのか意味がわらからない
>>925 実際のところ、普通に加算されるだけじゃね?
>>926 単なる記述ミスだと思ったが、その反応は予想してなかった。
入門書の最初の方を読めとしか言えないレベル。
int tmp_ = i;
i++;
i = tmp_;
になるんじゃないの?もとどおり
お前は一体なんなんだよ
後置だからインクリメントは代入の後に走る。よな?
int i=0;
i=i++;
i=i++;
printf("%d", i);
これやっても0って表示されるよ
後置++は加算した後に、加算するまえの値を返すから、
インクリメント→加算前の数を代入になる
おお、そうなのか。勉強になったわ
じゃあ
>>924 はそのコードの部分で無限ループしてるんだろうな
ていうか、ステップ実行すればすぐ判った事なんじゃ……
ごめん、仕様あたってみたけど未定義っぽいわ
なので結果としてはどっちも正しい
サンプルプログラムが誤植なんだろで終わりな話だと思ったのにみんな真面目だな
なんかi=i++でググったらそれ系の記事いっぱい出てきたわ
みんな泣いてきたんだな
関数の呼び出し順なんかと違って、泣くほど使う機会は無いと思うの。
なんだか懐かしい。初めてC言語の勉強したとき加算のi++って独特の書き方だと思ったな
なにしろ当時フォートラン77しか経験がなかったから
i=i++なんて初めて見たよ
こういうアホなことを発見するのはむしろ天才なのかもしれんな
i=i++wwwww
ふと気になったんだが
n=i++;
だとどうなるんだ?
普通にnにiが代入されたあとiに+1される?
そりゃそうだ。
>>943 正確には
>>929みたいな流れだと思うよ。
iの値を一時退避させて、iに+1されてから、nに一時退避させた値を代入。
iの値を一時退避させて、nに一時退避させた値を代入してから、iに+1
かもしれないぞ?
「C FAQ」で検索して出てくるページを読むべし
画面全体をフェードアウト・フェードインしたいのですがなかなかうまくできません。
実行すると突然画面全体が真っ白になり、だんだん暗くなります。
期待してるのは、画面に画像が表示されたまま、その上からマスクをかけて暗くしていくようなものです。
ググってもみたのですが、黒い画像をわざわざ用意して、その黒い画像を透明→不透明に加算してくものだけです。
↓毎フレームScreenCountが+1されていく。
SetDrawBright(ScreenCount,ScreenCount,ScreenCount);
SetDrawBlendMode(DX_BLENDMODE_ALPHA,ScreenCount);
DrawBox( 0 , 0 , X_WINDOW , Y_WINDOW , GetColor(255,255,255) , TRUE);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,255);
まずSetDrawBrightが邪魔 その行消していいよ
あとはα値が0(透明)〜255(不透明)の範囲に収まることに気をつければいけるんじゃね
SetDrawBright() が余計で
DrawBox() の色を黒にすればいいと思うよ
GetColor(255,255,255)って黒じゃないんですか・・
あ、できました!
ありがとうございます!
>>950 今すぐペイントを起動して色の作成で黒のRGB値を確認して来るんだw
>>952 2回目のnが0になるのは未定義動作の所以?
少し上にも出てるがインクリメントが後置だから普通の動作だ
i++と++iの違いは知っておいて損はないと思うぞ
1回目の n = i++;の処理終わったときiが1になってるのなら
2回目の n = i++;の時に0になる理由が解らない
2回目のn = i++;の結果は3回目のprintfだぞwww
>>958 先入観で物凄い勘違いしてたみたいだ、すまん
>>961 規格で未定義=挙動は処理系依存 だろが
じゃあもうそれでいいよ
それでいいも何もお前関係なく世の中ではずっとそうだったからな
未定義と処理系依存と不定は全部微妙に違ったと記憶しているが、
さすがにCの仕様云々の話となると、一番違うのはスレだと思う。
動作からみればどっちも変わらんけど、規格から見れば区別すべき物だということだろ。
>>964 最後にレスした方が勝ちとか思っちゃうタイプの人ちーっす
ところで次スレは980辺り?
勝ち負けとかないだろ
正しいかそうでないかだけ
即レスww
こいつ本物だwwww
ID:JkR8cdLz=ID:l6oxbFUgか?
間違いを認められないのはいつぞやの坂道作れない無能君を彷彿とさせるな
間違いを指摘されると発狂して人格否定に移行するよな
ID:l6oxbFUgならC++スレに泣きついてたけど?
なんか醜い奴が居るな…
プログラミング上、正しいなら叩いてる奴がアホ、
間違ってるなら言い張ってる方がアホ
どっちかがソースもってこい
>>973 今はどちらでもない人が一番アホっぽいけどな
よそのスレで頭を冷やしてきた
俺の負けでいいから、最後にソースだけ明示させてくれ
>ソース
>>961 の、2番目のリンクがソース
「Language C FAQ」という海外の書籍を日本語訳したもの
サイトの名前の通りC言語に関する内容だが、C++でも通用すると俺は考えている
Cの規格では未定義、各々のコンパイラの規格では処理系依存
ってことでどっちも正しいんだよ
言葉遊びなんてどうでもいいだろ。
ではまず数学者を誘い出してください将軍様。
大学でもいけば会えるだろ
次スレ立てないと沈むな、このスレ
俺は規制で立てるのは無理だが
仕方ない俺が立ててくる
980だと24時間経過しても落ちないのか