とりあえずたてた
3 :
名前は開発中のものです。:2011/12/03(土) 05:33:02.23 ID:tgKoapk0
おつ
乙
……ったく980あたりが立てとけよー、と確認してみたら980俺じゃん(´・ω・`)
スレ立て乙
いつの間にか物理演算系の機能が追加されてたのか
物理演算きたのか
DXライブラリへの依存が高まるが、今更高められないが、高めたいが・・・、
>>7 フォントの名前が正しくないかも。指定する名前はコンパネからみられるフォント名ではなくて
例えばIEのインターネットオプション→フォントで表示されるようなフォント名
そもそもサイズ的にフォントに日本語が入っていないと思うので、ひらがなは描画できないかと
この関数失敗してもエラー返さないし、直接フォントファイルそのものを指定できないみたいだから
配布のときに難がありそうだね
色んな効果音簡単に出してくれる機能欲しい
効果音あるだけでかなり違った
用意したもの読み込むんじゃなくてその場で効果音作ってくれる機能
文字の色とか指定するみたいに
2Dゲーなら、DXライブラリの物理演算に頼る機会は少なそう
>>11 それはプログラムライブラリの範疇じゃないよ。
素材集から欲しいのを見つけるとかしないと。
実行ファイルに画像をリソースとして埋め込んだ場合
DeleteGraphしても開放されませんか?
タスクマネージャで見ててもDeleteGraph前後でメモリ使用量が変わらないんですが
物理エンジンのBullet組み込んだみたいだけど
まだPMDファイル形式のみの対応だよね?
自前ワールドに登録とかもまだできね?
ブラーをお手軽に着けれる関数が欲しい
よし、FrontHook()関数を実装しよう
バックバッファを2枚用意して
1枚目に通常に画像を描画、
2枚目に1枚目を拡大描画して表画面にflipしてるんですが、
アルファブレンドをしようと思って1枚目を2枚目に拡大描画する直前で
SetBlendMode(DX_BLENDMODE_ALPHA, alpha);
をやると透過しません。
これはバグでしょうか。
1枚目に通常描画するときに
SetBlendMode(DX_BLENDMODE_ALPHA, alpha);
すると透過するんですが、
これだと背景とキャラクターの両方が透過されてキャラクターの位置に背景が描画されてしまうので
2枚のバッファを使ってます。
キャラクターの位置に背景が表示されるとかわけわからん
あ、できました。勘違いだったようです。。
言ってる事がわけわからんので最小構成のソース上げろ
すまん、リロードしてなかった
SetWindowSize関数で、画面のサイズを480*480に設定したのですが、横方向に縮小されたように描画されてしまいます。
何が原因なのでしょうか?
>>25 そうだったのですか。
諦めて640*480のサイズで作る事にします。
ちゃんと読めよ
>>27 変な勘違いしていました。
SetGraphMode(480,480,32);で出来たのですね。
モデルの読み込んでハンドルを返す関数
モデルの角度、座標をハンドルで指定して偏向する関数
モデルのハンドルを指定すると格納されている角度、座標を自動的に読み込み3D2D変換までして描画する関数
自由度全くないじゃないですか〜(´・ω・`)
キャラクタクラス作ってメンバ変数にキャラクタ座標や角度とかのパラメータを持ちたいときどうするの?
メンバ変数とハンドル先で二個持ってパラメータは隠蔽するの?
モデルはモデル
キャラクタクラスはモデルを表示させるだろうけど普通はモデルを持たない
単純にキャラクタクラスに座標や角度もたせて
モデルを任意の設定で表示させるだけ
画像なんかと同じにように捉えた方が良い
あと同じモデル使うなら読み込んだモデルのハンドルからハンドル作るほうがいい
専用の関数がある
3D扱うならカメラ系もすごく大事
じゃあキャラクタクラスメンバ変数にはモデルの通し番号をもたせる形で保持して置いて
描画の直前にそのキャラクタメンバ変数から座標や角度を指定する、て感じ?
なんでマスク機能ってまだ残ってるんだろう
ZBufferの下位互換だから必要なくね
>>33 まあ、ライブラリなんてそういうもんだ。
いわゆる「俺ライブラリ」ならともかくな。
ところで、Zバッファってマスクの完全上位互換だっけ?
>>11>>13 亀だけど、昔のマイコンのBASICにあった
PLAY "CDEFGAB"
みたいなのは出来るかもしれんね。
MMLなつかしいな。
>>32 まあ、そんな感じか
メンバ変数にm_handle、m_pos、m_angle(ラジアン)があるとして
// 3Dモデルを移動
MV1SetPosition( m_handle, m_pos ) ;
// 3DモデルのY軸の回転値を変更
MV1SetRotationXYZ( m_handle, VGet( 0.0f, m_angle, 0.0f ) ) ;
// 3Dモデルを描画
MV1DrawModel( m_handle ) ;
とか、
公式リファレンスのモデル基本制御関数を試していけばいんじゃね
俺は変換用行列に適用していってMV1SetMatrix、MV1DrawModel使ってる
カメラも同時に試すようにすれば理解しやすいかも
誰か自分の過去作品を貼ってくれ
何かゲームがしたい
自分自身の過去作品やればよくね?
40 :
名前は開発中のものです。:2011/12/06(火) 10:15:57.99 ID:q/LKVe1Q
やってみるか
というかURLがあやしいわw
というか、3Dの描画形式もうちょっと変えられるようにしたい
遠近感無くすとか3点描写みたいに極端にゆがませるとか
表示座標でなんとかなるか?
>>43 具体例ある?
正射影ならDxLibでいけるから
SetupCamera_Ortho使えば遠近法ではなくなる
3Dを2D的表現にしたいとか?
歪ませるのはfov
確かdxlibにもあったはず
いや、DXlibで3D作るのやめろって
3Dなら素直に別の使ったほうがいいって
それは同意できるんだよなぁ
軽く試すだけなら恐ろしく簡単にできるが
まともな3Dゲーム作ろうとすると他のライブラリより難易度上がる
3Dの描画形式変えるとか
それはもうエフェクトの範疇じゃないか?
シェーダー勉強したほうが幸せになれると思う
>>46 fov? fog?
というか3d作るのならdirectX 直接いじった方がいい?
基本2Dゲーで、美味しいところだけ3Dをつまみ食いする使い方ってアリ?
DirectX直接はおすすめしねえw
一から勉強するってんのならOpenGLのがいんじゃね
OpenGLいじったことないから適当に言ってる
2Dゲーで3D使うんならDxLibでも全然ありかなぁ
どんなものかによるだろうけど
3Dのツール作るほどじゃないのなら労力マシだろうし
DxLibは物理エンジン(Bullet)を一応組み込んであるから期待はしてる
>>48で書いたのは現時点では・・・ってことね
そういやBulletは2D物理のほうにも対応してたか
BulletのLinearMathの計算系つかうのはありかもしれんね
クォータニオンと回転行列とベクトルの連携はありがたい
DxLibに反映させるときは右手左手の変換処理いるけど
>>48 FOVも知らんのに語るなよ
DXLIBは難しいというよりDXLIBでやる恩恵が特に無い
結局レンダリングだのポストエフェクトだの気にした時にデバイスが隠蔽されているデメリットだけが発揮される
それなら自分で直接DirectX叩いた方が早い
>>52 すまん、FOVで思いつくのが視野角しかなかったんだ
視野角で合ってるよ
アフターバーナーみたいな歪ませ方ならデフォルトで60のFOVを90くらいにしてあげればいい
ポストエフェクトについては
最近追加されたFilter系関数+αで
間に合っちゃうケースもありそう。
じゃあ見下ろし型のシューティングで、画像を上下左右適用させるのがめんどくさいからモデル使う、ってのはアリ?
ネビュラスレイ的なプリレンダで良いんじゃないか?
3D生かした陰影エフェクト重ねるとか演出で視点移動するならともかく
2DでBulletを使う場合ってどうやるの?
カメラ設定などを調整して見た目は2Dになるようにするとして、基本的に3D空間としてゲームを作る感じだろうか。
自前で組み込んだBox2Dから移行するメリットがあるなら、ちょっとやってみたい。
>>56 俺はアリだと思う
現に今現在その方式で途中まで作ってる
>>54 視野角は普通に使うことにしか頭になかった
勉強になったわ
>>56 やったことないから以下想像
3Dの座標は変えず、対象ごとに
SetCameraScreenCenterで表示位置変えてやるなら2Dっぽくできそう?
これだと3Dの利点がかなり失われる
3D座標で動かして単純にカメラが画面中心をみるようにしてると
同じキャラクターでも画面の位置によって見え方が変わる
東方等を参考にするなら自機はちょっと前に傾いてる状態等
自機等のモデルを傾けとけば良いきもするけど
演出でカメラアングルを変更する場合とかは試行錯誤いりそう
>>61 thx
ゲームルール2Dで3D表示面白そうやね
もしかして実行ファイルに画像データを埋め込んだ場合って
起動時に実行ファイルを読み込んだときとプログラム内で画像データをロードしたときとで
1回分余慶にメモリを消費しますか
みんな魔法とかヒットのエフェクトどうしてる?
>>65 テクスチャかいてぱらぱらアニメがいっぱんてきなのかなーと
前スレ読め
最近3Dで生成してレンダリングする技術と代物を手に入れた
そういうツールあるよね
シェアソフトだったりするけど
ポリゴンにテクスチャはっつけるのどうやるんですか?
ミクのモデル読み込んで表示したら真っ白で泣ける
指定されたテクスチャがちゃんと配置されてないんじゃ
配置の仕方がわからないんじゃ
人のソースでクラスとかはCEnemyとか頭にCが使われていることが多いけど
mEnemyとかm_Enemyとかは何の記述なんだろうか
メンバー変数のm
過去のソース見てると構造体なのにm付けっぱなしだったりする(汗
>>74 なるほどthx
解説や本は使ってる関数すら名前の付け方の解説ないよな〜
ハンガリアン記法でググると詳しくわかると思うよ
最近はだんだん人気なくなってきてるみたいだけど
C#なんかだとthisを書くことが多いしね
DXライブラリはハンガリアンに即してるな
俺はクラスのCとメンバのm_だけ採用してる
モデルハンドルってどうやって保持するんだ?
モデルのロード
↓
キャラクタークラスからモデル情報の代入
↓
描画
ってしたいんだけど
モデルロードを毎フレームやってしまうので、
モデルクラスのメンバ変数に代入
↓
表示するモデル番号をキャラクタークラスから貰う
↓
モデルクラスのメンバ変数とモデル番号をswitchで分岐して描画
(orポインタ配列でmodelhundle[modelnum]を直接描画関数にぶち込む)
ぐらいしか思いつかないんですけど、
非効率だったりしませんか?
くそ〜ちゃんと完成品のソースどっかで見れないかな〜
解説とかは簡易的だし実用レベルで実装されたり全体の構成とかわかんねぇ
サンプル組み合わせたサンプル+程度が限界だぁ
14歳からの〜シリーズとか?
中規模にちょい足りない、未満程度の規模のサンプルにはなるかな?
ちょい古いかな?
公式のポンと玉当てにソース入ってなかったっけ
全体の構成といってもループの中で条件分岐してそこで必要な関数呼ぶだけだろ?
>>81 サンプル+程度が限界だと完成品のソース見ても多分何も分からんぞ
俺も初めて完全なオブジェクト指向のC++見たときは何がなんだか全くわからなかったし
読み込み、初期化、計算、描画の流れを
タイトルメニュー、ステージセレクト、ゲーム部分、といったシーケンス遷移を含めた
枠組みにぶち込む基本的な設計が作れなくてなぁ
FPSのDoomのソースならメインループでも1000行以下で初心者の俺でも読めた
>>86 俺そういうの全部キャラクターにしちゃった。
「タイトル画面」という自機を動かして、
ステージセレクトを選んだら「ステージセレクト」という自機を作って、「タイトル画面」という自機を消して、って感じで。
以前はそれぞれ別の処理にしてたけど、こうやったら機能追加や削除が簡単になった。
DXライブラリを使うけれども、
std::coutやprintfのようなstdoutを利用することって出来ないでしょうか?
Visual C++を使ってプログラムを組んでるのですけど、
デバッグ中は、CUIでcoutを使ったレコード出力を繰り返したいのですが、やりかたが全くわからないです。
おとなしくstd::ofstreamして、tail -f するしかないでしょうか?
printfDxじゃ駄目なのか?
>>89 Windowsアプリケーションじゃなくて、コンソールアプリケーションとしてビルドすれば
コンソールウィンドウが表示された気がする。
プロジェクトのビルドターゲット?だったかな?
そこを変えてみては?
できるね
コンソールアプリにしてmainから
WinMain呼び出すだけ
メインループwhile()より上の行にデータのやりとりするポインタをずらって並べる設計なんだけど、不効率かな
main(){
data_t *pdata;
while(){
switch(state){
case INI:
pdata=ini();
state=GAME;
break;
case GAME:
hoge(pdata);
break;
}
}
}
アプリを複数起動できなくするにはどうすればいいでしょうか?
DXライブラリ的な質問ではないですか?
Visual C++ 2010を利用しています。
よろしくお願いします。
99 :
98:2011/12/17(土) 05:10:32.24 ID:MmCdYb7r
98です。申し訳ありません。
ぐぐったらそれっぽいのがみつかりました。わからなければ再度出直して質問させてください。
どうして質問の前にぐぐるしなかったのか自分でもわかりませんが、眠いのかもしれないので寝ます。
本当に申し訳ありませんでした。
>>97 別にいいんじゃね?
慣れてくうちに他の方法も見つかるっしょ。
DXライブラリでも動くエフェクトツール作ったんだけど需要あるかい?
>>103 なかなか凄いじゃん
無料だとEffekseerぐらいしか選択肢ないから期待してるよ
PCの画面がでかい上にLG製なせいか、
めちゃくちゃみにくいんだけどどうすればいい?
俺の目が悪いのは関係ないと思う
>>106 ・DXライブラリに関係がある話題なのか
・そもそもゲーム製作板に関連するのか
・LG製って言いたいだけじゃないのか
・画面解像度下げろ
>>103 サンプルのページ見てたんだけど、
Selene版がリストの一番下にある辺り、謙虚すぎて交換が持てるw
>>103 これで同人ゲームのエフェクトとか作っていいの?
110 :
103:2011/12/17(土) 21:42:49.11 ID:Os1QoaDI
>>108 なぜ色々とバレているのか・・・
>>109 修正BSDライセンスなんで乱暴な言い方をすると
「商用だろうと同人だろうとご自由に、不具合とかあっても責任は取らないけどね」。
このサイトレイアウトで特定しないほうが無理でしょw
ツッコミ待ちかと思ってた
FF11やってるのかー
>>110 旧サイトの内容復活せんの?
DirectX9の情報頻繁に見てたんだが
最近はDirectX9を解説してるサイト減ってきたから困ってる
114 :
103:2011/12/17(土) 23:09:44.50 ID:Os1QoaDI
>>113 なんかもう全然関係ない話になってる気がするけども
今はエフェクトの方をもっとつめて行きたいかなって感じで。
BISHAMONやEffekseerと戦えるくらいにはしたい。
DirectX系の話はいまさら9?って感じでもあるけど、
需要があるならまた一通りやろうかなって感じかな。
>>114 まだまだDirectX9は需要あると思うよ
自分でも今更感はあるけど、今の時点でWinXPを切り捨てる訳にはいかんのよね
Infoseek iswebが終了したせいか、結構良いサイトとか消えたのが痛い
>>114 あ、そうだ面倒ならもうハードウェア固定機能の部分とか要らんのですよ
DirectX 9.0c 以降の部分というか、シェーダ使うやつのみで
ここはひとつ頼みますよ先生
気づかなかったSeleneの作者か
そういえばブログで作るうんぬん言ってたなw
既に完成してたとは
>>114 BishamonやEffekseerはもう触った?
>>89です。
レスありがとうございます。
>WinMain呼び出すだけ
を調べてみているのですが、どうやって、
インスタンスハンドルを取得or生成すればよいのでしょうか?
新しくウィンドウをつくるから、生成するのでしょうか?
ギブアップです。ヘルプください。
関係あるかわかってないのですが、
コンソールのウィンドウハンドルの取得は、
ttp://support.microsoft.com/kb/124103/ja で出来るとかなんとかで、今こんな位置なのですが、果てしなく遠い気がしています。
GetModuleHandle(0); じゃダメ?
WindowsAPI詳しくないからよく知らないけど
>>119です。
>GetModuleHandle(0); じゃダメ?
すごくそれで完璧です。
ありがとうございます。
見つけた報告にきたら、レスありました。
見当違いの方向に進んで、時間を潰して、見付かると一行で、
さっさと質問すればよかったのかもしれません。
またよろしくおねがいします。
122 :
103:2011/12/18(日) 09:18:00.25 ID:Hc4FhX0y
>>115 >>116 んじゃまぁエフェクトツールの合間にでも
以前書き溜めたやつ修正してちょいちょい放出します。
>>118 ぶっちゃけサンプルいくつか見てみただけ。
BISHAMONはすごいツールだとおもうんだけど
「いかにもプログラマーが作りました」的なテキストボックスだらけの
GUIが生理的に受け付けなくて実際に弄ってはないw
Seleneの作者さんってこのスレに居たのか
なんかスゲー
何かずいぶん遠回りして無いか?
コンソールアプリケーションをビルドする設定はわかってるのか?
それで下のような設計
int WinMain(なんとか)
{
cout >> なんとか; //勝手にコンソールに出る
DXLibInitなんちゃらやらゲームのコード // ウィンドウ側のDXLib関数はいままでどおりウィンドウに出る
}
int main()
{
return WinMain(なんとか);
}
winmain() main()の違いを詳しく
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
↑
こんなんおまじないくらいの認識でいいだろ
DXライブラリも描画とメッセージポンプだけに絞ればいいのに
余計にラップするからスレッドやメッセージ処理がやりにくい状態になってるよな。
Windows+DirectXに特化したSDLみたいに使いたいんだが。
>>129 設計思想の違いだな
DXライブラリの作者はああいうスタイルが好きなんだよ
DXライブラリのソース見ればわかる
まさにそういう書き方してる
これは好みの問題だからな、悪いとかは無い
俺は凄い読みにくかったけど、あれが好きで読みやすい人もいるだろう
俺は難しい事はわからないから、何の事かわからんが、
それだけ詳しいなら自分で好きなように作ればいいんじゃないかと思いました。
Cの入門書を読み終えたくらいの人でも簡単なゲームが作れる、くらいの設計思想だからなー。
その思想が徹底されてるところは凄いと思う。
正直ゲーム制作なんて
一人で作るなら自分が納得するぐらいのカプセル化と拡張性でいいよね
設計で止まってるより経験値増やした方がいい気がする
その通り
カプセル化の意味も作っていくうちに分かってくるし
DXライブラリのラップ部分がうざったくなってきたらそれはDXライブラリの卒業時じゃね
DXライブラリで幾つかゲーム作る
↓
DirectXを自前で叩いてみる
↓
自前ライブラリでゲーム作る
↓
DXライブラリに戻ってくる
戻る理由ってなに。
面倒になったから?
DXLibを越える事ができなかったから?
>>137 自分の場合は、両方。
少なくとも、DXライブラリを越えるものを作るのはなかなか難しい。
特定の機能に特化するならともかくね。
後者については、ライブラリを作るのが面倒というよりは、
当然ながら自前ライブラリに比べてユーザ数が違うので、動作確認などの面でもかなり有利になると思う。
まあ、そもそもプレイしてくれる人そんなにいないけどさ。
あとは、単にゲームを作りたいか、ライブラリ含めて作りたいかの差……というか、比率はあるかも?
DXライブラリでもラッパを作ったりはするし、自前ライブラリの完成度にもよるんだけど、
自前だと、どうしてもゲーム以外の部分に手を取られてしまう。
これは自分だけかもしれないんだけど、プログラミングを学んだばかりの頃、
ついHSPやツクールを見下してしまうことがあったんだ。口には出さなくてもね。
でもしばらくして、プログラミングが出来るヤツは凄いけど、
ゲーム完成させることの方が一番難しい、面白いゲームを作るやつは環境を選ばないってことに気付かされた。
ちょうどそんな感じかもしれない。
Dxlibって販売できたっけ
DXlib自体を販売は無理だろ。常識で考えて。
DXLibで作った奴なら販売できるよ
ブログとか解説サイト立ちあげてゲーム制作ノウハウ垂れ流そうと思ったら
DxLib採用するのはいい判断だと思う
ヘタしたら入門用ゲームプログラミング本のほとんどが、
半分〜8割WinAPIのつき合い方で潰されて、最後1章でテトリスや45度角ブロック崩しでお茶濁しになるのが定番
これを1章でDxLib導入
2章10数行のコードで画面作成からキー入力、キャラの移動まで容易に出来るのはすごく良い
面倒なことを後回しにすっ飛ばして本質の部分に比較的早く斬り込んでいける
糞長い「おまじない」を省略できるのがDXライブラリの最大の魅力
解説本もサイトはどれも同じ部分ばっかり
解説通りにやっても敵と味方が撃ち合うとこまでしかやらないから完成すらしないw
>>142 「14歳からはじめる〜」が結構頑張ってたな
先頭の数章で言語とDxLibをちょっとやって、その後は
実際に作りながら必要な文法や関数を
その都度解説していく感じだった
俺はヘタレオールドプログラマだから解説とか読んでもほとんど理解できんわ。
解説って、そんな事教わるまでも無いわ、って基本的な事か
意味がさっぱり解らんわ、というような上級者的なものしかねぇ。
解説もステージクリア処理までやってくれればいいんだが
初期化や場面転換とゲームでも応用の利く重要な部分だと思うんだがな
>>146 その間って、本じゃなかなか身につかんからなあ
ただゲーム作るんじゃなくて効率よく作りたくなった層向けのやつが無いよな
@5日で発売やな
胸が熱くなるな
何の話かと思ったが、ゲームプログラマのためのC++か。
その本自分には駄目そうだ
もっと実例が欲しいわ
あれは他の入門書と変わらない雰囲気がしてる
似たタイトルの厚すぎるやつは結構良かったがこれはどうかな
エフェクト作るのおもしれええ
弄り倒してやるぜ
その本はDxLib使ってるの?
Effekseerとかビシャモンとか使用したら2Dのゲームでもプレイ側に3D再生能力が必要になっちまうかな?
>>156 内部的には既に3Dな気がするけど、具体的にどういう状態?
>>156 DXライブラリVer3.0の時点で3D性能必須になってるんだが
>>157 3Dで作ったエフェクトを2Dのゲームで平面出力できたら自由度があって軽くていいなぁと
>>158 3.0以降なだけで3D再生能力がいるとは知らなかった、3D関連の関数を使った時だけかと
>>159 >3.0以降なだけで〜
DirectXの仕様ってやつだな。
要は、カメラ固定で、遠近法の処理も無く、絵は最前面に描画して方向固定……とすれば、そのまんま2Dだよね的な。
でもそれだと3D的な処理は一切してないわけだし
3D再生能力は必要ないのでは。
別に内側から3D処理部分を取り去ってるわけじゃないから、3D処理能力は必要だし、
(2Dに見える)その中で3D効果を出したりは自由にできるよ
ハードウェア的に2Dスプライト機能なんてものはないからな。
2Dだろうと3Dだろうと最終的には全部テクスチャ貼り付けたポリゴンを描画してる。
描画する座標の違いで2D/3Dの見え方が変わってるだけだよ。
>>156 3D再生能力はどっちにしても必須だけどシェーダ2.0以降が必要になってくる
まあ10年前のグラボでもう対応してるけど
>>145 その本の著者が作ったんじゃないの?DXlib
シューティングとRPGどっちが作成難易度高い??
>>165 違うよ
>>166 アルゴリズム的には同じくらいだけどRPGはリソースが多すぎて永遠に完成しないよ
ベジェ曲線使ってみたけどなんじゃこりゃ
これを選択画面の選択カーソルの移動に反映すればクォリテッィの高い作品が作れるかな?
>>166 ガチのバランス調整だの何なのまで入れれば、どっちが難しいかってのは分からないけどさ、
STGの場合は、劣化インベーダーゲーム程度でもゲームっぽい体裁にはなるってのが大きいよ。
170 :
名前は開発中のものです。:2011/12/20(火) 15:18:41.18 ID:NCMSXLwL
どなたかSRPGを作っている方はいませんか?
参考にしたくてネットで調べたんですけど、全然見つからなかったんで
>>170 俺も学校課題でやってるんだが、電子系だから全然わかんねぇ
誰かDXライブラリ使ったCソースのサンプルゲーム置いてるとこ分かんないだろうか。戦術シミュレーション系を作ろうとしてるんだが。
作ろうとはしてる。全然進まないけど
1フレームごとにAIによって操作する〜ってのを繰り返せばいいんじゃね?
シューティングみたいにあたり判定は距離だけだろうし
参考にしたくて、ってのがどのレベルなんだよ。
ゼロから丸パクリするつもりなのか、ある程度自分で作ってるけど解らない部分があるのか、とで随分話が違うが。
まぁ俺は作ってないがな。
作りたくはあるし、作れなくはないとは思う。大変だろうけど。
シミュレーションは敵の動きが一番辛いというか面倒
弱すぎても強すぎても駄目だしマジ面倒
シミュレーションで強すぎるって人間の思考を超えてるってこと?そんなAI作れるのすごいな
人間と違って視覚する必要がないからいくらでもやりようあるよ。
人間って言っても一般人の話な。RTSプロゲーマーとかじゃ話が別。
AIが難しいのは間違いない事実だが、
ぶっちゃけSRPGの敵なんて、プレイヤーが蹂躙して爽快感を得る為の道具でしかないんだからAIはバカでいいと思う。
STGのザコと一緒だ。
入門書に載ってるような基本的な思考だけ積んでれば、
あとは数だけ増やしても、まあゲームとしては成立するしねー。
ジャギジャギなんだけどアンチエイリアシングしたい
そんなモード無いの?
184 :
名前は開発中のものです。:2011/12/21(水) 14:37:24.49 ID:xp+NWDfa
2008がxp時代のものだからxpに最適化されてるんじゃないの
逆に2010が7、ビスタ向きに作られてるか
xpだけど2008はメモ帳並に即座に立ち上がるのに、2010は起動にすごく時間がかかるな
7とかだとサクっと起動するんだろうか
7ー64でi7 メモリ4Gで2010は3-5秒くらいかな
ということはライブラリの問題ではなくて
ソフトの利便性の話なのか?
出力されるゲームが最適化されるとかではない?
メモリ増やしたら2010も一瞬で起動するようになったはずなのに
今はえらいかかるな、、、アドインとか入れすぎか。
ジュンク堂行ったらゲームプログラマのためのC++売ってたからフラゲしたわw
ざまあみろwwwwwwwこれで勝つるwwwwwwwwwwwwwwwwwwwwww
フラゲってゲーム以外にも使うのか?
俺が勘違いしてるだけ?
フラゲってフライングゲット
発売日より早く手に入れた時に使うような感じだし
ゲームに限らず該当するなら使ってもいんじゃね
フライングゲームってかw
>>190 フラゲはいいけど内容はどうなんだ?
モチベ低下が著しいから、買うかなこれ
どうせ著者の信者か何かだろ
あからさまな宣伝に釣られる方がどうかしてる
まてまて、お前らには
>>190が宣伝とかに見えたのかw
なんて生真面目なやつらだ。
俺は(そんな本買ったからといって何が変わるものではない)という暗黙の了解がある上で
はしゃぐ子供を演じた190にほのぼのとした笑いを誘われて、暖かい気持ちになっていたのだがw
演じてねえしww小学生の頃に親にゲームを買ってもらったときのようなワクワク感だw
最近のゲームじゃ全く勃たなくなってしまったわwww俺はもう昨日ゲットしてもう読み始めてるから
お前らが今からゲットしてももう俺に追いつくことはできんぞwwwざまあwwww
読むスピードは人それぞれだろ、速読できる奴が買ったら追い越されるぞw
もうずいぶん前に原著読んでるってのw
いやだからなんで皆マジレスすんのw
どれもマジレスには見えないんだが
>>197 いいから内容を語れ
それだけの知能があるようには見えないが
>>103のエフェクトツールって簡単にエフェクトを再生できるの?
newで呼び出したclassはヒープ領域に格納されるけど
そのclass内で読み込んだファイルもヒープ領域に格納される?
classとコンストラクタとかだけ?
ものすごく初歩的なことで申し訳ないんですが
カメラに向きを固定していないビルボードを表示するにはどうすればいいですか?
>>206 ファイルの実体が何処にあるかにもよるんじゃ?
>>193 ざっと読んだ感じ、こんなゲームのこんな部分にはこれを使うって具体的な感じではなくて、他の入門書よりはゲーム向きだけど入門書レベルは脱してない感じ
じっくり読めば違うかもしれんけど、これならセガの人の本のがいいんじゃね?
何が載ってんの?
テクニック紹介
それ以外を期待して読むとがっかりすること間違いなし
つまりいろんなテクニックをすでに獲得している私には不要な本ということだな
DXライブラリの非公開関数の使い方とか解説した同人誌とか出したら売れるかしら
カメラを固定した状態で
モデルのZ軸(奥行)を減らす(カメラに近づける)と
画面上でズームする速度がだんだん遅くなります。
(等速度で拡大して行って最終的に描画領域から外れるのが理想)
>>212 ありゃ欲しいけど、ユーザーが少な過ぎてまったく旨みはないぞ
とりあえず第一部を読み終えたけど
今のところC++入門講座という感じでゲームプログラミングという感じがあまりしないな
第二部から面白くなってくるのかな
第1部 C++の要点
第1章 継承
第2章 多重継承
第3章 const、参照、キャスト
第4章 テンプレート
第5章 例外処理
第2部 C++の活用
第6章 パフォーマンス
第7章 メモリ割り当て
第8章 C++のパターン
第9章 標準テンプレートライブラリ:コンテナ
第10章 標準テンプレートライブラリ:アルゴリズムと高度な話題
第11章 STLを超えて:カスタム構造とアルゴリズム
第3部 ゲーム開発のテクニック
第12章 抽象インターフェイス
第13章 プラグイン
第14章 C++とスクリプト言語
第15章 RTTI(実行時型情報)
第16章 オブジェクトの作成と管理
第17章 オブジェクトのシリアライズ
第18章 大きなプロジェクトの注意点
第19章 クラッシュに耐えるゲームの作成
なんか売れとるみたいやね
3部だけ読みたい
こりゃゲーム作成まで心が折れそうだw
こんなんで初心者はモチベ保たれるのかね
初心者向けじゃなくて中級者向けなんじゃないの?
確かC/C++はちゃんと理解しててその上でゲーム製作に最適化されたコーディング手法を学ぶって本だろこれ
序章から転載
本書は主に、ゲーム開発や、それに近いリアルタイムグラフィックスやシステム開発のような分野で
C++を使うソフトウェアエンジニアを対象としています。ある程度のC++の経験を持ったベテランや、
業界には不慣れでも強力なプログラミング経験のある人は、いずれも本書から得られるものがあるでしょう。
なので初心者には向かないだろ。
216を見る限りじゃ、俺の欲しい内容に近いのかもしれん……。
第3部第19章だけ気になるな
シリアライズでスナップショット取ってたり例外からの復帰の事なのか
3部だけもっと濃密にしてほしいな
1部、2部はもう不要ですたい
非ゲーム系のPGに向けた、ゲーム作りのセオリーや、既存の知識をゲームに転用する方法
ってのは確かに嬉しいよね。
これ買うぐらいなら
GEMS買うわw
原著の価格は同程度…
だーかーら
その本はDXライブラリとどう関係あるんだと聞いている
本の話ならゲ製に専用スレあるだろが
じゃあDXライブラリの話題……そうだ、誰か>207あたりに答えてみるとか。
わざわざ目次なんかまで載せて
ここでDXライブラリ出てこない本の宣伝すんなよ
うざ
>>207 カメラの角度とかを保存しておいて自分で計算して描画するしかないんじゃないかな
ところで、現在のPCってグラボどのくらい積んでるもんなんだろうか
文字列描画を自前のテクスチャでやろうとすると、漢字全部詰め込むとそれだけで30MB以上になっちゃうんだけど、
大して重くもないゲームにVRAM128MB要求して大丈夫なのか不安
開発用PCで快適に動作すれば問題ないだろう
どうせ5年もたてば今の最新PCもポンコツと化す
テクスチャには必要な文字だけにしたいな
速度気にしないなら動的生成やメインメモリに展開されちゃってもいいからとりあえず要求してみるとか
オンボとかだとVRAM領域に乗るかはそこまで需要でもないし
C++ってクラスと継承以外何か新要素あったっけ
>>232 すでに5年以上前のPCだしな俺の
>>233 文字全部にフォトショで装飾くわえてるからゲーム修正毎にテクスチャ作ったりできないのさ
まあ一番最後にロードすればいいのかな……
フォント載せるのはいいけどライセンスには気をつけろよ
>>236 ベンダに連絡して問題ないフォントのリスト貰ってるから大丈夫
>>234 templete
付随してstlやスマポ
後は細かい文法
第二部まで読んだがやっぱりC++のお勉強という感じでゲームプログラミングという感じがあまりしないな
第三部になったら面白くなるんだろうか
それも内容があんまり深いこと書いてなくて詳しくは参考文献読んでねじゃただの他書の宣伝じゃん
カメラを一時的に指定の座標に移動し、指定の角度にセットする
(EXVSガンダムの、ライバルが登場したシーンみたいに自分の座標から敵の座標まで0.5秒ほどかけてカメラが移動する)
というのをやりたいんだけど
どうしたらいい?
現在のカメラの座標(ベクトル)と敵のカメラの座標(ベクトル)はあるんだけど30(0.5秒)で割った数値分づつ移動するにもベクトルの割り算って・・・
>>231 ありがとうございました
頑張ってみます
>>241 カメラ.x = 元.x + ((元.x - 後.x) / 最大時間) * 経過時間 をxyz分やる
便利な関数とかあるかもしれないけど
現在座標 - 目標座標で移動量が出るから
後は引いた数値を適当に除算するなどしてフレーム毎に現在座標に加算していけば
良いと思う
俺はカメラの移動をそうしてる 引いた数値に質量や摩擦を計算すると
すべりとか設定できるし、まぁこの場合直線移動だけど…
減らした差分よりターゲットの移動量のほうが多い場合に延々と引き離されるんじゃね?
ベクトルって考えるからややこしいんだ
2Dゲームのxyの移動と同じに考えればいい
メンバメソッドの引数がすでにベクトル形式なんですが、分解できるんですか?
247 :
名前は開発中のものです。:2011/12/25(日) 12:44:16.63 ID:2J4Gowsw
親クラスのコンストラクタって子クラスのインスタンス作った時勝手に呼ばれんの?
画像とか音楽って起動時に全部読み込んでおいて、適宜使う感じにした方が
ストレス無いんかな
中規模以下なら問題ない
モデル読み込んでる間フリーズするんだけど
ロード画面で音楽流したりロード用のエフェクト作るのどうやるんだ
それフリーズって言わない
スレッド生成とかできないの?
実行速度とかどうでもいいから、まずはとにかく動くものを作ろうと思った
約5万〜100万位のキャラクターを毎フレーム新しく作成して、コピーして、描画した
とりあえず、敵味方背景を表示できたが、1FPSの処理に15000msかかった
ワロタ… ワロタ…(´;ω;`)
>約5万〜100万位のキャラクター
そりゃいくら何でもも多いわ。何をやろうとしたの?
メモリ確保はめちゃ重いらしいから適当にラップして自動で使い回しできるようにするといいよ
640*480の画面でも30万ドットしかないわけだが
ところでロード画面でのアニメーションとかは読み込みの合間合間に描画とフリップ処理を挟むだけで普通に実装できるんじゃないだろうか
Fate/stay nightの制作者本に、プログラマが読み込み時間について書いてた
「一秒間に5400回転するエントリー向けHDDの場合、平均アクセスタイムが18ミリ秒、SVGAのBMP画像(約470KB)を一枚読み込むのに、遅くとも17ミリ秒」
最近のHDDだともっと早いし、BMPでなく圧縮されたPNGならHDDからの読み込みはもっと早くなるはず
なんで、「画像ファイルをメモリに読み込み→アニメーション描画→メモリから展開して読み込み画像ハンドルに→アニメーション描画→次の画像へ」
ってのを組めば理論上アニメーションさせつつロードはできる
でも普通にロード時間は長くなるのでこういうのは大嫌いだ 作者の自己満足でしかないから
そもそも普通に組めばそんな長いロード必要にならないし、PCゲーはむやみにプレイ中にロードを待たせてはいけない
……と俺は思ってる
>>253 色と座標を持ったクラスAを毎回作って、DrawPixel()でXGA画面いっぱいに描画しようとしました
全キャラクタデータのmultimap<xy, class>から、画面内にいるキャラクタをみつけて、Aのlistを作って、描画クラスに渡しました
頭の悪いやり方なんだろうなー(´・ω・`)
頑張ってこれから何とかします
[「表示」ならまだしも、毎フレーム「作成」ってのがよくわからん。
>>256 サイズが画像よりちょっと大きいってだけで、ほぼ同じ感じでできるんじゃないかな
MIDIやMP3だと独特の待ち時間があったりするっぽいから、OGGファイルとかなら
曲は画像と違っていくつも同時に使うものじゃないし、アレなら画面切り替え時にでもちょいっと読み込んでしまえばいいと思う
>>255 そういう手法もあるっちゃあるがそんなことするよりスレッドもう一つ立てたほうが早い
DXライブラリはprocessmessageと描画を同一スレッドでやる限りある程度スレッドセーフ
ある程度とか怖いわ。
どの関数がスレッドセーフなのか全部わかるようになってないといみないでしょ
>>257 気になるのは手順よりも、数の方なんだが。
起動時の作者ロゴ表示時にリソース全部読み込みゃええねん
低スペックでも動くような軽いゲームじゃない限り、プレイできるPCはメモリもVRAMも十分積んでるはず
メモリ少なくていちいち破棄と読み込みを繰り返さなくちゃいけないコンシューマ機の欠点を真似ることからしてアレなのだから
プレイする方も、せっかく積んでるメモリが生かされずにちまちまロードされてちゃ嫌だろう
そういやオプションで起動時に全部一括読み込みとか設定できるゲームあったなあ
たしかにあれは快適だった
>>261 ソースコードあるんだからそんくらい全部調べろよ
>>263 中規模くらいからはもう無理
世に蔓延る低スペックを舐めない方がいい
266 :
名前は開発中のものです。:2011/12/26(月) 13:47:20.15 ID:n4QFqxCn
>>265 そんな沢山画像を使うような気合はいったゲームは元々低スペPCではまともに遊べないからあまり気にしなくていい、という主張
VRAMはオンボ除くと128MBが最低ライン
512*512のテクスチャを100枚読み込んでも空きがあるので、よっぽど手抜きしてなきゃ足りなくなることはない
格ゲーみたいな例外もあるけど
MMDで作ったモーションデータを適用したら腕の部分だけ関節が曲がってないんだけど
どうしたら良いんだ?
MMDで読み込むと普通に関節が曲がってる
>>267 沢山画像使うようなゲームでも低スペPCで遊べるようにするためのリソース管理だろ
CPUがネックになるにしてもグラボがネックになるにしても自分から可能性を狭めてどうする
ゲーム頒布してまともなサポートしたことある?
>>269 ゲームは何度か配布してるし、自分がずっと低スペPC使ってきたユーザーだったからこそわかる
ボトルネックを考えてみると、処理能力が問題になる環境やゲームは数あれど、メモリ容量がネックになる環境なんてほとんどない
そして、マシンの処理能力はメモリ量と比例する場合が殆ど。
考えてみてくれ。メモリ量がボトルネックになるようなゲームなんかまずないだろ……
サポートが必要になるほどプレイヤーいねえよー
>>270 自分が低スペって言っても低スペには色々種類があるだろう
特にメーカー製は信じられないアンバランスさで動いてることも多々ある
実際メモリがボトルネックになったことはあるよ その時は全部展開していたが
ちゃんと必要な分だけ読み込むようにして実際軽くなったという報告を貰った
君ら凄いゲーム作ってんだね。
俺なんて512*512が二枚で動くゲームだから、ステージ毎に全読み込みなおししてほとんどタイムラグないわ。
BGM開始で一瞬止まるけど。
>>272 PCはメーカー製こそ変なバランスなのはいまどきないだろ
例えばどんなスペックなんだ?
メモリがボトルネックって、VRAMのことだろうけど昔の話にしか思えない
そうじゃなかったらちょっとどんな風に組んでたゲームなのか純粋に見てみたいぜ
背景をでかい一枚の絵にしたSTGとか?
そういや、VRAMでもフラグメンテーションが起きる可能性はあるんだな。
>>274 win7なのに512や1GBしかメモリ積んで無いとか山ほどあるよ
或いはメモリは足りててもCPUがceleronとかatomとかね
VGAの話になれば更にメーカ製の性能なんて信用出来ないし、オンボは駄目って書いてるのにオンボでプレイする奴は山ほど出てくる
ただ、読み込みを最低限にすればオンボでも動いてしまう そういう保険
ゲーム自体は別に普通のゲームだよ 背景チップが数百種類あったりエフェクトが百種類以上あったけど
>>276 普通に素材作ってその枚数じゃすでに中規模じゃなくて大規模だし、個別に対処するべきかなり特殊なケースじゃないかw
いまどきはそれで普通って感覚なのか……。
インデックスカラー形式で画像描画しとけばハードウェア支援なしでも旧式PCでも余裕
アルファブレンドは使えないが
>>277 使い回しが効くからそんな大規模って印象はなかったけど規模の想定にズレがあったかもね すまん
自分はとりあえずプロジェクトが大きくなった時のことまで見越して個別ロードのクセを付けたほうがいいとは思ってる
フレームワーク組み立てる段階からそうしておけば後が楽だし
FPSってどうやって保ってる?
スリープの奴で60FPSにする方法使ってるが
海外のモニターだと50FPSになっちまうみたいだし
可変フレームレートってやつやるしかないのかな〜なんかめんどそうだぜ
別に日本のディスプレイでも70FPSにできたりするし、そのあたりはディスプレイドライバの設定次第だね。
だから俺はもう垂直同期信号待ちはOFFにして、時間計ってウェイトかけて60FPSになるようにしてる。
ティアリング発生するけどしょうがない。
2パターンくらい作って選択できるようにして、あとはユーザに丸投げ
>>282 そんな方法もあるのですか
ティアリングの発生はどんなもんです?
285 :
名前は開発中のものです。:2011/12/27(火) 01:32:55.50 ID:xualOS+/
ディスプレイのリフレッシュレートが 50 Hz に設定されていたら、
ゲームプログラム側で 60 FPS 出ていても実際には 50 フレームしか表示されないんでしょ?
同期とってなければ50フレームの速度で60フレームと同じ動きを表示してくれるはず
>>285 ヘタするとティアリングで体感で30FPSとかザラ
288 :
名前は開発中のものです。:2011/12/27(火) 06:39:25.62 ID:YcQvTMDw
>>284 >ティアリングの発生はどんなもんです?
キャラクターとか背景に横の動きをさせたらモロに見える。
短時間ならいいんだが、常に横の動きさせてたらもうね……。
結構きついのか、垂直同期きって手放しでは喜べんか
日本のゲームが60fpsのまま海外で売られてるんだから問題ないんじゃないの
単純に垂直同期オンにするのは止めとけよ。
垂直同期とウェイトかけて60fps固定を選べるようにするとかした方がいい。
あと、海外だと50Hzってのはどういう意味だ?
普通に海外でも国内でも主流は60Hzでしょ。
ただしPCゲーマーなら60Hzどころか75Hzも少ない方で今は100〜120Hzが主流。
しかも大抵はグラボのドライバー設定で垂直同期強制オフにしてるので
2Dゲーなら1000fpsとかでてゲームが15倍速になったりすることもザラだからマジで気をつけろ。
>>292 垂直同期のONOFFに加えて60FPS固定もONOFFするの?
CRTモニタのころは120Hzとかあったけど、液晶が主流のいまどき
そんな高いフレームレート出るのか?
その「PCゲーマー」ってのがどの辺りの層を指しているのか知らないけど
俺の場合は、FPSを60にしたいときには
(1) ウィンドウモード起動かつ今のリフレッシュレートが60Hz
(2) フルスクリーンモードかつ60Hzが利用可能
(1)or(2)の時には垂直同期ON、そうでない場合は垂直同期OFF+タイマー制御にしてる。
これで十分。
垂直同期をわざわざ切ってる奴のことまで考える必要ない。
>>294 今は3D対応モニターが増えてきたから120Hzも少なくないとか?
タイマーを使う場合になるべくV-Blank期間の開始位置に近づけてやりたいけど
うまく位相あわせる方法ある?
PC側で垂直同期切ってたら無理だけど、そうでないなら
「プログラム起動時に、垂直同期ONでScreenFlipして、それにかかった時間を分割して〜」ってやり方したら
ほとんどティアリングは起こらなかった。はず。
(フルスクリーンモードの時の話)
試しに垂直同期待ちとタイマーを切ってみたら、500FPSくらいになってわっほぃ
299 :
297:2011/12/27(火) 18:20:36.03 ID:UQ9urrQ2
あ、いやごめん、やっぱこのやり方じゃ無理かも。
出来てたきがしたんだけど、今やってみたらダメっぽい。
>>293 垂直同期させたいってことは普通60fps動作前提で作ってるわけでしょ?
だから垂直同期OFF設定の時にはウェイトかけて約60fpsになるように動かせばいいってこと。
>>294 120Hz液晶モニタは電気屋行けば普通に売ってるよ。
PCゲーマーってのはPCゲームを購入してプレイする層のこと。無料ゲームやエロゲーマーは除いてね。
だがここ数年で120Hz液晶がかなり安くなったから遂に無料オンラインゲーマーにまで浸透し始めてる。
わざわざって言うけど3Dゲームをやるときは垂直同期は切るのが普通だからな。
今時2Dゲームしかやらない人の方が少ないって。
>>300 マジか、普通に売ってるのか
ここしばらく真面目にモニタ見てなかったから知らんかった
>3Dだと垂直同期切るのが普通
スレがスレだから2Dメインの話だと思ってた
すまん
結論としてはフルスクリーンにしてAPIで60HzにセットでFA
>>300 3Dゲームっていうか可変FPSのゲームじゃね?
商業の3Dゲーはほぼ可変だから
同人ではまだまだ3Dゲーでも固定FPS多いよ
可変FPSの場合って、オブジェクトの移動距離はどうしてるんだろ?
>>301 3D対応モニターであれば3D表示するのに2倍のフレームが必要だから120Hzが普通
>>304 その都度FPS(むしろ1フレームの秒数)を測って移動量を計算するだと思う。
>>306 60FPS超える→倍速にならないように時間基準
低FPS→処理落ちさせるためフレーム基準
みたいに分岐したりするのかな
秒数で移動計算するならFPSが60超えようが関係ないよ
>>301,303
俺が言ってるのはユーザーに手間取らせるくらいなら製作者側で対処すりゃいいじゃんってことよ?
DxLibで作ったゲームだけしかプレイしてないとか、
固定FPSの3D同人ゲームしかプレイしてない人とか
そんなユーザーはほとんどいないでしょ。
まあ、どうしても実装が面倒くさいならReadmeに「垂直同期ONにしてください」、
「モニタのリフレッシュレートは60Hzに設定してください」って書くんでも好きにすりゃいいけどさ。
オンラインゲームでラグビーがひどいとき画面がカクカクしながらも
正常な速度で移動してるじゃん?
あれってどうなってるんだろう
だーから上に書いてあるじゃん
ある時刻t1(ms)からt2(ms)の間に移動した距離s
s=v*(t2-t1)
vの単位が(px/ms)ならsの単位は(px)
vの単位が(m/ms)ならsの単位は(m)
…
たとえば60FPSで1フレームあたり10px動く想定のキャラの速度vは10*60/1000(px/ms)
鯖に情報届かなくても同じ方向に移動していると仮定して、勝手に処理したりするのもある
それはネトゲの同期の問題でまた別だな
DXライブラリでも3D出来るよ(迫真)
PSのバイオハザードぐらいなら余裕なんじゃない?
時間とスキルあれば余裕だわな
なあMakeGraph()とMakeScreen()を使い分けるの面倒くさいから
全部MakeScreen()を使ってやりたいんだけど、MakeGraph()の方が
アクセスが速いとかメモリ消費量が少ないとかあるの?
フルHDのライフゲームを作ろうとしたらFPSが2しか出なかった
描写って大変なんだね
1セルが1ドットってことか?そりゃなかなか面倒だな。
描画を最適化すりゃできなくはないと思うよ。
なかなかバージョンアップこないなぁ
ローカル修正版アップしてもらってはいるんだが・・・
バージョンアップしました->副作用でバグ発生ってかんじで
ソース見てみるとスゲエスパゲッティで外部の人が気軽に触れるような状況じゃないよな
コード上げて指摘してる人もいるから分かる人には分かるんだろうね。
分からないし分かりたくもないからこれ使ってるわけだけど。
自分で勉強するならOpenGL選ぶしね。
バグ報告の時にソースの問題箇所を提示するのは、言うほど難しくは無いよ
VisualStudioの機能を使って、問題のある関数の呼び出しを追い掛けていくだけだし
ソース自体が読みやすいかっていうのとは別の話だけどw
俺はRotateZYAxis関数の動作が知りたくて頑張って追い掛けた
以外とシンプルな実装で驚いたな
理由:ネットにそう書いてあったから
じゃあDxlibで開発して
リリースする時に必要な関数追いかけて中身だけコピペしてくれば
「Dxlibは使ってません!」
ってドヤ顔で主張できるな
そんなことしてると作者開発やめるぞ
>>325 >コピペしてくれば
使ってるじゃん。
せめてまったく同じロジックでいいから書き直せよ。
更新来てるな
更新情報ざっと見ただけだけだけど、主な変更点は既存のバグ修正かなー
ライブラリ入れ替えといた方がいいんかね
リファレンスの方はいつ更新されるんだろ
MIDIファイルの再生音量について質問。
SetVolumeMusic()で音量を調節してるんだけど、
例えばデフォルトの255から数字を下げて行く時、音量の下がり方が他の音声ファイルに比べて激しい。
WAVEやMP3なら、1まで下げてもかすかに聞こえたりするのだけれど、
MIDIの場合は128の時点でほぼ聞こえなかったりする。
これってそういうもんなのかな?
どこの環境でもそうなのか、自分の環境のせいなのか判断つかない。
コンフィグ画面で、5段階くらいの音量調節機能を付けようと思ってるんだけど、
効果音(WAVE等)用の音量調節と同じ割合で設定していいものか迷ってる。
MIDIの音量って128段階だからじゃない?
迷うなら100段階でもいいと思うよ。
PCの音量いじらなくて済むからソフトで調整できるのはありがたい。
ありがとう。特に自分だけの環境ってわけじゃないなら、MIDI用に決め打ちで作っちゃっても良さそうね。
vol = 0〜255 として、MIDIの場合のみ、
DxLib::SetVolumeMusic ( (vol<=0) ? 0 : (vol+1)/2+127 );
としてみたんだけど、悪くなさそう。
MIDIは環境依存ってのが定説でしょ?
問題がなければOGG MP3をお勧めする
DirectMusicというものが……
環境依存にならないぶん、それ用に用意したMIDIじゃないとまともに鳴らないけど
そういえば前に試そうとしたんだけどDirectMusicで再生したものを録音してOGGとかに変えちゃうのって
DirectMusicのライセンス的なものは大丈夫なのかな?
調べようにもどこを調べればいいかわからん
問題ないから安心しておk
音源は文字のフォントに似たようなもんだけどそこまで厳しくない
やっと更新きたぜ
メニュー開いてる時はゲームへ影響を与えずメニューだけ操作できるようにしたりとか、
メッセージ表示中はボタンを押しても他のメニューやキャラの動作に影響を与えないようにとか、
どう組むのが一番スマートなんだろう?
シーンをスタック状に管理して動作するシーンはスタックトップのみで描画するシーンはスタックに乗ったすべてのシーン
とか。
昔考えたけどまだ一回も試してない
>>339 俺の場合はメインループの開始時処理と終了時処理を全部纏めておいて、
while(!processMessage()) {
begin_Loop();
// メニュー操作
// メニュー描画
end_Loop();
}
こうしてる
何も考える必要ないから非常に楽
予め纏めるようにして組まないといけないのでそこだけ面倒だが
あ、メニュー呼び出し関数内で独自のループを作るってことね
Dixqにネット工作疑惑?
なにそれこわい
べつにあの人は昔からこのスレに書き込んでる人だしなぁ
>>340 盲点だった!
シーンもオブジェクトと同じように優先度をもたせりゃいいのか……
>>341 すでにフレームワークは出来てしまってるのでできない……残念
Dixqって誰だ、と思ってぐぐったらアソコの人?
それなら別に今に始まった事じゃない。当初から工作らしい書き込みはあちこちで見た。
ループ内で
ゲーム中
{ゲーム実行時の各種更新処理}
{ゲーム実行時の各種表示処理}
ポーズ中
{ポーズ中の各種更新処理}
{ゲーム実行時の各種表示処理}
{ポーズ中の各種表示処理}
と組めばよい
ああ、メニュー開いてる時はゲーム画面表示しない場合はポーズ中の{ゲーム実行時の各種表示処理}なしにするとか
そんな感じで
描画と操作分けておくと楽だよな
>>348 いや、それは大前提の話じゃなかったのか…?
セガ本ずっと前から興味あるけど高いじゃないですかー!
スタックってどーやんの
スタック用の演算子ってか記号ってかあったっけ?
STLのstack使うか、push・pop関数だけぐらいなら自作する
つまんない質問だと思うんだけど、
パッド入力とか判定する時に↓のようにやるよね?
if ( ( PadInput & PAD_INPUT_9 ) == 0 ) 〜
こういう入力情報を強制的にリセットしておきたいんだけど、どういうやり方がいいかな?
つまり、
PadInput -= ( PadInput & PAD_INPUT_9 ) ;
こういう感じの事をやりたいんだけど、もっとスマートな方法があれば知りたい。
入力をプログラム側からいじれるようにってことかな?
それなら入力情報をクラスや構造体で包んで、その中で一度入力情報を整理するのが拡張性としてもいいと思う
毎フレーム入力を受け取って、押されてないなら0を代入、それ以外なら1を代入するか加算するって感じで
if ( Input.button9 == true ) //押されている
if ( Input.button9 == 0 ) //押されてない
ってのができるように
内部ではちょっとややこしいのは変わらないが、
これなら外部から Input.button9 = 0 と書くだけでリセットできる
何を持ってスマートとするのかだなあ
PadInput にキーボード、パッドフラグを格納してるなら
if ( PadInput & PAD_INPUT_9 ) PadInput ^= PAD_INPUT9;
もしくは
PadInput = (PadInput | PAD_INPUT9) ^ PAD_INPUT9;
のような感じか。
特定のキーだけ解除したいなら結局どこかで分けて書くしかないと思う
PadInputからPAD_INPUT_9のフラグをクリアしたいだけなら
PadInput &= ~PAD_INPUT_9;
こう
色々ありがとう! 試してみます。
普通はラッピングする
DXライブラリ標準の入力検知方法なんてすっかり忘れてたぜw
そのへんラッピングしておくと、
キーコンフィグやらキー情報の再生(リプレイ)、デバイスの選択なんかも任せられるから便利よ。
ラッピングってなに?
やっといてね、ってお願いすれば全部やってくれるようにすることだよ
利用者は忘れん坊さんになれる
自分がよくやる処理をひとまとめにして使いやすくしておくこと
オレオレフレームワークへの第一歩
DXライブラリ自体がDirectXのラッピングだがな
354です。おかげさまで上手くいきました。
いえね、キー入力処理はまとめておいてね、そのなかでキー入力情報を記録しておいて
それを再現する事でリプレイ再生するようにしていたんですけどね、
コンフィグでキー設定変えたら、通用しなくなることにいまさらながら気づいたわけでしてw
(Aボタンがショット設定の時に記録したデータを、Bボタンがショット設定時にリプレイ再生しても弾を撃たない)
キー設定によって入力情報を並べ替えるためにまずビットごとのリセットをしたかったわけです。
>>365 リプレイ再生のとき、ゲーム部分に直接キー情報を渡さないほうがいいんじゃね?
同インターフェースで別の関数にすり替えるとよかったんじゃないかな
俺のチンコもラッピングだがな
へいよちぇきらちょ
返り値だけでオーバーロードってできないの
キーのラッピングって何が必要だ
過去の入力キーとかも保存するの?
直前のフレームの入力状態は保存しておいたほうがいい
直前押されてなくて、現在押されてるなら、「ボタンを押した瞬間」っていうのを判定できる
>>373 好みだけど、それは受け取る側に判断させてるな自分は
手元の入力計ラップクラスを覗いてみた。
・DXライブラリから渡されたキー情報から仮想ボタン情報をセット
・キーコンフィグ
・デバイスの種類と番号(キーボードか、何番のパッドか等)設定
・仮想ボタン情報の上書き(リプレイ用)
・ボタンが押されているかどうかを返す関数
・押しっぱなし/押した瞬間/離した瞬間/離したまんまかどうかを判別する関数
・何フレーム押されたかを返す関数
・キーリピートありの入力判定
とりあえずこのへん。
自分で作ったはずなのに、知らない機能があってびびるw
376 :
名前は開発中のものです。:2012/01/06(金) 12:17:46.62 ID:M5xe4aXc
最新版メモリリークしてね?
378 :
sage:2012/01/06(金) 18:11:47.57 ID:BxuPKQJU
3D作ってる人に質問なんですが
フリー版メタセコで作ったモデルにはボーンの情報が入らないから
RokDeBone2でボーン情報を入れてからxファイルとして保存してDxLibModelViewerで確認しようとしたら、
エラーが出たりボーン情報が書き込まれてなかったりするんですが
今DXライブラリ使ってる人でおすすめの3Dモデル作成ツール(ボーン情報含む)ありますか?
もしくはメタセコ、RokDeBone2でボーン情報をDXライブラリ側に渡せるモデルの作成方法を教えてほしいです。
メタセコ買えばすべて解決するけど?
わざわざフリーライブラリ使ってる人にその壁は超えられないよ
知らないなら黙ってりゃいいじゃん馬鹿が
>>379 >>380 やはり有料版では簡単にできるのですね・・・
有料版メタセコで本当にやりたいことができるのかどうかわからなかったので今まで購入を渋っていたのですが、
情報を集めつつメタセコ購入も視野に入れていきたいと思います。
>>381 情報ありがとうございます。
いろいろ試してみたいと思います。
現在の表示している画面(ウィンドウの中身ではなくモニタに映っている画面)の幅を取得する関数ってあったっけ?
>>384 DxLib.hを調べてみたら、こんなのがあった。
// 起動時のデスクトップの画面モードを取得する
int GetDefaultState( int *SizeX , int *SizeY , int *ColorBitDepth ) ;
手元のデュアルディスプレイ環境で試してみたのだけど、プライマリのモニタのみ情報を取得した。
セカンダリの情報を得る方法は不明。ただしモニタの構築環境によって差はあるかも?
おお、まさしくそれだ! ありがとう!
VRAMのメモリー不足
アクションゲームの移動はカーソルキーとWASDのどっちがいいのかな
自作ゲームだとカーソルが多いけど、WASDの方が楽じゃない?
ESDFで移動してWAZで素早く武器チェンジできるように設定しておくのがプロ
コンフィグで選択できるようにするのが最善なんじゃね?
一応WASDも出来るようにはしてるけど、自分は単純に苦手だなあ。
>>388 VRAM不足ですか・・・
解決策としては描画範囲を工夫するなどになるんでしょうか
>>387 自キャラが地形データより先に描画されているためかも知れません。
地形データの描画処理を先に呼ぶと解消されるかも知れません。
球状なのはおそらく当たり範囲を可視化したスフィアメッシュだと思います。
>>394 返信ありがとうございます。
なるほど・・・当たり判定用のスフィアってのはすごいなっとくです。
おっしゃられた通りに描画順を変えてみようかと思ったのですがもともとのソースが
void Render_Process( void )
{
// ステージモデルの描画
MV1DrawModel( stg.ModelHandle ) ;
// プレイヤーモデルの描画
MV1DrawModel( pl.ModelHandle ) ;
// プレイヤーの影の描画
Player_ShadowRender() ;
}
となっていて地形データのほうが先に描画されてるみたいです。
今ちょっとソースをいじれない所にいるのですが後で念のためステージとプレイヤーの描画順序変えてみますね。
ところでお前ら完成したゲームは公開するの?
完成したら公開するよ
完成したらね・・・
公開してるよ
反応ないけど
とらのあなとメロンブックスで売るので買ってくれ
既にコミケで売ったし委託もしたしDLショップでも売ってる。
今作ってるのも出来たらそうするよ。
製品化するだけのドット絵か3Dモデルを用意できないわ
初心者はMMDには絶対手を出すなよ
可愛いモデルが少ないし
あったとしてもそれは作者の凝り性でIKのブラックボックスをフル活用したモデルでdxlibで使えない仕様
俺はこれで一週間潰した
PMD使えるってのはすげー売りになってると思う
DxLibで3Dしてる人の大半がPMD目当てじゃね?
PMDつながりでFM音源も使えればいいのに。
今でもPMDと言ったらこっちだし
>>402 こんな関数も用意されてるんですか!
情報有り難うございます。少し試行錯誤してみますね。
久々に公式からダウソしたら勝手に解凍するからどこに展開したか探すのにむっちゃ時間掛かったわ(´・ω・`)
>403
IK部分はブラックボックスだったけど
MMD界隈ではMMD作者がその部分のソース公開してたよ?
俺もそれ参考にさせてもらって自分のエンジンに組み込んだし。
>>408 IKってPMDeだけで付与したり削除したりできるの?
>409
よくはしらんな。俺はメタセコのプラグインでIKつけてるし。
ただ、既存のモデルに腕IKを付けるプラグインとかもPMDE用に公開されているし
できるんじゃねーの?
>>409 できるよ。そもそもPMDeがメタセコとかで作ったxファイルをMMDで使えるようにするためのツールだし。
最新版でのメモリリーク問題は解決したみたいね。
それと旧バージョンのDLも出来るようになったみたい。
最新版というか暫定版だね。正式採用はまだみたい。
メモリリークバグとやらが今俺が作ってるのにどれだけ影響あるかは判らないけど
とりあえず入れ替えておこう。
遠近法の解除ってどうやるんですか?
DxLib.h 見て見たけどそれっぽいのないし、教えてください
正射影のこと?
消失点なしSetupCamera_Ortho
うおおおお ありがとうございます
射影行列いじったり、スクリーン・ワールド・ビュー変換行列をいじり倒してました
なんという無駄骨
何故ヘッダは見るのにリファレンスを見ない
ヘッダみたらプロトタイプ宣言だけで中身が無かったぞ!
どこにあるんだ
>>419 中身はコンパイル済みの状態でDxLib.libに入ってる
コンパイル前のをみたけりゃ別途配布されてる
ソースコードをダウンロードすればおk
ソース見るだけじゃなく、DXライブラリを改造できるようになると楽しいぞー
バージョンアップ時の保守が面倒だけど
昔はちまちまやってたけど、最近はusing namespaceを消すくらいだなー。あとはラップ関数でなんとか出来る範囲だけ。
例えばどんなことを改造して実装してるん?
内部の仕様に合わせてブレンドカラーと透過度を一度に指定できて無駄な処理を省いた高速版をつくったりとか、
ウィンドウスタイルのconst配列に自分の好きなスタイルを追加したりとか
425 :
422:2012/01/12(木) 14:25:54.08 ID:NbLlihQC
オリジナルのブレンドモードとか設定してた気がするけど、結局使わなかったなあ
現実の木陰に隠れた草むらみたいな表現したいけどできない
誰か教えてくれ
MV1系の関数で、テクスチャのUVを変えられる関数ってある?
動的にUV弄って動かすにはDrawPolygonIndexed3D()使うしかないの?
pmdで猫目リンクみたいに、特定の方向に視線を移したり顔の向きをかえるにはどうしたらいいの?
目の動きだけモーションファイルに分けてプログラムで上書きする?
うんこちんちん
>>428 目や首と目標物との位置関係から計算して動かすとか。
>>430 もうちょっと抽象的な話をしてるんじゃw
tes
攻撃を食らって吹っ飛ぶシステムを導入したいが
ふっとぶ方向を認識するために一つのキャラに方角の数分当たり判定作るしかないんだろうか?
あたったときに位置関係から角度計算すればいいんじゃね?
おお、そういう方法があるのか
相手→自分のベクトルか
座標から角度を計算して角度からベクトルを計算してそれを反転すればいいのか
当たった時の武器のベクトルを
当たった位置と当てられた者の重心とのベクトルに分力したベクトルだよ
そのベクトルを武器とそいつとの重量比で割ったもの
ただしそいつが足で踏ん張れるくらいなら
ベクトルでなく回転トルクと転倒モーメントに変わる
>>433 ゲームによっては、素直に自分の背中側に吹っ飛ぶとした方が良い場合もありそうね
ジャンプ大キックでのめくりというヤツだな。
エセ3Dにして立方体だらけのシューティング作って、あたり判定実装したら超重くなった;;
SetDrawBlendMode みたいなのの 3D バージョンないかな
弾幕ゲーで
キャラ1000弾3000くらいの当たり判定どうやってんだろな?
そんな弾幕ゲーあるか?
基本弾幕は総当りだよ
>>443 そんなに弾の出るゲームはないと思うが。
弾幕とかなら線形4分木なんて方法で当たり判定めちゃくちゃ減らせそうだけど
ガンドライブアーツとかって
画面外でも敵味方せめぎあってるぞ
画面外だからといって座標とか判定とかテキトーなのか?
かえってテキトーにするのも面倒だろ
距離、というかX座標かY座標が離れてたら判定しないとか、
ゲームフィールドをいくつかのエリアに区切って同じエリア内でしか判定しないとかやりようはあるね。
4分木なんて難しくてコード化できない
というかコード超増える
視界外まで届く超射程兵器も乱れまくってるしな
離れてたら判定しないとかって
離れてるかどうかの判定と衝突判定の手間は同じだし
アルゴリズムの最適化を図ってもどうしても
愚直に総当たりせざるをえないなら
SIMDとかマルチコアCPU、GPU利用で極限まで並列化するとか
ただ大抵の場合はアルゴリズムの改善でどうにかなりそうな気がする
さっきから出てる空間分割とかで
俺はプロじゃないし
例に挙げているそのゲームのことも知らんから
憶測だけどな
>>450 細かいことだけど
離れてるかどうかをフレーム進行時に1回だけチェックして当たり判定の対象から外す
とかそういうふうにやると当たり判定時にそれを計算するのとは大分違うよ
4分木とかわからないけど、画面を分割したブロック分の数、オブジェクトのポインタ型配列を用意して、
ブロックに衝突してるオブジェクトがあったらブロックに対応する配列にそのオブジェクトのポインタを追加、
実際にオブジェクト間の衝突を判断するときはそのオブジェクトが衝突しているブロックの配列を順番に舐める、って感じ?
四分木なんてググるれば結構サンプルあるだろ
わーいまったくわかんないよー
というか取っ掛かりが見つからん
以外とない
「線形4分木」で一番最初に出てくるところでいいだろ
サンプルコードもあるし
GetMouseWheelRotVol()が全然反応なくてハマっていた
知らない別のところで既に呼んでいたらしい orz
そういうのはラップしてしまわないとそんな感じでミスって困ったりするね
キー取得クラス作ったんだけど、
同じプロジェクトの別の場所でそれぞれインスタンス作るのって良くないよね?
クラスつくったのと同時にインスタンス作るのもあれだし・・・
シングルトンおすすめ
キーボードやマウスならシングルトンでいいけど
パッドとかはまずいよな
「入力状態を取得して保存して、他クラスから参照させる」クラスをシングルトンで実装
そいつのみがキー・マウス・パッドのクラスを使えるようにすればいい
複数パッドがあっても問題ないよ
シングルトンにするまでもないからグローバル変数で十分
シングルトンは絶対一つであるのを保証したいときぐらいで
入力クラスなら生成、初期化位置は決まってるものだし
クラスをグローバル変数で持つのは初期化タイミングがコンパイラによって異なってしまうので絶対にやってはいけない
インスタンスの生成はきちんと指定すべし
DXライブラリの初期化のあとにインスタンス生成するならその時に入力クラスの初期化や設定読み込みで良いんじゃないの?
コンストラクタで全部やろうとすると問題あるけど
初期化の実装は出来る限りコンストラクタで行うべきだし、constは初期化子でしか定義出来ない
そもそも生成と初期化のタイミングを分けるなんていうややこしい実装してまでグローバル変数を用いるメリットが無い
EffectiveC++とか読んでないのか?
読んでるわけ無いだろwww
>>467 に賛成だけど、別にスマートポインタをグローバル変数にするのでも良いんじゃない?
デザインパターンに関して
>>464 のように拘りを持ってるなら、
明示的に生成してる場所にコメントで言い訳書いておくとか。
どちらにしろ、悩むコスト > 実装コスト だと個人的には思う。
「絶対にやってはいけない」とかよくある頭の固いバカだな
やってはいけないって言うのは初心者の手を止めさせるだけだよなー
だいたいここで書かれても鵜呑みにするわけないけど
コーディングのルールはそれぞれ根拠があって決まってるわけで、
それが理解できないなら勝手にすればいい。確実に後で引っかかるだろうが知ったこっちゃない
コーディングのルールなんて自分で決めるもんだ
本当に勝手にすればいいと思うなら書き込む必要もなくね?
>>473 宗教とセオリーの区別くらい付かんと苦労するよ
>>474 自分で勝手にする分にはいいが
>>464みたいに他人に間違ったことを教えるのは良くない
アンタの書き込みの是非はともかく、喧嘩売りにきてるようにしか読めんぞ。
自重しろ。
>>475 だからお前のは宗教の範疇なんだよw
あれはダメ。コレはダメ。こうしなさい。の異教徒狩り行為
>>477 グローバル変数クラスが宗教の範疇?もう一度底辺から学びなおして来い
捨て台詞吐いてた時点でコイツ触るべきじゃなかった やっちまったなー
>それが理解できないなら勝手にすればいい。確実に後で引っかかるだろうが知ったこっちゃない
だの
>もう一度底辺から学びなおして来い
だの挑発的な文句並べるよりも、参考になるリンクのひとつぐらい張ればいいのに。
ID:CORW1xgJは親切に理由と参考文献まで書いてるだろうに
余計な世話だと従わないのは勝手だけど、根拠も代案も無くただ反発してるだけの輩は残念だな
わかりやすくグローバルで置いてもいい。本人がわかればそれでいい
って言われてるじゃん
本人が書きやすい方法が一番だよ
本人が書きやすい方法が一番(笑)
三流は黙ってろクズ
いるよね、ちょっと知ったことをカッコ付けてこだわりぶりたがる子
ルールを守ることを目的化しちゃってるんだよね
ゲームなんて所詮動けばいいと思うんだけど
中がどんなにぐっちゃぐちゃでもな。
複数人で一つのプロジェクトを弄ったりするのなんて特殊ケースだしね
技術的な流れになると荒れるのがこのスレ
4分木の話も酷かった
技術の話ってスレチな気がしなくもない
代わりの板ってどこがあるんだろ
ID:K0sk9C+Y=ID:PlgPxsyPは痛いなー
人数とか関係無く挙動がコンパイラ依存でバグの温床になるから
昔からやるなと書かれているセオリーの一つなのに
「宗教」「カッコ付け」の一点張り
こういう馬鹿が所詮動けばいいとか言い出して自称見やすいコードを書くから和ゲーは失墜したんだよね
とんでもないネタレスありがとう
時々いるけど同一認定するのも相当痛い
内容はまだしも、何でそんな痛々しい言い方するかな…
動いて完成することが一番の目標。
規則なんて個人でやるならそれこそ自由だろ。
グループでやるならグループで規則決めればいいだけ。
他人がとやかく言うことじゃねえわな。
動けばいいって言ったけどどうしてバグがある前提なんだよww
そいつの書き込みは謎前提だけで出来てるからまともに相手するだけ無駄だw
EffectiveC++すら読んでない奴は頼むから自分の巣から出てくんな
俺ルール押し付けてんのはどっちだよ
その本の信者?それともステマ? どっちにしろ痛々しいね
マ板でもC++スレでもないんですけどね
> EffectiveC++すら読んでない奴は自分の巣から出てくんな
↑これなんて自分ルール?
特定の本を聖書扱いとかちょっと怖いですね・・・
その本には洗脳作用があるんでしょうか・・・
マジで言ってんの?
レベル低いにも程があるわ
多分釣りだと思うけど、
EffctiveC++がステマとか腹筋痛くなるからやめてwww
それこそ個人で泥沼に入るのは勝手だから、
初心者がコード作法学ばなくても良いかのように吹聴するのは止めてね
EffctiveC++なんか大規模プロジェクト用の規約なんて堅いもんじゃなくC++自体のTIPS集だし、
知ってる上であえて外すならともかく「何も知らないのにコード書ける俺かっけー」
とか痛々し過ぎるから
レベルは知らんがID:GTTJhtMg=ID:CORW1xgJの精神レベルが低いのは確か
企業の宣伝かというくらいのゴリ押しっぷりが笑えるから皮肉だよw
そのTIPSでしかない奴にどんだけ執着してんの?って話だ
相手がドヤ顔してると妄想するのは痛い奴の特徴だぞ
ドヤ顔してるのはどっちかな?
聖書どころかコンパイラがEffectiveC++のコードに沿ってるかチェックするくらいなのに
存在すら知らないとかマジでないわ
プログラマとして首吊って死んだ方がいいレベル
はいはい妄言はそのくらいにしましょうねー
>>504 何だ流石に釣りだったか
万が一ガチならまだ中学生(高校生?)だと思うからプログラマーには絶対ならない方が良いよ
今日の流れを思い出した時に恥ずかしくて死にたくなるからw
>>507 大人でプログラマなのに、こんなとこでムキになってそんな事言っちゃうところが子供っぽいんだけどな・・・
体は大人で精神は子供ってそっちのほうが思い出した時恥ずかしくなると思うな?
509 :
名前は開発中のものです。:2012/01/24(火) 11:40:14.10 ID:FH2vAXXO
つまり質問するやつがスタンスを明確にすればいいんだな
とりあえず動けばいいのでやり方教えてください、みたいな
そうだな そうすれば変な奴が湧かなくて済むから
変な奴のせいでつまんないことに気を使わなくちゃならなくて、気軽に質問できないスレになりそうで残念だが
今回みたいに推奨される方法が既に出てるのに推奨されない方法をわざわざ教えようとするのはどうかと思うけどな
手間なんてほとんど変わらないんだし
なんだ厨房か
2chに毒されてばかりじゃなくてちゃんと勉強しとけよ
こんなんじゃ先は知れてるけど
こういう奴が公式でクソみたいな質問してるんだろうな
>>512 厨房認定あざーっす
頭のおかしい人は本当にレッテル貼りが好きだなー
自由でいいじゃんって主張に自分の考えを押し付けたがる
受け入れてくれない人はレッテル貼りしてバカだから仕方ないみたいに思い込んで自己肯定をする
こだわりがある奴こそが巣から出てくるべきじゃないんだけどなホントは
>>500 DXライブラリのスレなんだからこれ以上は場所を移して欲しいよね。
>>513 いい加減無視しとけ。
ここはC++スレじゃなくてDXライブラリスレだ。
自分のやってること自体が厨房並みだってことにマジで気づかない奴なんだから
そうだな テクニックを教えること自体は悪いことではないし
他人の意見全否定で自分の知ってる方法だけゴリ押しした行為がいけなかっただけで
>>516 俺がレッテル貼りしてるからってお前がレッテル貼りしてることに違いはないんだけどな
なんでそこまで必死なんだろう 大人のつもりなら大人の対応を見せて欲しいんだけどね
まあ俺はここらで大人になって大人しくしよう
>>508 こっちは釣り認定して逃げ道作ってあげてるのにその言い草かぁ〜w
子供の時ほど大人と子供の区別に敏感だけど、大人と子供の差って全然無いよ
あるのは素直かどうか
自由とか言いつつ本に載ってる方法を感情論で無視する奴はまぁ…
グローバル変数でクラス持っとけとか言う阿呆に注意してただけでゴリ押しとか無いわ・・・
最近の学生プログラマはマジでこんなレベルなのか?
知識が無いことは恥ずべきことじゃないが、学ぶことを拒むようじゃ永遠に成長しないぞ
またdixqのチームが荒らしにきたの?w
以下現職プログラマーが学生プログラマーにC++のコーディング規則を教えるスレになりました
ご教授は一緒にやってる相手にだけにして欲しいもんだ
そうやって嫌がられたのか一緒にやる相手さえいないのかは知らんが
<Hoge.h>
class Hoge{
// メンバの宣言
};
extern Hoge* HOGE;
</Hoge.h>
<Hoge.cpp>
#include "hoge.h"
Hoge* HOGE = NULL;
/*
* 以下、Hogeのメンバ関数とか実装
*/
</Hoge.cpp>
ってやっといて、適当な初期化コード内で
HOGE = new Hoge(...);
をやってる。
今のところこれで困った試しがない。
俺にゃこれで十分だ。
これで充分とか言ってるが、俺にはそれすら高度すぎるw
えーっ
それはさすがに普段のゲーム処理書いてる時でも困るレベルだろう
ぶっちゃけクラスとかポインタとかって便利機能だから普通使ってるだけで、
ゲームを作るのに必ず必要ってわけでもないから使ってない(理解してない)奴ざらにいるんじゃね。
下手したら配列すら使ってない奴がいるかもしれんぞ。
>>525 困らん、というか便利さを知らんから自分が不便な事やってる事すら判らんのが実情かな。
困るとすれば、こういうところで皆が何の話をしてるのか理解できない事くらいか。
ちなみにゲームは普通に作れてるよ。2Dだけどね。
前も書いたけどさ
「DXライブラリ使用者のゲーム製作論」とか
「ゲーム製作入門・DXライブラリ編」みたいなスレを建てたほうがいいと思うよ
そしてパラダイム別に分けたほうがよさそうだな
530 :
名前は開発中のものです。:2012/01/24(火) 16:49:44.38 ID:zL0RAGM0
自分で建てたら?
ここの話題で気になったこととかを、初心者質問スレで聞き直したりすることはあるな。
実際それくらいがいいんじゃないかなーと思ったりはする。
>>528 いまひとつ意図がわからん。
ここはDxLibのスレだから、プログラミング全般の質問は雑談程度にしてるわけだけど
それを分離してもユーザー層被ってるんだから専ブラにタブが増えるだけにならね?
DxLib使ってる奴ってほとんどゲームを作るのが第一目的でしょ?
厳密な言語学習に時間をとられてゲームが完成しなかったりモチベーション失ったら本末転倒もいいところじゃん。
PG一本担当してるなら好きなだけ拘って下さいなって感じだが、全ての人に当てはまる事じゃあない。
企画からイラレフォトショメタセコAEその他諸々のツールまで一人でやる奴にしたら全部完璧になんてアホの戯言にしか聞こえない。
PGとしての実務ならまだしも、仕事で無いなら尚更見栄えよくまず動くこと、完成することが最優先。
言語としての厳密さなど時間が余って暇で仕方が無いときに考えればいい。
ゲームは目に見えない部分はどうでもいい(とまで言うと必ず顔真っ赤にする奴がいるだろうが)。
メンテナンスへの悪影響は出来るだけ減らすべきだが、それすら完成して始めて意味があること。
見た目は綺麗でもソースはぐちゃぐちゃなゲームなんていくらでもある。
ウザいんだよねえ、明らかに文章から相手の知識レベルが予想出来るのに
小難しい言葉で知識披露とか始めちゃう、たか○みたいな奴。
てか某サイトの学習用シューティングのソース全然美しく無いと思うんだが。
それでも俺が凄いと思ってるのは汚くても効率の悪い方法であってもとにかく完成させてしまうところ。
まあここで長文書く暇あるならゲーム作ったほうがいいよな
汚くて効率の悪い方法ばかりでゲーム数本作ってきた身としては
(俺にとって)難しいプログラミング知識を持ってる人は素直に羨ましいけどな。
俺も身につけようと何度か挑戦したがことごとく挫折してきてるだけに。
何かとっかかりが欲しくて、以前に恥を忍んでサンプルソースさらしてアドバイスを求めたが
「動くんだからいいんじゃね」的な事を言われただけだったから結局そのまま成長してなかったり。
FF3なんかアセンブラな上にバグだらけでも神ゲーとされてるじゃないか
後に移植しようとしてコードが解読できなくて移植を断念したとか
ゲームを作ることよりお手本のコードを記述することが目的なのかと
俺も、まずは動くものを作れるようになるのが第一の
>>534支持派
ブログでソース公開するなら、Winプログラムの作法からDirectXの挙動までやってるとまわりくどすぎて
入門書1冊読み終えたレベルには重いというか俺の実体験踏まえて退屈すぎる
もっと本質にズバッと斬り込んでいきたい、そっちのほうが書いてて楽しい
ゲ製入門書のほとんどがそこで6〜8割使ってて、最後の1章でテトリスとかベーマガレベルのミニゲーひとつ完成させて終わり
「HelloWorld」程度のソース量で画面作れるアドバンテージはすごいと思う
ツールに不満が出る頃にはDirectXの作法もヘルプ追って理解できるだろうし。
>>534 あのサイトのプログラムを見てこの底辺レベルと思って
シューティングを自作したが出来る弾幕シューティングは遙かに負けてる。
やっぱりゲームと中身は別だ。でもあのサイトの人も今は進化してきてるな。
プログラマーとしてのレベルとゲームの面白さは関係ない
弾幕STGなんか、デザインセンスの方が強く出るから特に
面白いゲームを作れる人は=長く作り続けてる人みたいな傾向はあるから、面白いゲーム作れる人はプログラムも上手だったりするけど、
プログラミングが上手いからって面白いゲームが作れるかっていうと違うんだよね
面白いフリゲの作者に話を聞くと、「実はあれソース一本で書いたからめちゃくちゃ読みにくいんすよwww」とかよくあること
541 :
名前は開発中のものです。:2012/01/24(火) 23:17:53.36 ID:imtCNmfC
プログラミングのことにこだわるならこれは向いてないだろ
完成させる近道として利用するものだと思う
ウィンドウ回りのことでかなり手を焼くことになるし
あのサイトの弾幕STGの出来がいいから
小難しいこと考えず力技だけであそこまで行けるんだなと
DxLib関係ないけど書籍にソース載せるレベルでも、グローバル域に敵や弾のワーク3万とか確保してて平気だし
ようし、DxLib の話題を振るぞぉ
バイリニア法使用時に、DrawModiGraph で描画すると
透過色の部分まで描画されちゃうんだけど、何かいい解決法ないかな?
説明不足だった
透過色はちゃんと機能してるんだけど、輪郭部分が透過色を少し混ぜたような色になるんだ
バイリニア法の使用なのはわかるんだけどどうしたものか
透過色の指定じゃなくて、pngにアルファ値持たせるなり、マスク画像用意してもダメか?
>>544 ぱっと思いつくのは、画像の方を透過PNGに変えちゃうとか
もし画像形式を変えられない場合は
「_a」を付けたファイルを作成しておけば
透過情報として自動的に読み込まれたはず
詳しくは公式リファレンスのLoadGraphの場所に
透過色じゃなくてもうアルファPNGにしたら?
透過してから変形じゃなく、変形してから透過させてる感じか
あれー、そんな仕様だったっけ?
普段透過する時は、黒もしくは白使うから気づかなかっただけかなあ。
どうしても透過色使いたいなら輪郭の色にとても近い色を透過色にするのが一般的
透過色指定、マスク画像、透過pngの3パターン試したけど確かに全部同じ結果になったわ。
バイリニアだと輪郭に透過部分の色が混じるのは回避できないっぽいね。
バイリニアは避けたほうがいいってことなのかねー?
バグじゃなくて普通に仕様だな
(R0,G0,B0,A255)と(R255,G255,B255,A0)を補間したら(R128,G128,B128,A128)になって、アルファ0になった部分の色も出ちゃうのがわかるはず
ドットを倍角で表示してる格ゲーのグラフィックがジャギジャギなのも、これが原因でバイリニアで表示したくないから。
そもそもカラーキーが、DirectX9でカットされてるので、ライブラリ側で透過色部分のアルファを0にソフトウェア処理してから読み込んでる状態
多分読み込み時間も増えてるだろうし、バイリニアを使わない方向よりは、カラーキーを使わない方向をおすすめしたい
倍リニアは補完するのが目的なんだから当たり前ジャンw
そうだな
データ自体がバイリニア補完に適してないんだろう
どうしてもやりたいならうまく調整して綺麗に補完できるデータにする必要がある
出力位置の背景色でアルファブレンドした後で補間することで解決できるけど
2パスで高速化する技が使えないから真面目にやるのは一部のグラフィックソフトぐらいしか見たことないな
あらかじめアルファ値0の完全透過ピクセルがあったら周辺8ピクセルでアルファ値0以外のピクセルを抽出して
RGB値を平均値にしてやると良い
GUIとかどうしてる?
ボタンなら簡単に作れそうだか、リストやタブなど難しそう。
ライブラリないのかな、まさか自分が世界で初めてGUI開発することはないだろうし。
それ、何か特別な事が必要な処理なの?
>>558 ボタンなら自分はGUIっぽい画面作るのにマウス座標をif文で判定、
目的の場所で四角作ってボタン風に動作させてます
(他にいい方法あったら知りたいです)
リストとかは作ったこと無いので分からないです(>_<)
>>559 いや、特別なことは必要ないと思う。
車輪の再発明は避けたいので、既存のライブラリがあるならそれを使いたいと思った。
C++でGUIなら探せばそれなりにライブラリが出てくるようだけど?
DXライブラリを使った汎用GUIライブラリは見たことがないなあ
むしろ作って公開してください
俺も欲しいわ
入力とかリストとかめんどい
>>558 GUIっぽい処理を作ったら、「俺専用フレームワーク」にどんどん追加してるな。
まあ、まだそんなに充実してるわけじゃないけど。
>>562 たぶん、普通のGUIアプリにDXライブラリを組み込むんじゃなくて、
ゲーム中のメニュー画面とかでGUIっぽい動きをさせたいって話じゃないかな。
DxLibModelViewerでGUI使われているので
作者は持っているはず、公開して欲しい。
「持っているはず」って、専用に書かれたものだったら公開できるようなものじゃないと思うんだけど
DXライブラリってあくまでも
DirectXのラッパー的存在だから、
そこまで求めるのはどうかと思うな。
ラッパー的存在、でここまで使いやすくなるんだから恐ろしい。
これがなかったら俺はWindows環境でゲーム作るなんて夢のまた夢だった。
そんなわけで、結局イベントドリブンがいまだによくわからない
ただの関数ポインタの応用
俺なんて関数ポインタがまだわからないぜ!
今あるメニュー関係の関数と同じ仕様で、APIのボタンの関数を実装してくれたら最高なんだけどな
w32apiのCreateWindow()とDxLibのSetHookWinProc()使えば
ボタン自分で実装できそうだと思うけど。
でもボタンの処理くらい自前で書いたほうが早いと思うぞ。
非同期読み込みサポートされたな。
いままではメモリに非同期で読み込んでも
ハンドルつくるときブロックされてたから
今回追加された関数は役に立つな。
非同期読み込みって例えば広いマップでカメラの近くにきた地形モデルとかを読み込んで
カメラから離れたら削除みたいにできるってこと?
もう一年実装されるのが早かったら、現在作ってるゲームで
ステージプレイ中に次のステージのデータ読み込む、とかやってたかもしれんのに、残念だわぁw
別に今からでもそれくらいできるんじゃないか?
そりゃできるかできないかで言えばできるけど、根本から修正になるわ。
結局GUI自分で作るか
SeleneのGUIの骨組みだけ取ってくるかな
DXライブラリ補佐ライブラリでも作ればw
名前忘れたけど昔そう言うのあったよね
DXライブラリの3D版あったな
次のゲームでその機能を使えばいいじゃない
公式にあるc#のDXライブラリ使ってたら
DrawFormatStringとかprintfDxとか
書式指定子ついてる文字列描画関数がない
どうすればいい?ステータスとか書けないよ〜
C#自体にprintf系が無いんだっけ?
FileReadとかもそうだけど、そういうのはDXライブラリに要らんと思ったなあ
まあまず、文字列表示はライブラリの性格的に必要だとして、
文字列表示があるならフォーマット付きも欲しいよねって考えるのはCプログラマの性のような気がする。
boostとか使えばある程度幸せになれるんじゃない
string.Format()
ワロタ
もっかいC#の基礎復習し直た方がよくね
>>587 FileReadはアーカイブ内に含めた非対応データを開くのに必要だろ
593 :
名前は開発中のものです。:2012/02/03(金) 20:29:12.12 ID:LxL/GsdY
今日初めてDXライブラリを使ってみました。(VC++2010)
loop = 1;
while (loop) {
SetDrawScreen( DX_SCREEN_BACK );
ClearDrawScreen();
DrawLine((int)px1, (int)py1, (int)px2, (int)py2, c);
//この辺座標を適当に変化させる処理
if((GetMouseInput() & MOUSE_INPUT_LEFT) != 0 ) {
loop = 0;
}
ScreenFlip();
}
こんな処理で、線を描く処理は上手くいってるんですが、
マウスが押されたら while のループを抜けたいんですが、
ループを抜けてくれません。(loop = 0の行に入らない)
何かコツってありますか?
594 :
名前は開発中のものです。:2012/02/03(金) 20:41:39.84 ID:LxL/GsdY
すいません。自己解決しました。
ProcessMessage()を定期的に呼ばないといけなかったんですね。
595 :
名前は開発中のものです。:2012/02/05(日) 13:21:42.14 ID:RoHwm3iD BE:1293132593-BRZ(10000)
行列が意味わからん行列を回避しようとしてもクォータニン?で積む
おなかすいた
行列のほうが何杯も簡単な予感
ただ掛けるだけで座標変換を適用できる行列はすごくいいぞ
DxLibの関数呼べば一発で作成できるしな
よくわからん数字の羅列だと思うから難しい
「座標変換データ」と考えてしまえば良いのだ
599 :
名前は開発中のものです。:2012/02/06(月) 02:36:16.55 ID:diPsVDFK BE:1436814656-BRZ(10000)
全く持って同意だな
こんな初心者の溜まり場でコードの綺麗さがーシングルトンがーとか言ってる奴がまともに仕事できる奴なわけがないw
そういうと「俺はこいつらや日本のプログラマ業界の将来のためを思って……」的なことを言うんだが、
素質あるやつは自然と後々綺麗なコードを書くようになるからねー
601 :
名前は開発中のものです。:2012/02/06(月) 02:53:53.14 ID:JjArPptT
むしろ誰か違うと思ってる人いるの・・・?
別にどこも面白くない話題だな
俺はコードの綺麗さを全然気にしないまま長年プログラマーやってるが
そういう事を気にしないから全く改善しようとせず、
当然、自然と綺麗なコードが身につく事もなくずっと糞プログラマーやってますが。
ていうか、いまリンク先の1を読んでみて「保守するの大変そうだな」と思ったら
早速同じ事突っ込んでるレスがあって苦笑w
そういう奴は自分のコードの綺麗さだけ気をつけてチンタラやってりゃいいんですよ
自分が触るわけでもない他人のコードに口出すのが馬鹿ってだけで
元記事は最速でプロトタイプを作ってフィードバック得ながら改良しろってことだろ
バグ乱発で納期遅れるような糞コード生成者が市民権を得たわけじゃない
なんでこのスレで納期って言葉がでてくるんだろう
納期に関係あるような人がここ見る意味や暇あるとは思えない
唐突な話ですまんが、
描画で「可算」って使いにくくないか?
例えば描画する側の色が128なら、元の色は128でも255でも同じ色になっちゃうから。
ある範囲の元の色の違いが無くなってしまうってのがどうも気になる。
その点乗算とアルファは良いよな。整数丸めはともかく。
だけどこれだと光ってる演出って作りにくいじゃんね。
そこでだ、
元の色:x
描画する色:y
として
x+(255-x)*y/255
って感じの描画をしてくれるモードがあったらいいなぁ、と思った。
それ加算の使い道をよくわかってないだけだろ……
加算は色飛びさせるのが半分目的みたいなもんだよ
下の計算式は乗算を反転してるだけだし
Bishamonラッパーが上手く動かなくて泣きそうだ
使える奴らはdxライブラリとか不要なんだろうなあ
最新バージョンでやってるかい?
関数が足りなくて追加してもらった記事とかは知ってる
Sdk も最新にしてコンパイルは通るが
Managerの初期化で不正終了するんだ
ぼちぼち読んでるが双方さっぱり
DXライブラリもBISHAMONのSDKも、それ用に作られてるわけじゃないから
バージョンによっては相性問題が発生するのかもな。
Twitterやってるなら、 #BISHAMON タグ付けてつぶやいてみるとか?
DXライブラリでラジオボタンとか作って使いたいんだけど、ここらへんは
APIの勉強しまくったら自然と作れるようになる?
>>614 ゲームの一部、たとえばメニュー画面などで使うなら、最終的に自分で組むことになりそう。
そこだけWindows標準のボタンとか、ちょっとマヌケだろうし。
となると、既存のGUIの動きを研究するとか、どこかで公開されているGUIライブラリを参考にするとかになるのかな。
BISHAMON最近動きがなくなってきたなぁ
ツールとしては素晴らしいんだぜ
ぜひ組み込みに成功させたいものだが
ツール+SDKとなると、なかなか金銭的になあ。
>>614 ラジオボタンじゃなくても白◯とか作ってマウス座標チェック、
内側を黒◯表示すれば擬似ラジオボタンできるはず
自分はマウス座標に合わせて選択肢用の四角を
マス単位で動かしたりしてる(メニュー内選びとか)
620 :
名前は開発中のものです。:2012/02/07(火) 00:56:02.74 ID:a4YMhKyH BE:957876645-BRZ(10000)
ボタンってどうやって作るんだ?
マウスの座標と、ボタンの座標(例えばx,y,x+w,y+h)から検出するの?
なんか他にうまい方法がないか気になる
>マウスの座標と、ボタンの座標(例えばx,y,x+w,y+h)から検出するの?
そうだよ。
ボタンが矩形とは限らないけれども。円とか。
複雑な形状でも基本的な形状を組み合わせればできるよ。
seleneのGUI移植しようとしたが
難解過ぎて諦めた
俺もif判定でがんばるかな
>>619 書き方悪かったな。
勿論、ラジオボタンとか作れるけど、その前に「別ウィンドウに」っていう
前提があるからAPI関係の話が出てきてる。
624 :
名前は開発中のものです。:2012/02/07(火) 07:09:48.82 ID:gsBZoF5F
良いライブラリだけど欲しい機能がなくて不満もある
Chidoriが良ければ移行しようと思う
626 :
名前は開発中のものです。:2012/02/08(水) 23:16:01.98 ID:NH/Q/R+x
CreateGraphFromMemの引数がvoid *MemImageで非constってことは
内部で破壊してるってことでしょうか?
なにかの都合でやむなく非constなだけで実際には破壊していない、
というのであればconst_cast使うのですが・・・
ソースが配布されてるんだからソースよみゃいいだろ。
その関数でMemImageを変更する理由なんてないだろうから
単にconst付け忘れとかじゃない?
629 :
610:2012/02/09(木) 00:27:34.69 ID:4snEy2dV
自分のゲームって2Dだから、ラッパーもSDKもぜんぜんいらんことがわかった。
ワロス。まあいい勉強になったわ
>>629 どういうこと? 連番ファイルにでもするん?
ゲーム全体がオブジェクト駆動だったら確かにいらないな
オブジェクトとして光の破片をぴゅーんするだけ
デバイスの問題らしいのでいずれは直されそう
当面は連番画像かな。sdkだと遥かに応用効くし楽そうなのでいつかは組み込みたいけど
>>620 >>621 あえて違う方法ないかと考えてみたけど
画面サイズと同じサイズの2次元配列持つ方法しか思い浮かばなかった
中にボタンのID値を入れておけば
あとはマウスの座標だけでどのボタンが押されているかは分かると思う
判定用の画像を用意するような奴か
>>633 複雑な形状ならそれもありだな。
まあ、たいていは矩形や円の集合で間に合うが。
概算でchar型1000x1000で1M程度か
速度は文句なしだから意外に有りなのか
情報をカラーコードに埋め込んでペイントソフトで塗ればいけるんじゃね
ヘッダを削除したり、データ部を逆転するツール作れば尚いいか
637 :
名前は開発中のものです。:2012/02/09(木) 19:23:22.16 ID:v5lY7/iJ BE:862088663-BRZ(10000)
mayaで作ったモデルを使いたいんですが拡張子が合いません。
何か良い解決策ありませんか?
自前で読み込むコードを書けばいいよ
639 :
名前は開発中のものです。:2012/02/09(木) 20:55:03.88 ID:aQhOGEqe
ラジオボタン1つでも、○の部分しかクリック出来ないタイプと後ろの文字列もクリック出来るタイプとあるな。
それぞれのコントロールに検知用の領域を持って、
クリックのタイミングで画面内のコントロール全て総当りで、
クリックの場所と検知用領域の判定するぐらいしか思いつかね。
矩形なら簡単だけど、円形だと中心からの距離のABSかな?
中心からの(X軸のABS+Y軸のABS)なら、菱形(正方形を45度傾けた形)もいけるぜ!w
641 :
名前は開発中のものです。:2012/02/09(木) 22:00:46.59 ID:VP1/RZKM
>>639 総当りでいいと思う。コントロールっていったって数は10や20以下でしょ。
よほど数が多いとかなら親子関係を作って親から判定していけばいい。
クリックの検知は行っておいて、それにどう反応するかはそのオブジェクト自体に判断させるか、
あるいはハンドラに飛ばして、そこで制御するかかな。
DXライブラリでデプスシャドウ実装しようとしたけど折れた・・・
DXライブラリのアーカイブって、暗号化されてるからファイルサイズが大きいほど読み込みに時間かかるのかな
サイズは小さいけど処理に時間の掛かるPNGにするか、サイズは大きいけど高速で処理できるDDSにするか悩む
アーカイブ化されてないデータならDDSの方が5倍以上早く読み込めるっぽい
実測しろって話だけど
PNGのデコード時間よりハードディスクアクセスの方が遅いことが多いから普通はPNGが有利なはず
>>645のリンク先を見たら速度でPNGが勝つことはなさそうだ
PNGの圧縮率設定によっても違いそうだけど
実測の結果が出たので貼っておく
ファイルの大きさによっても違うかもしれないんで、2種類のファイル郡でテストしてみた
計測した時間は10回ほど試行した大体の平均値
ファイル郡Bは内容がシンプルな画像で、実際のゲーム制作での素材を想定
ファイル群A PNG(512*1024、ファイルサイズは殆どが800KBほど)×10枚
DDS(PNGと同内容、ファイルサイズは2MBちょうど)×10枚
合計サイズ→27.3 MB アーカイブサイズ→13.9 MB
非アーカイブでのPNG → 1100ms
非アーカイブでのDDS → 260ms
アーカイブでのPNG → 1150ms
アーカイブでのDDS → 490ms
ファイル群B PNG(512*512、ファイルサイズは143KB)×10枚
DDS(同内容、ファイルサイズは1MBちょうど)×10枚
合計サイズ→11.3 MB アーカイブサイズ→3.21 MB
非アーカイブでのPNG → 300ms
非アーカイブでのDDS → 140ms
アーカイブでのPNG → 280ms
アーカイブでのDDS → 190ms
結果:DDSのが早い
おまけ アーカイブの挙動について
・アーカイブにパスを掛けたものを計測してみたけど、パスの有無では読み込み速度に一切変化はなかった
・アーカイブに他のファイルを大量に混入させても、読み込み速度に一切変化はなかった
・容量が小さい画像の場合、非アーカイブよりアーカイブの方が早く読み込めるっぽい
あとDXライブラリは圧縮DDSは使えないっぽいという悲しい事実が判明した
試しに圧縮DDS読み込んでみたら表示できねぇ
>>648 乙。
圧縮DDSを読むならまずFileRead_open()でメモリに読み込んで
自力でデコード、それをCreateGraphFromMem()に渡すってことになるな。
ゲーム中にバッググラウンドで先読みとかするタイプのゲーム以外は
PNGとDDSの使い分けにそこまで気を使う必要はなさそうやね。
PNGは
HDDアクセス→CPUデコード→VRAM用形式にドライバがエンコード
だけど
DDSは
HDDアクセス→VRAMにマッピングで行けるからな
無圧縮DDSだとHDDアクセスで結構時間食うけど、
圧縮DDSはサイズが小さい上にGPU上でHWデコードされるから更に速くなる
>>649 圧縮DDSを使う目的がVRAM節約なのにデコードしちゃ意味ないけどね
DDSって初めて知ったんだけど、画像は全部DDSに変換しとけってこと?
>>652 いや、全く。
せいぜ、ファイル形式を変えても大丈夫なように作っとけ、くらい?
でかい画像なら読み込み時間が大幅に減ってるように見えるけど、実際は一枚で0.1秒なのが0.05秒になってるだけだから、
目に見えて差がわかるのは一度に大量に画像をロードする場合だけ
一応差し替えを容易にするには、LoadGraphをラッピングして、拡張子を無視して読み込めるようにしたら楽そう
ディスクアクセスで時間喰いたくないなら、
ある程度読み込む単位で1ファイルにパックしとけば良いんじゃ
別スレッドで非同期読みが一番スマートではあるが、、、
非同期読みはこないだ実装されたんじゃなかったっけ。
試してないから知らんけど。
NOW LOADINGのアニメ程度にしか使えないってなら話は別だが。
そういえばDXライブラリのアーカイブって使ったことなかった。便利?
かなり便利
圧縮も優秀っぽい
>>659 DXLibのアーカイブって圧縮かからなかったと思うけど。認識違い?
VC++2010EEを使っています
コマンドボタンやテキストボックス等を使いたいのですが、どうすればよいでしょうか
自前で用意するしか無いでしょうか・・・
初心者スレで質問したかったのは、DXライブラリの話かよw
>>659 ありがとう。
公式にアーカイブが実装される前(そうとう昔だ)、自前で組んだ復号化&読み込み処理を未だ使ってたんだけど、
そっちを使ってみるのもいいかなー。
VCの有償版なら exe ファイルにデータ埋め込めるって聞いたことあるんだけど
無償版だと出来ない?
リソースなら使えるんじゃない?
無償版にはリソースエディタは付いてないみたいだけど
ビルド時間が伸びるぞ
おすすめしない
>>660 昔は多分圧縮掛からなかったんだと思う
多分リファレンスは昔のまま「圧縮機能はない」って書いてあるだけで、ちゃんと圧縮してくれてる
C → HSP → C+win32apiと流れてきました
宜しくお願い致します。
丁寧に自己紹介してくれたところ恐縮だが
Win32APIメインの話をしたいなら別のスレの方がいいよ
→DXLIB が抜けてるだけだろ 普通に考えて
C++ + DXlib しか使えない俺から見たらWinAPI使えるのはうらやましい。
もちろん → DXLIBです
宜しくお願い致します。
荒れる時ぐらいしか盛り上がらないスレへようこそ
同時に同じ音データ(wave)から音を発生させようとしても、最初のデータが鳴り止むまで次が再生されない
LoadSoundMemで作ったハンドルを足りなくなった分だけ一時的にDuplicateSoundMemでコピーして鳴らして、
鳴り終わったら一時的に作ったハンドルをDeleteSoundMemで消してみたら、とりあえず期待通り動いてるような気がする
同じ音を連続で重ねる方法はこれで正しいのでしょうか?
同時発声できたかどうかはわからんが、最初のデータが鳴り止むまで次が再生されないってのは
DX_PLAYTYPE_BACKを指定してないからとか?
DXlibをある程度いじってからDirectX始めようとするのはあんま意味ない?
ソース弄って改造できるレベルまで使いこなしてからなら意味はあると思うが
>>675 まっさらな状態からなら、段階学習としてとても良い方法だと思う
DXLibで特に学んでおくべき部分は、基本的な描画処理や、3D特有の用語や大雑把な概念だ
実際に動かし、慣れることで理屈抜きに受け入れられる部分を増やした方が良い
この辺に元々慣れてるならDXLibを経由する意味はあまり無いと思う
SDKで作るとメッセージのハンドリングや、Windowsのマルチタスクに対する知識も必要になってくる
DirectXはそこに関数の引数の分かり難さ、初期化周りの面倒臭さが加わって、
演算や描画においてもDXLibで用意されていた便利な関数を自分で実装することになる
DirectXをいじれるようになってから、DXライブラリに戻ってきた奴はスレ住人にも多い
描画結果がおなじなら、速度足りてればどっち使おうが一緒だからな
結局自分用のDXlib作ってることに気が付いて・・・
>>679 ライブラリ自体の規模もあるし、自前ライブラリに比べてテストしてるユーザ数も桁違いだしな…
結果だけ求めるならそうだけど、
DirextX知っててDXlib使うのと、DirectXがさっぱりわからずDXlib使うのとじゃ確実に違うと思う。(俺は後者)
何かあった時の対応力とか。
DirectXは、触らなくてもネットの資料見てるだけでそこそこ仕様の知識は付くからなぁ……
資料を見ただけで身につく人はいわゆる賢い人である。
俺は実際に自分で経験してみんと絶対身につかんわ。
まぁいわゆる賢い人にも欠点はあるけど、こういう分野では強みだよな。
>>684 同じく
特に間違って使うと一発で覚える
(255,255,255)の色を透過色に設定、背景の色も同じ色に設定
F2キーを押すとxxx.pngで保存という動作をさせたいのですがうまく透過色になりません
何が間違っているのでしょうか
#include "DxLib.h"
char Buf[ 256 ] ;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow ){
SetGraphMode( 640 , 480 , 32 ) ;//画面サイズ
ChangeWindowMode(TRUE);//ウィンドウモード
SetBackgroundColor(255,255,255 );
if(DxLib_Init() == -1 ){return -1;}//初期化と裏画面化
SetTransColor( 255,255,255 ) ;
ScreenFlip();
WaitKey();
GetHitKeyStateAll( Buf ) ;
if( (Buf[ KEY_INPUT_F2 ] == 1 ) )
{SaveDrawScreenToPNG( 0,0,640,480,"xxx.png" ); }
WaitKey();
DxLib_End();
return 0; }
スレ違いだったでしょうか
質問を取り下げ、DXライブラリ本家で質問してきます
ありがとうございました
if( (Buf[ KEY_INPUT_F2 ] == 1 ) )
{SaveDrawScreenToPNG( 0,0,640,480,"xxx.png" ); }
この間に、ScreenFlip();を入れてやる。
WaitKey();
DxLib_End();
return 0; }
でいけるんじゃないかな?画面更新しないと、ってことじゃないかな
>>688 だめでした
DxLib_Init()
の前に
SetBackgroundColor(200,0,200 );
後に
SetTransColor( 200,0,200 ) ;
が必須だから、SetTransColorで指定する前にSetBackgroundColor
で描画されてしまうのでもうなにもかもがうまくいかないのかもしれません
691 :
675:2012/02/16(木) 00:04:57.87 ID:TLLJ8Xdw
ありがとうございました
とりあえず…作ろう
>>691 例えば、最終的にDirectX部分から自前のゲームを作りたい、もしくはゲームライブラリを作りたいというのなら、
DXライブラリの利用経験は間違い無く役に立つ。
ある程度ゲーム用ライブラリに必要なものが分かるし、
他人にライブラリを使ってもらうなら、そのユーザがどういう使い方をするのかも予想できる。
サンプルプログラムなども含めて、最終的に何らかのゲームを作るつもりなら、
自前ライブラリ完成後に新作ゲームを作るより、以前に作ったゲームを移植した方が、効率的にもモチベ的にも良いだろう。
Debugでは動くけどReleaseで止まるバグってゾクソクするよな
やっとの思いでこれを解消して、よし早速別のPCに移してプレイだと思って開始すると
また特定の場所で止まるとかこれは試練なのか・・・
特定の場所で止まるからそこを重点的に探せば何とかなると思うがPCによって動かないとかあるのか?
debugとreleaseで違うのはメモリの位置とか
あとdebugでは0クリアされるのにreleaseではされない場合もあったような……
どっちにしろ大抵メモリ初期化ミスがほとんど
>>692 なるほど・・・プログラミングそのものを練習する機会としてもよさそう
画面のスクロール方法等の仕組みを理解する目的でDXlibを使ってみます
そのレベルで自分で叩こうとしてマルチタスクやら
DirectXやら行列やら出てきたら即死だろ
まさに段階学習が必要なレベル
スクロールってさ
カメラ座標作って、そのカメラ座標から相対的な描画オブジェクトの位置を計算して、画面内だったら表示〜
みたいなのでいいよな?
2Dだけど
そんなもんだね。
ドラクエみたいなRPGのマップだったらその通り。
強制スクロールSTGみたいなのだったら単に背景流していくだけで済む。
2Dでライトを作りたいんだけどどうしたらいい?
例えば、真っ黒の画面で
ライト(lx,ly)と
四角(sx,sy,sx+a,sy+a)がある。
ライトを点灯すると、
画面全体が明るくなるが、四角の裏側は黒のままにしたい。
だから、例えば(lx<sx)、(sy<ly<sy+a)の時
↓こんなんになる
・□
700 :
名前は開発中のものです。:2012/02/17(金) 11:50:39.35 ID:J7QLtwWg
>>699 四角を遮蔽物としてその陰になる部分を暗くするの?
(lx,ly) から四角の四隅座標に直線を引いて、
交点(線分外も含む)が2点になるベクトルは無視、
交点が1点のベクトル2つの範囲にあって && 線分よりも遠い部分、
に含まれるオブジェクトは陰になるかな。
部分的に陰になるオブジェクトはどうするか考えないといけないけど。
|/
○―
|\
□□□□■
□□□□■■
□□□□■■■
□□□□■■■■
こんな風にしたいって事? だとしたら俺には難しいな……。
3Dでも、各部分から光点までの直線が結べるかどうかをチェックしてると聞いたことがあるけれど、
今の3D技術で使われてるかどうかはシラネ
シャドウマッピング系の話っぽい
3Dのステンシルシャドウボリュームをちょっと変えれば2Dでも思ったように行けそうな気がする
真っ黒な画面を用意する
ポリゴンの頂点を光源から放射状に飛ばす→遮る物体に衝突したらストップ
そのポリゴンを白で黒い画面に描画する
黒い画面をメイン画面に描画する
ってのはどうだ
キャラクターがライト持ってビルを歩き回るホラーゲー作りたかったんだけど
ライトはとりあえずおいといて作ってみれば?
いつだったか海外モノかなにかで
プレイヤーキャラから見える位置しか表示しない2Dゲーを見た事あるけど
俺ごときじゃどうやってるのかさっぱりわからんかったな。
どんなのをイメージしてるのかがわからんとなんとも言えない
イメージとしたらウィズの移動画面を2D化したようなものか
自分は3Dは作れないけど上記のだと
いけそうな気がしなくもない
つまりウルティマ4みたいなやつだな
あー、はいはい
2Dだった頃のウルティマのあれか
壁とかあるとその先は視線が通らんのよね
うーん、じっくりと考えればどう実装すればいいか
分かりそうだけど、すぐには分からんな
多分それ程難しい処理じゃないと思うけど
ウルティマ4程度なら、確かチップ単位だったと思うし、解像度も荒いし再現するのはそう難しくない気がするな。
もちろん実際にどうやってたのかは判らんから、マシンパワーにモノ言わせた自己流になるけど。
712 :
名前は開発中のものです。:2012/02/17(金) 20:52:09.63 ID:2EcBz1Fx
今だったら、全部描いてから隠れる部分を黒で塗りつぶしても良いんじゃね?
塗りつぶしアルゴリズムが分かるなら、明かりの当たるところか当たらないところでマスクかければいいのかな?
angbandとかdungeon crawlのソースにありそう
おっさんが多いのはわかった
そういうアピールはいらないから
DXライブラリは大人から子供まで幅広い世代に愛されてるライブラリだからな
#include <string.h>
int Ghandle;
char *name1 = "001";
char *name2 = ".png";
strncat(name1,name2,4);
Ghandle = LoadGraph(name1);
でエラーが出るのですが、どこがいけないのでしょうか
教えていただけませんか?
Dxlibをincludeしてないとか初期化してないとか、そういう話?
コンパイル時エラーなのか実行時エラーなのか
とりあえずstrncatの第一引数は自分で確保した変更できる配列の先頭ポインタじゃないとまずい
自動的に確保された配列の長さが足りてないとかじゃないかね
>>719 strncat(name1,name2,4);
第一引数が間違ってる。
char s1[] = "Hello";
char *s2 = "Hello";
この違いを考えてみ。
724 :
名前は開発中のものです。:2012/02/18(土) 18:26:33.06 ID:FZYxf+dO
>>705 DrawTriangle
DrawModiGraph
この辺の命令使って遮蔽物から影伸ばせば
それっぽくは出来るんじゃね?
>>718 愛されてるかどうかはわからんな
それしか使えないのか知れないしw
解決しました、サンキューなお前ら
これだけの年月更新続けてるのは素直に凄いと思う
728 :
名前は開発中のものです。:2012/02/18(土) 22:48:22.57 ID:L18+6Z7i
DXライブラリのHPなんだけど
サンプルプログラム
Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
if( Key & PAD_INPUT_UP ) PlayerY -= 10;
このKeyってのは何なのですか?
常に1何でしょうか?
じゃないとPAD_INPUT_UPで論理積で1にならないですし。
常に上に押しっぱなしなら1だな
って1じゃないな
#define PAD_INPUT_UP (0x00000008)
731 :
名前は開発中のものです。:2012/02/18(土) 23:01:45.39 ID:L18+6Z7i
>>729 keyってパッドとキーで命令を許可するためだけの変数ですよね?
ずっと1じゃないとだめですか?
根本的なところで勘違いをしてるっぽい
733 :
名前は開発中のものです。:2012/02/18(土) 23:05:29.17 ID:L18+6Z7i
そもそもPAD_INPUT_UPとかPAD_INPUT_とかKEP_INPUT......
ってオブジェクトみたいなもの何ですか?
何型の変数でもないですよね....何かとっつきにくい。
734 :
名前は開発中のものです。:2012/02/18(土) 23:08:07.21 ID:L18+6Z7i
>>732 そうですかね?
キーボードだけで操作するなら
if(KEY_INPUT_UP)playery+=3;
とかでいいですよね?
そうだね
自分が何に何を入れてるのかもう一度考えてみようか
DXライブラリ以前に言語自体の知識が・・・
C++の勉強してこいばーか
としか言えん
ラーメンとお箸を目の前にして、「ラーメン食べたいんですがこの木の棒なんですか?」って言ってるようなもんだ
あと、やりたい方法があるなら自分でラップすればいいだけだろ
さすがに釣りでしょw
739 :
名前は開発中のものです。:2012/02/18(土) 23:14:44.50 ID:L18+6Z7i
>>739 定数について原稿用紙3枚レポート提出な
742 :
名前は開発中のものです。:2012/02/18(土) 23:20:39.78 ID:L18+6Z7i
勝手にジャンピングわろた
あれ?何故だ。
KEY_INPUT_UPってキーボード対応で並列的にある
オブジェクトみたいなもんじゃないんですかね。
KEY_INPUT_UPがbool型だったらそれはそれで直感的な設計だけどな
>>742 オブジェクトじゃないよ
>>718の言うとおり
大人から子供まで幅広い世代に愛されていますね
defineで定義されてる定数をメモリ確保されてるものと勘違いしてるって、kazuki君を思い出してちょっとデジャヴ
746 :
名前は開発中のものです。:2012/02/18(土) 23:32:49.12 ID:L18+6Z7i
KEY_INPUT_UPって定数何ですか?
そうなら定数なのにifの条件内に何で入ってるんだろ。
分からない。
____
/ノ ヽ\ 今の僕には理解できない
/ /゚ヽ /゚ヾ\
/ ⌒ ⌒ \
| (____人__) |
\ |lr┬-l| /
ノ ゙=ニ二" \
>>746 追加でifの真と偽についてもまとめて来るよーに
>>726 一応聞いておくが
char *name1 = "001";を
char name1[] = "001";
にして解決したとかじゃないよな?
もしそうなら根本的に問題あるから
750 :
名前は開発中のものです。:2012/02/18(土) 23:41:34.44 ID:FZYxf+dO
>>746 まず & は何してるのか分かってる?
でkeyには何が入ってくるか分かってる?
Keyが何型かも分かってないのか?
それと「AND演算」が何のことか分からないなら初歩からやり直すべきレベル。
これ以上ここで聞いても理解させられる回答は不可能。
752 :
名前は開発中のものです。:2012/02/18(土) 23:44:14.59 ID:L18+6Z7i
>>748 and=論理積
01 0
00 0
11 1
10 0
でしょうか?
そう
#define PAD_INPUT_UP (0x00000008)ってことは、
00000000000000000000000000001000ってことで、
keyの内容は上キーを押してる場合xxxxxxxxxxxxxxxxxxxxxxxxxxxx1xxxになるから、
ANDしてビットが1になる部分があるので0にならないというわけ
'&'演算子と、'&&'演算子は、違うものであることに注意。
しまった、のんびり書いてたらスレが進んでた。忘れてくれw
756 :
名前は開発中のものです。:2012/02/18(土) 23:46:23.18 ID:L18+6Z7i
>>752 if( 1 & 1) PlayerY -= 10;
if( 2 & 1) PlayerY -= 10;
if( 3 & 1) PlayerY -= 10;
この場合1と3番目がPlayerY -= 10を実行されるのわかるか?
758 :
名前は開発中のものです。:2012/02/18(土) 23:54:41.36 ID:L18+6Z7i
>>753 全然分からないww
Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 );
↑
が良く分からないんですよ。この引数は定数何ですか?
そうならKeyはずっと定数ですよね。
ageぐらい許してやれよハゲw
761 :
名前は開発中のものです。:2012/02/18(土) 23:56:42.24 ID:L18+6Z7i
>>757 2=10
1=01
より2&1は00=0よって否否0だから
実行されない。
ってことでしょうか?
>>758 もしかして関数もわからんのか……?
悪いこと言わんからまず誰にも聞かずに勉強してこいって
それはkeyという変数に、パッド1の現在の入力状態をビット列で格納してるだけだ
>>761 それが分かるならPAD_INPUT_UPの定数と
入力データが入ってる変数keyをifしてる意味分かるだろ・・・
764 :
名前は開発中のものです。:2012/02/19(日) 00:14:26.66 ID:tUWvdD1O
DX_INPUT_KEY_PAD1はオブジェクトってことで
KEY_INPUT_DOWNなどは照らしあわせるための定数ですか?
自分はつい、元々キーに対応している値を動的にもつ
オブジェクトがA〜Z,1,2,3,とあるものだと思ってました。
オブジェクト・・・?
>>764 素朴な疑問だが、DXライブラリに移行する前になに使ってたんだ?
767 :
名前は開発中のものです。:2012/02/19(日) 00:21:09.44 ID:tUWvdD1O
>>766 C言語でコンソール出力しかやってません。
じゃあ、プログラム自体Cが最初?
ならなおさら基本を勉強しなおさないと、きつくなる。
769 :
名前は開発中のものです。:2012/02/19(日) 00:27:19.45 ID:tUWvdD1O
>>768 どういう事ですか?Cについては基本はばっちしですよ。
ただオブジェクト指向については疎いです。
釣り宣言来たか
はいはい、解散解散
771 :
名前は開発中のものです。:2012/02/19(日) 00:30:51.58 ID:tUWvdD1O
いや分からないです。
移動しながらジャンプできたりするのが分からない。
同じwhileループで
移動とジャンプの両方について文がある。
矛盾は起きないのかなと。
>>764 ・・・
// パッド入力取得パラメータ
#define DX_INPUT_KEY_PAD1 (0x1001) // キー入力とパッド1入力
たんなる機能番号にしか過ぎないんだが・・・
773 :
名前は開発中のものです。:2012/02/19(日) 00:40:32.90 ID:6jRHIJ40
>>753 keyの内容は上キーを押してる場合xxxxxxxxxxxxxxxxxxxxxxxxxxxx1xxxになる
全部1ってこと?
>>769 基本バッチリなら#defineとifについて妙な質問するはずが無い
しかもオブジェクト指向関係ない
>>771 単語がわかっても英文が作れない状態
776 :
名前は開発中のものです。:2012/02/19(日) 00:44:49.07 ID:6jRHIJ40
defineつけたら値変えられないのでは?
>>776 変えられないよ。
でも、変数と定数の用法がわかっていればそもそもそんな質問しない。
778 :
名前は開発中のものです。:2012/02/19(日) 00:48:48.04 ID:6jRHIJ40
>>777 じゃぁifの中何で変わるのかな。
事情が複雑すぎて理解ができないですすいません。
>>773 xは1,0両方ありえるって事だろ
だから&使って特定にビット抜き出す
>>776 それに何の問題が・・・
780 :
名前は開発中のものです。:2012/02/19(日) 00:50:45.08 ID:UfuAYuxa
>>778 だからkeyは変数だろ
GetJoypadInputState使って入力状態を数値でkeyに代入してるじゃん
781 :
名前は開発中のものです。:2012/02/19(日) 00:55:16.21 ID:6jRHIJ40
DX_INPUT_KEY_PAD1 も定数ですよね?
keyはずっと不変では?
>>758 関数も分かってない。
引数ではないのでバッチシとはいえないなぁ。
とにかくもう一度基本を勉強しなおさないと、
ここはDXスレだし基本は教えるつもりは無いので、
たぶん言ってることが理解できないと思う。
783 :
名前は開発中のものです。:2012/02/19(日) 01:03:33.14 ID:6jRHIJ40
>>782 コンソールばっかやってたもんで。
関数ってのは値を受け取って、内部で処理して値を返す機能を持つ
ものだという認識です。
>>783 コンソールであっても同じ。
まだまだそのくらいの認識でしょうね。
関数が何型を返すとか意識してないでしょう?
分かっていれば、keyに入るのは定数などと言う考えにならないから。
>>781 GetJoypadInputStateは複数のパッドとキーボーの入力状態を調べる事が出来て
DX_INPUT_KEY_PAD1はキーボードとパッド1の入力状態を収得して来いって機能番号
>keyはずっと不変では?
ん?
if( key & 1) PlayerY -= 10;
if( key & 2) PlayerY -= 10;
if( key & 4) PlayerY -= 10;
keyに3入ってたら1,2番目が実行されるんだよ?
786 :
名前は開発中のものです。:2012/02/19(日) 01:11:00.44 ID:6jRHIJ40
#define DX_INPUT_KEY_PAD1 (0x1001)
defineで1001って決まってるのに何故パラメータ?
>>786 パラメータ?
言っている意味分からんが、それ括弧で囲んであるだけで関数じゃないからw
788 :
名前は開発中のものです。:2012/02/19(日) 01:18:18.37 ID:6jRHIJ40
GetJoypadInputStateは関数では?
GetJoypadInputStateによって値を取得しているのでしょう?
ややこしいのかな.........
それとパッド使わないのでパッドの話は....
ややこしい。キーしか使わない。
>>788 じゃなんで
>keyはずっと不変では?
とか言い出すんだ?
ややこしくしてるのはお前だけだw
GetJoypadInputStateは関数だよ。
「GetJoypadInputStateさーん、DX_INPUT_KEY_PAD1のデータ取ってきてー」
「へーい、どこ入れやしょう?」
「keyによろ〜」
ややこしくないっしょ
791 :
名前は開発中のものです。:2012/02/19(日) 01:27:21.69 ID:6jRHIJ40
>>787 パラメータ=値が変化する。という意味で書きました。
# Define N 1000
だと N=300;とかするのはだめだと思うんですよ。
DX_INPUT_KEY_PAD1が元々キーボードの値に対応して変化する
オブジェクトなら#define DX_INPUT_KEY_PAD1 0x1001とする理由が分からなくて。
>>791 オブジェクトじゃねー定数だっつってんだろがボケ!w
DX_INPUT_KEY_PAD1は変化せんわだあほ!www
マジでkazukiじゃねーの?w
794 :
名前は開発中のものです。:2012/02/19(日) 01:33:07.38 ID:6jRHIJ40
DX_INPUT_KEY_PAD1が持つ値は変化しないということ?
だからCの関数勉強しなおしてこいよ。
ポインタ渡しでもない、しかも定数なのにどないして変化せぇちゅーねん
796 :
名前は開発中のものです。:2012/02/19(日) 01:38:08.65 ID:6jRHIJ40
DX_INPUT_KEY_PAD1が定数なら可換可能では?
Key = GetJoypadInputState(0x1001);ではだめなのでしょうか?
いけるだろ普通に
dxlib.h
#define DX_INPUT_KEY_PAD1 0x1001 // キー入力とパッド1入力
#define DX_INPUT_PAD1 0x0001 // パッド1入力
#define DX_INPUT_PAD2 0x0002 // パッド2入力
#define DX_INPUT_PAD3 0x0003 // パッド3入力
悪いことは言わん
今夜の所は一旦落ち着いて寝ておけ
寝ると頭の中整理されるから
そしたら少し理解がしやすくなるかもしれん
800 :
名前は開発中のものです。:2012/02/19(日) 01:43:41.17 ID:D7x//2EV
あぁなるほど。
分かりました....本当すいませんでした。
GetJoypadInputStateが
0x1001つまり、この数字の時、あそこを調べようと
結局GetJoy側の問題だったんですね。
で分かりやすいようにDX_INPUT_KEY_PAD1っていう
名前をつけただけだったんですね。
まじですっきりしました。
801 :
名前は開発中のものです。:2012/02/19(日) 01:46:47.43 ID:D7x//2EV
gt+RjNJf、UfuAYuxaさんありがとう。
これが分からなくて1日スタバで悩んでました....
本当感謝。
GetJoypadInputStateが純粋な関数だとでも思っていたのかな
804 :
名前は開発中のものです。:2012/02/19(日) 08:20:54.11 ID:vx++sftI
ぶっちゃけそんなの理解してなくてもゲーム作れるから
楽に考えれば良いよ
つまったらまたどこかで質問すればいい
さすがに昨日の奴は質問以前のレベルだったがw
調べりゃわかることをすぐ聞くのは掲示板のマナーとしてもダメだろ
調べ方すらわからないとああなることもあるが
変に自信とか姿勢も高かったのがな
ゲームって基本対象がいつでも動く事ができるからwhileループですよね。
でもwhileループって1秒に何回くらいの頻度でアラウンドしてるんでしょうか。
PCの性能により異なる
ID:6jRHIJ40か
フルスクリーン時はデフォルトで垂直同期を待つようになってるから、モニターのフレームレートと同じになる
でもそれじゃ環境によってはちゃんと動かないからクソゲ呼ばわりされたくなかったら自前でタイマー式のFPS制御も組んどくべき
>>809 何で分かったのですかwww
監視されてる?ww
後、キャラが動いても、瞬間移動せずに、残像が残るのも不思議。
残るっていっても、目障りにならない。人間が動いて残像見えるのと
同じレベル。凄いなと思う。
>>810 ちょっと勘違いしてる感じとかそのまま過ぎるからすぐわかったぞw
残像はただの目の錯覚で、モニタに残ってるものではない
動きのない黒背景だからそう見えるだけ
ま連続的なのは何でかなと。
そういうのはパラパラアニメの原理調べろよw
whileの中では
座標を入れてグラフィックを表示する関数があるだけだから
連続的なのは不思議だなと思って。
y=y+10;でも連続的に動く。
それを不思議に思うってことは変数の仕組みか処理の流れのどっちかが完全にわかってないぞ
何が不思議なのかわからない……。
テレビとか見た事ないのか?
テレビに映ったモノや人が動くのが連続的に動いていると思ってるの?
……ブラウン管のテレビでも持ってれば説明は楽なんだが最近は液晶だから難しいな……。
パラパラ漫画なんだからブラウン管だろうと液晶だろうとそこは同じだろ
ただもうスレ違いだしまた長引きそうだから質問スレに行って欲しい
>>815 y=y+10;
screnn(y)
screnn(y+10)
だと今yを表示してたら、次に表示するのはy+10なのに
間のy+1,y+2...も表示してるっぽいということです。
まそのうち分かると思います。全然理解できないのですが。
では。
臭いのが湧いてるからもうDXライブラリ卒業するわ
すいません、一人でスレ消費しすぎました。
ちょっと自重します...
>>814 実際には10ドット飛ばしで動いてる
0.16秒で次のコマに行くから隙間無く動いてるように見える
間にseepでも入れて遅くしてみれば分かる
残像はモニター側の問題
あw
sleepなw
ちょい修正、残像はモニターと目の問題だな
ムログラム側は何もしてない
>>818 それ単に目が悪いか脳内補完が発生してるだけじゃね?
初心者にあんまりキツいこといいたいわけじゃないけど、この人ちょっとおかしいよな
コンソールやってた、C言語完璧って言う割には
始めてプログラム組むときに勉強するレベルができてない
完全に知識がないかというとそうではなくて何故か論理積はわかる
狐につままれたような気分だわ
まあ自分で y=y+10; してるのに、+1~+9も処理されてるかも、なんて
わけわからんこと考えてるってのは根本的に俺らと脳の構造が違うんだろうな
馬鹿にしてるわけじゃなくて、単純に興味深い
Cみたいな手続き型より、関数型言語のほうが合ってそうだよな。
本当に素人の頃は、「あれ?画像って一度"回れ!"って命令したら回り続けるんじゃないの?」とか思ったっけなぁ
まったく知識ないと、プログラムってなんでも便利にやってくれるものだと思い込んでるんだよなぁ……
実際は書いたことしかしてくれないんだけど
俺も童貞の頃は
ちんこなめろ!って命令したら彼女がなめ続けてくれるもんだと思ってたわ・・・
>>827 「座標x,yに向かって移動せよ」みたいな記述が可能な言語はあるからな、実際。
flashだとそんな漢字だっけ
それ言語じゃなくてスクリプトだと思う
スクリプトも言語の範囲だけどな
まあ実際の処理を書いてるのと、エンジンに命令を飛ばしてるのとの違いはあるけど
だからそういうエンジンを持った言語があるって話じゃないの?
豆乳とかそういう系?
自分用フレームワークの話で申し訳ないんだけど、
スプライト的に使う部分を、「Actorクラス」もしくはその派生クラスからのインスタンスと設定しているんだが、
ゲームプログラム側で移動量や回転速度を設定すると、あとは勝手に動くように作ってるな。
DXライブラリの関数のすべてって、DXライブラリ置き場で紹介されてるわけ?
このサイト以外でDXライブラリのサイト知らないというか。
されてない。
どこにあるのかもよくわからない。
>>836 一番の資料はコードって事で、
DxLib.h に全部書いてあるよ
VisualC++2010でビルドするんだけど、ビルドから実行まで
10秒〜12秒くらいかかる。
単に回転する三角形を描写するというプログラムだけで....
皆さんビルドにどのくらい時間かかりますか?
どういう意図の質問なのかわからないけどマシンスペックぐらい書いたらいいと思う
ビルドにどれくらいかかるかって聞いてるんだから
どれくらいかかるか答えてあげればいいと思うんだけど
ぼくはbolandちゃん!!!
Os Windows7
メモリ 1.00G
機種 ProBook
です。
コードもないと比較しようがないと思うよ
それ以前にありそうな原因って言ったら
毎回フルビルドしてる
常駐ソフトが重過ぎる
無駄にインクルードし過ぎ
くらいか
いやだから
「皆さんビルドにどのくらい時間かかりますか?」って聞いてるんだから
お前らがどれくらいかかるか答えればいいだけだよw
アスペかよw
ビルドに2秒以上かかるような作業は一度にしないわ
デバッグ開始して延々と出力に表示されてるとこも含めての時間じゃないか?
某同人格ゲーなんかはフルビルドに30分〜一時間かかるそうな
テンプレート使ったらビルド時間なんてどんどん増えちゃうよ
stlだけでもそれなりに増えるしboostの奴とかは異常に遅いのがある
DXライブラリでシェーダを引数指定して掛けるのって可能なんだろうか
シェーダに関する知識がないから辛い
851 :
名前は開発中のものです。:2012/02/20(月) 14:37:25.25 ID:9SYn83Aj
ビルドに1時間
シェーダ定数指定がうまくいかないと思ったらバグだった
>>847 は?
実行時にxxのライブラリをロードしました、とかのメッセージだが?
お前さんの言い方が悪いw
普通はIDEにある出力パネルの事だと思うわw
DXライブラリでウィンドウ出すとなんで画面の少し上に表示されるの?
よく見ると真ん中には表示されてないよね
タスクバーかタイトルバーの分が計算されてるんじゃね?
測ってみたことあるけど、そういう分ではなかった
タスクバーを移動しても必ず少し上に出るし、タスクバーの高さの分でもない
固定値で少し上に出るようにしてる印象
ジャンプしたときに、加速与えて、後は-1をしていくだけで
普通に放物線っぽくなるんだな。感動したわ。
ジャンプしたときの落ちるとき別々にやると思ってた。
凄いスマートだわ。
何となくイワンとすることは分かる
その辺は慣れだな
あとはゲームデザインの問題かもね。
空中で弾を撃つことが多いゲームだと、直線的なジャンプの方がいいかもしれない。
そうでもないぞ
放物線であるってことは、最高点に近いほど縦の移動速度が遅くなるってこと
狙いたい高さにジャンプすれば多くの弾を撃ち込めるようになる
ちなみにファミコンのマリオは、爽快感を出すために、普通の放物線ではなくテーブルにしているそうだ
テーブルってどゆこと?
シューティングゲームと2Dスクロールアクションってどっちが難易度高いんだろ。
どっちも実装は工夫のオンパレードだよね。
>>862 最初は計算でジャンプの軌道を求めてたんだけど、しっくり来なくて、
最終的に「◯フレーム目は◯ドット移動」みたいなのを用意して、それでジャンプさせたらしいよ
そんなにコンパイル時間が気になるなら
D言語とかC#とかやればいいよ!!
>>863 俺はシューティングゲームしか作ったこと無いけど
2Dジャンプアクションゲームは地面の判定が難しそうな印象あるな
以前知り合いが作っていて、上手くいかないと愚痴ってた
DXライブラリのソースをフルビルドしてみたら5分以上余裕で掛かった
オブジェクト数が増えると時間が掛かるから、インクルードを駆使して一本のソースにしてしまえばいいよ
intellisenseがうまく効かなくなったりするけど
ボタン押しっぱなしだと高いジャンプ、
途中でボタン離すと、そこまでのジャンプ、
さらに空中で左右に微調整可能、
って動きを自然にやらせるのは結構難しい。
マリオは凄ぇ。
>>869 懐かしい。SDLでマリオ作る人が出てきて、その人に協力したりしてたわw
>>870 ロジックは難しくないよ
パラメータ調整が難しいだけ
>>872 でも一個のジャンプやあたり判定のモジュール?みたいなのを作ったら、ずっとそれ
使えばいいんじゃないの?
>>873 まさにそのパラメータ部分を、ゲームによって調整しなきゃならないのよ
ジャンプの調整は難しいな。ブロックの大きさも加味して最高点の高さ調整しないといけないし。
俺はジャンプ中は重力をちょっとだけ少なくしたりしてたけど
まぁ、プログラマじゃなくてデザイナの仕事だよね
このスレにプログラマとデザイナを分けるような商業規模体制で作ってる人居るのかっていう
>>870 作ったよ。
ただ、場当たり的に作ったからどうやったか訊かれても、ソース見直さないと判らんw
難しいってのは初心者にも直感的な挙動を組むセンスみたいなものの事じゃないのか
実装だけなら何も難しい所はないし
出来ることと面白いことは違うってだけのハナシ
ゲームは殊更論より証拠
881 :
名前は開発中のものです。:2012/02/21(火) 01:16:16.81 ID:uX7aXXGU
背景の読み込みってループ内で常にずっとするんでしょうか?
かなりメモリ食いませんか?
最近変なの沸いてるな
日本語が曖昧で意味が分からんが、ロードは普通一回だから
秒間60フレーム程度出るメッセージループで毎回重複ローディングするなんて想像出来ない
意味分かってやってんのか?
ロードは一回ってことは、ループの外でロードするって事でしょうか?
DrawGraphはロードではないのでしょうか?
とりあえず公式のサンプルプログラムのページと
にらめっこしてくるといいんじゃないかな
君、リファレンスちゃんと読んでる?
DrawGraphのとこにちゃんと「メモリに読み込んだグラフィックの描画」と書いてあるだろ。
わかる?
「メモリに読み込んだグラフィック」だ。
「メモリに読み込んで描画」じゃない。
>ループの外でロードするって事でしょうか?
その通り。ロードは重い処理なので、メインループで何度もする事などオモイもしない。
>DrawGraphはロードではないのでしょうか?
DrawGraph()はサーフェスに既にロードされているデータを、画面表示用サーフェスに転送する関数です。
DXLib的に言うと、読み込んで得たグラフィックハンドルの画像を描画対象(一般的にはバックバッファ)に描画する関数です。
つか、ひょっとして「DrawGraph」がどうしてそういう名称にされてるのか理解もできてないのかな。
「Draw」や「Load」をなんて読むかも知らない?
>>886 凄いわかりやすい説明です。ありがとうございます。
LoadGraphScreenとLoadGraphの違いらへんが良く分からないです。
全く別物なんだが
人に聞く前にリファレンスをじっくり読め
わかないことはすぐ人に聞かずに自分で調べろ
仕様に関しては全部リファレンスに書いてある
日本語が読めるのなら、リファレンス読むだけで大概はわかるはずなんだがな……。
>LoadGraphScreen 画像ファイルを読みこんで画面に表示する
>LoadGraph 画像ファイルのメモリへの読みこみ、及び動画ファイルのロード
見出しだけでこんなに違いがはっきり判るのに。
画像ファイルを(HDDから)読みこんで画面に表示する
画像ファイルを(HDDから)読みこんでメモリへ格納
とでも言えば分かりやすいのかな。HDDとは限らんが、たいていはHDDかSSDだろう
あー、やっぱりそこ来るよね。
LoadGraphScreen()は、ダイレクトに描画対象スクリーン(表示用の画面)に描画する関数。
LoadGraph()は、準備としてオフスクリーン(画像を貯めておく為の領域)に描画する関数。
これに関して、LoadGraph()→DrawGraph()とすると、LoadGraphScreen()より手間がかかるじゃん、と思うでしょ。
実際そうなんだが、存在するからには当然メリットがある。
何度も言うが、ロードは重い処理であって時間が掛かる。
毎フレーム、毎回毎回、「ロード〜表示」を繰り返すと非常に処理効率が悪い。
処理がヘタクソ、腐りすぎてて、つまりはスペックによってカクつく。
だから、高速に処理の出来るサーフェスに予めロードしておき、そこから毎フレーム転送するようにするというのが一般的。
また、一部のみを切り取って描画したり、描画する先の座標を変えてやることでアニメーションさせたり、ロードした画像を加工する等、使い勝手が向上する。
まあ、毎回手書きでサインをするか、一手間かけてハンコを作っておき、その後何度も楽をするかの違いだ。
すいません、最後の質問です。
どっちを使うのがベストなんでしょうか?
いやこの説明聞いてわかれよw
>>893 もうちょっとハードの勉強もしたほうがいいと思うが・・・
中学生か、小学生ぐらい。インフルエンザで明日の学校は休みってところか
>LoadGraph 画像ファイルを(HDDから)読みこんでメモリへ格納
を使えば良い
LoadGraphの使い方ぐらいはDXライブラリのサイトで見つけてくれ
____
.ni 7 /ノ ヽ\ ドッドッドリランドwwwwwwwww
l^l | | l ,/) / /゚ヽ /゚ヾ\ .n
', U ! レ' / / ⌒ ⌒ \ l^l.| | /)
/ 〈 | (____人__) | | U レ'//)
ヽ\ |lr┬-l| / ノ /
/´ ̄ ̄ノ ゙=ニ二" \rニ |
プログラムから画像ロード時に
動的なテクスチャーアトラスだかテクスチャーパッキングするより
あらかじめデカイ画像ファイル作ればいいことに気付いた。
超画像魂コンバイン便利ですよね 半透明部分おかしくなるけど
でも今時テクスチャの切り替えコストなんて気にするほどじゃない……というかほぼ無いから、
画像は作りやすいように作ればいいと思う
512*512の同じ画像を2回表示するのを1セットにしたループ、
512*512の別の画像2枚を交互に一回ずつ表示するのを1セットにしたループ、
これを限界まで高速で回して、一秒間に何セットループできるかを計測すると、
前者は753〜754回で安定、後者は751〜752回で安定した
つまり、テクスチャを切り替えずに描画するのと、一回描画するごとにテクスチャを切り替えて描画するのは1/750しか速度に差はないということ
これっぽっちの差のため生産性を犠牲にするのは馬鹿らしいと思うんだ
>>899 >一回描画するごとにテクスチャを切り替えて描画するのは重くない
インデックスバッファ使わないとめっちゃ重いって
D3D9出たころはまだ基本だったと思うけど、
いつの間にか変わったんだね。
ごめん、FPS表示にもコスト掛かってるし、大きな画像を大量に描画するとか普通はないことなんで、正確なデータじゃなかった
1セットを
A 「32*32の同じ画像を10回表示」
B 「2つのファイルからそれぞれ読み込んだ、32*32の2種類の画像を交互に計10回表示」
C 「一つの画像からDerivationGraphで切り取った、32*32の2種類の画像を交互に計10回表示」
に変えた&増やした
結果は一秒間にA:1296回、B:1246回、C:1296回で安定した
同テクスチャからのハンドルは、交互に表示したとしても一種類の画像を表示した場合との差がまったくなかった事から、
この差は確実にテクスチャ切り替えによるものだと断定できるはず
DrawGraphなどの標準関数で描画した場合の、テクスチャ切り替えが全くない状態と最悪の場合の数値の差
でも、テクスチャ切り替えを減らす描画の高速化って、普通ポリゴンで一括描画するように組むことを言うから意味としては微妙
切り替えを全く無くしても、DrawGraph等を使って描画してたら最高でも4%多めに描画することしかできないよ、ってことで
>>900 某所の制作雑談スレの人だったりする?
って連レスになるけどこの検証も微妙な気がしてきた
たった10枚でScreenFlipしたら意味ないよな
あぁやっぱり
一度に描画する枚数を1000枚したらFPSに三倍近いスコア差が出た
>>901の駄文は忘れてくれ
弾幕系なら1枚のテクスチャに纏めるのは基本
結局テクスチャ切り替えにコストはあるってことですね
もちろんFPSに支障が出ない範囲で無視するのもアリですが
>>905 おk
さらに言うならそのスコアは440と120
一秒間に44万枚と12万枚の差
さすがに最高値と最悪値だから実際はここまでの差はでないだろうけど、やはりテクスチャの切り替えは重いようだ
STGの弾とかは一枚にまとめないと駄目だね
てか、DXライブラリで計測してんのかよ
DXライブラリはライブラリ側がよろしくやってるから
あるていどテキトーなコード組んでも最適化してくれるんじゃなかったっけ?
3Dポリゴンmqoにテクスチャを貼りたいのですが、リファレンスが意味不明です。
使い方を誰か解説してください。
一般的なモデルの扱い方は理解していますか?
モデルが保持するテクスチャへのパスは相対パスにして、
モデルと一緒にテクスチャデータもモデルから参照される位置に配置しなければいけません
いや、それは良いんですが、テクスチャ配列がどうとかがさっぱり
>>908 >テキトーなコード組んでも最適化してくれるんじゃなかったっけ?
してないよ。動くだけのコードなら誰でも書けるけど
使いこなすにはDirect3Dの基本知識がきちんと必要になる。
>>908 DirectXの高速化で一番効くのは描画順を細工してやること
DXライブラリは命令順に描き込む仕様なのでライブラリ側ではこの手の高速化ができない
>>911 何をやろうとしてるのかまったくわからない
自分ではわかってるの?
>>914 モデルを読み込む...ok
モデルを表示する...ok
モデルのテクスチャを読み込む{
正しいディレクトリにテクスチャを置く...ok
テクスチャを読み込む...?
}
モデルを読み込むと自動的にテクスチャも読み込むんだけどな?
Xファイルの画像ファイルのパスが絶対パスになってて読めなかったことならある
DXライブラリ慣れたらDirectXに移っても大丈夫かな。
関数はどっちの方が多いんだろ。
関数は自分で作らないといけないよ
DXライブラリのようなライブラリを自分で作ることになるだけ
俺は一生このぬるま湯で神ゲーを量産するぜ!
基本部分は同じようなの作ることになるから必要な部分だけコピペしただけみないた状態になるな
ちょっと凝ってくるとSeleneが参考になるけどあれはあれで人によっては余計な処理が入ってるし
DXライブラリのぬるま湯からXNAのぬるま湯へ移ったわ
ドンキーコングリターンズとSPドンキーコングってグラフィックの動きは
プログラミング上違うんかな?
既存ゲームのスレって無かったっけな
XNAってどう?
一時やろうかと思ったけど開発だか市場にだすのに1万円って言われてやめた記憶が
xboxじゃなくても1万?
XBOXだったかな
アイホンもそんな感じで、結局金のかからないC++DXライブラリに落ち着いた
XBOXじゃなければDirectXと同じようなライセンスでしょ
XBOXでプレイできるようにゲームを置いてもらう手間賃が一万円ってだけ
ありがと。開発は無料だったのか¥
2dスクロールのキャラのアクションってプリレンダリングなの?
それともCG?
ジャンプ中の動作、敵に対する攻撃など。
DXライブラリで2Dアクション作ってる人いたら教えて。
2Dアクションで、見た目は3Dってこと?
それならプリレンダか実モデルかは好みと技術力に寄るとしか……
そうです奥行きの無い3Dです。
CGで動きを制御するのは技術高くないと無理ですよね。
モデルとモーション作れれば問題ない
あとは基本的に2Dも3Dも一緒
ありがとうございます。
2Dで物理演算ってあまり使われないんでしょうか
3Dだとモデリングなどがしんどそうなので敬遠してしまうのですが
Box2Dはバージョンによって結構違うっぽいんだよな。
自分が組み込んだのは幾つだったかな……と調べてみたら2.0.1だった
弾幕シューティングから横スクロールアクションにいくといかに弾幕シューティングが作りやすいか判るよな
重力、描画座標の調整、地形とか一気に気にするところが多くなる。
一番の問題なのが素材でキャラクター1体につきのアニメーションが大量に必要な事かな
STGは一番作りやすいよね
アクションは爽快感を求めようと思うと終わらないわ
逆に昔のFC時代にクソゲがあふれた理由が少しわかる
とりあえず動く時点まで作るのが、STGの方が楽ってだけで、
ある程度のクオリティにするにはどっちも同じくらいの技術が要るぞ
キャラのアニメが必要なのはSTGもACTも同じ事だし
キャラのアニメは必ずしも必要でないのでは
求めてるレベルにも寄るでしょ
売り物にしたいのかベーマガの投稿レベルで満足なのか
943 :
名前は開発中のものです。:2012/02/23(木) 08:40:02.25 ID:bm48zAIt
まさかと思うけど
2Dアクション(スーパーマリオみたいなの)を作る時のスクロールって、
キャラ固定して、MAPが動くんでしょうか?それともキャラを動かすんでしょうか?
それかキャラが進むと同時に、MAPをずらして、キャラもずらすんでしょうか?
テレビゲームの2Dゲームの場合、キャラが動いてる時って、画面において
半分くらいの位置にキャラがだいたいいますよね。