1 :
名前は開発中のものです。 :
2009/08/09(日) 21:55:50 ID:TrjuCGgx
4 :
名前は開発中のものです。 :2009/08/10(月) 01:28:46 ID:x4cP5rNi
クラスで挫折した
もうクラスなしじゃ生きていけない
ライブラリと関係ない話をすんなとは言わねーが、C言語そのものを使い慣れてない レベルの質問は勘弁してくれ ここはC言語初心者質問スレじゃねーから
>>4 もっと頑張れよ
俺も1回挫折して再度勉強し直したけど使える道具が増えていろいろ記述が楽になったから
ちゃんと苦労なりの見返りはあると思うよ
8 :
名前は開発中のものです。 :2009/08/10(月) 08:38:41 ID:ejPisMfv
4じゃないけど、俺もクラスはよくわからん。 というかなぜそういう事をする必要があるのか、 ゲーム製作においてどういうメリットがあるのか、 どういうときに使うと便利なのか、 が解らないから、なかなか頭に入らない。
・リソース解放処理をデストラクタに書くと楽 ・何個も実体を作るような構造体を扱う場合、構造体へのポインタを関数に渡すよりも、 勝手に*thisを作って内部的に同じことをしてくれるクラスの方が楽
>>8 俺もポインタとか必要になるまでよくわからなかったし、
必要になれば覚えるもんだよ
「あ! 今やりたいことコレ使えばできるじゃん!!」
って気づいた時の喜びといったらもうね
フンドルワラタ
フンドレの人はマジでC言語初心者スレとか探した方がいいな
自動リソース管理 ポリモーフィズム これだけでも覚える価値あり ポリモーフィズムはすごいゲームと相性いいしね
>>10 分かる分かるw 俺もまさにそうだ。
きっかけはリプレイ機能付けたいな、だったかしら
俺もクラスよく分からんのだが STGの弾作るときに便利だと聞いた 今から弾処理だから勉強してみる予定
structとclassは全く同じ。classはデフォがprivateになっただけの構造体。 メンバ関数は、隠れ引数として構造体へのポインタ*thisがこっそり付いただけ。つまり、 以下の二つは大体同じ意味のコード。 // Cっぽい版 struct vector2d { float x, y; }; inline void rotate_vector2d(vector2d *this, float theta) { vector2d old = *this; this->x = old.x * cosf(theta) - old.y * sinf(theta); this->y = old.x * sinf(theta) + old.y * cosf(theta); } // C++版 struct vector2d { float x, y; void rotate(float theta) { // vector2d *this は隠れ引数として勝手に入る vector2d old = *this; x = old.x * cos(theta) - old.y * sin(theta); // メンバ変数アクセスは勝手にthis->が入る y = old.x * sin(theta) + old.y * cos(theta); } }; 仮想関数は、派生クラスの仮想関数へのポインタ一覧vtblが隠れグローバル定数として 用意されてて、派生クラスの実体にはvtblへのポインタであるvptrが隠れメンバ定数と してくっついてる。で、仮想関数を呼ぶ時はvptrを通して参照する。 thisと違って、vtblやvptrには普通は触れない。触る必要も無いし。 クラスの仕組みはこんなもん。あとは使い方次第。 コンストラクタには変な仕様が色々くっついてるから覚えた方がいいけどな。
うまく使えば new Bullet( this, // 親は自分で RAD(270), //270度方向に 10, //1フレーム10pixelで動く GROUP_FRIEND //味方の弾 ); //を作るよ! ってできて楽しいだけ。
こういうの見せられると、 「俺って実はプログラム全然できてないんじゃないか」 と思うなぁ。 一応ゲームはできてるんだけどねw
完成品が一つも出てこないよりはいいんじゃね?
DxArchiveのソース見てたら単にファイル格納&暗号化じゃなくて圧縮&暗号化だったんだな 各APIでも読み込めるしかなり使いやすいな
DxArchiveのエンコードとデコードをプログラムからやる方法教えてください
クラスが便利なことを実感するのは2個目のゲームを作るときだと思う俺ガイル 自分でつくったものをブラックボックス的に使いまわせるってすごい便利
必要性を感じないなら無理にクラスを使う必要はない。 重要なのはクラスを使うことではなく分かりやすいプログラムを書くこと。 分かりやすいプログラムを追及していくとおのずとオブジェクト指向/クラスへと向かっていく。
ちゃんと最後に かもしれない とつけてくださいね
なんだそりゃ どうしても抽象化できない病気とかならともかく
クラス勉強したいなー ってことで俺は今、クラス化している。 それくらいの動機でもいいよね?
いいんじゃないかな<動機 便利な使い方が分かると、楽しくなってくる、、、と思う
>>22 たとえばオリジナルのセーブデータをDxArchiveで暗号化して保存することってできますか?
ファイル分割して関数書いて、で綺麗に片付くならそれでいい。 クラスに包む方が綺麗に片付くところは、クラスを使えばもっといい。 使い分けが適切ならさらにいい。
同じようなゲーム作りたくないから クラスが役に立ったことはほとんど無いな 描画系関数はかなり再利用するから ファイル分割して綺麗に関数をまとめた分にはかなり役に立つ
33 :
名前は開発中のものです。 :2009/08/11(火) 13:15:45 ID:jm9PqIPM
たとえばどんな関数をつかいまわすの?
モザイクかけたりボカシかけたりシャープにしたり ノイズ入れたり回転させたりセピアにしたり
よくわからないけどそういうのって関数一つにできるもんなの? Mozaiku(x1,y1,x2,y2)みたいに?
うん
いったいどうやって?画面情報を取得して、CPUのほうで計算して上から貼付けたりするの?
うん
シーンをクラス化する利点がよくわからなくて switch文で頑張る俺
if-eilse if-elseでもswitchでも関数ポインタテーブルでも仮想関数でも普通に書ける上で switchが総合的に見て一番いい状況だからswitchで頑張る、ならそれでいい
組み方によっては、シーンを追加するたびにシーン管理のコードを変更しなきゃならないからなあ。 せっかくライブラリっぽくしたのに、いちいち弄らされるのは面倒だ。 そこがクリア出来るなら何でもいい。
キャラクタを白く点滅フラッシュさせるためには それ用にマスク画像を用意しないとできないかな?
少なくとも俺は、同じ事をしようとした時、それしか解決策を思いつかなかった。
SetDrawBrightで輝度値設定してやるとか
いや、SetDrawBrightだと最高100%までしか輝度あげられなくて、 その100%ってのは、画像そのまんま表示って事なのよ。 つまりSetDrawBrightは暗くはできても明るくはできない。
SetDrawBright(0,0,0);//暗く SetDrawBlendMode(DX_BLENDMODE_INVSRC);//反転 とするのはどうかな
それだけZバッファを適用して、きつくした白いフォグを適用させるって冗談みたいな方法もあるぞw
武器とか魔法のデータってどうやって管理してる? やっぱり大本のクラスを作って継承させる感じ? DBとかでもりもり書いたほうが楽そうではあるんだけれど
>> 42 パレット操作
そういやパレット操作の命令が追加されたんだっけ。 それを使って白い画像を作って、グラフィックハンドルまで用意しておけばできるはずだな……。
>>48 struct(構造体)を持つSTLのリストを作って、そこで管理
新しく何かを手に入れたならば、リストに新しい構造体を埋める
代入する値は手打ち、つまり長々と代入文を書く。DB化してもよいが労力は大差ない
これは仲間キャラクターや戦闘の管理に向いているだろう
もう1つは数値をひとつ代入するリストを作って
そこに例えば武器ナンバー001番って値を入れて
必要な時に武器の威力や効果をまとめた関数を読み出す
この方法は数値が絶対に変わらない武器や道具の管理に向いている
最後に、bool型のスイッチを作って、Trueなら入手した、と考える方法
この方法は魔法やイベントフラグなど、数値も数も考えない物の管理に向いている
>>51 ありがとう
2つ目のパターンがいいのかな
どうも膨大になっちゃってたからいろいろ試してみる
ありがとう
構造体の代入じゃ駄目なのかそれ
テンプレで、名前や数字を変えるだけで何とかなるものと、それだけでは表現できないものと、両方がある。 武器や魔法は前者であることが多いと思う。 ダメージなどが違うだけでアルゴリズムは変わらない。回復/支援魔法なども入れても数パターンで済む。 TRPG的な魔法とかはコンピュータゲームじゃ作りにくいだろうし。 逆に、イベントなどは後者で作られる。 クラスの継承なり、関数ポインタなり、外部スクリプトなりで、イベントごとにまるっと別の処理になるだろう。 ただしその場合でも、共通データを格納する部分は、武器や魔法と同じようなテンプレ処理を利用することになるかも。
55 :
◆GRGSIBERIA :2009/08/14(金) 00:12:28 ID:FT3Wa2QE
>>51 戦闘で魔法を使うんならその方法でいいだろうけど、
呼び出すときに関数ポインタ使わなきゃならんから面倒くさくね?
データ的には安上がりでいいんだろうけど、可読性考えると怖いなあ……。
ごめんなさい。 二番目の話です。
基本基本クラスで例外は派生クラスでいいんじゃね
58 :
名前は開発中のものです。 :2009/08/14(金) 01:01:23 ID:Bq2DtYMd
まあ別に仕事でプログラムする以外だったら好きなようにすればいいんじゃね
dxライブラリがSetDrawScreenで使っているバックバッファに dxライブラリを介さずに絵を書き加えてやる方法はないもんかな・・・ それができるだけで結構3D表示させられそうなんだが
>>59 俺の場合3Dは行列系関数とDrawPolygon3Dで間に合ってるけど、
それって裏画面にDirectXで描画するってこと?
うん
>>60 そそ。それでxファイルにして読み込んだ
ちょっと複雑な形を描きたいのさ
ちなみに直接表に描かせたら
最前面にチラつきながら描かれた。当たり前だが
DX3D持ってたらそれ使うのもいいかも 使ったこと無いから分からんが
DXライブラリの内部構造についてだったら公式で質問するのがいいかも 関係ないけど俺は自前でmqoファイルを読み込んでDrawPolygon3Dで表示させてる アニメーションさせないならこっちのほうが簡単な可能性も。
>>63-65 ありがと
せっかく用意されてるんだからDrawPolygon3Dでやるのが一番かねえ
半日ぶんの作業ムダ\(^o^)/になるけどさ・・・
そこまでやるならDirectXで全部やる手も有力じゃね
DXライブラリの3Dが弱いってのは周知といえば周知だからなあ なんともいえない感じ 自分もひとつ聞いていいかな DrawFormatStringToHandleで文字出すときに文章列を垂直に描画する方法ってないものか 縦書きではなくあくまで横書きの文章を90度倒した感じでだしたいのだけれどどうだろう? いまは画像ファイルに書き起こしたものをスタブで表示してるんだがそれにも限界があるなあと思って聞いてみた
>>69 つDrawFormatVStringToHandle
多分コレ
ありがてえありがてえ ヘッダ読んだらほんとにあったよ やっぱ一度読むべきかなあ ともあれサンクス
感動した
ヘッダ読むとドキュメント化されてないすげえ関数いっぱい紛れてるから一度は読むべきだよな
でも公開されてないって事は動作保証もされてないんでしょ? ちょっと使うには不安だなぁ。 自分だけで楽しむモノを作るのならともかく。
フリーのライブラリで動作保証www
フリーのライブラリに過度なサポートを求めるのもアレだと思うけど、 管理人はちゃんとリファレンスに載ってない関数も仕様のうちに含めてやってくれてるよ 自分で動作確認したり、ヘッダ読んだだけで用途が分かる人なら使っても問題無し。
DrawFormatStringをオーバーロードしてキャストによる警告を防ぎたいんだけど どうやってオーバーロードすればいいんでしょうか , ... ) ; ←最後のコレのせいでうまくいかない
77 :
66 :2009/08/15(土) 22:42:39 ID:eXbOcFmf
ところでDXlibとは別口で用意させたバックバッファを適当なサーフェイスに写し取って、 CreateGraphFromMemでハンドル取らせてDrawGraph、というのもやってみたが やっぱりうまくいかなかった というかエラー直していく気力が尽きた
>>76 こういうことだろうか
int DrawFormatString(double x, double y, int Color, const char *FormatString, ...)
{
char buf[1024];
va_list args;
va_start(args, FormatString);
vsprintf(buf, FormatString, args);
va_end(args);
return DrawString((int)x, (int)y, buf, Color);
}
>>78 こんな方法が…ってよくわかってないけど
vsprintf→vsprintf_s で警告が全部消えてくれました
ありがとうございました
3Dで描画した画面にエフェクトをかけたいんだけど、 裏画面の内容をテクスチャにコピーするか、 テクスチャにZバッファを使って3D描画させる方法は無いものだろうか……
>>80 ライブラリ使わない方がいいんじゃね?
専門書買ってDirectXを直接叩いた方が早いと思う
ぶっちゃけゲーム性に影響出るような話じゃないし、うじうじ悩むくらいなら仕様にした方が
>>81 やっぱりDXライブラリじゃ無理かなー
DXライブラリだけでここまで出来るんだぜ!ってのを示すのが
ゲームのコンセプトの一つだったりするんで、このまま頑張ろうと思う
PlayMovieで動画再生できるのにサンプルプログラムのDrawGraphを使った方法では動画再生できませんどうなっていますか
ちなみに音は再生されます。原因が分かる方いらっしゃいますでしょうか。
必要なコーデックがインストールされてないとか
一切WaitTimerとかのウェイト系入れなくても60FPSで動いてるように見えるんだけどどこかで自動的に止まってるの? 止まってるとしたら完全に頼り切っていいのかな?環境によってはウェイト入らない・・・なんてことないよね?
画面の裏ページを表ページに反映するのに ウエイトかかってると思うの
環境によってはFPSが変わると思うの
>>86 ScreenFlip使ってるんでしょ。デフォルトだと垂直同期信号待ちしてるから
多くの場合は60FPSで固定されるよ。(環境によっては無視される)
↓の命令でFALSEにしてみればノーウェイトで動くと思う。
宣言 int SetWaitVSyncFlag( int Flag ) ;
概略 ScreenFlip関数 実行時にCRTの垂直同期信号待ちをするかのフラグセット
引数 Flag : CRTの垂直同期信号を待つか否かを決めるフラグ情報
TRUE : 待つ(デフォルト)
FALSE : 待たない
戻り値 0:成功
−1:エラー発生
解説 ScreenFlip関数の実行時にCRTの垂直同期信号を待つか、を 決めるフラグを設定する関数です。
基本的に待ったほうが画面の ちらつきが減り綺麗に表示されます。
この関数は垂直同期信号の意味を理解していて、その上で状態を 変更したい方だけが使用してください。
恐らく普通は変更する必要は ないと思います。
簡単だし必要な基礎知識だから、まずはティアリングとかvsyncとかでぐぐれ。 で、ScreenFlipはデフォでvsyncを取るんだが、その時に単純に待機するんで、60Hzの リフレッシュレートのモニタで垂直帰線を待つ環境だと「たまたまいい具合に」60Hzで 動作するタイマーのような副作用が出る。だが、あくまでも偶然の副作用。120Hzの CRTモニタなんかだと多分倍速ゲー。ライブラリの中身は見てないんで分からんけど、 DirectX9のPresentなんかだと描画領域が全部隠れたらノーウェイトになる。 まぁ、副作用に期待すんな、真面目に書け、ってこと。 余談だが、最近はもうほとんどvsync無視の流れ。洋ゲは元々vsync無視路線だったし、 Vista以降はOS側がティアリングの面倒も見てるっぽいんで。 だが、2Dゲーならvsyncは当分入れた方がいいだろうな。
>>90 つまり「タイマー書け」ということだな
把握した
>>92 見てきた
int clsDx( void );の部分をclsDx();にすればおk
まぁDirectXスレよりここで質問する方が正しいっちゃ正しいんだが…
ぶっちゃけ
>>6 だな
こまけぇこたぁ(ry
こんにちは DrawGraphなどの描画先を画面ではなく画像データにしたいのですができませんよね? どうしてますか?
98 :
97 :2009/08/20(木) 12:42:59 ID:/tnemE9L
画像データというか画面以外のサーフェスに描画したいということです
なるほど
>>98 MakeGraphとかで作ったテクスチャに描画するのなら、
SetDrawScreenでDX_SCREEN_BACKの代わりにグラフィックハンドルを指定すればできる
そういうことじゃないのならわかんないや
101 :
97 :2009/08/20(木) 13:58:30 ID:/tnemE9L
DrawGraphなどで有効になる透過色を白色にできないでしょうか?
>>102 SetTransColor( r, g, b ) で透過色設定出来るよ
ありがとうございます
SetDrawScreenってふつうのグラフィックハンドルも指定できるのか・・・ どこで知ったんだ?実験の賜物とか?
最初のスレの頃にはもう発見されてたような……
あ、最初に描画可能なグラフィックを作るフラグをオンにする必要があるのを忘れてた……
>>101 は大丈夫だっただろうか
105のおかげで100の意味が初めて理解できた。 何を言ってるんだろうと思ってた。 ありがとう100と105。
俺も初めて知った
初めて知った 感動した
SetDrawScreen という関数に画像ハンドルを渡すことで レンダリングターゲットを変更することが出来ます。 ただ、どんな画像ハンドルでも良いと言うわけではなくて、 レンダリングターゲットにすることが出来る画像ハンドルである必要があります。 レンダリングターゲットにすることができる画像ハンドルを作成する為には、 レンダリングターゲットにすることができる画像ハンドルを作成するかどうかを 設定する関数 SetDrawValidGraphCreateFlag に TRUE を渡して呼び出した後、 MakeGraph 関数で画像ハンドルを作成します。 int SubScreen; SetDrawValidGraphCreateFlag( TRUE ); SubScreen = MakeGraph( 640, 480 ); SetDrawValidGraphCreateFlag( FALSE ); こうして作成した画像ハンドルは SetDrawScreen で描画先とすることが出来ます。 SetDrawScreen( SubScreen ); 普通の画像として描画することも出来ます。 DrawGraph( 0, 0, SubScreen, TRUE ); ただ、この機能は他の機能に比べて正常に動作するグラフィックチップの 敷居が高いので、余りお勧めできません。 (ソフトウエアレンダリングモードでしたら確実に動作しますが)
うちのPCじゃ透過できなかったorz
ひとの形をしていなかったッ
製作中のゲームのメモリ使用量が300MBと半端ないんだが…。 どういう所を削ってけばいいんだろう。 それと、DXで製作されたソフトは内容にもよるだろうけど、 どのくらいの使用量が打倒?
画像や音楽データのフォーマット変換
実行中にメモリ使用量が除所に増えていくようならメモリリークの可能性がある
あとは、リソースは使いたいときだけオープンして使い終わったら開放するとか
俺のパソコンだけかも試練が、 ↑キーまたは↓キーを押している間、文字キーは1個しか入力できないの? ←キーまたは→キーを押している間は文字キーを2個入力できるのに。
ゲームのボタン配置変えたら解決した。 X → S Z → A
現在のPCの仕様だから問題ない 同時押しできるキーがある程度決まってるんで、 動的なゲームだとパッド対応にしないと辛かったりする
今のPCゲーは1G2G推奨があるから300M使ったぐらい問題ないだろう
>>122 それで収まってるならいいけどリークしてる場合1G超えちゃったりするから
>>119 キーボードは一部のキー(Shiftなど)を除いて、同時押し出来るように作られてないからな。
>>121 PCの仕様というか、キーボードの仕様だな。
しかも物理的な回路レベルでの話だから、プログラムで解決できる問題じゃない。
いいキーボードを使えば回避できるらしいというのを聞いた頃がある マジ?
全てのキーの同時押しに対応しているキーボードもある
>同時押しが出来ない コスト削減のためらしいしね。
パソコンによってはできない組み合わせで押すと本体から電子音がでるよね
Nキーロールオーバーでぐぐれ
画像描画するときに画面の外に描画しようとしたらスキップみたいな親切なことはライブラリのほうではやってもらえない? 自分で計算しないとだめかな
>>130 自分で計算っていっても難しいことじゃなくない?
画面サイズの最大値か0を超えようとしたら画像に合わせて処理すればいいだけだし
描画範囲を指定すると、そこからはみ出したら自動的に描画スキップしてくれてるんだぜ! 指定しなかった場合でも描画先の画面はみ出したらスキップされたような…… 画面内に1000回描画→凄く処理落ち 画面外に1000回描画→処理落ちなし ってことから推測しただけだけど
俺は画面の内外で当たり判定の有無も変えるようにしてるから 結局判定は自前でやってる。 単純な矩形なら簡単だけど、回転ありにしたらちょっと面倒なんだよね。 まぁ最大半径求めて大雑把に判定させるだけだけど。
ウィンドウのサイズを変更できるようにしたいと思います それで例えば画面いっぱいに一枚絵表示したいときは、 画像をウィンドウサイズにあわせて縮小、みたいなことを全ての場面でしなくてはならないのでしょうか?
つ[マニュアル]
135凄いな。 134の言いたい事理解できるんだ……俺は無理だった。
>>134 コンパイルして実行すりゃすぐわかることを何故聞く。
>>137 いちいち手間かけなくても画面をストレッチできるように指定できるかどうかを
聞きたかったんだと思うよ
わかりにくいけど
最初から解像度大きめに作っておいて、SetWindowSizeExtendRateで調節がベターか?
mp3で四曲合計16Mほどロードしたらメモリー消費量が300Mになったんだけどこんなもんかな?
>>140 多分そんなもん
ついでにいうと、特にメモリ内にロードしなくちゃいけない理由がない限りは
ストリーム再生したほうがいいと思うよ
関数一覧とか見てニヤニヤするのは俺だけじゃないはず 使いこなしきれてないけどなwww
なんで四曲合計16Mほどなのに300Mになってしまうのん?
そんなもんですかサンクス PlayMusicだとループ先頭がセットできないようなんでSoundのほう使ってます
>>143 詳しくないがよくわからんが
jpegとかpngだって展開したら結局BMPと同等らしいからMP3もwav並になるとか?
>>143 そこいら周りは、良くわからんがWMPでMP3を再生すると結構消費するな。
BGMとかは、気をつけた方が良いんだな。
つまり圧縮された音楽ファイルは読み込み時にデフォルトでwavファイル並の量のメモリ展開がされてるわけだな・・・
Dxライブラリで原点の設定を変えることは出来るでしょうか? WINAPIの関数でSetViewportOrgEx( HDC, X,Y ,NULL)? と言うのがあるらしいのですが、 もしかしてライブラリ中身をいじらないと無理?
>>149 3Dでならビューポート行列をセットする関数があるからそれでできる
2Dなら自前でなんとかするしかない
>>150 ググッててその単語何度か見た気がする・・・・・・。
自前で作ってみるよ。何事も挑戦だよな
ちょうど自分も同じ問題にぶつかったぜ 絶対座標と、スクリーンの原点を決めれば描画時にxyからスクリーン原点の座標引くだけで行けるぽい
原点の設定を変えてどんなことができるようになるんだ?
楽できる
いま「弾幕」って本のライブラリをいじってたんだけど。 Dxライブラリを使いながら座標変換の部分だけ取り出したくて、 描画処理関係のソースを必死に読んで組み込んでみたら、 まったく座標が関係なかったんだが・・・・・・。 具体的にどうすればよいの?(つかれた声で)
具体的にどうしたいいの?(つかれた声で)
コピペミスったし
かっこわりぃw
「弾幕」のサンプルでは、 .原点が画面の中心 .MaxX が1 .MaxY が1 .なのに画面サイズは普通 描画(X,Y)のXに+1しただけで画面端に行く 描画(X、Y) <= オメーはいったい何を基準に描画してんだよ? って言う風な流れでソースを読み始めた。 でも、仮引数に ”コンストラクタ”CGraphics(HWND hwnd)<=なにこれ?っと思って Dxライブラリのヘッダから extern HWND GetMainWindowHandle( void ) ; ってのを見つけて代入したんだけど。 思ったような効果が得られなくて orzしてたところ。 長文スマソ
>>156 それは本気で訊いてるのか?
「弾幕」って本を誰もが知ってると思ってるのか?
「座標変換の部分のソース」とやらを俺たちが知ってるとでも思ってるのか?
お前さんがどのようにそれを組み込んだか俺たちが知ってるとでも思ってるのか?
お前さんがなにをしようとしてたのか俺たちが知ってるとでも思ってるのか?
「まったく座標が関係なかった」ってのがどういう状況だったのか俺たちにわかるとでも思ってるのか?
ニホンゴ勉強してきまーす
また水平思考ゲームか…
原点座標の水平移動!
関係ないけど「弾幕」って本面白そうだなw アマゾンのレビュー見る限り弾幕作るのにはあまり約にたたなそうだが
それの一つ前のSTGプログラミングって本持ってるけど これも結構良い感じよ 読んでて「なるほどこういう風に考えるのか」ってテクがぎっしり ちと難しいけど
vS2008のC++で開発しています。 DXライブラリでループ中のデバッグってどうやるんでしょうか? F11のステップインで始めてもウィンドウが見えないし、 ウォッチ式も CXX0017エラーです:シンボル"pon"が見つかりません とエラーが出ます。
169 :
168 :2009/08/29(土) 10:49:29 ID:eAXf2/jo
すいません日本語おかしかったです二行目訂正します。 DXライブラリのProcessMessage関数、ClearDrawScreen関数ScreenFlip関数を使用し、 ループさせているときのデバッグってどうやるんでしょうか?
エラーの原因臭い箇所にブレークポイントつけてF5でデバッグ開始、 そこからF10のステップオーバーで処理を追う。 デバッグなしで実行する場合は関数のエラー時にMessageWindowを呼ぶと分かりやすいよ。
つDrawFormatString
172 :
168 :2009/08/29(土) 14:42:16 ID:eAXf2/jo
>>170 >>171 ありがとうございます
私も今はDrawFormatStringでウォッチウィンドウみたいなものを作ってます
173 :
名前は開発中のものです。 :2009/08/29(土) 22:36:31 ID:MCRpsmFK
SetTransColorの透過色設定 Windows7だとうまく透明化しない場合があるけど その場合あらかじめbmpで保存してその後にbmp2pngなどのツール使ってpngつくったら 透明化できた
透過色指定は画像ロードの前に! って、同じところで悩んでた覚えのある俺のソースにコメント入ってた。
座標(0,0)のRGB値を透過色として指定したいとおもっているのですが、 座標(0,0)のRGB値を得るにはどうしたらいいですか。
画像ファイルの、です。
これかなぁ 宣言 int GetPixelSoftImage( int SIHandle, int x, int y, int *r, int *g, int *b, int *a ) ; 概略 CPUで扱うイメージの指定座標の色を取得する(各色要素は0〜255) 引数 int SIHandle : ソフトウエアイメージハンドル int x, int y : 色を取得する座標 int *r : 取得した色の赤成分を書き込む変数のアドレス int *g : 取得した色の緑成分を書き込む変数のアドレス int *b : 取得した色の青成分を書き込む変数のアドレス int *a : 取得した色の透明度を書き込む変数のアドレス 戻り値 0:正常終了 −1:エラー 解説 LoadSoftImage 関数や、MakeARGB8ColorSoftImage 関数等で作成したソフトウエアイメージハンドルの指定の座標の色を取得します。 赤・緑・青・透明度各成分の値は0〜255です。透明情報の無い画像形式の場合の透明度は不定です。読み込み対象がパレット画像の場合は指定された座標のパレットの色が変数に代入されます。
LoadSoftImageしてGetPixelSoftImage
すいません画像ファイルはリソースとして実行ファイルに埋め込んでいてLoadGraphToResourceで読み込むのでLoadSoftImageは使えないですどうしたらいいですか
'GetPixelSoftImage': 識別子が見つかりませんでした
リソースに埋め込むってことはライブラリからやれることを制限しちゃうのであんまり勧められてないと思うんだけど こういう風にしたら無理やり取れるかな? SetDrawValidGraphCreateFlag( TRUE ); SubScreen = MakeGraph( 1, 1 ); SetDrawValidGraphCreateFlag( FALSE ); SetDrawScreen( SubScreen ); DrawGraph( 0, 0, ResourceBMP, FALSE ); color = GetPixel( 0, 0 ); SetDrawScreen( DX_SCREEN_BACK ); DeleteGraph( SubScreen );
GetPixelじゃ駄目なん?
CUIからCUIの移行がわけわかめ
タイルベースのゲームなんだけどCUIでのあるFから次のFまでの間の補完の仕方がさっぱりだ
updateのほうも書き直さないとだめなのかなこれ
>>168 int main(void)にして標準出力するとゲーム画面のほかにコマンドプロンプトが開かれるからデバッグに使えそうな気がする
CUIって聞いて何のことかサッパリな俺
CUIはわかるけど183が何を言ってるのかサッパリな俺 Fってなに?
FCUP
巨乳プログラミングか
>>183 CUIからCUIの移行がわけわかめ → 説明するつもりが全く無い
タイルベースのゲーム → 2DドラクエやねとはくやCrawlの画面を想像させるがやはり何も特定できない
あるFから次のF → 「フレーム」だとわかるが
補完の仕方が → 補完てのが何か何を何で補完なのかこれも説明するつもりが無い
updateのほうも → cursesでいうところのrefresh()を想像させるが特定のプログラムを前提とした言い方なのにDXライブラリにおいての何かはわからない
キー待ちのルーチンは
ClearInputCharBuf() と GetInputCharWait()
でgetch()相当のものを作るとCUIのゲームを移植する助けになる
なんだ
>>183 はただのカッコ付けたがりの初心者だったのか
>>189 そういう言い方もなんかかっこ悪いから止めといた方がいいよ。
ごめんなさい
ローグみたいなマス目区切りのゲームで ある枡からとなりの枡に歩かせるみたいな処理がわかんない CUIだと移動前と移動後の座標に対応した位置に文字をプリントするだけだけど GUIだと移動中も補完しないといけないけどそのうまいやりかたがわからない キャラクターに整数のマス目座標だけじゃなくて実数の座標も持たせて ゲームの1ステップの更新処理を書き直さないといけないのかな
そうですね
>>192 更新処理はアニメーションの時間を挟むように書き直さないといけないと思う
実数の座標を持たせる方法もあるけど、移動前のマスの座標を記憶しておくだけでも大丈夫な気もする
あと、アニメーションが何フレーム目かを数えておく変数。
移動に30フレーム掛かるなら、移動アニメーション時のみ描画座標を
(float)( [移動後の描画座標] - [移動前の描画座標] ) / 30.0f * [フレーム数] + 移動前の描画座標
みたいにすると比較的楽に実装できるかもしれない
カッコつけ呼ばわりしてゴメンね
>>192 普通に座標で扱って、マス目の方をそれに合わせるのが楽だと思う。
1マスの大きさが32×32だとすると、
┌─┬─┐
│A │B │
├─┼─┤
│C │D │
└─┴─┘
Aの座標は (0*32.0*32)
Bの座標は (1*32.0*32)
Cの座標は (0*32.1*32)
Dの座標は (1*32.1*32)
ってなるからそれに合わせて停止させるなり、なんなりすればいいんじゃない。
まずは途中のアニメのないバージョンを作ってから考えればいいんでないかい。
>>196 ごめん、正直それは無いかなと思った。
確かに描画処理は正直で分かりやすいが、それ以外の部分にしわ寄せが来ると思う。
別に普通に座標で扱っても枡の座標なんて32で割ればいいだけじゃん
ゲームの内容が、描画の都合に合わせられるって問題じゃね?
どんな不都合があるのか全く想像できない。 逆にマス目優先にした方が不都合出る気がするのだが。
まあローグライクやRPGのような非リアルタイプのゲームだと座標優先にする必要ないのかもね 基本マス目で取って移動時の描画の時だけその分ずらすなりすれば
>>201 そんな感じかな。
もちろんリアルタイムなゲームで、ゲーム的な座標と表示される座標を切り分けても良いと思うよ。
マップの拡大/縮小なんかも出来るようになるし。
格闘ゲームなんかに多いのかな?
2人の距離が近いと画面がズームインして、離れてるとズームアウトするような演出。
>それ以外の部分にしわ寄せが来ると思う。 >例えば、 ←ここが抜けてる
204 :
192 :2009/09/01(火) 12:17:02 ID:yHdt/VNY
レスdです
>>194 ,195あたりを参考にさせてもらいます
アンカーだけ貼るのも大人げないと思った。ごめん。
>>203 ローグあんまり詳しくないので、例えを将棋に変更させてくれ。そんなに変わらんと思うし。
基本となるのは、ゲームの処理部分と描画部分は可能な限り分けるべき、という考え方。
あくまで個人的な考え方なので、参考までに。
まず、今回の話でいうゲーム処理/描画優先というのは、例えば「歩」を一歩前に進める処理をした場合、
ゲーム優先: y -= 1;
描画優先: y -= SQUARE_WIDTH; //SQUARE_WIDTHは1マスの大きさ
のようなコードになることを指す。
将棋の場合は、実際には相対座標ではなく棋譜のようなデータをやり取りするような気もするけどね。
当然ながら、SQUARE_WIDTH というのは描画に必要な数字であって、将棋のルーチンには関係がない。
ゆえに、処理と描画の分割の原則に反する。
実際に作るところを想像してみれば分かると思うが、
コマを動かす、コマを取る、コマを使う…などと、あらゆる場面で SQUARE_WIDTH の値が必要になる。
それらを関数に切り分けたとしても、やっぱり SQUARE_WIDTH が要ることには変わりない。
となると、グローバル変数にするか、全ての処理関数に引数として渡すか、処理クラスのメンバ変数にするか…
みたいな話になってしまう。これはちょっと面倒くさい。
>206の続き メリットはもう1つあって、演出の部分を独立して記述できるというのがある。 パッと思いつくのは、以下の2つ。 (1)コマを動かすアニメーション (2)将棋盤やマスの外見(大きさや向きなど) (1)については、コマを等速で動かす以外にも、 瞬間移動のような演出で移動したり、本当に将棋を打っているような動かし方(一旦コマを取ってから目的の位置に直接打つ) なんて感じにもアレンジできる。 (2)について、将棋盤を拡大/縮小したり、回転させたり…ということ。 DXライブラリだと微妙だが、頑張れば3D表示にすることも出来るんじゃないかな。 将棋からは少し離れるが、>202に挙げた格闘ゲームのような場合だと、 画面のズーム具合によって当たり判定が変わってくるとか、あんまり考えたくないw 「描画優先」だと、これらの演出をやろうとしたら、処理ルーチンまで弄らなきゃならない。 プログラマが複数居る場合や、自分が昔作ったコードを再利用しよう!って時には非常に便利。
要するにアニメーション用のデータと関数を別に作れって事だよね?
うん。
結局どんな方法でもできちゃうから、人それぞれの実装になっちゃうんだよなぁ こういうのは結構性格が出るもんだよね
そうだよねえ 俺とかは最近は関数型言語にはまってるからクラス書くの躊躇しちゃうし。 書くけど
一度C++の勉強するのもありだよ クラス以外にも使えるものがたくさん増えるから
俺に言ってるのかな? 大丈夫C++系言語で関数型ぽくやってるだけだから
STLとBoostとテンプレートは便利だなぁ
STLしか使ったことないなー Boostって実際便利なのかしら ……ってそろそろスレチだね
正規表現のために導入したな…
VS2008のC++でプログラムを書いています DXライブラリを使って色々書いているのですが、 これは何という環境になるんでしょうか?? SDKやMFCとか色々聞きますが、定義は調べて何となくわかるのですが 実際使ってみてもイマイチピンと来ません。 恥ずかしい質問ですが、よければ教えてください
>>217 開発環境のことかな?
よくわかんないけど
VC2008+DXライブラリ……ってことになるんじゃないのじゃないの?
>>218 C++/CLIとか色々区分けがあるようでよく分からないままでした
特にないのですね、ありがとうございます
本家掲示板より一部コピペ [2371] 現状報告 投稿者:管理人 投稿日:2009/08/26(Wed) 00:28 [返信] ●●さんも仰られていますが現在の機能でも一応3Dゲームを作ることは可能です が、●●さんの仰られているとおり3Dモデルを描画したい場合に3Dモデルを読み込む プログラムも自前で用意しなければならないのでちょっと大変です。 なので現在DXライブラリの側で3Dモデルを読み込んだり描画したりする機能を作っています。 公開までにはまだ時間がかかりそうですが・・・ ってことはもうすぐDXライブラリが3Dもやりやすくなるってこと!?
3D機能のことは作者さん自身が結構前から掲示板で言ってるね。 シェーダー書いてるとか、サンプルゲーム作っているようなことも書いてあったと思う。
dxライブラリ作者さんには本当に頭が上がらないけど 実質作者さん一人で作ってる状態だから 作者さんのやる気が失われたらそれまでだよな。 やはりいつかはdirectxを直接叩けるようにならないとダメかな。
モデルの読み込み、表示自体はとても簡単だったりする…… でもモデルって意外とメモリ食うんだよなぁ……
意外っていうか、そりゃ食うだろうなと思うのは素人考えか?
数値だけの構造体の配列のサイズなんて誤差の範囲だぜー とか思ってたら確保失敗するくらいのサイズになったんで、当時の自分が素人だったのです
>>227 ありがとうございます。おかげさまでそのエラーは出なくなりました
が、別のエラーが出るようになりました
1>c:\documents and settings\user1\デスクトップ\te\main.cpp(8) : error C2365: 'SetWindowIconID' : 再定義; 以前の定義は '関数' でした。
1> d:\program files\vc++\dxlib_vc\プロジェクトに追加すべきファイル_vc用\dxlib.h(1288) : 'SetWindowIconID' の宣言を確認してください。
1>normal.cpp
以上がエラーです 後、dxlib.h(1288) はこうなっていましたが、触ったことはありません extern int SetWindowIconID( int ID ) ; どこがおかしいんでしょう・・
>>229 う〜ん、VCまともに使ったことないから憶測だけど、
多分「resource.h」はどこかに生成されていて、自動的にインクルードされてるんじゃないかな?
だから、ファイル検索かなにかでそのプロジェクトの「resource.h」を探して、
その中から「#define IDI_ICON1」を検索して、値を使えばいいんじゃなかろうか。
あと、SetWindowIconID();はSetWindowIconID(101);みたいに値を入れて使うんだと思う。
main.cppをここに書けばわかるんじゃないかな
main.cpp #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ SetWindowIconID(1); : Resource.rc 1 ICON "pa.ico" MAINICON ICON "pa.ico" ヘッダなくていけると思う。 Resource.rcの中身が下のだけしか書いてなかったのが原因かな
あら、書き込もうとしたら別の人が。
どうやらVC2005での方法はVC2008ではそのまま使えないみたいね
あとエラーの原因は
>>233 が書いてくれてる通りSetWindowIconID();がMain関数の外だったからみたい
main.cppとResource.rcを上の通り書き換えたらちゃんとアイコンが変わるのを確認しました
……こっそり自分も参考にさせてもらうw
>>233 うおおおおおおおおおおおおおおおおおおありがとうございます!!
ぶっちゃけ何のことかさぱり分かりませんが理解できるように頑張ります!!
ありがとうございました!!!!!
へえ。 VC++2008EEではリソースファイル自体使えないと思ってたが ちゃんと認識してコンパイル自体は通るものなんだな。
エディタが無いだけじゃなかったかな? メモ帳なりで直打ちすればいけたはず
238 :
名前は開発中のものです。 :2009/09/04(金) 23:54:55 ID:OeFMQ4dR
Visual Studio 2008 Professional Edition を使ってるんだけど、リソースファイルのエディタっていけるの? いや、あんまし使う気はないけど、生糸効果と思って
「生糸効果」って使う気はないけど知識として知っておくと安心するような 心理効果のことをいうのかとと思ってググった俺にあやまれ! で、自分はVisual Studio殆ど使わないから知らないや
>>239 あんたのせいでぐぐるはめになった、ゆるさない。
>>238 あんたのせいでエロティックな想像をしたじゃないか
どうしてくれる
生理効果でもなかったな。 えーーい、あやまれ
ちくしょう、これは悔しい!
聞いとこうか か 3分考えた。
3D機能追加バージョンきたよ〜
うそですよね
うおおほんとだきてる
今までのゲームにライブラリ差し替えて ちゃんと動くか調べるのがいいかなー?
またまたご冗談を・・・!
ほんとだすげー 9になったのか
本家のとこに書いてログ流すのもアレなんでここで 管理人さんSUGEEEEE 3D分からないけど勉強するよ ありがとう!!
252 :
名前は開発中のものです。 :2009/09/06(日) 20:20:14 ID:0/c4sO+5
きた
次はかっちょいい3Dモデルを素人でも簡単に作れるライブラリをお願いします
きたー! のはいいけど自前で組んだ3D機能はどうしようか……
ほんとだ! 管理人さんおつかれさま!
3D座標と2D座標の変換コマンドは、ありますか?
これから2Dベースのゲーム作るんだけど 今までどおりDXライブラリの2D関数で作るか、それとも3Dを2Dのように使いながら 2Dベースにするか、どちらがいいと思う? 3Dの詳しいことは分からないけど、後者の方法が後々よさそうな気がする
描画部分をゲームシステム内部に入り込ませなければなんでもおk DxLibの2Dは3Dの機能を使って動いてるとか聞いたから2Dゲー作るならどっち使っても変わらないと思う
てっきり釣りだと思って無視してたよ、作者さん感謝
算術演算関数は2Dでも便利そうだな
ウインドウからフルスクリーンに切り替えるときは正常に切り替わるんだが 逆すると画面かたまる。 Ver2.25bならそんなことならなかったのに・・・バグ?
>>257 普通に考えて2D関数でいいと思う。
DX9ベースなんだし結局は3Dを2Dのように使ってるわけだし。
もう言うことなしだな
ゲームシステム内部に描画部分を入り込ませないって難しくない? 格闘ゲームとかだったら技の描画が終わるまで待たないといけないとかあるから プログラムのほうが技描画につかうフレーム数とか知らないといけないし
アニメーションをコントロールする部分は処理側の動作 コントローラから与えられた指示通りに描画するのは描画側の動作
つーか、システム内部に描画処理を入れるほうが難しい。
ゲームシステムと描画部分は別スレッドで動かして同期させるぐらいでもいいレベル それくらい切り離す
別スレッドってやってみたいけど難しそうなイメージがある……
切り離そうと思ったけど全然できないです・・ ・・・ while(ProcessMessage()){ gamesystem(); gamebyouga(); } ScreenFlip(); ・・・ みたいにしろってことですよね? こういう場合マップにnpcや家があるときは、その情報は描画ルーチンに引数で渡すの?
よく考えたらDXライブラリってそういうのを気にしなくても言いように作られたライブラリなんだよな 自分が気にならないうちはどう組んでも大丈夫なんじゃない?
271 :
名前は開発中のものです。 :2009/09/09(水) 01:48:35 ID:qdGLrtJ/
>>269 マップの情報(構造体やリストなど)をstructにして共有してしまう
こうするとAIの思考などを増やした時にも活用できる
引数で渡すのはやってもいいけど、概念が難しくなるな
クラス使えばおk while(true){ GameMain.update(); GameMain.draw(); } みたいな感じで
マップの情報なんかグローバル変数でいいよ 整理したかったらクラスにまとめてそのインスタンスをグローバル変数にする どうせマップの仕様なんかゲームによって全然違うんだから再利用性とか考えても仕方ない
新しいのを入れたら一部のソリューションでインテリセンスがニート化してしまった
>>274 そのセンスが(
マップクラスを流用できるようにすればrpgでもactでもstgでも流用できるというのに
もう部品化を突き詰めて考えな
なんでもかんでも流用できるんだぞ?
繰り返し繰り返しプログラム描いてるうちに自然と部品化の癖が付いてくもんさ そうじゃないうちに無理にやろうとするとぐちゃぐちゃなソースになったりする…… はい、経験者です
char *name="あいうえお"; char ch[64]="かきくけこ"; name=ch; DrawFormatString(0,0,Color,"%s",name); これを実行すると文字化けするのですが、どこが悪いのでしょうか? printfDxだとちゃんと かきくけこ と表示されるのですが・・・
ある瞬間に慣れるんだよね それはクラス化とかポインタとか、ある程度人によりけりだけどなんだかん゛でC++独自の機能ってのは多い
個人的に言わせて貰えば、 クラス化は勧めるけど、(再利用を考え)モジュールとして流用は考えないのが吉。 正直、モジュール化を考えるぐらいなら、読みやすいコードと 無駄に依存しあわないクラス関係を優先すべき。 今時のOO本なら、大抵が 「再利用」は誇大広告だった。 と言ってるように、その方向でのクラス設計なんて考えない方が良い。 OOが構造化と対比し、流用可能箇所を事前に決めておけば、効率よく「再利用」は可能だが、 なんでもかんでもが、流用できるわけでもないし、下手になんでもかんでも流用しようとすれば、 どんどんと利点のない制約を負う羽目になる。 ついでに言えば、ゲームはコードをガンガン書いてモノ創りまくった方が良いよ。 設計やらなんやらは、とりあえず指負って数えられない程度はモノつくってからで十分。
設計気にしだして、実装してる途中に、ちょっといい設計に気づいてやり直して・・・とかいうループに陥って一向に先に進めない俺
>>282 よう、俺。自分もその泥沼にはまって当分先に進めそうにないよ。
ところで自分も一応ヘタレなりにOOでやってるけど、OO設計自体難しいし、
下手にやると無駄にコード量とバグが増えるだけになってしまう。
あくまで私見だが、個人で小規模なプログラムを作るんだったら、
方法論にとらわれるよりはなるべくコード量が少なくて、簡潔に書けるようにした方がいいと思う。
最終的にバグが出なければプレイヤーは文句言わないわけだし。
それから真面目にOOやりたいんだったらC++よりもC#の方がお勧め。
ヘッダファイルを書く必要がないし、プロパティが使えるし、
意味不明なコンパイルエラーも出ないし、インテリセンスが強力なので、格段に楽。
まだ試してないけど、DXライブラリの最新版も使えるみたいだし。
>>282 俺のことかー!
抽象クラスでどうたらとか委譲してどったらとかして変更に強い保守性の高いプログラム云々の
薀蓄を半端に齧っていつまで経ってもゲーム制作が進まない。
>>282 俺もだー!
あんまりグダグダやってるとそのうち別のゲームとの出会いがあったりして、
今度はそのジャンルのゲーム作りたくなって……
って感じに投げちゃう場合があるから怖い
C#は標準ライブラリがとても綺麗だから普通にDXライブラリ使うとかなり異質な感じになって気持ち悪い だからDXを徹底的にラップしたくなって何のためにDXライブラリ使ってるのかよく分からなくなる
287 :
名前は開発中のものです。 :2009/09/10(木) 14:01:45 ID:S3IE2udy
DrawGraphとLoadGraph関数について質問です LoadGraph関数で画像(int hk0)をローカル変数にすると画像を表示できるのですが、 グローバル変数だと表示できません これはこういう仕様ということなのでしょうか? //洞窟グラフィック //int hk0=LoadGraph( "背景0.PNG" ); int normal(){ while(ProcessMessage()==0 && ClearDrawScreen()==0){ //↑メッセージ処理 ↑画面をクリア //ココ↓ DrawGraph( 30,30, hk0 , FALSE ) ;//最奥の背景 //ココ↑ ScreenFlip(); } return 0; }
それだとDXライブラリが初期化される前にLoadGraphが呼ばれてしまうのでエラーになる。 グローバルスコープではhk0は宣言するだけにして,グラフィックの読み込みとhk0への代入は DXライブラリを初期化した後の別の場所に書く。
289 :
名前は開発中のものです。 :2009/09/10(木) 14:15:57 ID:S3IE2udy
ところで誰か3Dのほう使ってみた?
講座が出揃う頃に
管理人凄過ぎだろ よくあんなにサンプル作る気になれるな
管理人の作ってるゲームがどういうのか見たい
ClearDrawScreen()で画面を消去するときに色を 指定する方法ってありますか? 一応リファレンス見たのですが見つからなかったので
管理人氏にお金が入るように何かできないものか
DrawBoxを使うのはダメかい?
本はいらん カンパできるようにしておけばいいかも
>>294 あれは画面を0,0,0,で埋め尽くすだけだからな
ClearDrawScreen()をいじればその一食の色になるかもしれないが、オススメはできない
俺は画面消去したあと素直に画面を塗りつぶしてる 描画コスト的にどうなのかはわからにゃー
SetBackGroundColorみたいな隠れ関数があった気がする
あったこれかな?違ってたらすまん DxLib(1319): extern int SetBackgroundColor( int Red, int Green, int Blue ) ; // メインウインドウのバックグラウンドカラーを設定する
画面全体にDrawBoxで塗りつぶしちゃうんなら直前のClearいらなくね?
いらないと思うね。 DrawBoxのコストもほとんど無いと思うし、これだけでいいと思うな。
サンプルゲームの弾当てゲームが絵が出ない。 ボタン押すとショット音みたいなのは出るから起動はしてるんだと思うけど。
初見で33824まで行ったけどそこから行けなくなった
置くも何も展開したら動かさずそのまま叩けばいいだけだが
308 :
306 :2009/09/11(金) 05:48:04 ID:RaGG6Tm7
>>307 ああ、サンプルゲームってそっちか。
勘違いしてた
俺も最初置く場所が間違ってんだろと思って確かめたんだよ
d3d9を使っているって事はもうdirect Drawは使ってないの? 今までの2D描画関数も内部的にはブリッツからポリゴンにテクスチャ貼って系の処理に 置き換わってるの?
そうだよ
非常に嬉しい進化だが
かなりのヘボ環境でも動くのが大きな利点だったから
動かない環境が出そうでやや心配。
>>304 とか解決したんだろうか?
表示されない環境とかplz
98SEとかMeとか聞かなくなって久しいし、 もうDirectX9がほぼ標準で搭載されてると見ていいんじゃないかな。
というかバリバリ3D使うようなゲームならDirectX9インスコできないような環境では まともにプレイできないんでないの? スペック的に。 DirectX9インスコできなかったのってWin95しか経験ないんだけど
>というかバリバリ3D使うようなゲームなら いや、そういう問題じゃなくて。 DXライブラリはバリバリ3Dゲー作るためだけに使うわけじゃないだろう? 旧態依然としたロースペック環境で動くようなお手軽2Dゲー作るのに、 逆に足かせになってしまわないかって事でしょう。
古い環境に対応したいなら以前のバージョンのままでいいんじゃないかな、てことを言いたかったんです でも今までのバージョンだとvistaとかで動かない場合があるらしいし (vistaでなくても最近のグラボだと不具合起きるのも多いっぽい)、 結局最新OSに対応するか古いOSに対応するかのどっちかを選ばなきゃいけなくなるんだよね
古いバージョンすでに持ってる人ならいいけど、 新規ユーザーの場合、古いバージョンも今後ずっと公開されてないといけないよね。
//前回のマウスクリック状態を記録する BOOL MOUSE_previous = FALSE; //マウス左ボタンが押されているかどうか if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) { if( MOUSE_previous == FALSE){ // テロン音の再生 PlaySoundMem( teron , DX_PLAYTYPE_BACK ) ; MOUSE_previous = TRUE; } else{ MOUSE_previous = FALSE; } }
すみません、画面をクリックすると音が出るというものを作りたいのですが 音は出るもののクリックを押しっぱなしで音が連鎖してしまうため テテテテテテテテテロン♪となってしまいます… 再生が終わるまで操作を受け付けなくすることならできたのですが 今度はクリック連打ができなくて(音が鳴り終わるまで操作不能)になりスムーズにいきませんでした イラっと来たときにPCを素手で殴るフラッシュみたいなのを作りたいのですが どなたかヒントをもらえませんでしょうか ↓これだとクリックしていると常に音がなってしまう… //音 teron = LoadSoundMem( "sound\\miss.ogg" ) ; //マウス左ボタンが押されているかどうか if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) { if( MOUSE_previous == FALSE){ // テロン音の再生 PlaySoundMem( teron , DX_PLAYTYPE_BACK ) ; MOUSE_previous = TRUE; } else{ MOUSE_previous = FALSE; } }
ためしてないけど //マウス左ボタンが押されているかどうか if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) { if( MOUSE_previous == FALSE) { // テロン音の再生 PlaySoundMem( teron , DX_PLAYTYPE_BACK ) ; } MOUSE_previous = TRUE; } else { MOUSE_previous = FALSE; }
>>322 おおおできました!!ありがとうございます!
TRUEを置く場所が悪かったのか…
まだまだはじめたばかりで全然理解できていない;
14歳からはじめるC言語がまったく理解できない私は小学生レベル…
その14は16進数の14だ
詐欺じゃねーかwww
10進数の14歳で理解するにはある程度のベースがないと辛いよな…… なんらかのツールでゲーム製作の経験があるとか。
14の頃は「おまじない」を覚えられなくて挫折した
hspのベースがあったから楽だったけど なかったら俺の頭じゃ無理
>>314 解決してないです。
画像ファイルの場所とか、解凍したそのままのフォルダ構成で起動してるんですが…。
DirectX9が動く環境です。
OSはXPでDirectX9.0c,グラボは7600GTなので問題は無いはずです。
追記 dataフォルダ内のXファイル(Teki.x)をDirectXViewerで開いても何も表示されないのは普通ですかね?
高校生になるまでpc触らせてもらえんかった こういうのって結構大きいと思う。
中学生で2chやる奴にならなくて良かったろ
やってたら絶対無色だろうな
俺は中学生でPC持ったなー コミックメーカー→GameMaker→C++って感じだった PCがネット使えないから携帯で必死にドキュメント読みながらやってたっけ
将来有望すぎるw 同じゆとり世代として負けてらんないな……
とても敵わんな。 それにしても、本当に15歳なのだろうか。 プログラミング知識はともかく、文章が上手すぎる。 そういや、最近になってtinyゼビウスを作ったのが当時小学生だと知って愕然とした。 小学生の作ったゲームを買って遊んでたのかよ、当時の俺……。
>>335 やっぱこういうのは早めに教育するべきなのかねぇ
そろばんとかフラッシュ暗算とかに近いものがあるのかもしれん
今の時代、小学校にも国語・算数・プログラミングってな勢いで 浸透させたらいいのに。 思考能力の訓練としては算数よりも有用だと思う。算数+国語+図工ぐらいの ポテンシャルがあると思う。
14歳<俺、RPGツクールでRPG作れるプログラマなんだぜっ(キリッ
出来を期待しなければ3歳でも作れる
>>341 最近のRPGツクールにはRGSSという機能がついていてだな、
スクリプトの場合はプログラマじゃなくてスクリプタじゃない?
RPG
まちがえた。ごめ。
そろそろ3D使った凄いゲームでてきた?
>>338 情報ありがとうございます。
新バージョンに移行するかどうか迷ったのでサンプル動かしてみたのですが、
新バージョンに移行したときに試してみます。
リンク先の記事は新バージョン前のものですが、
旧バージョンは問題なく動いてますしいくつかゲーム製作したんですけどねぇ…。
まあ新バージョンに移行って言っても使い分ければいいだけですが、
ただそれだけの作業がめんどいって理由ですので気が向いて新バージョンを試せたら報告させていただきますね。
俺の作ったゲーム未満の異物は、新バージョンにしてもぜんぶ動いてる
>>329 >>338 3D機能が使いたいので、2.25を上書きで3.0にしたら、
画面が真っ黒になって改善されないので弱っているので情報探しています。
BCC版3.0
XPでDirectX9.0c,nVidia GeForce 7600GSです。
329さんと似ています。
で、SetUseDirectDrawFlag(FALSE);を入れたら動き出しました。
他の人が3.0で作ったプログラムが(上記の一文を入れて貰わないと)一切動かない。
352 :
名前は開発中のものです。 :2009/09/14(月) 08:18:18 ID:f8Z+xLGT
まだ3.00安定してないみたいだなー ふと思ったんだけど、動作環境を多くするために2.25で作ったexeと3.00で作ったexeを同梱するってのはアリかね?
動作報告で作者さまに貢献するか。
>>354 プログラム的に対処できないならそれしか方法無いしな
357 :
351 :2009/09/14(月) 16:14:06 ID:pVkfPbzp
>>353 アンチエイリアシングなど色々な状態の組み合わせで試してみたけどダメでした。
文字列をタブでそろえるにはどうすればいいんでしょうか? どこかでみたと思うのですが忘れてしまいました (例 あいうえお かきくけこ さしす たちつてと わ やゆよ といった感じでそろえたいのです
\t スレ違いだということは自覚しておくように
DxLibってタブ把握してくれてるの?
無理でした 無さそうなので他の方法で解決してみます
DXライブラリではタブ認識せんよ 等幅フォントで間に必要な分のスペース入れるしかないんじゃないかなぁ……
タブキーでタブ幅分の半角スペースを埋めてくれるテキストエディタ使うしか無いんじゃないかな
適当なタブ記号を自分で決めて良い塩梅に表示してくれる関数を作るとか
タブも改行も認識しないから自分で計算するのが手っ取り早いね そっちのほうが後で応用も効くし
昔作ったゲームを久しぶりにやってみようと思ったら 画面が真っ黒になって起動しない、動くけど真っ黒のまま描画されないなどバグが起こりました SetUseDirectDrawFlag(FALSE);を書くことで解決したのですが描写がガクガクになります この真っ黒になるのってグラフィックドライバの問題なんですかね?? この前最新版を入れてから動かなくなりました OSはwindows7 RC 64bit NVIDIA GeForce 8400 GS ドライバ 190.38 です・・・
Win7の64bitじゃない他の環境で試せない?
プチ動作報告 WinXPHome NvidiaGeFo9600GT ドライバ 171.16 2.25から3.00に移行したけど問題なし
369 :
361 :2009/09/15(火) 19:13:06 ID:TVGKkCOT
GetDrawStringWidth DrawString で描画される文字列の幅(ドット単位)を得る GetDrawFormatStringWidth DrawFormatString 関数書式付き文字列の描画幅(ドット単位)を得る で代用できました。ありがとうございました。
372 :
366 :2009/09/16(水) 00:26:31 ID:JMsMCKxf
VCでコンパイルして、動作が止まった時の出力のところに 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' を読み込みました 'VC弾幕.exe': 'C:\Windows\SysWOW64\nvapi.dll' を読み込みました 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' をアンロード 'VC弾幕.exe': 'C:\Windows\SysWOW64\d3dim700.dll' を読み込みました 'VC弾幕.exe': 'C:\Windows\SysWOW64\l3codeca.acm' を読み込みました 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' を読み込みました 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' をアンロード 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' を読み込みました 'VC弾幕.exe': 'C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll' をアンロード っとあるのですが、これってうまく読み込めてないってことですかね?
へ?
374 :
名前は開発中のものです。 :2009/09/16(水) 01:09:58 ID:k7+NG1+O
DXライブラリでゲーム作る人STGばかりだと飽きるから、他のジャンルも作って欲しいよ
ともだちがたいぴんぐげーつくってるお
5割くらいの人間が某方弾幕ゲーを作りたがる 2割くらいの人間がそれ以外のSTGを作る 3%の人間が別ジャンルのゲームを作る 残りの人間は勉強だけで終わる 体感ではそんな感じ 異論は認める
>>377 それは流石に極端じゃねえかなあ。
弾幕STGが好きなので、そればかり目に留まるとか、友人も弾幕STG好きが多いとか。
3割が勉強だけで終わる、とかは微妙に納得するが。
>>378 某方はそこそこ好きだが弾幕ゲーは嫌いだぜ
同人STGで一山当てるぜみたいな馬鹿が多いんじゃなく 講座や作例はSTGが多いから自然と・・・
3D機能もついたことだし斑鳩みたいなの作るか
作ってみれば分かる STGが他ジャンルよりいかに敷居が低いかを
二割でサーセン
>>382 突っ込みたいところは幾つかあるが、
初級者向けの教材としてSTGが多いのは事実だろうなあ。
横アクションだと地形との判定とかマップ作ったり素材面倒かも 格ゲーだとドット絵で死ぬ RPGだとデータベース管理やマップ云々、イベントやらで死ぬ STG…!
敵なんかどうせ画面内に入ったら即着弾で消えるし スライド移動で飛んでくるから全くアニメしなくても問題なし。 素材面では確かに楽で教材としては最適だな。 横アクションだと最低でも歩くアニメが要る。
センスもいらないしなSTG 最近じゃ障害物すらないし
やっぱ横シューもやりてーな
大量に発生する当たり判定もマシンスペックに頼る富豪プログラムでどうにでもなるし 敵や敵弾にもAI的なものは必要なく、軽くランダム混ぜたパターン記述で済ますことができるし。 普通のドラクエタイプRPGは案外難しかったりするけど SRPGやローグ系は結構楽だったりする。作ってる人も多い。 Wizardry系の3Dダンジョンは、マップ移動まで公開して戦闘ルーチン組み込めずに挫折するのが 見てて笑えるほどいつものパターン。
390 :
372 :2009/09/16(水) 10:08:53 ID:JMsMCKxf
すみません、言葉が足りなかったですかね・・・ DXライブラリで作ったゲームプレイしようとしたときに動作が止まるorウィンドウが真っ暗になるのですが VCの右下の出力のところを見ると C:\Program Files (x86)\NVIDIA Corporation\3D Vision\nvSCPAPI.dll の読み込みとアンロードを繰り返しているので、NVIDIAのドライバのdllファイルをうまく読み込めていないんということなんででしょうか?
作ってる人が多いからってSTG作っちゃいけないわけじゃないだろうと。 DXライブラリ触る以前からSTGばっかり作ってる身にするとこの流れはチクチク痛いぜ
>>389 戦闘ルーチンって難しいのか?
今まさにそれを作ってるんだが・・・
難しくはないが面倒、ってとこじゃね?
切り分け方で結構変わるよなー 戦闘ルーチンよりもコマンド入力部を部品化するのが面倒。
基礎部分をつくるまでが面倒くさいな……。 まぁこれをいうなら別に戦闘ルーチンだけとは限らんが。
俺には戦闘ルーチン難しかったぜ。 言葉にすると ・入力受付→敵味方の行動決定 ・素早さなんかによる行動順ソート ・リスト順に行動解決 こんなもんだけど、いなくなった相手を攻撃しないように攻撃の振り替えしたり 回復とかグループ・全体攻撃だとか追加するたびに 無神経に肥大化していくのがイヤだった。
自分の場合は敵味方の行動をそれぞれ行動構造体にまとめて、 再生部は別にすることで結構シンプルにできたな これなら肥大化していく心配もないし
一番簡単なのって落ちげーかなって思うけどなー 絵の準備は楽だしゲームとして気を使う部分も少ないし テトリス流行った時は○○リスってクソゲーが死ぬほどあったよねw
399 :
名前は開発中のものです。 :2009/09/16(水) 12:40:34 ID:agcxS8EX
助けてください!string型の文字列を出力するにはどうすればいいんでしようか? DrawFormatStringで試してみましたが無理でした #include "DxLib.h" #include <string> using namespace std; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 //ループ開始 while(ProcessMessage()==0 && ClearDrawScreen()==0 ){ //ココ↓// class message { public: string k[30];//string配列30個を用意 }; message mes1;//messageクラスmes1を作成 mes1.k[2]="a";//メンバに代入 DrawFormatString( 50 , 15 , 65535 , "要素2は%s" , mes1.k[2]) ; //ココ↑// ScreenFlip(); } DxLib_End(); return 0; }
>>390 公式にでも投げてみれば?
>>399 stringをそのままprintfに渡せると思ってる?
意外になんとでもなるもんだなあ。 mes1.k[2]="a";//メンバに代入 DrawFormatString( 50 , 15 , 65535 , "要素2は%s" , mes1.k[2].c_str()) ; //ココ↑//
・ひたすら上から降ってくるモノを取る、もしくは避けるゲーム ・固定画面シューティング ・テトリス(同じ落ちモノでもぷよぷよなどは少し面倒) ・倉庫番 教材として、この辺は何度か見た
404 :
名前は開発中のものです。 :2009/09/16(水) 13:06:24 ID:agcxS8EX
>>398 5ヶ月前にc言語の勉強はじめて、最初の1ヶ月くらいでぷよぷよの再現に挑戦した
あえて調べずに試行錯誤して泥臭いアルゴリズムながら完成
後から調べて再帰アルゴリズム知った時は驚愕したよ
最初に思い付いたのが誰か知らんけど、勉強量じゃ越えられない壁ってあるんだなって
何年やってても、再帰アルゴリズムの発想には至らなかったと思う
今は勉強2作目としてR-TYPEの1面再現に挑戦してるけど、今んとこぷよアルゴリズムほどの壁には当たってないな
てか俺もSTGかw
再帰なしでどうやったの・・・
再帰呼び出しって普通に思いつかないか? 本にも載ってるし
ムリダナ
昔、下手撃ったら無限ループとかメモリオーバーとかする恐れがあったから避けてたなぁ。
末尾再帰最適化なんて知らないから怖くてできないよ
使わないからすぐに忘れる
>>406 配列を上から下へ、下から上へと検索して隣合った同色をグループ化してゆくの
渦巻き型に繋がった場合とか、検索にかかりにくい型を洗い出したら、ぷよのフィールドの大きさで8往復の検索が必要だったw
フィールドが広くなればねずみ算式に検索回数も増える
他に検索ロボット式ってのも思い付いたけど、往復式でうまくいったから試してない
スレ違いだね、すまそ
413 :
名前は開発中のものです。 :2009/09/16(水) 21:21:11 ID:bWSg0bAs
いいかげんにSTG作るのやめてくれ。ホント飽きた。多すぎ 3D関係クソ簡単になってるから3D格闘ゲームとか作ってくれよ
自分でやった方が早いんじゃないか?簡単なら?
415 :
名前は開発中のものです。 :2009/09/16(水) 21:28:36 ID:bWSg0bAs
そういう意味じゃなくて、 もうこれ以上DXライブラリ使って似たようなゲームばかりみたくない、ってこと せっかく何でもできるんだから別のゲーム作ってくれよ そんなにお前らSTG好きなのかよ・・・と感じてしまう
STGプログラマは低脳
>>415 他ジャンルをみたいだと!ラトルズがアップを始めました。(最近は他のジャンルにも手を付けているが)
そんなジョークは良いとして(案外、3D版とかやりそう)、STGも良いけど、懐かしのアクションゲームとかも
需要はありそうだわな。
趣味で作るものまで他人に併せなきゃならないなんて
420 :
名前は開発中のものです。 :2009/09/16(水) 22:03:27 ID:bWSg0bAs
意味がわからない・・・ 現状はSTG90%超えといってもいいんだぜ・・・
比較的簡単に作れるからだろーな ノベルとかと同じ理由だろ
STGが9割 残り1割の内訳はAVG9割
正直今はSTG以外で遊んでないなぁ
わたしは画像を表示して軽く動かす所で永遠に足踏みですな
>>412 配列で力づくってのはいいなぁ
VBの頃はずいぶんとやったもんだ
趣味でやるプログラミングなんて自己満足だし やりたいことをやってればいいんじゃないかなぁ
428 :
名前は開発中のものです。 :2009/09/17(木) 01:13:38 ID:Qqd7Dsyq
確かに2DSTGは似通った作品増え過ぎたよなぁ システムも5番煎じで、自分で設計してるのか、サンプルソース写してるのか怪しい せっかく3D使えるようになったんだから、そろそろ3D奥シューとかTPSとか作ってほしい
お前らが作ればいいんじゃないかな
>>391 好きで作っているならイイじゃない
そういうひとのは凝ってて面白いし
431 :
名前は開発中のものです。 :2009/09/17(木) 01:29:51 ID:wneIbFgp
DXライブラリ3.00ってなんか 動画のFPS60の動画をLoadGraphで読んでPlayMovieToGraphとDrawGraphで使って 表示させるとカクカクで重い ちなみに2.25bではぬるぬる動く (XP CPUはQ9650 グラボ ラデ3870) あとSetAlwaysRunFlagをTRUEにしてプログラム実行してタスクにいれると なんか垂直同期信号待ちが起きずに ウエイトがおかしくなりとんでもない速度になる ちなみに2.25bではタスクに入れても通常速度で動いてた
432 :
名前は開発中のものです。 :2009/09/17(木) 02:23:21 ID:wneIbFgp
下の三行はWindows7で試したら普通の速度だった つまりXPで起こる Vistaは持ってないから未確認
ドライバの問題だろ。馬鹿か
ふと、思ったんだけど プレイ動画の録画用に、ゲーム側で毎秒の描画回数を半分に落とすオプションとか付けるのアリ? あくまで描画のみで、実際の入力とかは通常のまま。
別にありじゃね? あって困るようなもんじゃなし。
入力とかも含めて30FPSにして録画して 編集で2倍速にしようとしたら、サウンド関係がおもしろくなっちゃいそう。
437 :
名前は開発中のものです。 :2009/09/17(木) 12:23:48 ID:CKga4Lh+
#include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){ int sound,count=0; ChangeWindowMode(TRUE);SetAlwaysRunFlag(TRUE); if( DxLib_Init() == -1 ){return -1;} SetDrawScreen( DX_SCREEN_BACK ) ; sound=LoadSoundMem("C:\\WINDOWS\\Media\\ding.wav"); SetFontSize(128); while(CheckHitKey(KEY_INPUT_ESCAPE)==0){ ClearDrawScreen(); if(count==30){ DrawString(30,140,"(゚Д゚)ウマー",GetColor(255,255,255),FALSE); PlaySoundMem(sound,DX_PLAYTYPE_BACK); count=0; } count++;ScreenFlip(); if(ProcessMessage()==-1)break; } DxLib_End() ; return 0 ; } このプログラムを3.00aでXPで実行ファイルつくって右上のボタンでタスクにいれると明らかにスピードが変になる(2.25だとならない)
修正 「2.25だとならない」じゃなくて「2.25だと音のスピードが変にならない」って意味です
Vistaだとバーションアップですこぶる調子よくなったけど XPは不具合報告多いなあ。 こういう事例は、公式とかで作者に報告したほうがいいのでは?
俺もさっきバージョンうぷしてみたけどDraw関連がつかいものにならなかったぜ
と思ったら不具合報告にあった
ワールド座標をスクリーン座標に変換する方法知ってる人いますか? そーいう関数があれば便利なんだけど
もう少し細かく書いてくれないとどういう処理かわからないよ
すみません。 3次元上のある1点(x,y,z)が、画面上のどこ(x,y)に映ってるか っていうのを取得したいんです。出来ればその逆も。 そしたらカメラアングルが変わってもキャラの頭を追従する フキダシみたいなのが作れるかなって
>>444 3次元から画面への投影座標は求められるけど
逆は何かしら奥行きの情報がないと無理じゃないかな
2次元上の座標は、3次元上では無限に有り得るでしょ
立体空間に吹き出しを浮かべるんじゃダメなの?
カメラ位置→吹き出し位置に対して垂直になるように回転させるだけじゃダメか? あとカメラ位置→吹き出し位置の距離に応じて拡大とか
>>447 俺3Dはやったことないから、間違ってるかもしれんけど、
テキストをテクスチャで貼り付けた板ポリを浮かべれば
3次元に文字浮かべれると想うんだ
いつのまにか新しいバージョンが出てたんだな しかもリファレンスも整っているとは、本当に恐ろしい子だ
3Dはちょっと低レベル(悪いという意味ではない)すぎない? DXライブラリのコンセプトはわかるけど,2Dはともかくさすがに3Dになると もっとフレームワーク的にしないときついんじゃないかなあ
初心者レベルだとフレームワーク的にしても理解できず使いこなせない。 上級者なら自分でラッパーなり作る。 だから何も問題はない。
ラッパー組むか〜 と取りかかって早3ヶ月。 自分にはまだまだだったらしい。
実際ほとんどDirect3D剥き出しだから ラッパー書くなら直接Direct3Dのラッパー書いても大して変わらなそう
>>451 初心者っていっても3Dゲームを作ろうとしているんだから
3次元の概念ぐらいは理解する事を求めてもいいじゃない。
自分に必要な関数から抑えていけばいいのはいままで通りだし
フレームワークとか言って作りたいものも色々なのに意味不明に
自分に不必要な機能のおまじないが大量に出現して混乱するかと思う。
ネタで30FPSの動画を1フレームずつjpgにわけて 1個ずつ読み込ませてDrawGraphで紙芝居みたいにして動画もどきみたいなの作ったら メモリがすごいことになってワロタ
それをキャプチャして動画の再構成
458 :
名前は開発中のものです。 :2009/09/21(月) 22:36:27 ID:pqh5fpe3
3Dとか興味ないけど 女神転生とかの3Dマップとかでは使いたいな
そういうのを興味あるというんじゃないか
460 :
名前は開発中のものです。 :2009/09/23(水) 00:03:23 ID:4wpWSXev
最近、龍神録プログラミングの館の掲示板の質問がレベル低くなって来てるな それに伴なって、回答者も少なくなってるw 管理人も最近ほとんど書かないな
ドット絵の作り方教えて下さい>< ググレカス
>460 キューさんはプロだからな そんなに現れないだろう
棒振るやつ凄いよね
MNSってやつが中学生ってことは知ってる
465 :
名前は開発中のものです。 :2009/09/23(水) 21:06:56 ID:NGv5l9ZA
龍神録プログラムの館は非常に勉強になるのだが、 これを読んで「STGを作ろう」ではなく、 「これを利用して別のゲームを作ろう」と考えて欲しい 画像変えて弾のパターン変えただけで自作ゲームですとか言ってる奴なんなの?
ここでそんな事言ってどうする。 お前こそなんなのだ。
何度か読もうとして挫折した。 他人のソース読むのは辛い。 クラスじゃないし。
同人で出てる2DSTGは、ほとんど同じシステムやルール設定のものが多いんだけど これって、出来上がりのサンプルプログラム写して作ってるの? それが本当ならゲームプログラミングとは言えないでしょ RPG、STGの戦闘ルールとか自分で設計して作るべきものだと思うんだけど
一応ソースそのまま写してゲーム作ることは向こうで禁止されてるしね 作り手に他のジャンル作って欲しかったらネガキャンなんかしないで自分で解説サイトとか作ったらいいのに
STG作ったことないなあ・・・
>>467 他人のソース読む時は頭から全部ステップインしていって読むんじゃなくて
大体のアウトラインを眺めて必要なところだけステップインして追うようにするんだよ
逆に,そんな風に読めないようなソースは読む価値無し
>>468 オリジナルのプログラムを作ることが目的ではなくて、
ゲームを作ることが目的なんじゃないの?
プログラムの作成に力を入れたことをPRしたいなら話は別だけど。
サンプル実行フォルダのFilterTest.mqoのマテリアルが入ってない! ミスかな?
コピペ連発とかバグすげー出そう
ホントに最近の龍神録のページの質問はうざいのばかりだな・・・ 「メニュー選択画面について」とか「セーブさせるには」とか あの解説ページでわからないって、まったくプログラムについて理解できてねーじゃねーか 管理人のクオリティ高い解説や回答がうりだったのに、最近はこんなくだらない質問ばかりで呆れたらしく、掲示板来ないし もう龍神録のソース全公開して、「これからはSTGの質問は受けません」とか言ってもいいよな あーDixqさん戻ってきてくれー
>>476 > ・アレンジしたいんだけど、どう変更していいか解らない・・。
> ・新しい弾幕を作りたいんだけど、作り方がわからない・・。
> ・いやいや、むしろプログラムの意味からよくわからない・・。
>
> そんな時は気軽に掲示板で質問して下さい。
建前上そう書いてるけど、さすがにレベル低すぎる質問ばかりで呆れているんだろ ブログ更新して、掲示板に顔出さないとこからも
忙しいんだろう。 ゲームプログラムとあんま関係ない職についたから暇がありゃ仕事の勉強するだろうし。
そう思うならその低レベルな質問にお前らが答えてやれよ 管理人の手を煩わせずにさ
もう何度か答えてるよ・・・ メニュー画面の作成とかslnが開けないとかビルドできないとか(大抵は;を抜かしてるだけとか) もう何回も同じ質問見てるわ 少しは過去ログ見てから質問しろ
鳩に餌やったら鳩が寄ってこないか
slnが開けないとかは100歩譲っていいとして、まったくプログラムに関係ない質問してるやつはなんなの?
いや、slnが開けないもだめだろ
Title: プログラムとは関係のない質問です グラフィックカード?の質問です。 今、SimCity4デラックスを買おうと思っています。 必要動作環境に グラフィック:ビデオRAM 32MB以上 と書いてあるのですが、自分のPCが適正なのかわかりません。 DirectX診断ツールを使って調べましたが、 「ディスプレイ」タグ内 チップの種類:Intel(R) GMA 3100 メモリの合計:256.0MB とあります。 これって適正でしょうか?
>>478 建前をそこまで詳しく書く必要はない。
単に管理人が、最初軽く考えててそう書いたけど、
手に負えなくなって放置してるだけだろう。
せっかくDXLibが3Dに対応したのに、管理人は3Dゲーム作るつもりはないのかな 3Dの使い勝手とか機能はどんなものなの?使った人いるのかな
使っているがメタセイコアに苦戦中
すでに龍神録から使ってただろ
ID:r16NbhE5はDixq氏の友人かなにかなのだろうか あと487が言ってるのは新機能の事でしょ
そうそう今月リリースした新型の3.00
3.00と同時にサンプルゲーム出してるし 何か作るから機能付けたんでしょ
3D機能まじすげーよ。 メタセコ読めるのがとても助かる Zソートくらい自動でやってほしいけど
>>493 頂点バッファの更新とかは可能なの?
自分はメタセコ断念して、自作モデリングと頂点アニメーションやってるんだけど
頂点アニメーションってメッシュのメッシュの頂点情報をバッファで取り出して
頂点座標を直書き換えっていうやり方じゃないと出来ないからさぁ
こういうことも、出来るんだよね?
御託並べてないで自分で試せよ
頂点アニメーションって何に使うんだ?
だれか龍神録にいるkoburouuuというバカを止めてくれ
見なきゃいいじゃん。 俺は見てないから実害ないのに、そうやって喧伝してどうしたいんだ?
同意が欲しい
初心者用 龍神録 中級者用 マルペケ 上級者用 だれかこれを埋めてくれ
龍神録は元は初心者向けだが、 今はそれ以前の問題のやつらばかりだろw
502 :
名前は開発中のものです。 :2009/09/26(土) 09:15:04 ID:E2IXiY4A
確定しました。やっぱり来るみたい。今回は10月1日までは警戒が必要。
千葉神奈川静岡東京茨城や他の関東が危険
(重要事項につき会員同時公開) 2009/09/25
(5) なお、HAARPに誘引されて、関東地方ではM5前後の中規模地震が発生するだろう。
(3) HAARPの影響は大気イオンのみならず、気象現象や通信、動物の狂乱状況をも生み出し、
疑似宏観異常現象を発現させる。いわば環境テロである。
(2) HAARPは電磁波を宇宙に向けて放出、電離層を刺激し、反射して地表付近の大気イオンに影響を与えるものと聞いている。
HAARPの運用状況と大気イオン濃度変動を見比べると、明らかに同期しているとの指摘を多数頂戴した
大気イオン地震予測研究会e-PISCO
理事長 弘原海 清 大阪市立大学名誉教授
http://www.e- ★pi★sco.jp/r_i★on/at★tention/090925weekly_z.html
http://s01.megalodon.jp/2009-0925-1414-33/www.e- ★pisco.jp/r_i★on/attention/090925weekly_z.html
http://s02.megalodon.jp/2009-0926-0102-46/www.e- ★pisco.jp/r_i★on/attention/090924weekly_e.html
HAARPの動きを四川地震のパターンに今回に当てはめると9月27日が危険
http://gol ★den★tamat★ama.bl★og8★4.fc2.com/blo★g-date-20090922.html
http://s03.megalodon.jp/2009-0926-0114-47/goldentamatama.bl ★og8★4.fc2.com/bl★og-date-20090922.html
世界的科学者がハープは地球の気候や人の脳を損傷させる兵器の疑いがあると
http://www.yo ★utube.com/wat★ch?v=8A★MlqRsHUXI&feature=player_embe★dded#t=51★1
2ちゃんねる地震情報
http://li ★ve2★4.2ch.net/eq/
9.11事件、破壊されたWTCで働くユダヤ人は1名も死んでいませんでした。
http://da ★mhantaikanuma.we★b.infoseek.co.jp/Sonota/91★1dead.html
地震来たら権力者達が犯人。・・・ユダヤ人は大量に人を殺しています。
503 :
名前は開発中のものです。 :2009/09/26(土) 18:04:51 ID:Dj3L3D32
関係ないスレに政治コピペしたらアク禁くらうぞ
マップだけ3Dでキャラはドット絵みたいな感じにしたい(ゼノギアスみたいな感じ) んですけど新しく追加された機能でできますかね? ちなみに3Dの知識は皆無です
505 :
名前は開発中のものです。 :2009/09/27(日) 11:42:35 ID:c36n48uS
そもそも知識皆無ならマップを3Dにできないんじゃね
そりゃドット絵貼った板を3D上に置くだけなんだから普通にできる というか最近の2Dは全部そうやって描画されてるんだぞ
>>504 2chだと評判悪いけど、坂本千尋の「3DRPGプログラミング」っていう本が
そのへんの話(ビルボード)について、3Dの知識がない人向けに解説してる
ので立ち読みしてみるといいかも。
ただDXライブラリ使う場合でもメタセコとか使う上でも、基本的な3Dの
知識ないと困る気がするけど。
>>502 何回目か分からんけど、今回も外れると予想。
リソースファイルとしてmp3を登録したいのですがうまくいきません。 .rcに何を加えればいいのかってところですでにつまずいてます。 環境はbcc + bcc developerです。
ひとりごとはチラシの裏にでもお願いします
510 :
名前は開発中のものです。 :2009/09/28(月) 09:25:54 ID:2k9dLDlY
ここチラシの裏じゃなかったのか
今日のひとりごと クラスキーが struct なのか,union なのか,class なのかによって呼び方が変わるだけで、構造体も共用体もクラスであることには変わりがありません。
ここはいいDXライブラリのスレですね
3Dってやっぱ難しいんだな 半透明要素を使うとモデルの描画順を考えないとダメなのね
>>508 わざわざレベル低い質問龍神録までいってするなよ
これ以上dixqさんを怒らせるなよ市ね
大体DXライブラリもVC++用が主流なんだからbccはお断りだボケ
龍神録の質問コーナーはまともにPG出来ない人の為にあるものなの? 管理人はサンプルコピペを推奨しているのかわからんけど 「STGの背景のスクロール速度を遅くするには・・」って こんなおかしな質問して恥ずかしくないのかな 自分でゲームプログラム作ってたらこんな質問は出てこない
物理計算の視覚化用に3Dを覚えようかと思うんだが DXライブラリとOpenGLどっちがいいかな? 学術用だとやっぱOpenGLでDXライブラリは邪道かな?
>>516 なんで関係ない話題をここでするんだ?
そんな事ここで愚痴って恥ずかしくないのか?
>>514 DirectX11からは考えなくてもよくなる…らしい
>>519 おお。だとしたら長年の夢が……!(笑)
>>519 Zソートしなくても良くなる訳?
かなり素晴らしいんじゃないの
Zソートはプログラムややこしい上、少々なりともマシン負荷かかるだろうし
>>522 そろそろDirectX11に対応したビデオカードも発売されるはず。
まぁDXライブラリはDirectX9だが
10って出ないの?
>>515 お前これ以上DixqさんやDXライブラリの印象悪くするなよ
自分の発言がスレチで低レベルなのに気付け
>>524 出てる。つか、Vistaには標準。
でもVistaしか使えないから
だいたいのゲームなんかはDirectX9仕様が中心。
あと、なんか色々と細々とした所ではパワーアップしてるけど
それ用に組むには労力がさらにかかるし、
それやったらGPU/GBの良い奴を要求して行く事になるしで、
結局、ゲームとしてはDirectX9の方が好まれてる。
次いで言えば、DirectX11は色々と新規に実装される部分が多いから
DXライブラリなんかでは多分対応されないと思う。
(自分で、ソースコードから調べて対応とかは有りでも)
GPGPUとか関連もたしかDirectXで実装されるし、
技術的に興味があるなら、触れてみる価値はありそうだけどね。
DXLibは今月DirectX9に対応したばかりで遅すぎる、つい最近まで7だった 11に対応するのは4年以上先になりそうな気がする SlimDXなら早めに対応するとは思うんだけど
かなりのヘボ環境でも動くから利点だと思っている
掲示板での返答を見てると とにかくいろんな環境で動くことを重視してる感じだ
>>524 Vista専用でDirectX10あるが
3Dはやったことないんだけど このスレの流れで、たまにみかけるZソートって言葉の意味がわかったw 思わぬ棚ぼた サンキュー
とりあえず3次元空間を適当に動ける所まで作ったんだけど なんつーか、アーマードコアでブースト吹かしながら空を 飛んでる気分を味わえて結構感動している。
2000の俺には関係のない話だった
ローグライク作ってるんだがシレン1のように2Dで作るかシレン2のように3Dで作るか迷う
3Dのポリゴンのアニメーションってどうすんの?データ作成的に考えて
>>535 モデル自体を変形させると言う意味のアニメーションは想像もつかない
モーションって意味なら、2Dの多関節動かすのと原理的には同じようなもんじゃない?
と、3D未経験の俺が言ってみるテスト
とりあえず人体などの間接アニメーションだったら、 メタセコイアでモデルを作って、ToyStudioでボーンとモーションを入れてXファイルで出力すれば出来ると思う。 シェア版メタセコだったらKeynoteっていうのも使えるみたい。 あんまり詳しくないから間違っていたらすまん。
まずは満足に2Dゲーム作れるようにならなきゃなぁ・・・ あぁあこがれの3D背景STG
なんかkeynoteやrokdebone2で作ったxファイルを再生すると 関節がブルブル震えたり高速で拡大縮小を繰り返したりするよ ちなみにToystudioの公式で配ってた反復横とびのデータは大丈夫だった …3Dは同じ形式でも吐き出すツールでいろいろ違いがあるから難しいお
10年前にくらべたらなんと幸せな環境なんだろうか 10年前Visualc++を7万円で買おうとした俺
>>540 同意
ベーマガ読んでたころの俺がみたらびっくりするどころじゃない
遥かに想像をこえた未来になった
タイムスリップして小学生の俺に教えてやりたいもの
さらに10年後、同じことを言ってる気がするw
でも10年前ならもうネットが普及してたから、環境的にはそれほど悪くなかった気がする。 欲しい情報が即無料で手に入るようになったのは大きい。
ここ3〜4年でプログラム覚えた俺には何を言ってるのかわからない コンパイラに何万円もだすとかあほかと(笑
釣り乙
10年後には念じただけでプログラムが出来上がる
Perlの音声筆記の動画みたいだな
548 :
名前は開発中のものです。 :2009/10/01(木) 14:11:22 ID:m80SND0B
lcc a.c lcc -o a.obj
549 :
名前は開発中のものです。 :2009/10/02(金) 09:26:54 ID:VgLcNC7V
LD BC,$0001
Zソートしても 半透明要素を含むモデル同士が重なり合ってる場合 うまく表示されないことがあるわけか・・・よく考えたら当たり前だったわ
半透明ポリゴンの縁が透けたりするのは有名所の同人ゲーでもよく見かけるし、 あんま気にしなくてもいいんじゃないかな
シェーダーっぽいことやってる人いますか? いたら使用関数とか教えてください
そこまでやるならDXライブラリなんか使わないと思うよ
シェーダー使うようになったら DXライブラリ使ってたらかえってめんどくさいだろ 卒業したほうがいい
ワールド→スクリーンとスクリーン→ワールドが地味に対応されてる
ずっと詰まってたことが解決した 分かってしまうとどうしてこんなことで悩んでたのかと思ってしまう
3日悩んでたことが、他人の一言で解決することとカよくあるよ。
龍神録ページが書籍化らしいぞお前ら
DXライブラリの関連書籍が増えることになるのかな
画像の上にマウスカーソルがあるときに、 イベントが起こるようにするにはどうしたらいいのでしょうか? 座標指定でも実現できますが、いちいち座標入力しなくてはいけないので、 ミスがふえるのと、矩形や円などでない場合、やりにくいので……。 透過処理をしているところは無視して判定することはできないのでしょうか?
自前でやる ややこしくなると思うならそうならないように自分で適切な枠組みを作る クラスとか使ってもいいしそこらへんは設計センスの見せ所
ゲーム作るのが面倒くさいならやめちゃえよ
画像にパターン仕込んどいて それ認識したらイベント起こさせるとか? 色取得は負担が気になりそうだが
よっぽど大きい画像で、複雑な形じゃなければ判定は矩形か円か楕円で充分だと思うよ
予めgetPixelかなんかで配列にその画像分仕込んどいて 判定する場合は矩形内か?→ピクセル毎の配列ってな感じでどう
string name = "graphic\\" + "キャラクタ名" + ".bmp"; int cGhundle=LoadGraph(name); とやりたいんだけど、どうにもうまく読み込めない stringだと\\の部分がエスケープされてたりするのかな? stringで読み込んだ内容に合わせて読み込むファイルを変えるうまい方法知らないだろうか
一箇所訂正 int cGhundle=LoadGraph(name); →int cGhundle=LoadGraph(name.c_str());
自己レス printfDxしてみたらやっぱり\\はエスケープされてるっぽかった さて、どうしたもんだろうか 実体参照とか出来るんかね
面倒だけど、 string name = "graphic\\"; name += "キャラクタ名"; name += ".bmp"; でやってみたらどうだろう 自分は↑のやり方でそれっぽいこと出来てるんだけども……
>>569 おおおおお
出来た!感動した!
stringは一度に合算しちゃだめなルールか += 使わなきゃならないルールでもあるんかしら
string name = "○○" + "△△" + "□□"; だと オーバーロードされてるのは最初の=だけだから、それ以降はchar+charになっちゃうからね
関係ない人間だが勉強になった。
ああそうか。 順番的にはchar*を3つ足した後に、stringに突っ込まれるからか。
同じ全く関係ない人間だが勉強になった
ポインタ書き換えてる感じになるのか 勉強になった、ありがとう
string name = "graphic/" "キャラクタ名" ".bmp";
string name = string("graphic/") + "キャラクタ名" + ".bmp";
string chara_name("キャラ名");
string name = "graphic/" + chara_name + ".bmp";
とかでもおkだね
まあ
>>596 がコードの行数以外はベストなわけだが
std::ostringstream oss; oss << "graphic\\" << "キャラクター名" << ".bmp"; std::string name = oss.str();
ostringstreamなんて使ったことがなかった これは便利そう
ウィンドウが非アクティブになってもプログラムが動作し続けるようにするにはどうしたらいいですか
SetAlwaysRunFlag(TRUE);
できましたが動作が遅くなるようです音楽との同期がずれますどうしたらいいですか
それは仕方が無いです
むしろ非アクティブにならないようにする方法なないのでしょうかフルスクリーンにする以外で。
ないです。
糞ライブラリ
OpenGL>>>DxLib
脳に障害があると思われます 直にお近くの病院へ行くことを強く勧めます。
糞とか思うならわざわざ来なければいいのに。
せっかく3D機能追加されたが、正直3D機能はどうなの バリバリ使ってる人とか居るの? 3DやるならSeleneとかDarkGDKとかの方が良いような気がするけど
>>583 マウスポインタが外に出ないようにするとかはどう?
GetMousePointで外にあるか調べて
もし外にあるならSetMousePointで画面内にポインタをセットする。
ライブラリの色を出さないっていうコンセプトをそのまま3Dに持ってくるとこうなります 全く使う意味がない
alt+tab
常に最前面にしたいんならわかるが、常にアクティブって・・・ウイルス? あたま悪すぎると思うよ
とりあえずゲーム内容を音楽と同期させたいなら ウィンドウが非アクティブになった時点でゲームと音楽を一時停止するようにすることをオススメする これなら普通にプレイしてて処理落ちしない限りはずれないよ
>>591 よく分からないけど、DXライブラリの3D機能が低級だということ?
それはそれで将来DirectXを直接叩けるようになったときのための
訓練にはなるかな・・・
>>595 確かに低レベルかもしれない。
だけど、やっぱりDirectXと比べると簡潔だし、何より簡単
今後も何らかの機能が追加されるかもしれないし
少なくとも無意味ではないよ
音楽を途中から再生させるのが難しそうだな…
599 :
名前は開発中のものです。 :2009/10/12(月) 05:54:53 ID:6B8104Ie
俺が一から作った画像をフルスクリーンで表示させると最初だけチラついてしまう 他人の画像と他人の画像を加工したものなら問題ないんだけど 画像作るときって何か特別なルールでもあんの?
普通、画像はメモリに展開されてから表示されるからそういうことはありえないはずなんだけど、 どうなんだろう…… 画像の色の違いとかでちらついて見えるとかじゃない?
まぁ、チラつくっていうよりは軽く震えてるって感じで数秒で直る どうも、ぼかしがまずかったっぽい
2の乗数にしてる?
いや、してないけど別に3Dやってるわけじゃない 普通に640x480のいちm
可能なら、自分が作った画像と他人が作った画像の両方をアップしてみるとか。 あとは画像制作のソフトを変えてみる。テスト用だしペイントブラシとかでもいい。 あとはそうだなあ、CPU描画に変えてみて反応に違いがあるか調べてみるとか。
俺も3D表示を試してみたら 最初の数秒だけポリゴンが荒くなる現象が起きてたことがある。 テクスチャには画像を使ってるから、何か関係があるかな
それはグラボが貧弱だからじゃないのか。
描画モードをバックにしてスクリーンフリップしてないとかじゃないのか
数人から症状出てるなら凡ミスの可能性は低いかと。 俺も立ち上げまでの時間が長くなったのがちょっと気になってるし。 Loading画面出そうにもDxLib_Init()が帰ってくるまでは画面に手をつけられないからな。
フォーマット何だか知らないけどフォトショのPNGがガンマ情報どーたらっての聞いたことあるけど関係ないかな。
610 :
名前は開発中のものです。 :2009/10/13(火) 13:00:32 ID:+jCi4CKG
PS3のホリパッド3ターボ持ってるんだが パソコンに刺すとなんと普通に使える しかし十時キーがハットスイッチ扱い DXライブラリってハットスイッチ認識する命令あるのをつい最近知った いままでjoytokey 使ってたわ・・・・・
無線はいろいろコツがいるけどUSBなら普通に使えるだろ
最近PS3を買って、USBだったのか!って驚いた自分ならここに。
613 :
名前は開発中のものです。 :2009/10/14(水) 11:36:57 ID:MIHaDDME
SetGraphMode(WINDOW_WIDTH, WINDOW_HEIGHT, 16); SetDrawScreen(DX_SCREEN_BACK); ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; while((ProcessMessage()==0) && (CheckHitKey(KEY_INPUT_ESCAPE)==0)){ DrawBox(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, GetColor(255,255,255),TRUE); DrawString(0,0,"abcdefghijklmnopqrstuvwxyz", GetColor(0,255,0)); ScreenFlip(); } こうすると、abcd…の文字が右にいくにつれて薄く表示されるのですが なぜなんでしょうか? いまいちよくわかりません…
気のせいじゃないの?
>>613 動かしてみたけど問題なかったよ
モニタの問題じゃない?
616 :
613 :2009/10/14(水) 17:15:20 ID:wdr+WTaX
解決しました。 なんか良く分かりませんが、SetDrawScreen();を DxLib_Init()の後に持ってきたら直りました。
3Dゲームの場合よく1キャラに使えるポリゴン数はいくつまでとか決めるみたいですけど 1画面に描画されるキャラや背景等が少なければ、1キャラに使えるポリゴン数は増えますよね?
>>617 増える。
現在のPCのスペックなら画面内に合計15000ポリゴンまでなら60フレームで楽々いけるはず
15000ポリゴンって1キャラでだよね
1キャラで15000も使ってたら複数キャラ出てくるシーンとか、 ゲーム用PCとかじゃなきゃ辛いんじゃないかな……
ゲームのフレームレートどれくらいにしてる? STGだと60かもしれないけど、RPGだと30でいいって聞くし・・・。 身栄え重視だと高いほうがいいけど、処理速度を考えたら低くする手もあるよね。 最近PSのアーマードコアが22フレームだったと聞いて、もっと下げられるんじゃないかとも思ってる。
DXでブラー効果ってどうにかして出せないかな?
すいません、一つ質問です。 画像を動かす際、ClsDrawScreen→ScreenFlipを使っています。 これだと、マスクで表示していた画像も消えますが、 その画像を残したい場合の記述はどうしたら良いでしょうか? ワクのようなものを残したいので、どうか教えていただけませんか?
>>621 処理が重いんでなければ、60固定でいいんじゃない?
あと、TVゲームはTVに映すという大前提があるよ。
>>623 ClsDrawScreenを使わずに
DrawBoxとかでワク以外を背景色で塗りつぶせばいいよ
普通は毎フレーム、全画像描き直すと思うけどね。
昔作ったゲームを久し振りに起動してみたら デュアルディスプレイ環境では見事なまでに不具合が出まくったぜ。 …どこを修正すればいいんだろう。DXライブラリの関数だけで行けるかな。
>>621 格ゲーやFPS、STGは60fpsのものが多いけど、動きにヌルヌルした
違和感を感じる場合あったり、ちっこい液晶画面での視認性とかの
問題で意図的にフレームレートを落とす場合もある。
逆に30fpsだとゲームによっては、モッサリ感じたり弾幕をすり
抜けられなくなることもあるかも。
けっきょくケースバイケースで、操作性、ゲームバランス、
対象ユーザーの環境、求めている動き(見た目)に応じて
決めればいいんでは。
>>628 PC画面での低フレームレートと、テレビ画面での低フレームレートはストレスがかなり違うってことかと
テレビゲームは画面から離れてやるとか、そんなに鮮明に映らないから、
フレームレートの低さがそんなに気にならないのかも
自分はPS2で60フレームのゲームやったあと30フレームのゲームやるとちょっと辛くなるけど
631 :
624 :2009/10/15(木) 14:29:39 ID:qNrqaaeW
>>628 最近のものはともかく、基本的にTVの表現能力ってPC用モニタより劣るのよ。
なので、PC用モニタに映す時よりも、多少画質が悪くても、TVモニタで見ている限り気にならない。
白黒テレビにPS3の映像を映しても仕方ないっしょ?ってことね。
>>631 FPSの話だったはずなのに例えが謎すぎる
どう接続したのやら白黒テレビでグランツーリスモやって完全に実写だこれ!ってのを思い出した
RFコンバータというものがありまして・・・
635 :
名前は開発中のものです。 :2009/10/15(木) 19:05:15 ID:iEez8MfC
>>625 ありがとうございます☆
レス見た瞬間具体的なイメージがわきました!
>>626 確かにどのサイトみてもそれが一般的でした
処理を短く記述したいのと、作りたいのがスロゲーなんで、台枠は最初のまま放置しておきたいかなって。
625さんの方法なら演出にも応用出来そうなんでそっちでやってみようと思います
ありがとうございました☆
>>632 すまん。
適当な例えが見つからなかったんで、そのへんでお茶を濁した。
>>635 それくらいの用途なら全部書き直した方が良いと思う。
多分そっちの方がコードは短くなるんじゃないかなあ。
それに何らかの要因で画像が消えた時に対処できなくなる可能性が。
ウィンドウを動かすとか最小化するとか。
>627 公式BBSでそんな話を見た気がするなあ。
c++にあわせたDxLibってないの?
C++が標準でしょ
モデルデータのアニメーションってどういう手順で行ってます?
というか、使用ソフトは何だったたらいけるんだろう
>>539 みる限りではToyStudio良さそうだけど、今はシェアになったばっかでお試し版がまだで試せない
Blenderでxファイルとfbxファイル試したけどxファイルのほうは論外、fbxも上手くいかず
643 :
641 :2009/10/17(土) 19:43:35 ID:jIcepyn/
ごめん、Blenderのfbxは上手くいった
>>642 >>539 でスルーしてました
試せる候補が少ないんでいってみます
>>641 539だけど、最新バージョンのDXlibで再生したらプルプルしなくなったよ!
メタセコ+keynoteはじまったな
3Dに手を出したいけど2Dすら作れない俺orz
>>646 初めから難しく、カッチョイイのを作ろうとしてるか?
まずは「マインスイーパ」とかでどうよ
>>645 メタセコ+keynoteでもいけますか
RokDeBone2もDxLibModelViewerで動作問題なかったです
ローグlikeからはじめようとしてるんだけど無謀なのかな・・・
かなり無謀
651 :
名前は開発中のものです。 :2009/10/18(日) 11:21:20 ID:0lcoi62P
パチンコゲームとか絵柄を3D化しないとなあと思うわ コインを机にまわしたような回転する絵柄とか2Dじゃちょっと無理だしな
3Dエフェクト作っているんだけども 単純なエフェクトであっても、透明要素を含んでいればZソートしないとダメだし Zソートしても、モデル同士が交差すると正常に描画されないから エフェクトをなるべく多くに分割して描画しないとダメだよな?
加算半透明なら不透明物全部描画した後ならZ比較有り、Z書き込み無しで 前後気にせず描画すればいいだけだからなるべくエフェクトは加算の方が良いよ 通常の半透明なら652の言う通り
アルファで抜いた髪とか透け方が変だったのはそのせいか メッシュを分ければいいのかな メタセコで言うなら材質をたくさんコピーして 前髪横髪後ろ髪って別々に設定するとか?
ゴメン上のはメッシュ単位でソートした時の話です( ^ω^) つかソート済みで一発で描画してくれる関数あったらいいもに 自分で作るとどうも信用ならねえ
PMD+VMD読み込みバージョン来てたんで試してみました PMDをDxLibModelViewerで読み込ませて(連動でVMDも)MV1形式で保存 ネット上にあるデータをそのまま利用するとモデルがちっこい PMDエディタでサイズ変更とかモデルのスケール変えればいいか 仮で動かすだけならこれが一番簡単かも 自作するとなるとxファイルからPMDなんで、メリットはMMDでモーション付けできることか 今はまだIKの挙動と物理適用されてないみたい テカテカ
躍らせているだけでも結構楽しいな PMD+VMD読み込み対応は結構影響でかそうな気がする MMD関連の素材で即興の音ゲーとか
>>647 マインスイーパ無理だった
地雷の位置(数)と、ヒントの数字(?)が合わない…
地雷位置が固定されてたら対処できるけど、ランダムだと失敗する
なんでだよw まわりを数えりゃ済むだけだろう。
マインスイーパのルールを知らない俺がイメージだけでマインスイーパを作ってみた 的な。ニコニコ動画とかにありそうな。
じゃあ、ライフゲームとかどうよ。 人生ゲームじゃないぞ
初心者がゲームの原理を理解するのに一番簡単なのはシューティングだろうなー 弾幕とかじゃなくてもっとシンプルなヤツ。 サンプルの弾当てゲームをもっと単純化したみたいなの
狙い撃ちすらも必要なく、ただ真下に弾を落とすだけの敵 これだけでも案外ゲームになるからな。
いつまでたっても攻めてこないインベーダー
「「「 インベーダー! 」」」
ミスをするほど高得点なパズルゲーム
じゃあRLはいったん脇に置いといてシューティング作るよ!
背景に画像を透過色有効で重ねて描画する時に 淵のギザギザが目立つんですが 端っこだけアンチエイリアスとかかけられないでしょうか?
>>668 どういう処理をしてるのかわからないけど、
画像が単体で、描画方法がバイリニアなら、画像に1ピクセル余白を作ればいいよ。
画像にちょっと余白を作って縮小表示してみましたがあんまり変わりません DrawGraph( 0, 0, board, FALSE); DrawGraph( 100, 100, character, TRUE); 元々こんな感じだったのですが characterの方の淵がギザギザしてるので 淵だけぼかした感じにして背景(board)に溶け込ませたいんです
縁を処理した画像用意するのメンドくて負荷がかかるかもしれないけど αチャンネル使って縁の部分の透明度だけ下げるとか。 やりたいこととは違うかもしれないけど、大昔のやねうらおの本で 立ち絵のジャギ消し方法で載ってた。
クソゲーは適当な創作料理と一緒で作るのに価値がある
ドット絵なら、絵描きの技術で誤魔化すことは可能かな
なんだったかなぁ…… DirectXで色指定で透過した画像の縁をなめらかにする機能があったはずだけど、 DXライブラリでも実装されてないかな
675 :
koburouuu :2009/10/20(火) 20:10:17 ID:iLZDYDUW
ばかですか・・・。
すいません 例えば透過色が白ならば 完全な白のみではなくて、白に近い色を全部透過色にできないでしょうか
αチャンネル使うわけにはいかんの?
ちょっと厳しいです
αチャンネルいじれる水彩ツールでいじれ 俺はEDGEで作ったドット絵をPictBearに入れてちまちま透過つけてる シェアでもイイからEDGEくらいの性能あって透過編集もできるドットツール無いもんかね
682 :
名前は開発中のものです。 :2009/10/21(水) 12:31:15 ID:SYpjKIrT
DXライブラリのバージョンが3.0だと 動画をLoadGraphで読み込んだ場合SetTransColorが機能しない つまり透明化されないなあ
理論上は絶対に同じ色になってるはずなのに 違和感があって原因を究明したら モニタの表示位置によって色合いが違うだけだった。 正直モニタの映像品質なんてどこかのマニアだけが気にするもんだと思ってたわ
うーぬ、ConnectNetWorkを使ってネットワーク対応ソフトを作ろうとしたら まずリファレンスのサンプルコードが正常に動作しなくて困った。 症状は グローバルIPでもって特定のPCと接続を確立しようとしてもできないが LAN内なら正常に動作するというもので、 ライブラリ置き場の掲示板を検索してみたら同様の症状が何件か見られるんだがいずれも解決しているように見えない。 hamachiのネットワークも試してみたものの改善されず。 ソフトの問題ではなくてミドルかハードの問題なんだろうけど一体どこがまずいのだろうか…
失敬、もう一つのフォーラムを見落としてた。 ポートか…設定苦手なんだよなあ
>>684 左のスライムの透過色を白にすると
白に近い色が透過されず右のように白枠が残るので
透過色を白〜白に近い色で範囲指定するか
背景に馴染むようぼかすかするのかと思ったのですが
他に何か方法があるのですか?
だからそのためのαチャンネルだろう?
691 :
680 :2009/10/22(木) 11:22:53 ID:gU/HR5B5
>>688-689 確かにその条件ならαチャンネルだとは思うが、
単にもし>680のようになっちゃう!って困ってるだけなら、αチャンネル以前の問題だろう。
ぶっちゃけ画像の作り方が間違ってるとしか。
>>690 何かと思ったら俺の即席絵かよ(笑)
ぴんぐー!
694 :
名前は開発中のものです。 :2009/10/23(金) 16:52:41 ID:zpOl27ID
SetSoundCurrentTimeってなんかうまい事機能しないな
フレームの座標の取得がうまくいかない・・・
オブジェクトの原点を画像の中心に合わせるか矩形の左上にあわせるか悩む
2Dシューティングならx/yとも中央、 スーパーマリオ系アクションなら、x中央のy下部とか便利そう。
698 :
697 :2009/10/23(金) 17:29:48 ID:q2RScPWu
言い忘れ。 マリオで中央下が便利って言ったのは、キャラの高さが変わるから。 キノコだけじゃなく、しゃがみ処理とか。
>>696-698 わかるわかるw
今まで二本作ったけど、キャラごとに判定が違ってたりしてすげーややこしくなった。統一しておくべきだった。
横モノの地面ありだと697の言うとおりに接地部分を基本とするとやりやすいけど
2Dシューだって横スクロール物だと同じく接地するキャラとかいるしな。
状況によって使い分けてるけどややこしくていかん。
700 :
694 :2009/10/23(金) 18:15:16 ID:zpOl27ID
すいません自己解決しました PlaySoundMem(bgm,DX_PLAYTYPE_LOOP,*1FALSE); *1 第三引数をとFALSEと設定
シューティングが簡単らしいから作ってみてるんだけど衝突判定普通に難しいじゃないか 十分ゆっくりな円と矩形ぐらいなら簡単なんだけど 複雑な形とか早すぎてすり抜ける場合とか考え出すとどうにも
>>701 自機の判定は点、弾や敵の判定は円か四角で充分。
あと、秒間60フレームなら、相当な速さじゃなければすり抜けないよ!
有名なSTGも殆どがすり抜け対策はやってないし、判定も円か四角だけだよ
すり抜け対策は俺もやってない。 複雑な形はいくつも矩形や円をならべて判定させてる。 すり抜け対策は自機や敵の判定が小さいゲームなら必要になるかもしれんね。
レーザー実装してるんならすり抜け対策簡単じゃね
すり抜け対策が必要になるほど速いやつは、 そいつだけ1フレームに現在と、1フレーム前との中間の位置と で2回判定するとかして 特別扱いするほうが楽ってばっちゃがいってた
>>706 ジャンルのセオリーを知らない間はわりとどうでもいい部分になやんでしまうものだよ
うふふ
>>705 その発想はなかった! 使う機会はないだろうけど。
ばっちゃによろしくお伝えください。
あ、C+OPENGLかJAVAしかできないけど
710 :
名前は開発中のものです。 :2009/10/23(金) 23:42:11 ID:ZfR2gEoQ
誤爆すまんな
移動処理は内部的に1ドットずつの移動の繰り返しに変換する。そうすればすり抜けなど起こるはずはないのだ。
当たり判定が1ドットでお互いにすれ違うようにしたらすりぬけるでしょ。
当たり判定1ドットの弾なんて見えないでしょ。 解像度320*240で作っても一番小さい弾の判定は半径1ドットだと思うし
手抜きならそれでいいよ
俺は円の軌跡で判定してすり抜け対策してたわ >当たり判定1ドットの弾なんて見えないでしょ 1ドットなのは当たり判定で、見た目が1ドットっていうわけではないでしょ でも実際当たり判定1ドットっていうのも聞くしな 当たり判定1ドットのすり抜け対策なんて線分の交差判定でやればいいでしょ まあこれも難しい人には難しいのだろうが
>>715 「当たり判定1ドット」で有名なアレは自機の判定であって、やっぱり弾は円や矩形で判定してるんだよね
弾のグラフィックが半径4ドットなら当たり判定は半径2ドット、とか
自分が言いたいのはよっぽど常識外れた小ささにしない限りは
厳密なすり抜け判定が必要なシーンは出てこないと思うよー、ってこと
チェスとか将棋のようなものなら、たぶん1ドット(1マス)だけの当たり判定でも大丈夫だよっ!
俺も軌跡だな、長方形。 空間分割も使うことになるだろうし負荷もしれてる。
ボーンの制御関数が無いね
四角と四角の当たり判定ってどうやんの
片方の四角のどこかの頂点がもう片方の四角の内部にあるかどうか
つまり片方の頂点四つが内部にあるかどうか判定すればいいのね 丸+四角とか丸+丸も頂点の数を増やしていけば大丈夫かね
四角は四角でも □ ↑ ◇ こういう感じにぶつかるとダメかな。
ごめん、ズレて何がなんだか分からなくなった
そういう場合は菱形の方の当たり判定の 点を増やせばおk?
各辺が交わってるか総当りで調べて当たってたら即座に抜けるとか
任意四点の四角どうしの判定って難しそうだな ボックスAの最上位点(Yが最小)とボックスBの最下位点(Yが最大)を比べてA>Bなら抜ける 同、逆にして判定 X軸についても最左、最右で同判定 この4判定を抜けたらボックスA・Bを含む軸に平行垂直な長方形が重なってるから そこから4辺×4辺で総当たりの交差判定かな 最上位最下位を調べるソートコスト考えたら 4×4の線分交差総当たりのほうが早いような気がしてきた
3角形と点の判定を組み合わせるだけじゃダメなん?
>>728 それだと完全に包含しちゃってる場合が抜けてね?
>>730 頭いいな
当たり判定=同じぐらいの大きさのオブジェクト同士だという固定概念あったような気がする
>>729 たとえば六房星(漢字合ってるか不安)みたいな図形だと
各頂点は相手の図形に内包してないから、頂点が相手の図形内にあるかどうかの判定ではすり抜けるかなと
__/\__
\/ ̄ ̄\/
/\__/\
 ̄ ̄\/ ̄ ̄
包含はどっちかの図形の1点(角など)がもう一方の図形の内部に含まれてるかどうかでやればいいのかな 外積使ったりするなどして
正方形と菱形の当たり判定? 矩形判定2回分でいけると思う。 回転するけどね。
衝突判定もDXLibに入れてくればいいのに
図形Aに点P(x_0,y_0)が含まれるかどうか →y = y_0とAの交わる点をリストにする→X_n(n=0,1,2,3,・・・2m) →x_0がX_{2i} から X_{2i+1}にあれば内部そうでなければ外部
2次元物理エンジンの衝突判定使うとか
LunaかSelene1.0のあたり判定だけ コピってくればいいんでない?
でも自分で作れば経験値にもなるしな 後でdirectXを直接使うときに力を発揮できるだろ
でもそういう処理って作ったらそれで終わりだよな。 しばらく経つと忘れてしまって「なんだかわからないけどちゃんと結果が出てくる」モノと化す。
そういうのがクラスなんじゃないのか
1ドットの弾って ファンタジーゾーンかトランスフォーマーがやばいくらい小さい玉だった
一ドットの玉とか止まってても見失うぞw
最近は特に高精細が多いしな
コンボイの謎は背景と同化したように見えたんだよな
見えない弾ってそもそもゲームにならないだろw 消える魔球みたいに途中から消える(消える前の位置から予測することはできる)とかならともかく
それいいなw 音ゲーじゃないけど、最初だけ見えて途中で消える敵弾。
アイテムを取らないと敵が見えないとかいうゲームを思い出した
二週めにはいると自機まわり2CMが見えなくなるとか
>>745 緋蜂弾幕シミュレータだかに消える魔球って弾幕があったな
途中で弾が透明になる弾幕
>>653 加算不透明じゃないけど
Zソートしたあとの交差問題で詰まってたところ、Zバッファ書き込みを無効化したら
期待通りの描画になった。
なんでなのかがいまいち分からんのが痛いが、ゆっくり考えるよ
751 :
745 :2009/10/27(火) 18:29:46 ID:Crsccr1B
>>749 実はそれをイメージして言ってたりするw
ポリラインを描くにはどうすればいいんだろう DrawLine連発で輪郭はいいとして内部を塗りつぶす方法がわからない
速いのは三角形に分割する方法 遅いけど簡単なのは横線引いて交差回数数えてピクセル単位で塗りつぶす方法 どちらもアルゴリズムはググれ
これって枠外への画像の描画は遅くなりますか? ちゃんとスキップしてくれますか?
>>753 うーむ、時間依存で変形するから三角分割つかうかなぁ
ピクセル単位でやってたら処理落ちしまくりそう
>>754 前誰かが実験してたけどたしかスキップしてくれるはず
3Dを使うだけなら楽だけどまだまだ機能が足りないな 使い始めてから足りない部分を補う手間がかかりすぎる まだ3D対応したばっかだししゃーねえか
DrawBillboard3DがXYZ軸に回転できれば便利なんだけどなぁ
同じことを考えてるw 平面1面の3Dモデルを作って、それをモデル関数で描画して実現しようとしたが 半透明処理が上手くいなくて失敗してる。 今度はDrawPolygonIndexed3Dで、回転させた頂点データを動的に作成して そのポリゴンに画像を貼り付けようとしてるが難しそうだ。。。
Y方向が逆だとイメージしにくい。出来ないわけではないけどワンステップ入ってしまう Yを正でロジックを考えて、描画のタイミングでY'=-Y+Cに座標変換すればいいように思うんだけど、この方法はなんか落とし穴はないですかね?
不規則な壁に物体が衝突したときの反射角度ってどう求めればいいですか?
ホウセンベクトルを基準に計算でいくない?
フリーゲームクラシックに投票しよう。
もう日本のフリーゲームは糞ダサいつまらん見飽きた作りメンヘラの
ワンパターンゲーばかりでどうしようも無い。
アート性、知的さが皆無なのが特に問題だ。
変わった奴を演じれば、変わったゲームを作れるという下らない思い込みはよしておいた方がいいだろう。
大体そんなことをしてみてもちっとも芸術的じゃない、知的じゃない。こいつらアホどもは病んでるフリがカッコいいと
思い込んでるから本当にやっかいなんだ。
いかにもだが広い意味でガロ系と言われる漫画家の一部はグロい物を描いてアートだと言われているだろうが
ガロではないが氏賀・駕籠・サガノヘルマー辺りも人道から外れると判断される事にステータスを見出している作家だな。
もうそう言う作風をアートだとは思わんし、大して評価もしないがな
自分は変わっていますというのを前面に出していたのが20世紀の芸術家だった訳だ。
衒学ぶれば、ブルトン主導のシュルレアリスムの運動を筆頭として文学でもそう言う運動があったな。
だが現代は大衆社会で当然我々も大衆の一人、という事になるな。つまり多くの奴が少数派を気取る前に必ず多数派であって、
そこを認識しないのに前衛芸術でございと叛逆挑発を嘯く奴には何処か香具師の臭いを感じ取らざるを得なくなるだろうな
本当に上手いのが崩して描いているのではなく、根本的に絵が下手な奴はとにかく見飽きた。そしてなにより芸術的じゃない、知的じゃない。 とにかく下品なんだよ。アート的センスがないからごちゃごちゃして汚いし。
こんなの使うよりアニメ風萌え絵を使ったほうがまだいいくらいだ。
完全な糞ゲーの厨ゲーになる。そういう大失敗ゲームは腐るほどあるのだよ。
たまにやるのはいいけど、そんなのばっかだとがっかりするんだわ。
フリーゲームなんだから新しさと独創性を少しは出そう。同じようなゲームばっかやらすな。
副島隆彦を読め。総てユダヤの陰謀だ。
糞汚ねえ作りメンヘラ共をゴミ箱にぶち込め。
ttp://www.freegameclassic.com/contest.php?id=07 ttp://www.freegameclassic.com/vote.php
おっぱい まで読んだ
765 :
名前は開発中のものです。 :2009/11/02(月) 12:27:52 ID:t6tIbu5M
そのダサイノベルしかないじゃない、言ってることが矛盾してるわ
番号跳んでるなと思ったら、うちの専ブラが自動で長文をあぼーんしてた あぼんぬの的確さにフイタw
技術系(?)の板だと長文あぼーんは誤爆が多そうだ
DXライブラリってウィンドウ二つ以上開くことって出来ない?
SetDoubleStartValidFlagという関数があってだな・・ DxLib_Init関数を呼ぶ前に呼び出せば二重起動は可能
あ、二重起動という意味でてなくて子ウィンドウと言う意味での質問でした 自分で調べたところどーもウィンドウハンドルを取得してWinAPIを併用すればできるようでした ウィンドウごとにライブラリの設定を変える方法とかがあればクラス化して1インスタンス1ウィンドウとできそうなのでそうしたいんですが・・・
フレームレート固定にするとティアリングが発生して、そこで垂直同期有効にするとそれは治るんだけど、固定フレームじゃ無くなる(?) 一体どうすればいいのだろうか ていうか垂直同期まちって、待ってる間は処理止まる? それとも非同期で描画して、ゲームロジックだけは進んじゃうの?
止まる
両方作っておいてユーザーに選択させる
ターン制ゲームなんかは同期でいいだろう シューティングがなやむ フレームレートがズレると微妙な違和感が嫌だし、ティアリングで弾見失うのも困る 市販のティアリングなくてフレームレート安定してるゲームってどうやってるんだろう
ある程度DXライブラリが使えるようになったので 三度directXに挑戦したが、やはり挫折した。 多分c++の理解度の低さが影響してる。 色々考えたが、とりあえず当分の間は積極的にc++を 使いながらDXライブラリを使うことにした
DirectXを直接弄るにしても、結局は自前のラッパーライブラリを作るわけで、 それを1から作ろうとすると規模が大きすぎて挫折しちゃうんじゃなかろうか。
>>778 2Dなら全然大したことないよ
3Dならもっとフレームワーク色の強いエンジンを使わないとあまり意味ないし
781 :
名前は開発中のものです。 :2009/11/07(土) 01:10:46 ID:xyZM57nj
>>780 それでも描画、入力、音楽など一通りやろうとすると結構な量になるんじゃないかな。
規模が大きい/小さいなんて相対的なものでしかないけれど。
俺としてはDXライブラリの機能に文句はほぼないし 開発やサポートを実質一人でやってる管理人さんは本当にすごいと思う。 けどこれって管理人さんがやる気なくしちゃったら終わりだよね。 今のところそんな気配全くないけどさ。 オープンソースだから誰かが引き継ぐかもしれないが、これも他人頼りだし。 最後にはDirectXを自分で使えるようにならないとダメかなーっと・・・。
>>781 おれは通常、BCC使って、一通りできたらVC++に移す。
なんでそんなことするの? 俺はBCCだけでやってるんだけど、そのやり方に何かメリットがあるのなら検討してみたい。
VC++で全部やってるかな 入力サポートとか自動インデント楽だし、Makefileより簡単
bccは古すぎるからなぁ コンパイラの最適化機能を考えたらVC++2008Expressの方が良い
今のvc++だと制限があってexeをそのまま配布出来ないんでなかったか
そんな制限ないよ 昔のMicrosoftのライセンスと今は違うし Expressのよく寄せられる質問の7を100回読んできな
Visual Studio 2008 Express Editionは 配布も販売も許されてるみたいだよ
流れでわかると思うけど もちろん作ったプログラムのことねw
デバッグとかもVCのがいいだろ
DreamSparkはProfessionalの2005,2006、Ultimateの2010beta2が提供されてる。 ただ2010beta2は一般にも公開されている英語版だけどね。 ちなみに国際学生証発行しなくても、LinNoに登録すればDreamSparkの認証コードもらえる。
補足ありがと 今はVS2010beta2使ってるけど、C++0xでもインテリセンスが効いて使えるのは便利だよね 次のVS11ではC++コンパイラをフルスクラッチで書き直すみたいだから、まだまだMSはC/C++を最前線で活躍させるつもりみたいだ BCCと比べてVC++のコンパイラの性能も段違いなわけだし、DXライブラリはBCCサポートすら切ってもいいと思うぐらいだ
ブレンドモードの切り替えって重いかな。 そんなに心配しなくてもいいよね?
俺は表示画像(キャラ等)色換えに使ってるが全然問題ないな。 もちろん同じブレンドモードを使う画像はまとめて表示するくらいの工夫はしているが。
>>798 まあ、画像を描画してたりする中じゃ誤差の範囲かw
シューティングやアクションの座標管理ってfloatでやってる? ピクセル単位でしか描画できないからそれにあわせて有理数クラスとか作ってきっちり管理したほうがいいのかな?
俺はintでやってるなぁ。 んで描画の際に座標を縮小計算してる。 けど、こんなバカな事やるより普通にやった方がいいんじゃないかな。
intを固定小数点的に使う方法が801の方法だね 個人的には浮動小数点(float)の方が扱いやすいと思うけど、人それぞれだわ 自分の場合は、質点の力学にありがちな位置・速度ベクトル・加速度ベクトルを直交座標/極座標で与えて運動させる 自作クラス作って対応してます キャラや敵の動きのAIが作りやすくて便利なのでオススメ
自分は1ピクセルを内部で256分割してる。 いちいちビットシフトさせるのも面倒なので、ビットフィールドでそれっぽく。 これが良い方法なのかは分からないが。
>>802 なんという富豪プログラミングw
……っていうほど富豪でもないけどさ、
ゲームによっては凄く有効な方法だよね、それ。
>>804 何かしらキャラクタを動かすときに、毎フレームごとにUpdate呼び出すだけで、自動で運動してくれるから見てて楽しいですね
欲を言うと、剛体の回転運動・完全な衝突検出と衝突後運動・質量と万有引力概念 ぐらいまではライブラリに組み込みたいんだけど、
STGやACT作る分には今のところ事足りてるかな
最近公式に管理人現れてないな
正直Xファイルはなくなってほしい
DXLIBでゲーム作るとdirectXそのまま使うより実際どのくらい処理遅くなるの? 最近のPCだとほぼ違いはないのかな 結構重いもの作ろうと思ってるから気になる
CPU使用率が一桁から二桁になる
フルスクリーンとウィンドウの切り替えするときにするべき処理としなくていい処理がわからん とりあえず呼び出したSet〜を記録しておいて丸ごと再呼び出ししてるけど、こんなんでいいんだろうか 足りない関数とかいらないのまでありそうで不安だわ
>>809 直接Direct3D使うにしてもどうせDXLibと似たようなものを自分で書くことになるだけだからそんなに変わらん
ピクセル単位のエフェクトとかやりたかったらDirect3Dでシェーダ使えば桁違いの性能が出るけど
すみませんが超初心者のトラブルを助けてください 14歳からはじめるC言語ゲームプログラミングを買ってそれに従って Express 2008 にDXライブラリーを組み込んで使い始めました(Vista 64bit) まず以下のプログラムを書いてデバッグ開始すると黒いウィンドウが現れ その左上に水色の正方形があらわれました #include "DxLib.h" int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR IpC, int nC){ ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) return -1; DrawBox(0, 0, 120, 120, 65535, TRUE ); WaitKey(); DxLib_End(); return 0; } ここまでは良かったのですがそのあとプログラムのDrawBoxのパラメーターを 書き換えて再びデバッグ開始してもその変更が反映されず 最初に作ったのと同じウィンドウが再び現れるのです プログラムが書き換えられたことを認識してそれに応じたウィンドウを出すために なにが足りないのでしょうか
809じゃないけど3D使わないならDxLibでまず充分な感じかな? CPU使用率高いのは気になる といってもDxLibしか使えないから比較のしようがないんだけど
>>813 ・セーブしてない
・何らかの原因でセーブできてない
・エラーが出ていて前回ビルドしたものをそのまま起動している
いずれにせよDxライブラリとは関係ないと思われ
>>815 ありがとうございます
○○.cppの保存をしてからやってもダメでした
あらわれたウィンドウを消すと
出力元の表示 デバッグ
Alloc memory dump Total size:0(0.000kb) Alloc num:0
スレッド 'Win32 スレッド' (0xc5c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0xa3c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x9b4) はコード 0 (0x0) で終了しました。
プログラム '[448] chap3b.exe: ネイティブ' はコード 0 (0x0) で終了しました。
という表示が現れます
関係あるかどうかわかりませんが
どうも大変難しいです
SetJoypadInputToKeyInputの使い方がよくわからないんだけど SetJoypadInputToKeyInput( DX_INPUT_PAD1, PAD_INPUT_UP, KEY_INPUT_I, -1, -1, -1 ); って書いた場合、キーボードのIを押すと1Pパッドの上ボタンが反応するってことでいいの? 公式のサンプルをそのまま実行してもキーボードのほうがさっぱり反応しないから困ってるんだけど・・・
すいません自己解決?しました パッドが刺さってないとキーボードの対応も無効化されるみたいだ 結局パッドがない場合はない場合で独自にキーテーブルを作らないといけないのか・・・
>>816 なんだろうか。
メニューのビルド(B)→ソリューションのクリーン(C)やってみるとか。
書き換え前後のソースは?(DrawBoxだけでも
>>820 ありがとうございます
DrawBox(0, 0, 240, 120, 65535, TRUE ); 書き換え前
DrawBox(0, 0, 10, 10, 65535, TRUE ); 書き換え後
ほかにもいろいろ変えてみましたが現れるウィンドウはまったくかわりません
元のままです
それどころか
#include<stdio.h>
int main(void) {
printf("Hello");
}
にしてもHelloは現れずもとのままでした
クリーンというのを選んでもだめ
PC再起動してもだめ
今のところ打つ手なしです
>>819 ありがとうございます
ソリューションのクリーンやってみましたがだめでした
823 :
813 :2009/11/15(日) 20:26:05 ID:T7dfTd78
SetMenuItemMarkの使い方が分からん *ItemNameって何?メニューはリソースエディタで作ったんだが何をどうすればいいのか。 項目にチェックをつけたいんだが
質問 このライブラリで、「一度だけキーが押されたか」を取得する場合どうしたらいい? getkeyでやると押されている間ずっと判定しちゃってて、使いづらい。
答え ライブラリに頼らなくてもできます
前回の状態は保存しておこう
>>826 どんな感じの関数にすればいいの?
すまんが教えてくれ
827が答えいっとるじゃないか。
>>830 あーなるほど、2次元配列で管理かー。
これ参考にクラス化して使わしてもらうね、ありがとう。
こういう質問よく見かけるけど、 普段ゲームを作らない人には思いつきにくい処理なのかな。 なぜわからないのか不思議だ。
まったく同じ質問しようとしてスレひらいてびっくりした
変数というものが何のためにあるのかとかもっと考えてほしいな
公式サイトに答えがあるな。
>>811 あと、勝手にフルスクリーンとウィンドウの切り替えが行われるとき
その関数を自動で呼ばれるようにってできる?
って勝手に切り替わりっておきない?
>>837 フルスクリーン状態からAlt+Tabで一時的にウィンドウ状態に戻り再度フルスクリーン化した際に、サーフェスがロストされるよ
SetRestoreGraphCallbackを指定して、戻った際にReloadFileGraphAllでもすればLoadGraph()で読まれたものだけは復帰可能
(他の方法で生成したサーフェスは内容破棄される)
以前のDXライブラリ2.Xのバージョンの頃はCreateGraphFromMem()もMakeGraph()もMakeScreen()も復元できる裏技が通用したんだけど、
3.Xになってから厳しくなったよなぁ
その辺の検証コード興味があるのなら晒すよ
>>838 おお、レスありがとう
興味ありありです、よろしくお願いします
3Dだとどうなんだろう、モデルデータの使いまわしは
MV1LoadModelで読み込んだあとMV1DuplicateModel使うよね
そうやって取得したハンドルからアニメーション関数使ったりするし
なんとなく大変そうだ
あと、カメラ系やライト系も初期化される対象なのかな?
なんにせよSetRestoreGraphCallback使ってみないとイマイチわからないんで
とりあえず実装してみます
つーかどれが初期化される対象なのかわからん リファレンスもうちょっと詳しく書いてくれればいいのに
そういう問題もあったのか 開発中はずっとウインドウモードだから全く気にしてなかったぜ・・・
DrawBoxで半透明の矩形を描きたいんだけどこれは可能? CPUからグラフィックハンドルを作って描画するしかない?
もっと柔軟にものを考えようぜ。 SetDrawBlendModeってのがあるだろ。
>>843 ありがとう
リファレンス上から下まで見たはずなんけどあるの気付かなかったぜ
エントリーポイントをWinMainにしてコンソール出力の関数使うのってなんか問題ある? WinMainをmainに変えるとGUIとCUIの二画面になってコンソール出力するとちゃんと表示されるからデバッグに便利かな、と思ったんだけど・・・
>>845 CUIコンソールに出さずにデバッグウィンドウに出力する、OutputDebugString使いなさいよー
void OutputDebugWindow(LPCTSTR pString, ...)
{
#ifdef DEBUG
va_list arglist;
va_start(arglist,pString);
TCHAR ch_debug[1024];
_vstprintf(ch_debug,pString,arglist);
OutputDebugString(ch_debug);
va_end(arglist);
#endif
}
こんな感じでprintfっぽく使うといいよ
SetAlwaysRunFlag()とGetWindowActiveFlag()組み合わせで 窓が非アクティブの時 BGM再生をとめて その後に窓をアクティブにすると再生していたBGMを途中から再生させるようなことが可能だけど しかしプログラムの窓の上の青い部分を左クリックおしっぱなしや右クリックおすと BGMの再生がとまらなくてプログラムの処理がとまってるという現象になる つまり 音楽と画面の絵のタイミングがズレるんだよなあ・・・・
マウスカーソルが画面内にいるかいないかでも 判定しちゃえYO!
その手があったか!!thx
うお・・・マジか・・・ マウスカーソルが邪魔になると思うから ShowCursor(FALSE);とかで消してやってくださいな TRUEにすれば復活するよ
毎フレームMakeGraphとDeleteGraphを実行って速度的に大丈夫ですか?
ダメ なんでいちいち消して作り直す必要がある
じゃー最初に1度だけMakeGraphして 毎フレーム透過色で全体を塗りつぶして初期化ってことできます?
意味がわからん。 何がしたいんだ。
DrawRectGraphとDrawRotaGraph2を一緒にしたい感じです つまり、グラフィックの指定矩形部分のみを回転描画(回転中心指定あり)
補足です
>>851 や
>>853 では
DrawRectGraphで空のグラフィックに一旦コピーして
DrawRotaGraph2で回転描画しようとしてました
でも空のグラフィックを毎フレーム空にしないと
前フレームでコピーしたグラフィックの残りカスが残ってしまうと思ったので聞きました
DerivationGraph使えば
DerivationGraphを毎フレーム使っても大丈夫でしょうか? 指定矩形部分の左上座標やサイズが毎フレーム変わるんです
DerivationGraphを使う方法だと DerivationGraphで作成したグラフィックハンドル(非グラフィックデータ)の 左上座標、サイズの値などが内部で積み重なっていくんじゃないかなと思いました 抜き出し元のグラフィックデータを解放せずに DerivationGraphで作成したハンドルだけを解放する関数があればいいんですが
何がしたいのかよくわからないなぁ。 元の画像があって、その一部分を矩形として切り出して、 単純にその矩形を回転させるのではなくて、 回転させつつ、元画像から切り出す部分をずらしていきたい、とかそんな感じ? しかもどこを切り出すかは不定とか。
DerivationGraphで作ったハンドルだけDeleteGraphすればおk
>>860 そんな感じです 切り出す部分を移動させつつサイズも大きくしたり小さくしたり
>>861 DerivationGraphで作ったハンドルだけDeleteGraphしてみたら
そのハンドルは使えなくなって、抜き出し元のハンドル指定すると
描画できたから
>>859 ↓の理想の動作ができたっぽいです
ありがとうございました
もう解決したぽいけど、
>>860 のような用途なら
2Dでやるより板ポリゴンにテクスチャ貼って、
その板を移動や回転させながら
MV1SetFrameTextureAddressTransform()でUV値を
変えた方が楽な気がする
DXライブラリでゲーム作品を作ったんですが、 提出する場合、相手がVisualCのコンパイラをもっているとして 最低限どのファイルかフォルダを私のソーステキストと一緒に入れれば DXライブラリの機能は失われずに済むのでしょうか? よろしくお願いします。
ライブラリファイル(*.lib)とヘッダファイル(*.h) つまり、VCの設定でパスを通したフォルダのファイルがあれば、環境が変わってもとりあえずコンパイルは可能
「プロジェクトに追加するべきファイル」ってフォルダがある。それの中身丸ごとぶち込めばおk
>>866 それはどのような操作をすればいいんですか?
すいません、あまり詳しくないもので
操作も何もコピペするだけじゃない
だからさ、「DXライブラリでゲーム作品を作った」って自分で言ってるじゃん? て事はDXライブラリを用意したわけでしょ? その時に「プロジェクトに追加するべきファイル」ってフォルダにあるファイルを全部ぶちこんだでしょ? それをまたやれば済むだけの事って話でしょ?
つーかよくゲーム作れたな
>>864 ゲームを遊んでもらうだけなら、相手にVCは必要ありません
実行ファイルと画像と音楽をフォルダ構造そのまま渡せばOK
おまえら親切だなww
linuxでdxlibつかいたい だれか同じインターフェースで実装してくれ
おれも
>>872 の回答を期待して聞いたのだと思った。
だからそれ以前の回答は見当違いだと思った。
ゲーム会社に就職するために作品を提出するんじゃね
>>875 さすがにそれはねーよ……と思った俺は>868
今サウンドをDXライブラリをつかって組み込んでいるんですが、 BGMを流しながら効果音をだすと必ずBGMが消えてしまします。 解決法ってあります?PlayMusicの関数をつかってるんですが・・・・
提出ってんだから、専門学校かなんかの課題だと思った。 だからソースを提出しなくてはいけないから それに付属させるDxlib関係を知りたがってるものかと。
>>878 効果音再生にPlaySoundあるいはPlaySoundMemを使う
どうしても事故解決しなかったので皆さんにご質問させていただいてもよろしいでしょうか? int fonthdl = CreateFontToHandle( NULL , 40, 3); int i = DrawStringToHandle( 0 , 0 , "HELLOW!!" , GetColor( 255 , 255 , 255 ) , fonthdl ); 前後省きますが、この二行を含むプログラムを実行させたところ、2行目が表示されません 試しに戻り値を確認したところ、iには-1が入っており、fonthdlには1が入ってました 1行目でフォント作成に成功しているのに、2行目がエラーになる原因がわかりません 書式はDXライブラリのリファレンスページから持ってきたので間違いないと思うのですが・・ どなたかご指導お願いできますでしょうか?
こぴぺしたら表示されたよ
>>881 その2行をコピペしたら、表示されたよ
前後が分からないけど、WaitKey()とかで止めてなくて
表示前にアプリケーションが終了とかループを抜けている
とかはない?
色々試してみたところ自己解決しました グローバル側でハンドル変数を宣言していたのですが、関数のローカル側に char fonthdl; という変数があったことが原因だったようです メモリ値が入りそうなfonthdlが1と表示された時点で気が付くべきでした 変数名が被ろうが、charにintを代入しようが、お構いなしに実行できてしまうVCに驚きを禁じえない
普通重複して定義言われると文句言われると思うが。何でコンパイルしたんだ?
887 :
名前は開発中のものです。 :2009/11/21(土) 18:56:22 ID:QGK3+ipq
2Dポリゴンを使った横スクロールゲームを作りたいんだけど、さっきテストしたら ポリゴンを25枚くらいしか表示できない・・・。 ポリゴンの頂点と光源の距離から頂点ごとの明暗(RGB三種類)を計算し、 さらに頂点の平均からポリゴン自体の明暗(RGB三種類)を計算・・・ というふうにやっているのですが、無理がありますでしょうか? 最終的にはこれに簡単な奥行き値を与えたり、 ポリゴンにグラデーション(フォンシェーディング?)を与えたいとも思っています。 ちなみにポリゴンの描写はDXライブラリの「DRAWTRIANGLE」を使っています。 ↓ポリゴンの定義 struct PoliPt{ float x; float y; double b_r,b_g,b_b; }; struct Poli{ PoliPt p1; PoliPt p2; PoliPt p3; double b_r,b_g,b_b; int ori_r,ori_g,ori_b; int now_r,now_g,now_b; };
フルスクリーンにするとディスプレイが横長いせいか 画面まで横長くなっちゃうんだけど これを防ぐ方法無いかな?
>>888 それはグラボの設定でしょ。
プログラムとは関係ないと思う。
考えられうる方法としては起動時にモニタはどんなんなのか聞いて選択によって 比率が変わるような仕様にするとか
640x480で初期化して横長に表示してるときってどうなってるんだろう ドットが横長になって、画面の広さは640x480ドットとか それとも画面の広さは横長のたとえば1024x480ドットとして DIRECTXが足りない分を補完して横長に拡大表示してるとか
何を言ってるのかよくわからんが4:3の画面をワイド液晶でぴっちり埋まるようにフルスクリーンにしたら横に伸びる 何部でどうなっているかは知らんがな
894 :
名前は開発中のものです。 :2009/11/22(日) 13:28:08 ID:TM8YLfDD
>>809 スーパーベジータとスーパーゴクウの差
ヤムチャやクリリンからみれば違いがわからない
ベジータとゴクウってだいぶ違うんじゃ・・・
質問掲示板を見てて思うんだが 相変わらず管理人さんすげえ 何してる人なんだろ、管理人さんにメリットあるのかな
AIに自然言語処理させてるんだろ
898 :
名前は開発中のものです。 :2009/11/22(日) 18:59:03 ID:WmZXtjCP
イメージの読み込みをするのって、どういうクラスで行ったらいいだろう? 今までは簡単なタイトルからゲームメイン(1面のみ)、ゲームクリアとゲームオーバーの 二択からタイトルに戻るってだけだったから、ゲームクラスのコンストラクタで、描画クラスを 作って、描画クラスのコンストラクタで全ての画像をロードしてたんだけど・・・ 今度は、もっとちゃんとした、タイトルもグラフィックやサウンドがあって、コンフィグやゲーム などを選択出来るようにしようと思ってるんだけど。 一つの描画クラスにしようとしたら、コンストラクタでスイッチとか、ダラダラとしたものになってしまったし、 ゲームクラスに直接イメージハンドルを持たせるのも、なんか気持ち悪くて・・・
899 :
名前は開発中のものです。 :2009/11/22(日) 23:26:35 ID:FAevzJuI
DXライブラリってどれくらいのポリゴン数を表示できますか?
環境による
DXライブラリ付属の暗号化ファイルIOをC++のfstreamで使うことはできませんかね?
>>887 環境によるけど、今のPCなら1000や2000で厳しいということはないと思うよ。
Dxlibや自環境で扱えるポリゴン数の目安を知りたいならメタセコとかで
ポリゴン数計ってモデル作ってそれを読み込んで調べたらいい。ハードウェア
アクセラレーション不可能な独自形式とかだと少なくなるだろうけど。
ttp://www.youtube.com/watch?v=0vqy_DE4ick&feature=fvw アウターワールドの方法は、youtubeのメイキング動画(50分辺り)や
英語版wikiにある通り、まず下絵となる動画を撮ってAmiga使って25fps(
1秒あたり25枚)を目安の枚数として、約2年かけて1コマずつポリゴンで
絵を描いていき、その座標情報を元にゲーム上で描画している。
今で言うとFlashやイラストレーター、DXLibの機能で言うとDrawTriangleや
DrawModiGraphで人物とか絵を描いてリアルタイムに描画するのと理屈は
同じだけど個人で作るとしたらマゾ過ぎる作業になると思う。
スプライトとドット絵でなくポリゴンを使ったのは1990年当時のシビアな環境で
意味あったから(大量のラスタデータ不要だし、リアルタイムに作成するので
解像度とかも気にせずに映画的なカット割りも出来る)だけど、今なら3DCGソフト
で作って2Dとして見せれば、モーションの管理や修正も楽だし
アニメの「トナカイになったオリーブ」とかみたいな手法(板ポリによる2Dアニメ)で
作ってもいいと思う。まだ3D関連が弱いFlashとかで作ったら珍しいかもしれないけど。
何にせよ、あまりwiki(日本語の方)の記述には囚われないほうがいい。
結果的に大量の時間を奪って、表現を狭める事になると思うよ。
903 :
名前は開発中のものです。 :2009/11/23(月) 12:01:36 ID:o0V1+dtw
>>900 >>902 返事が遅くなりましたがありがとうございます。
いろいろ謎だった部分が氷解しました。
ベクターデータにした理由は当時の環境によるものだったんですね・・・。
ポリゴンにした理由が他に何かあるはずと決めてかかっていたので、そのあたり盲点でした。
やる人の視点に立った最適な手法をこれから模索していこうと思います。
かなり上の方で話題に出てたけど あるキャラグラフィックを真っ白にしたグラフィックが欲しいとして、 予め真っ白にしたグラフィックを用意しておくよりパレット弄って真っ白にしたほうがやはり高速なのかしら
よくわからんけど前者の方が速いんじゃない?
そりゃパレットいじるって手間があるぶん不利だろうな。 でもパレットいじって真っ白にするとしても、 結局あらかじめグラフィックハンドルとして取得していないといけないんだから大差ないんじゃない? フレームごとに書き換えるってんならそりゃ遅くなるだろう。 実用に耐えないほどじゃないかもしれないが、俺ならそんな真似はせん。
自分もパレットアニメーションについて調べたことがあったけど、 SoftImage系の関数使ってメインメモリ内でパレット弄っても、結局はグラフィックハンドルにするためにVRAMに転送しないといけないから、 毎フレームやるのは全くもって現実的じゃない。(60fpsが10fpsぐらいまで落ちた) もしかしたらVRAMを使わない設定なら高速にいけるかな? と思ってSetScreenMemToVramFlagつかったけど断念した それでももしやるのなら、NowLoading中に一気にパレット生成してグラフィックハンドル化するべきかな VRAM内でグラフィックハンドル化された後であれば、前者(予め真っ白にしたグラフィックを用意しておく)と一緒の速度になるよ 最近はパレットアニメーションとかラスタースクロールとか流行らない技術だから、レトロな表現をしたい人にはちょっと残念だよね
ピクセルシェーダ使えば
DXライブラリ2.25ベースで作ってたから、もしやDirectX9ベースの3になってシェーダーサポートしたのか!と思ってヘッダみたけど無かった いまさらGraphLock使うのも何だし、DXライブラリでの凝ったエフェクトの類は諦めてるよ
パレットアニメーションに関しては20年も前に発売されたファミコンの方が最新のPCより処理が早いわけか
911 :
名前は開発中のものです。 :2009/11/25(水) 00:55:38 ID:Y2wCaoVN
DXライブラリの3Dの機能を使って立体のゲームを作る講座って無いでしょうか? どこも2Dのものばかりなので・・・
単純に戦闘画面が3DになっただけのRPG作ってるが これなら当たり判定とか入らないし、3D入門にいい気がする
ありがとうございます〜!
>>898 敵なら敵をまとめているクラス(マネージャクラス?)、自機、弾、爆発効果
この単位で読み込むとステージの切り替わりで画像をメモリから開放できるし
プログラムの中で誰が使ってる画像なのかもわかりやすいし
表示をひとつにまとめるのは、表示優先度を実装したいのなら必要
戦車のいる屋根、爆発穴、自機の影、戦車より航空機を上に・・・
表示情報をバッファして、FLIP直前に優先度でソートしていっきに処理
弾幕STGだとそういう細かい判断必要ないから楽
背景、敵、アイテム、敵弾、自機弾、自機、ボムの順番で
タスクを呼んでタスクが直接DrawGraph
一番の悩みは、画像番号の扱いでプログラムが汚くなること
クラスの外に出さざるを得ないし、宣言する場所もあちこち散らばるし
宣言する場所たとえばdata.cpp
int BMP_TEKI000
読み込むとき
BMP_TEKI000 = LoadGraph( "teki000.bmp" ) ;
表示するとこ、敵のタスクの処理の中
extern int BMP_TEKI000;
画像を持ってるクラスのポインタ->Render( x, y, BMP_TEKI000); //XY、画像番号
何かいい方法無いですか
DxLib.dllをC#から使う時に、いくつかの関数(GetLightAmbColorとか)で EntryPointNotFoundExceptionが出た。 (構造体を返す関数だと出るっぽい?) で、いろいろ試行錯誤した結果、DllImport属性にEntryPointを追加して [DllImport("DxLib.dll", EntryPoint = "_dx_GetLightAmbColor@0")] ってすれば動いた。 (エントリポイント名はobjdumpで調べた) 以上、チラ裏的な何か。
>>917 dumpなんかしなくても一緒に入ってる
ヘッダファイルを見ればいいんじゃないの?
919 :
名前は開発中のものです。 :2009/11/26(木) 12:55:31 ID:4AfehVqj
DXライブラリの3Dデータをメタセコイアで作ったんだけど、 モデル自体を読み込むことは実現したけど、アニメーションさせる方法が分からない。 アニメーションさせる方法っていうか、アニメーションのデータを メタセコイアのモデルに格納する手順とか仕様とかが。 MIKOTOとかのメタセコイア専用のモーションツールがやってくれるのかとも思ったけど、 あれは出力ファイルがMQOデータでも.Xでもない独自のものらしい。
>>919 BlenderでFBX出力とか
PMD化とか
RokDeBone2とか
有料のは使ったことないからしらん
921 :
名前は開発中のものです。 :2009/11/26(木) 13:26:44 ID:4AfehVqj
RokDeBoneってのでがんばってみます あり
922 :
917 :2009/11/26(木) 15:44:36 ID:UmB8e3fj
訂正。細かいことだけど
×objdump ○dumpbin
>>918 俺も最初そう思ったんだけど、ヘッダに書いてある関数名だとダメだった。
LoadGraphToResourceで読み込んだ画像がスリープから復帰後に消えてしまうよ。・゚・(ノД`)・゚・。
>>923 スリープってPCのスリープ状態?
それともSleep()?
上だと別におかしくない
下なら管理人に報告
理由は知らないけどゲームってスリープから復帰すると挙動がおかしくなるもの多いよね
DirectXが関係してるのかな
blenderはすぐに挫折した まぁまた気合いれて挑戦する予定ではあるけど・・・
>>924 PCのスリープ状態だけどどうすればいいのか教えて!
いや、ゲーム終了しろよ。
DXLibの3Dはショボイショボイ言われてるけどどんな風にショボイの? 動作が遅い?機能性が低い?難解でライブラリの意味がない? というのも、2Dゲームに3D背景やエフェクトをちょっとだけ付けたものを作りたくて、 dxlibの3Dに頼るかそれとも別のライブラリをそもそも使うか迷ってるんだ
一言で言うと低レベル これ使えるなら普通のDirect3D使えると思う
画像読み込み直せばいいんじゃないのか
>>930 923じゃないけど、スリープ状態から復帰したのを知る命令とかあるんですか?
932 :
名前は開発中のものです。 :2009/11/27(金) 02:12:22 ID:kdI1nO63
これってどのくらいのスペックがあれば3D機能使ったサンプル動くの? 自分のお古ノートpcだと3Dがうまく動かない
933 :
名前は開発中のものです。 :2009/11/27(金) 02:26:42 ID:94/JWZGc
DXライブラリ、3Dでレンダリングが何もしなくても結構リアルにしててびっくりしたんだけど、 ああいうリアル系(グローシェーディング?)ではなくてトゥーンレンダリングでやりたいんだが・・・ その場合レンダラーを自分で組む必要があるの? でもそれだとGPUで高速な演算をやる意味が無くなっちゃわないかな。 何かいい方法ある?
メッセージの処理はライブラリ側でやっちゃてるし
ツンデレってレベルじゃねーぞ
スリープから復帰すると読み込んだ画像が消えるってのは デバイスロストでテクスチャの内容が失われる現象のことなのかな。
3Dに対応したばっかなんだから色々足らない それなりに簡単ではあるが 現時点で3Dメインにすると自前でやることが多くてライブラリとしての限界が低い 今後に期待だろ
940 :
名前は開発中のものです。 :2009/11/28(土) 03:35:48 ID:uSZIPsHE
レンダリングはDraw3Dで児童でやってくれてるのかな フラットシェーディングにしたいときとかどうすりゃいいんだろう
941 :
名前は開発中のものです。 :2009/11/28(土) 20:12:09 ID:zI8Xi3Fm
3Dで作るならSeleneっていうのにしたほうがいいかな? 今からはじめる場合
942 :
名前は開発中のものです。 :2009/11/28(土) 20:47:17 ID:EBQZi4wb
Seleneは3Dさえよければいいって感じだから止めておけ
943 :
名前は開発中のものです。 :2009/11/28(土) 21:59:01 ID:zI8Xi3Fm
ん?3Dさえ・・・ってどういうこと? Seleneざっとみた感じだと視覚的に分かりやすいツールとか充実しててよさそうだなって思ったんだが DXライブラリって3Dしょぼいしょぼいって言われてるし レンダリングも今のところ普通のやり方でしかできないっぽいけど向こうは ハッチング風とかアニメ風とかあるんだぜ?
「3Dでさえ」のタイプミスじゃない?
2DもDXライブラリでできることはだいたい一通りできるぞ
dxlibよりはselenaだな
Seleneは初心者には奇異に見えると思う Direct3Dの流儀がわかってないと「なんでこんなことをしないといけないのか」と感じることが多いはず
DXライブラリはバージョンアップに期待できるじゃん サポートもしっかりしてるし 立派なライブラリでも使いこなせなきゃ意味無いしね
Z方向の優先順位って自分でソートしないとだめ?
950 :
名前は開発中のものです。 :2009/11/28(土) 23:20:00 ID:c3E1HfUV
管理人さんの人柄って重要だよね DXライブラリを選んで正解だったよ
DxLibのバージョンfのソース内の宣言や構造体から見た感じでは、
まだ実装されてないけどロードマップとしては、当面はトゥーン
関連の機能に力を入れるのかな。
>>940 「アウターワールド+細かい光や影表現」の人だとしたら
理屈を考えれば分かると思うけど、ポスト処理やテクスチャや
自己発光でなくフラットシェーディング+3Dでの微妙なライト計算
というのは論理的に矛盾してるよ。
面単位でシェーディングされるわけだから、結果はVF1や
アローインザダークみたいな絵になるはず。
だからその方法では、どのライブラリやミドルウェアでも無理ぽ。
何語かと思った
アニメーションむずかしいよ・・・ なんか体系的に扱ってるいい参考書かサイトないもんか
何がどう難しいんだ
アニメーションのオブジェクトが独立してるときはいいんだけど 複数のアニメーションのオブジェクトが連動してるときが難しい ゲームロジックはリアルタイムじゃなくてターン制のゲームで ターンのはじめにもう1ターン分すべての計算は終わっちゃってるから 単純にupdate-drawでデータと同期させることもできないし
>>949 DXライブラリのリファレンスにZソート機能はないって書いてたよ。
>>955 格闘ゲームあたりが参考になるんじゃね
参考にするサイトあんまないけど
俺は描画直前でモーション処理してる
それウィンドウ部分じゃないの? 試しにスキンを98あたりに変えてみたら
DXライブラリはウィンドウの内側の凹線に2px使う仕様だから正常
>>942 は3Dの機能があるのでそれさえよければって意味だと思う
>>958 それ、随分前に公式で同じ事言ってる人がいた記憶があるな。
>>958 ずっと矢印みてたら
宇和ああああああああああああああああああああああああああああああああ
てなるんじゃないだろうな?
過去ログにそれっぽいのあったけど引数入れても変わらない/(^o^)\ とりあえず SetWindowStyleMode( 5 ) ; って書いてから初期化したら枠消えたけど最小化ボタンも無ぇwww SetWindowStyleMode( 9 ) ; は未実装なのか…
967 :
名前は開発中のものです。 :2009/11/29(日) 15:02:16 ID:Yt6IVxeD
3Dのシャギーがうっとうしいんだけど、アンチエリアシングとか出来ないのかな
968 :
名前は開発中のものです。 :2009/11/29(日) 15:03:44 ID:Yt6IVxeD
あと、メタセコで読み込んだデータのフレーム(Obj1とか・・・)ごとの座標を取得したら どれも(0,0,0)になってるんだがこれもバグ? .xファイルにしたらフレームそのものがなくなっちゃってるし
Easy3Dにしとけ
HSPナツカシス
作者に報告すれば対応してくれると思うよ
seleneは特定のSDKがないとビルドできないんだなw めんどくせー
>>966 WS_EX_は試した?
その関数でできなくても、ハンドル取得して拡張ウィンドウスタイル変えれば?
974 :
966 :2009/11/30(月) 08:45:59 ID:w5vfr/PK
>>973 もっかい掲示板見てたら検索でヒットした部分はずいぶん最近の記事だった/(^o^)\
今使ってるライブラリがほんのちょっとだけ古かっただけみたいだ…orz
DXライブラリでもモーションブラーはできますか?
PlayMusicMem()ってmp3再生できない? midiファイルなら問題ないし、PlayMusic()の方ならmp3でも大丈夫なんだが。 これは素直にPlaySound系を使えってことかしら。
PlaySounMem
979 :
977 :2009/12/02(水) 21:19:26 ID:FtP0ChgG
>>978 PlaySound系なら問題なく再生できたよ
モーションブラーはできますか? って聞いてるんですが!
>>978 モーションブラーはできますか?
って聞いてるんですが!
何この子
これはパイソンでスンマソン
fpsを表示する関数とかってあります?
そのプログラム見させてもらいましたけど、 fpsを60に統一することって難しいの?62.5じゃ結構誤差が 多いような気がするんだけど・・・
自分で作れよ
いや作る以前になんで62.5にしてるのか気になったよ。 16.66msから16msに切り捨てて意味あるの? 俺によくわからんよ。
だから自分で作ってみればわかることだろう 出来合いの関数組み合わせてるだけじゃ何にも作れないぞ ちょっとは自分で考えないと
ゲーム作ってるとそういう細かいところにこだわって手を入れてるときの方が楽しいよね そしてゲーム作り自体は全然進まなくなる
むしろ、アイデアが欲しい 技術はかなりついたけど それに伴ってどんどんアイデアがでなくなった
>>990 いやもう作ったよ。
そういう考えらならDxライブラリ自体あれじゃん
アイデア云々というかまずお前はどういうゲームが作りたいんだ まず目を瞑って自分の作りたいゲーム想像してみろ
日本人は制限された技術でこそ本領を発揮する傾向がある。 技術合戦しても洋ゲーに太刀打ちできない。 現実感のない妄想力こそ日本人の武器。 というコラム思い出したぜ。
日本人のほうがもう総力ないよ
映像にばっか力入れてるし、もうないかもね だから廃れた 今はwiiで育ってるかもか
unko
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。