DXライブラリ 総合スレッド その5at GAMEDEV
DXライブラリ 総合スレッド その5 - 暇つぶし2ch321:名前は開発中のものです。
09/12/25 18:33:38 V52nYqVj
>>318
>もし組み込めるならお勧めソフトを教えていただきたいでござる
有料でも良いなら「Maya」「Softimage」「3ds Max」のいずれか。
無料が良いなら「メタセコイア + (Keynote or Toystudio)」「Blender」「Mod Tool(商用利用は不可)」のいずれか。

322:名前は開発中のものです。
09/12/25 18:52:38 ZhGjQlkx
>>321
いまToystudioさわってみましたが、使いやすくてびっくり
だけど出力ファイルがDXライブラリに対応してるのはxファイルだけとは・・・

8 名前:名前は開発中のものです。[] 投稿日:2009/12/05(土) 12:30:22 ID:CQOWfBMw
ToyStudioでアニメーション作って、MQOで出力したんだけど、
ものすごい膨大な量のMQOデータが出てきたんだけど・・・
アニメーションを作るたびに毎回こんなのが出てくるの?
そもそもこういう出力結果をゲーム内でアニメとして使えるの?

まさにこれと同じような感じなんだが、xファイルとしては出力できないのでしょうか?

323:名前は開発中のものです。
09/12/25 18:53:45 3T809Z1U
>318
X形式の仕様としては、1つのファイルに複数のアニメーションを
組み込めるんだけど、実際に書き出し機能が標準であるソフトは
市販とフリー併せても、RokDeBoneとTOYSTUDIO、エルフレイナ
ぐらいしかないかも。

BlenderやSoftImage(とmodtool)用のプラグインでは公開して
くれている人がいるけど、XNA用とかに特化したデータを
書き出すのでDXライブラリでは読めなかったと思う。
(これは各ソフトやDXライブラリの問題ではなく、そもそも
x形式の自由度が高過ぎるので互換性が低いことが原因)。

RokDeBoneとかで書き出したxデータが、DXライブラリで
読めるかは試してないので読めるかもしれないけど
keynoteやRokDeBoneで、ある程度のモーション作るのは
モーションレイヤーやミキサーないので結構大変な気がする。
けっきょく、DXライブラリで使える複数アニメーションつき
xファイル形式が欲しい場合はツールかプラグインを自作する
しかないんじゃないかな。

でもモデルデータと、モーションは分けている方が何かと
融通は利くと思うよ。修正後の差し替えとかの点でも。

324:名前は開発中のものです。
09/12/25 19:03:16 EP1DxHaQ
>>320
Rocdebone2でもボーン入れる作業はできるよ
こっちは線形のボーン。詳しくはおちゃっこLABで

たいしてメタセコイアで骨入れる場合はmikoto形式のものがある
こっちは三角形ボーンに影響度のアンカーボックスタイプでござる
詳しくはここら辺がいい
ボーンの作り方
URLリンク(homepage3.nifty.com)
URLリンク(umemori69.hp.infoseek.co.jp)
URLリンク(umemori69.hp.infoseek.co.jp)

モデリングテク
URLリンク(mattaku.sa-ra-sa.com)

325:名前は開発中のものです。
09/12/25 19:05:23 EP1DxHaQ
あと、3DゲームつくりたいのならEASY3DライブラリまたはSeleneでもいいでおじゃるでやんす
逆転の発想

326:名前は開発中のものです。
09/12/25 19:08:48 V52nYqVj
>>320
DxLibModelViewerで確認してみた?

>>322
ToyStudioには無償版と有償版(5000円)があって、残念ながらXファイルをエクスポートできるのは有償版だけなんですよね・・・
まだ仮対応らしいけどMMDのPMDを使うか、FBXからMV1に変換して使うとかも検討してみて。

327:名前は開発中のものです。
09/12/25 19:09:24 ZhGjQlkx
>>323
>>344

モーションひとつ作るのだけで大変そうですねえ・・・挫折しそうだorz
エルフレイナというやつ、まだチェックしてなかったので見てみました
使いやすそうですけど、やはりフリーだとxファイル出力ができないのですね・・・
>>322での出力もできないというのも、シェア版にしないといけないみたいですね
RokDeBoneが現状自分の最後の望みみたいなので、ボーンの作り方等読んでがんばってみます。
親切にレスありがとうございます(つA`)

>>325
3Dゲーム以外も作ってみたいのでDXライブラリがんばってみますw

328:名前は開発中のものです。
09/12/25 20:26:29 V52nYqVj
ちょっとRokDeBone2が出力したXファイルとFBXを試してみたので報告しておきます。

RokDeBone2付属サンプルの「glow.sig」を編集してXファイルに出力。
これをDirectXVierwer、DxLibModelViewerで読み込んでアニメーション表示OK。

MSサンプルの「dude.fbx」をDxLibModelViewerで読み込んでXファイルに出力。
これをDirectXVierwer、DxLibModelViewerで読み込んでアニメーション表示OK。
しかし、これをRokDeBone2で読み込むと原因不明のエラー。

329:名前は開発中のものです。
09/12/25 21:00:26 2weq8SiY
DXライブラリの拡大縮小機能を使って
擬似3Dを今まさに作ってる俺には手が届かない話題だな。

330:名前は開発中のものです。
09/12/25 22:10:40 EP1DxHaQ
一方通行なわけか

331:名前は開発中のものです。
09/12/26 02:21:18 h7BLtdtN
3Dモーションは、trueSpaceを使ってみ。フリーだ
URLリンク(www.caligari.com)
古いバージョンがよければ、一番下にSerialNumberが書いてある。

機能が多くて安かったが、MSの介入があってこのザマだ。
Xファイルのインポートエクスポートがある。


332:328
09/12/26 13:42:22 UrPNO9E9
>>328の続きです。

ModTool7.5でFBXを出力、これをDxLibModelViewerで読み込むと強制終了する。
公式のFBXViewerでは正常にアニメーション表示できているのでDxLibModelViewerのバグかもしれないが、ModTool7.5のエクスポータにも色々と問題がありそう。

メタセコイア(Keynote)でFBXを出力、これをDxLibModelViewerで読み込むとエラー。
メタセコイア(Keynote)でXファイルを出力、これをDxLibModelViewerでアニメーション表示OK。

PMD(モデルデータ)をDxLibModelViewerで表示OK。
しかし、Xファイル出力するとデータが壊れることがある。MV1出力は問題なし。
VMD(モーションデータ)をDxLibModelViewerでアニメーション表示OKだが、データによっては読み込めない場合もある。
エラーメッセージも表示されないし、今のところ原因不明。

まだまだ不安定ではあるもののMMDが結構良さげな印象だった。

333:名前は開発中のものです。
09/12/26 13:44:47 R/WYZk+C
乙。報告あるとのちのち使う人がいたとき参考になるからな

334:名前は開発中のものです。
09/12/26 16:52:38 IeIeiG58
C++スレから誘導されてきました。
今学習に使っているのは14歳から始めるC++ゲームプログラミングで、 現在サンプルを触ってみている状態です。

void TekiControl::move(float jx, float jy){

list<CharaData>::iterator it;
it = tekilist.begin();
(*it).anim->draw(0, (*it).x, (*it).y);

//子機発射処理 ※この部分を指定秒数ごとに実行したい
float dy = GameFrame::IdouHosei(8);

podsally( (*it).x+64, (*it).y+32, 20, 0,-dy);
podsally( (*it).x+64, (*it).y+32, 10, 0,-dy);
podsally( (*it).x+64, (*it).y+32, 20, 0,dy);
podsally( (*it).x+64, (*it).y+32, 10, 0,dy);

podmove(jx,jy); //子機移動

}

子機発射処理のみを指定秒数で実行するようにしたいのですが、
どのような方法があるでしょうか?
できればvoid TekiControl::move(float jx, float jy){ 内で
処理できるようにしたいのですが・・・。

335:名前は開発中のものです。
09/12/26 17:01:21 EuBBUaJe
move(){
  static before_time;
  if(before_time - now_time() > 指定病数){
    before_time = now_time();
    IdouHose();
  }
}

336:名前は開発中のものです。
09/12/26 17:03:21 EuBBUaJe
引き算逆だった

337:名前は開発中のものです。
09/12/26 17:15:36 IeIeiG58
これは//子機発射処理 の上に記述していいんでしょうか。
move(){を中にまた使うということですか?
nowtimeの初期値はGetNowCountなどの取得で合っているでしょうか。
    IdouHose(); とは何のことでしょうか。

質問ばかりですいません。
現在改造しながら勉強しているのですが、ここがどうしてもできないもので…。


338:名前は開発中のものです。
09/12/26 17:24:29 vrlJW694
改造とかしないで基本からやったほうがいいぞ

339:名前は開発中のものです。
09/12/26 17:29:32 EuBBUaJe
その本持ってないんで適当です。
GetNowCountが最大値超えた場合とか考慮必要。
void TekiControl::move(float jx, float jy){
  list<CharaData>::iterator it;
  it = tekilist.begin();
  (*it).anim->draw(0, (*it).x, (*it).y);

  static unsigned int before_time;
  if((GetNowCount() - before_time) > 指定秒数*1000){
   before_time = GetNowCount();
   //子機発射処理
  }

  float dy = GameFrame::IdouHosei(8);

  podsally( (*it).x+64, (*it).y+32, 20, 0,-dy);
  podsally( (*it).x+64, (*it).y+32, 10, 0,-dy);
  podsally( (*it).x+64, (*it).y+32, 20, 0,dy);
  podsally( (*it).x+64, (*it).y+32, 10, 0,dy);

  podmove(jx,jy); //子機移動
}

340:名前は開発中のものです。
09/12/26 17:29:32 IeIeiG58
本に載っている内容はとりあえず一通りやりました。
次は改造かな、と思ったのですが…

341:名前は開発中のものです。
09/12/26 17:32:22 IeIeiG58
>>339
これでできました!ありがとうございます!!
10時からやっていたので本当にうれしいです。
本当にありがとうございました。

342:名前は開発中のものです。
09/12/26 17:54:19 E9OJHMux
3Dゲーム創りたいんだけど、最近3D対応したばかりのDXライブラリより
EASY3DとかSeleneのほうがいいのかな?
ここで聞くのは野暮だと思うけど、2DゲームでDXライブラリを使って良かったので、
3D機能についての現状を知りたい。

343:名前は開発中のものです。
09/12/26 18:16:38 t2+el/7e
>>341
もう解決してるけどそういう「何フレーム化に一度」の処理は、1Fごとに++するTimeみたいな変数を作って、
if (Time%60==0)みたいに使ったほうが良い
特にGetNowCountは音ゲー作るかFPS計測する時など1ミリ秒のズレも許されない時以外はあまり使うべきではない

344:名前は開発中のものです。
09/12/26 20:29:54 R/WYZk+C
>>342

DXlib 3D使ったことない
Selene 使ったことない
Easy3D HSP版だけ使った

HSPで3Dは楽だし結構いろんなことできるしよかったよ
ただ演算多くなる場合は断然cが速すぎ

345:名前は開発中のものです。
09/12/26 22:19:58 UrPNO9E9
>>342
基本的な機能は揃っているし十分3Dゲームを作れるよ。
ニコ動でDXライブラリを使って作られた3Dゲームが公開されているので一度見てみるといいよ。
しかし、Seleneと比較するとやや機能不足な点もある。
シェーダー、ポストエフェクト、GUI、物理エンジン、スプライト(パーティクル)など。
特にシェーダーが使えないというのはレンダリングの品質に大きく差が出る。(PS3とPS2ぐらい違う)
逆に言えばDXライブラリの方が扱いが簡単なので、3D初心者ならこっちの方が向いてると思う。

346:名前は開発中のものです。
09/12/26 23:51:39 FO5uRkla
あと、空間分割とかないな
無いものは自前で実装すりゃいいけど、その頻度が増えると
DXライブラリで無理して作ってる感じになる
ならSeleneとか他の3Dが充実してるライブラリ使ったほうがいい
もしくはDirectX直
どの程度のものを作るかによるってことだな

>>332
FBXならBlenderが良いよ
X、FBX,、PMD+VMDの話題は前にも見た気がする


347:名前は開発中のものです。
09/12/27 00:12:09 kPK58Sfx
>>346
そこらへんがDXライブラリじゃ駄目といわれる所以だよね
出来なくても無いけど2Dほど簡単ではないし、それならちょっと頑張って他のライブラリ使ったほうがずっと天井が高い

348:名前は開発中のものです。
09/12/27 00:28:01 MBrvOJgD
結局このライブラリは3Dに関してはまだ遅れているってことなのかな
つい最近対応したばかりだから仕方ない話だといえばそれまでなんだけど

349:332
09/12/27 01:02:13 bc5V7EbG
>>346
>X、FBX,、PMD+VMDの話題は前にも見た気がする
情報ありがとう。
前スレ見てなかったけど、Blenderの出力したFBXは問題ないようですね。
ただUIが独特で個人的には使いにくかったので・・・
あとToyStudioの出力したXファイルも問題ないみたいなのでこっちも良いかも。

350:346
09/12/27 01:27:46 GGjOngEr
>>347
つっても、あくまで現時点ね
>>348が言うように、3D対応されたばかりで機能が足らないのは仕方ない
個人的には期待してる
PMD化するのは手間だけど
PMD+VMDは3Dを扱う敷居がぐっと下がる
モーションが連番で別ファイルになってるのも、使ってみればかなり便利
最終的にはMV1にしてもいいしね
3D機能の充実は時間かかるだろうけど、作者にはがんばってもらいたい


351:名前は開発中のものです。
09/12/27 13:06:29 2vbWXkV1
でもあまり機能が充実しすぎるとお手軽ライブラリじゃなくなるのよね。
高機能で簡単、というのはただ単に高機能というだけよりよっぽど作るのが難しい。
DXライブラリはお手軽なところが受けてるだろうから、あまり機能追加しすぎて複雑にならないことを祈る。


352:名前は開発中のものです。
09/12/27 14:00:34 uhSQPV5X
DXライブラリの3Dライブラリは、安定するまでに2年くらい必要だろう

同程度のライブラリでDrakGDKを使ってれば良いと思う。
C言語の初級からでも扱える3Dライブラリで難易度が低い
これで3Dの技術を身に付けて、
2年後くらいにDXライブラリ3Dを始めるのもよい

3Dは表面化されない小さいトラブルが多い。
そして、わけのわからん専門用語も出てくるし....

353:名前は開発中のものです。
09/12/27 17:13:24 z8YG6h4b
今サンプルを参考にちょろっと創った感じだと、現時点でもかなり簡単に
ある程度のレベルのものは創れそうだよ。
少なくとも64以上のものは簡単に作れるだろうし、努力しだいではPS2レベルのも出来るんだろう。
本格的に目指すのでない限りは更新速度や質問できる環境などを考えると、
DXライブラリでぜんぜんいいと思った。
まだ3Dモデルを動かすとこまでしかやってないけどね。

354:名前は開発中のものです。
09/12/27 17:59:53 yZAsy6xS
直接質問できる環境は大きいよな
しかし管理人さんって何者なんだろうな

355:名前は開発中のものです。
09/12/27 18:49:06 8drOPqxx
作者って14歳の中のひとなんだろうか…

356:名前は開発中のものです。
09/12/27 18:51:42 A9L3SGsA
クラスとか使ってC++に最適化されたDxLibも作って欲しいわ

357:名前は開発中のものです。
09/12/27 18:56:35 8drOPqxx
Dx.
まで入力したら入力補間で命令がズラっと出るという夢をみた。
いや、まぁ自分で改造すればいいのかもしれんけど…

358:名前は開発中のものです。
09/12/27 19:16:58 z8YG6h4b
これってブラーとか鏡(レンダリングした結果をテクスチャに)とかはまだ実装されてない?

359:名前は開発中のものです。
09/12/27 20:07:35 M0Cw0Z6W
>>357
DxLib::

360:名前は開発中のものです。
09/12/27 20:23:19 LDM1qCXB
すいませんこのソフトってオブジェクト指向を理解してないと利用できないのでしょうか?

361:名前は開発中のものです。
09/12/27 20:32:01 jKh1EiXg
自分はHSPから移動してきたので
変数は全てグローバル変数で管理して
各ファンクションもサブルーチンとしてしか認識していなかったが
普通に作れた

362:名前は開発中のものです。
09/12/27 20:37:49 bc5V7EbG
>>358
「ブラー」はモデルを半透明にして重ねて描画じゃダメ?
「鏡」は3Dに限らず描画先を指定できないと思うので無理そう。

>>360
C言語の知識だけで十分だよ。
まあ、14歳でも使えるらしいので。

363:名前は開発中のものです。
09/12/27 21:54:18 mBfODTUH
ガチで99%の変数をグローバルにして
ゲーム完成させたらソースコードが12000行とかになって悶絶した
クラス使わないなら関数化は必須に近い・・・
VCの左画面様様だわ

364:名前は開発中のものです。
09/12/27 22:06:33 8drOPqxx
俺もHSPから移行組だったからグローバル当たり前が染み付いていたけど
アクセス制限が邪魔なら全部publicでもいいからクラス使った方が
変数名とか関数名の管理が楽だぞ

365:名前は開発中のものです。
09/12/28 01:07:57 3r1xx2ry
>>358
>ブラーとか鏡
今試してみたら3Dでも、SetDrawScreen()でテクスチャにも
レンダリングできたよ。管理人さんが昨日直してくれたバージョンだと
DrawExtendGraph()でも表示できた。
ずらしたり拡大縮小すれば、DirectXの本とかに良く載っているAAや
被写界深度の表現も出来そうな感じ。

できないのはテクスチャをロックしてピクセル単位でいじること
じゃないかな。つまりブラーや鏡とかは可能だけどレンダリングした
画像にポスト処理とかはできない…と思う。

ただこのへんの処理やソートとかは、DirectX直接いじる時と同じで
自分で実装しないといけないぽいので、その意味では既出のように
低レベル(ハード寄り)なので2D機能よりは敷居高い部分あるかも。

366:名前は開発中のものです。
09/12/28 03:34:23 9l/NWr9W
すみません。
このエラーは何が原因なんでしょうか?

LINK : fatal error LNK1104:DxLib_VC2005用.exe' を開くことができません。

367:名前は開発中のものです。
09/12/28 03:42:52 /F5FiFDi
良い感じにPMDの問題報告→修正されてきてるな

368:名前は開発中のものです。
09/12/28 07:59:40 TSFI1pm5
>>366
DXライブラリのエラーではない、以上。


変な場所で実行してるんじゃなければ、
exeファイルのパーミッション確認しとけ。

369:名前は開発中のものです。
09/12/28 10:27:15 9l/NWr9W
わかりました。ありがとうございます。

370:名前は開発中のものです。
09/12/28 11:44:34 Us5hvkZh
>>362
14歳より歳いってて、Cは授業で少しくらいの自分がいまいち理解できないとちょっと悲しくなるタイトルだと思うんだ。

371:名前は開発中のものです。
09/12/28 11:45:38 dBTW62Xp
俺なんか14歳以下どころか猫以下だぜ・・・

372:名前は開発中のものです。
09/12/28 11:49:28 jpOTUZve
あの猫高知能すぎだよな…

373:名前は開発中のものです。
09/12/28 11:57:25 yuCthtY8
>>365
SetDrawScreen関数は任意のテクスチャを描画先に指定できないと思うんですがやり方があるんでしょうか?

374:名前は開発中のものです。
09/12/28 12:43:57 u/qep0of
あんなレベルの猫や猿が標準だったら今頃世界から人間滅ぼされてるよな・・・

375:名前は開発中のものです。
09/12/28 12:58:13 3EFD++9F
俺は逆にグローバル関数出来るだけ使わないように拘ってたが
色々面倒になってグローバルも積極的に使うようにしたがな

376:名前は開発中のものです。
09/12/28 12:59:10 3EFD++9F
間違えた
×グローバル関数
○グローバル変数
まあどうでもいいことだけど

377:名前は開発中のものです。
09/12/28 13:16:08 jpOTUZve
最新(掲示板)の奴、ウィンドウの拡大縮小すると変にならね?

378:名前は開発中のものです。
09/12/28 13:46:53 yuCthtY8
>>377
掲示板(2009/12/27(Sun) 13:35)に投稿されているバージョンで試してみたけど確かに挙動が違う。
ウィンドウの拡縮が反映されてないね。

379:名前は開発中のものです。
09/12/28 14:29:28 vxFbJ2Ow
ifってeles使わなくてもifで固めればeles使う必要あるのかな?

380:名前は開発中のものです。
09/12/28 14:41:43 TSFI1pm5
>>379
どこから突っ込めばいいんだい?

381:名前は開発中のものです。
09/12/28 14:49:03 YIPGDrjp
日本語からじゃない?

382:名前は開発中のものです。
09/12/28 14:54:14 jpOTUZve
スレチって所からだな

383:名前は開発中のものです。
09/12/28 15:42:28 0XgsQP9X
>>379
とりあえずマジレスするが
まずスレチな
次にelseな
elseを使わないと想定していないエラーが起きる場合もあるから
else ifって形にするべき

384:名前は開発中のものです。
09/12/28 15:43:55 vxFbJ2Ow
すいませんでした。
else ifのところのelseをぬいてもおなじように動いたので、
いるのかなと思って
C言語のすれにいきます。

385:名前は開発中のものです。
09/12/28 15:46:54 vxFbJ2Ow
ですよね、些細な疑問にマジレスありです。
すっきりしました^^



386:名前は開発中のものです。
09/12/28 16:46:29 EmomTfPw
友蔵心の俳句

387:365
09/12/28 17:40:27 3r1xx2ry
>>373
試したことはないけどpng等から作ったテクスチャとか
「任意なテクスチャ」には無理だと思う。

たぶんテクスチャにレンダリングしたい時は、描画可能な
テクスチャを専用で作らないといけないはず。
具体的には、SetDrawValidAlphaChannelGraphCreateFlag()等で
指定してから、MakeGraph()で作ったテクスチャになら
レンダリングできる。
あとはそのテクスチャを普通にDrawGraph()とかで描画できるけど
UVやビルボードに使えるかはまだ試してないので分からない。

このへんを含めてリファレンスには載っていない関数も
かなり多いので、Dxlibのソースや公式掲示板の過去ログ
とか見ると使い方も含めていろいろ発見あるかも。

388:373
09/12/28 18:48:57 yuCthtY8
>>387
ありがとうございます。
SetDrawScreen関数はMakeGraph関数で作成したグラフィックも指定できるんですね。
リファレンスに書かれていない機能だったとは・・・

389:名前は開発中のものです。
09/12/28 18:52:49 dBTW62Xp
ほうほうそれは知らんかった
なんで隠すんだろうな

390:名前は開発中のものです。
09/12/29 00:11:37 MjH8+OO8
関係ないスレだろうけど、ぐぐって検索したらここが見つかったのでここで書く。

「ゲームプログラマになる前に覚えておきたい技術」のシングルトンが変

普通シングルトンといったらpublic static getInstance()内部で初回呼び出し時に
インスタンスを作成するのに、別にインスタンス作成のためのpublic static create()というメソッドがある。

そして、クラス外部のどこかでcreate()を呼び出してインスタンスを作成している。
二回createしたら落ちるだとさ。つまり複数インスタンスをcreateするコードをかけてしまう。
これでは、実行時に落ちるとはいえ、コンパイル時にエラーを検出できない。

たとえば、複数のプログラマが、コードの一部分を分担してそれぞれ作っているときに
それぞれがcreate()していると、コードを分けている段階では問題なくても
一つにマージしたときにエラーが発生するというシナリオが起きてしまう。

391:名前は開発中のものです。
09/12/29 00:18:26 IYgt3GZP
あの本は結構適当だからな

392:名前は開発中のものです。
09/12/29 01:19:32 0CS2MVBj
セガの限界です
教育担当者ですらその程度
だからあそこまで落ちぶれた

393:名前は開発中のものです。
09/12/29 02:24:27 RokfBydo
Singleton の構築|Code++
URLリンク(ameblo.jp)

2回create()を呼び出すと落ちるのは問題だが
初期化関数を別に用意したほうがいい場合もある

394:名前は開発中のものです。
09/12/29 10:12:58 Mul0eZVk
まあシングルトンなんか使う時点で…

395:名前は開発中のものです。
09/12/29 10:14:09 qD3DEd6e
シングルトンは普通に使うだろ

396:名前は開発中のものです。
09/12/29 10:31:45 Mul0eZVk
とりあえずシングルトンにしとけばオブジェクト指向っぽいしどこからでもアクセスできて便利と思ってる奴が多すぎる
グローバル変数だと意識して使うのは勝手だけどさ

397:名前は開発中のものです。
09/12/29 11:41:51 4TKwhtv1
SEGAはプログラマが悪いんじゃなくて企画が悪いんじゃね?

398:名前は開発中のものです。
09/12/29 12:33:29 MJuE+QA3
宣伝が悪い

399:名前は開発中のものです。
09/12/29 12:33:57 IYgt3GZP
つまりなにもかも悪いのか

400:名前は開発中のものです。
09/12/30 18:16:44 UY2bjnZL
ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE);
↑でフォントを変更すると異常に重くなる。
これ以外で文字も目立たせる方法ってあります?
たくさんの色つかってる背景なので、文字が目立たなくて見にくい

401:名前は開発中のものです。
09/12/30 18:19:27 61sxYcJT
CreateFontToHandle

402:名前は開発中のものです。
10/01/01 10:45:01 OYP4V88L
VC++確かにべんりだーー。
{}のつながりがわかるじゃないか。
bccのときはこめんとひっつでした。
ただぎょうがわかればいいな~~


403:名前は開発中のものです。
10/01/01 10:49:31 usKzGBmk
一度VC#やVB触ったらVC++なんかゴミにしか感じられなくなるけどな

404:名前は開発中のものです。
10/01/01 10:52:44 tpzydI5S
VC#やVBも機械語と比べたらゴミにしか感じられないけどな

405:名前は開発中のものです。
10/01/01 12:36:09 WC0TdB7O
>>402
メニューの[ツール]->[オプション]->[テキストエディタ]->[C/C++]->[全般]
で行番号をチェック

406:名前は開発中のものです。
10/01/01 13:08:58 /td8CeQE
>>402
それはお前のインデントが悪い

407:名前は開発中のものです。
10/01/01 15:11:34 7pzjYUfB
VC#やVBってVC++より遅いんだろ?
それにVC#はガベジなんちゃらというので急に重くなるそうじゃないか
アクションとかシューティングに向くの?

408:名前は開発中のものです。
10/01/01 15:26:26 rtNA4Eqo
その通りだからC++でやりなよ

409:名前は開発中のものです。
10/01/01 16:19:43 oXGgPpta
>>407
.NETのガベージコレクションは優秀だから重くなることは無いよ
Xbox360では多少難あるけどね
実行速度遅くて困るなんてことは今の時代のPCスペックじゃ有り得ないそ
Javaのゲームも余裕で動く時代だし
アクション、シューティングもネットブックで動かせたよ

410:名前は開発中のものです。
10/01/01 16:32:52 i5316gGW
勝手に動いたガベコレが2フレームくらい時を止めても困る

411:名前は開発中のものです。
10/01/01 16:44:58 usKzGBmk
今時そんな細かい処理速度が表に出てくるほどのゲームを作るのは大変だぞ
そんなカツカツの高負荷のゲーム作るんだったらそもそもDXライブラリなんか使うべきじゃないしな
それはともかく>>403は単にIDEの出来だけを言ったつもりだった

412:名前は開発中のものです。
10/01/01 16:48:57 qgsN6nSc
VC#()笑 VB()爆

413:名前は開発中のものです。
10/01/01 17:46:25 +lDteCCN
ゼタセカンドでさえ遅れるのを許されない設計の場合

まず
・設計を改める
 削れる処理はないか。
 もっと速い処理はないか。  特に算術演算はコンパイラでさえ最適化しきれない「なにがやりてーんだタココラ」って効率の悪いコードになりがち。
 セオリーから外れてないか。 ウェイトを「カウントアップ」でやろうとしてないか。

などを見直し、それでもダメだ!1ヨクトセカンドでも遅れるのは許されぬ!ってとき

ハードウェアとダチ公になる


のだ。
遅れるってのは結局「OSのスリープに頼っているから」である。
OSのスリープはもちろんOSがやることなので「今は特に眠くないです。」といったらスリープしてもらえない。
そこをハードウェアとダチトモコレクションすることで、強制的にスリープするのだ。

414:名前は開発中のものです。
10/01/01 17:52:47 +lDteCCN
格闘ゲームだったら体力が0になったとき義塾大学になるのはもちろんだが、
気絶などのステータスもある。何のモーションのとき何が何でキャンセルできるのか

そういうことも常に演算する対象だが、これを

if(cancell_OK == 1)

とかやってるやつは基本がなってない。

char  cancell_OK, cancell_NG, cancell_only_special・・・・・・・

などと延々必要になるではないか。
ステータス管理の変数は1つにまとめろ。それは可能である。


というふうに、効率の悪いコードになっているのを改めることでだいぶ良くなる。



415:名前は開発中のものです。
10/01/01 18:19:25 Xn7CcDBA
>ステータス管理の変数は1つにまとめろ。それは可能である。
へぇ~どうなるの 40文字以内で教えてください

416:名前は開発中のものです。
10/01/01 18:20:21 ulJ3MFDL
>ウェイトを「カウントアップ」でやろうとしてないか。
これについて教えて下さい

417:名前は開発中のものです。
10/01/01 18:20:50 +lDteCCN
結局のところ、格闘ゲームにおけるステータスってのは0か1しかない。
分かるだろ。の

418:名前は開発中のものです。
10/01/01 18:22:58 qgsN6nSc
>>414
cancell…

ステータスはビット演算でやってもいいが可読性が著しく低いから、
boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
スパゲッティどころか脳髄の如く絡まってるコード持って自慢げにメモリ使用量が~~とか言ってる奴いるとぶん殴りたくなる
というかぶん殴る

419:名前は開発中のものです。
10/01/01 18:23:47 +lDteCCN
カウントアップウェイト

信じられないことに、いまだに良く見るんだが
for(i=0, i < During; i++)

のこと。逆も然り。
for(i=During; i !=0; i--)

のような


これ数えてる間、CPUがずっとそれに占有されるだろ
これじゃウェイト、スリープの意味がない。

420:名前は開発中のものです。
10/01/01 18:25:49 ulJ3MFDL
>>419
これ駄目なの?普通に使ってた
代わりにどう書けばいいの?

421:名前は開発中のものです。
10/01/01 18:27:56 +lDteCCN
ウェイトやスリープってのは、

「何もしないんだから、その間他の処理をさせよう」

ってのが基本だ。また、そうでないとウェイトしてる間他の何の処理もできないから
極端に言えば画面が停止することになる。


普通は、OS越しに駆動するゲームだったらOSに用意されるスリープ命令を使う。
OSがない組み込みなどで動かすゲームなら、割り込みを使う。

422:名前は開発中のものです。
10/01/01 18:38:45 ulJ3MFDL


423:名前は開発中のものです。
10/01/01 19:16:43 CHW7ms0X
ループ処理の話かと思った

424:名前は開発中のものです。
10/01/01 19:24:26 Xn7CcDBA
unsigned long stat;
#define CANCEL_OK 0x00000001
,,,
 if (stat & CANCEL_OK)
 ...
 else if (stat & CANCEL_NG)
 ...
とか書くのかな

>boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
みたいなほうが好きだ
ただ例にあげてるとおりに格闘ゲームだとするとキャラクターの1フレームごとの変数の数が増えるのをきらうのはわかる

425:名前は開発中のものです。
10/01/01 19:28:11 DuVCrQzJ
>OSがない組み込みなどで動かすゲームなら、割り込みを使う。

GBAとかMSXとか古いゲーム機の時のことでしょ
懐かしいな

426:名前は開発中のものです。
10/01/01 19:28:36 +lDteCCN
時間軸で考えると、
例えば「1時間後に働けよ」というのがスリープの考え方。

「じゃあその1時間何をするか」。
1時間、ずーっと1,2,3,4,5,6,7,8,・・・・と声に出して数え上げるとする。
これじゃ、なんか用事があっても何も出来ない。

「じゃあ本でも読むか」となれば、別の処理(本を読んで知識を得る)が出来る。

どっちやっててもシステム時間として1時間は過ぎるが
片方は「実質的に意味のあることを何もしてないのにパワーだけ食う」
片方は「実質的に何もしないんだから別のことをする」

どっちが効率的か分かるだろう

427:名前は開発中のものです。
10/01/01 19:31:29 +lDteCCN
また、ループも

for(i=0; i < During; i++){
 Plus += Exactly;
}

ではなく、
if(During == FuckingAss){
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
 Plus += Exactly;
}

などとしたりすることがある。
基本的にコッチのほうが速いからだ。
CPUとコンパイラにもよるが。

428:名前は開発中のものです。
10/01/01 19:32:53 ulJ3MFDL
>>427
へー

429:名前は開発中のものです。
10/01/01 19:35:16 ulJ3MFDL
でも1000回のループとかだと、1000行書いてたらさすがにソース長くなって鬱陶しいよね
大体何回までのループなら>>427の↓のパターンで書いてもいいの?

430:名前は開発中のものです。
10/01/01 19:37:18 +lDteCCN
デッドライン、つまりここまでに必ず処理終えろ!っていう最終期限が決まってるシステムでは
forループではなく、こういうふうな展開したループもどきが使われることも多い。

難点は、見た目素人っぽいこと

それ以外は何してるか分かりやすくていいのだが
「こっちのほうが速いよ」ってことをなかなか認めてもらえないのが難といえば難


これを、デッドラインまで繰り返す
デッドラインが決まっているということはおおよそのアタリがつくし、
そんなに長いループにもならない。なってはいけない。

431:名前は開発中のものです。
10/01/01 19:42:28 +lDteCCN
まあこういう小ネタは
「もっと軽くしたい」ってときの最終手段なので

根本から遅いのであれば設計を見直したほうがいいよ

432:名前は開発中のものです。
10/01/01 19:44:49 Xn7CcDBA
>ID:+lDteCCNが考える中で
じゃあWindowsのDXライブラリで
たとえば1フレーム50ミリ秒にするのにSleepを使わない最適なメインループはどういうの
公式のサンプルがいいのなら「それ」といってくれればいいです

433:名前は開発中のものです。
10/01/01 19:46:30 qgsN6nSc
マジレスするとDXライブラリ使うような環境でこんな事を考える必要は無い

434:名前は開発中のものです。
10/01/01 19:48:17 ulJ3MFDL
>boolの配列作って0~nの数字をそれぞれステータス名でenumしてる
これ具体的にどんな感じで書けばいいの?

435:名前は開発中のものです。
10/01/01 19:50:56 +lDteCCN
俺やったら、スリープはCPUに直結する。
例えばPowerPCはタイマユニットを持っているので
これに値を入れてカウントさせる。アンダーフローと同時に割り込みが入る。
その割り込みでタスクを駆動させる。

こういうハード寄りもいいとこのタイマ管理ってのはアプリで使うもんじゃないというし、
まあそれもそうだろうが実現する場合これが一番いいのだ。

ハードウェアのタイマクロック計上はタスクじゃないので、一切影響を及ぼさない。
普通OSのスリープは多かれ少なかれCPUのパワーを食うが
俺のやるタイマは一切食わない。割り込み処理のオーバーヘッドは微々たるもの。

436:名前は開発中のものです。
10/01/01 19:52:10 ulJ3MFDL
>>435
全然わからんからサンプルソースで説明しておくれ

437:名前は開発中のものです。
10/01/01 19:54:51 OvIEzR2y
wwwwww
DXライブラリのスレでPowerPCwwww

面白いヤツだなお前

438:名前は開発中のものです。
10/01/01 20:05:29 +lDteCCN
PowerPCは例えだし
サンプルといっても、やりたい事を記した関数しかないのだがw

割り込みはソフトウェアじゃない。
割り込みは、ベクタ方式の場合ベクタベースからオフセットしたところにプログラムカウンタが来るだけだから
別にソースで表すもんじゃない。
また、PowerPCならベクタじゃない。

439:名前は開発中のものです。
10/01/01 20:07:18 rctl5BXb
割り込みベクタとか。正月でやっぱらったロートルPGが集まるスレはここか?


440:名前は開発中のものです。
10/01/01 20:08:35 rctl5BXb
やっぱらったって酔っぱらったなw
俺も飲んでるがなww

441:名前は開発中のものです。
10/01/01 20:10:31 +lDteCCN
でもハード寄りプログラムは面白い。
普通あんまり使わないウォッチドッグタイマ

どうしても更新したいのに処理が終わらなかったとき
これで強制的に更新したりできる
たまにはハード寄りのオブジェクトを作ってみても面白い

442:名前は開発中のものです。
10/01/01 20:42:23 WC0TdB7O
>413で間違えて書き込んだのか知らないけど
ここは主にDXライブラリやそれに関する話をするスレなので
DXライブラリに全く関係ないPowerPCの話はやめてほしい

あとゲームではあまり意味の無い、
>427のような時期尚早な最適化を進めるのはどうかと思う
今のVC++の無償版には最適化機能が付いているし

443:名前は開発中のものです。
10/01/01 20:50:31 +lDteCCN
考え方はx86系統でも同じなのに・・・w

444:名前は開発中のものです。
10/01/01 22:16:35 yLIIIbHt
>>434
横レスだが、たぶんこんなかんじじゃないの

enum StatusSet{
Stat_POINSON,
Stat_PARALYSIS,
Stat_DISEASE,
Stat_CURSE,
Stat_NUM
};

bool phys_stat[Stat_NUM];
for(int i=0;i<Stat_Num;++i) phys_stat[i] = false;

あとはif( phys_stat[Stat_POISON] )とかでもswitchで振り分けてもいいし
STLのbitsetは役に立たないかな?使ったことないけど

445:名前は開発中のものです。
10/01/01 22:41:12 qgsN6nSc
>>444
意図してたのはちょっと違った
enum StatusSet{
JUMP,
WALK,
DASH,
ATTACK,
};

bool stat[5];
if (stat[JUMP]) { ~~ }

という。
#まあjumpとかwalkは色々やるべきなのでintで管理すべきだが……

446:名前は開発中のものです。
10/01/01 22:49:37 ulJ3MFDL
>>444-445
ありがとん

447:名前は開発中のものです。
10/01/01 23:18:29 4nYhycH7
ID:+lDteCCNみたいなオナニーはブログででもやってくれ

448:名前は開発中のものです。
10/01/01 23:28:38 /td8CeQE
私はステータスはビット演算派だ。
可読性が指摘されているが、
やり方が悪いくせに可読性が低いと決めつける奴に進歩はない。

#define JUMP (1 << 0)
#define WALK (1 << 1)
#define DASH (1 << 2)
#define ATTACK (1 << 3)

unsigned long stat;

if (stat & WALK) { ~~ }

↓ジャンプアタック
if (stat & (JUMP | ATTACK)) { ~~ }

-----------------------------------------------

Cをアセンブラ視点で見られるかどうかは重要だと思うが、
今は最適化のレベルが上がっているので、
>>427のようなロートルな話は意味がないと思う。


449:名前は開発中のものです。
10/01/01 23:30:56 +lDteCCN
なんかコンパイラを優秀な最適化屋と思ってるのがいるが、

logとビットシフトでは10秒も差がある。

450:名前は開発中のものです。
10/01/01 23:57:47 1cbp2whq
言ってることの半分もわからないけど
DXライブラリと無関係なのはわかる

451:名前は開発中のものです。
10/01/02 00:16:20 ek4oo2Ge
まあこいつプログラム板ゲ製板どこにでも湧くキチガイなんだけどな

452:名前は開発中のものです。
10/01/02 00:26:34 08xjavwk
どうせたいがい描画がボトルネックになるから細かいことを気にしてもほとんど意味がない

453:名前は開発中のものです。
10/01/02 00:27:36 HeY6umvi
>logとビットシフトでは10秒も差がある。

454:名前は開発中のものです。
10/01/02 00:33:31 08xjavwk
実際に表に出てくるパフォーマンスっていうのは「積み重ね」じゃないからな
細かいことはIOや描画の桁違いのコストで吹き飛ぶ

455:名前は開発中のものです。
10/01/02 00:36:42 txdXna1V
コミケ終わったとたん速度はえ~~~w
>>405
ありがとです
行表示できました
まだ、便利な機能があればおしえてほしいです。

456:名前は開発中のものです。
10/01/02 11:44:35 Ab6bZvqB
>logとビットシフトでは10秒も差がある。

10秒って・・・・・・Z80とかクロック4Mhzの時代の話ですか?

457:ひらしょ
10/01/02 13:50:19 xqJ6LKWH
流れさえぎってすまないが、ゲームプログラマになる前に云々の著者です。
シングルトンがああなのは、getInstanceの速度をあげるため。
if一回減らせる。描画APIラッパとかだとここ重要。
create二回で死ぬのも「二回呼んじゃダメ!」と言いながら
assertで死ぬわけで、意味のある死に方。
ゲームにおいては、
間違ったコードを書いても動き続けることは重要ではない。
間違った、あるいは非効率なコードを書いたら
すぐわかるようにしておいて、出荷までに直すべき。

458:名前は開発中のものです。
10/01/02 14:03:41 +OdFeBMV
平山さん?SE-GA-♪

459:名前は開発中のものです。
10/01/02 14:09:07 X1WEcwoJ
うわ、こんなスレまで見てんのかよ
老いぼれセガ社員必死だな
Seleneスレ荒したのお前だろ

460:名前は開発中のものです。
10/01/02 14:09:36 7cOQTtto
>>459
Selene作者帰れよ

461:名前は開発中のものです。
10/01/02 14:38:27 Y2eIfDvE
ここは有名人の集うインターネッツですね

462:名前は開発中のものです。
10/01/02 14:41:47 +OdFeBMV
証拠うpまだー?

463:名前は開発中のものです。
10/01/02 15:39:32 HeY6umvi
>>457>>390の書き込みに対してか

>>390はassertが何のためにあるのかも知らないただのプログラム初心者だな
スレ違いでチラシの裏にでも書くような内容を堂々と書くくらいだしな

>>459
Seleneの現行スレ、過去スレ見たけど全然荒れてないぞ
あと、お前はアンチSEGAのスレにでもいけ

464:名前は開発中のものです。
10/01/02 18:47:34 US5QyJsT
3.01きたな

465:名前は開発中のものです。
10/01/03 09:52:26 uXTT7Kpp
>>457 ゲームならその仕様で良いだろうね。
”ゲームプログラマになった後の~”の執筆もよろしくお願いします

466:名前は開発中のものです。
10/01/03 11:10:30 WXd0Gz3I
ちょっと相談なのですが、座標はfloat型で取得していて、
マップは20×15で通れるところが0、通れないところが1で2次元配列読み込み済。
自キャラは32×32の場合、DXライブラリのサンプルにあったマップとのあたり判定の例に従って

float oldX,oldY;//移動前の座標

int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);

oldX = (*it).x ;//移動前のX座標
oldY = (*it).y ;//移動前のY座標
    int x1 = (*it).x , y1 = (*it).y;
int x2 = (*it).x+32 , y2 = (*it).y+32; //右下の座標(どこで使うか考えている)

printfDx("%d,%d,%d,%d\n",x1,y1,x2,y2);



467:名前は開発中のものです。
10/01/03 11:12:21 WXd0Gz3I
float df = GameFrame::IdouHosei(4);
if(key & PAD_INPUT_UP) (*it).y = (*it).y - df;
if(key & PAD_INPUT_DOWN) (*it).y = (*it).y + df;
if(key & PAD_INPUT_LEFT) (*it).x = (*it).x - df;
if(key & PAD_INPUT_RIGHT) (*it).x = (*it).x + df;
if((*it).x<0) (*it).x=0;
if((*it).x>608) (*it).x=608;
if((*it).y<0) (*it).y=0;
if((*it).y>448) (*it).y=448;

       x=x1/32;
y=y1/32;

if(map[y][x]==1){
(*it).x = oldX ;
(*it).y = oldY ;
}

(*it).anim->draw(0, (*it).x, (*it).y);

こんな感じにすると若干思っているのとずれるんですよね…。
当たり判定なので左上の座標と右下の座標を取得するところまでは考えたのですが、
どのようにしたら実情にあったマップとのあたり判定になると思いますか?

468:名前は開発中のものです。
10/01/03 11:25:02 CHMCqqiY
とりあえず見難いから->使っとけよ

移動させてから戻すんじゃなくて、二次元配列のマップチップなら移動先が0かどうか判定するほうがいいんじゃね

469:名前は開発中のものです。
10/01/03 11:26:09 mNxKxxAQ
>>467
>こんな感じにすると若干思っているのとずれるんですよね…。
ちょっと分かりづらいので、何が原因でどういう風にずれるのか詳しく教えて。

470:名前は開発中のものです。
10/01/03 11:44:39 WXd0Gz3I
>>469
うまく言えないのですが、ぶつかるべきところでぶつからないで食い込んで止まったりする、という感じでしょうか・・・。
あと、通行可のはずのところに入れなかったり。
マップに入れるところ、入れないところを作りたいのですが。


471:名前は開発中のものです。
10/01/03 11:52:19 v00n4e/G


何でもそうだが、

条件判定は少なければ少ないほどよい。
っていうか現場でifififififififififififififififif重ねる奴は怒られる。

switch-caseで済む場合もあれば
ビットシフトで済む場合もある

俺はswitch-case大嫌い
下に来るまでクロックを食いながら来るからだ
だから個人的にはビット演算以外認めない
ビット演算なら、立てておけば何が来ても一瞬だからだ

472:名前は開発中のものです。
10/01/03 12:06:18 v00n4e/G
ビット演算が嫌いだったり何らかの理由でどうしてもswitch-caseにしなければならないのなら
ステータスに数字を割り振って、その値が指すものに直に飛ばしてもよい

擬似テーブル方式だな
内心嫌だった

とにかく、ifififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififififif重ねるのは見た目にもよくないし
実行速度的にも良くないので絶対に改めるべきだ。
単純なswitch-caseも絶対に避けるべきだ。10項目あったら10項目めに来るまで最低11クロックかかる。
11クロックもあったらシェーダを3回も回せる。
じつにもったいない話だ。

473:名前は開発中のものです。
10/01/03 12:07:15 aWVerO1p
まず

x=x1/32;
y=y1/32;

x=x1/20;
y=y1/15;

じゃないか?

その上でマップに当たった場合、
ギリギリまでキャラクタを移動させる処理が足りない。
それをやらないと、キャラクタがブルブル震える。

あと変数の名前をもうちょっと考えてやろうな。
配列の引数に渡すセル番号の値がキャラ座標と同じx,yはひどい。
規格が違う。

474:名前は開発中のものです。
10/01/03 12:10:36 CHMCqqiY
とりあえずマップが格子状ならキャラクターのx,yも同じ値で管理すべき
実際の位置は表示部分で考えるか、滑らかな動きがいいなら別途キャラクター表示x,yを用意して補正してやる

475:名前は開発中のものです。
10/01/03 12:15:25 mNxKxxAQ
>ちょっと相談なのですが
という言い回しだったので「アルゴリズムを提案してほしい」ということかと思ったのに、実は「バグを見つけて下さい」ということだったとは・・・
>>473で解決だな。

476:名前は開発中のものです。
10/01/03 13:43:46 +Y7mHkgr
お前ら馬鹿か
自キャラは32×32だから/32でいいだろ
出鱈目教えんなよw

それと
if(map[y][x]==1){
(*it).x = oldX ;
(*it).y = oldY ;
}
となってるが
それはキャラの左上しか減り込みチェックしてないから
int x2 = (*it).x+32 , y2 = (*it).y+32 は
int x2 = (*it).x+31 , y2 = (*it).y+31 に変えて
map[y1][x1], map[y1][x2], map[y2][x1], map[y2][x2] をチェックしてやらんといかん
他も変えるべき個所はあるがとりあえずここまで


477:名前は開発中のものです。
10/01/03 13:47:15 +Y7mHkgr
間違えたw
>map[y1][x1], map[y1][x2], map[y2][x1], map[y2][x2] をチェックしてやらんといかん
はなかったことね
取りあえず4隅をチェックするということ

478:名前は開発中のものです。
10/01/03 14:02:44 +Y7mHkgr
あとね、ID:WXd0Gz3I のことやろうとするとね、結構大変だから、俺もやったけど
引き返すなら今のうちかも、特に初心者は
ある程度慣れた人ならできるだろうけど

俺の場合は下行くか上行くか左行くか右行くかによって場合わけで上の人が嫌いって言ってたswitch-caseでやったけど
まあ上手いことやればswitch-case使わなくてもできるんだろうけど
俺の場合は上行った場合は左上と右上の2隅チェック、
右行った場合は右上と右下の2隅チェック、以下略
ってやってったと思ったんだけど

479:名前は開発中のものです。
10/01/03 14:31:11 CHMCqqiY
初心者が誤解するとアレだから一応言っておくけどswitch-caseは基本JMPだから。

480:名前は開発中のものです。
10/01/03 15:24:02 WXd0Gz3I
あたり判定みたいに右下と左上のみの判定じゃ難しいみたいですね。
なんとなくそれっぽい動きができればそれでいいのですが…。
switch-caseも一度考えてみます。

481:名前は開発中のものです。
10/01/03 16:42:55 TuIYpr0P
>>480
スレ斜め読みのおいらが答えると、まず、floatは辞めよう。
一度、float型で、単純な計算をさせると分るけど、floatは精度的に難がありすぎる。
使うなら、intかdoubleを。(特に今回は浮動小数点が必要なさそうだからintで十分)

あと、値が何を示しているのか?をきっちりと考える事。
(x2が、自キャラがギリギリ外れてる位置なのか?ギリギリ入っている位置なのか?)
可能なら、それぞれの名前をx1=>x_top x2=>x_under y1=>y_left y2=>y_rightとか、
ちゃんと意味する名前に・・・。

また、無意味なマジックナンバーはさっさと定数に。
static const int SQUARE_SIZE=32;とかにする。

さらに、一般的にキャラと通路がほとんど同じ大きさだと、
将棋みたいなマス目管理じゃないと、操作不可能になりやすい。
(何か絶対の理由が無ければ、キャラの処理的な大きさは7割で処理していっても問題無い。)

めんどくさいんで、人の書いたモノの紹介で濁すけど、
今回は、基本ただの四角形と四角形の判定辺りで行ける。
URLリンク(marupeke296.com)
の その4 のはじめの所を読めば問題解決するだろう。



482:名前は開発中のものです。
10/01/03 18:04:43 smx+9BoV
宇宙船を舞台にしたFPSゲームを作ろうと思っています。
次のような要素を実現したいのですが・・・
①エイリアンを倒した数によって、ヒロインのおっぱいが大きくなる。
②ステージをクリアしたあと、ヒロインのおっぱいを揉める。
①に関しては、おっぱいの大きさごとのモデルを作るのではなく、DXライブラリの
プログラムで、おっぱいだけを大きくしたいです。
②に関しては、プレイヤーの動きに応じてちゃんとおっぱいがもにもにするようにしたいです。
DXライブラリで可能でしょうか?

483:名前は開発中のものです。
10/01/03 18:10:25 Cn7qbODV
3D?
おっぱい以前に,さすがにFPSならDXライブラリじゃなくてもっとちゃんとした3Dゲームエンジン使った方が結果的にずっと楽だよ

484:名前は開発中のものです。
10/01/03 18:12:54 FbdCmvgh
        ,,,      ,,,,,,         : .と お 大 お エ
       _ = ~~ ``ヽ_,=''~´  ´~ヽ    :  は こ き .っ イ
    _= ~               ヽ   : 思 が く  ぱ リ
    ~=、    ミゞ、  , -彡     ヽ.  : わ ま .し. い ア
       ~=、、、Cl~evj <e~}6)_   、、、ミ : ん  し  よ を .ン
        ミ.~~ /', ゚ ;'7  ミ7ヾ~- 、  : か  い う    の
       ≡   (','゚, '.人  ゝ |  ヽ  : ね     な    命
        `=  `ー'   iノ'  | / |          ん    で
         ~ーノノノノノ'′               て



  _  ∩ピタ
(; ゚д゚)
し   |
|   |
し ⌒J



   ( ;´゚д゚)     ・・・・・・・・・
  c(,_U_U ガク



            ( ;´゚Д゚)   おっぱいは何のためにあるんだー
           c(,_U_U
 _,,..-―'"⌒"~⌒"~ ゙゙̄"'''ョ
゙~,,,....-=-‐√"゙゙T"~ ̄Y"゙=ミ
T  |   l,_,,/\ ,,/\

485:名前は開発中のものです。
10/01/03 20:05:43 wq7ATXDp
>>482
3Dメッシュの1部分の頂点座標を変更することが出来れば可能ではないだろうか
DXLibではメッシュの中の1点の頂点情報を変更する関数が見当たりませんでした
直DirectXではLockVertexBufferで頂点情報を抜き出し、一部変更してからUnlockすれば書き換えできる
その他知る限りだとDarkBasicのSET VERTEXDATAがそれらしき機能かもしれない
自分はボーンの使い方わかないので、頂点書き換え方式でキャラのモーション作ってます

486:名前は開発中のものです。
10/01/03 21:49:29 v00n4e/G
シェーダでやったほうが1000倍ラクだと言っておく

487:名前は開発中のものです。
10/01/04 00:50:49 96m9JQJM
おっぱいシェーダw

488:名前は開発中のものです。
10/01/04 08:25:51 TtKqpyJC
究極のおっぱいシェーダーをダウンロードできるところを教えてください
おっぱいはTonnyかべっかんこみたいなのが好みです

489:名前は開発中のものです。
10/01/04 11:15:32 fBgUH+Pe
makeしたら負けやと思う




490:名前は開発中のものです。
10/01/04 15:41:04 7VFKyHz5
>>486
HLSLで頂点シェーダやったけど、メッシュ全体の平行移動しかわからない
一部分の頂点座標を動かすってoffset引数使うとまでは調べられたが情報全然ありません
どうやってやるのでしょうか

491:名前は開発中のものです。
10/01/04 16:44:21 R2vcIv7j
スキニング

492:名前は開発中のものです。
10/01/05 23:31:28 V0sHGwwt
3Dゲーム作ってるんだけど、キャラクターモデルの大きさとかって影響あるの?
ビットマップと違って3Dはラスターデータだから、データの重さにはあまり影響ないように思うんだけど。
テクスチャの大きさが影響するとか?
もしそうなら、大体どれくらいの大きさのモデルが基準になるんだろう。

493:名前は開発中のものです。
10/01/05 23:58:55 7uq6yiIC
サンプルを参考にゲームを作り、1面、2面…とバラバラにcppを作ったのですが、
これを一つにまとめて、クリアしたら次の面にいくようにしたいのですが、どのような方法がありますか?

494:名前は開発中のものです。
10/01/06 00:27:54 lKDLfFv0
>>492
ポリゴン数とテクスチャサイズはパフォーマンスに影響するよ。
市販のゲームを参考にすると良いと思う。
URLリンク(www.geocities.jp)

>>493
「#include」「extern」を使う。
URLリンク(www.geocities.jp)

495:名前は開発中のものです。
10/01/06 02:00:14 odLPnjyO
ポリゴン数の話でなく、オブジェクトのサイズの話の方なら
3DCGソフトによって座標系や単位もバラバラなので関係ないよ。
ただ作業上の手間はあるので、サイズは統一しておいた方が
良いとは思う。
Dxライブラリの場合は、メタセコに合わせているので市販の3DCG
ソフトから直接xで書き出した場合は、極小で表示されると思う。
3DCGソフト側で適正なサイズでモデリングするか、メタセコ経由
してサイズを調整するのが無難かも。

>>493
switchとかでもできるけど、シーン(面)ごとにクラスに分けてるなら
基底のクラス作ってそっから各面を派生させたほうが楽かも。
シーン遷移(シーケンス遷移)やstateパターンとかでググるといいかも。

496:名前は開発中のものです。
10/01/06 02:15:00 ngavL09N
質問者のレベルを考えると

 if ( scene == SCENE_TITLE ) Title();
 else if ( scene == SCENE_PLAY ) Play();

でも良い気がした。

497:名前は開発中のものです。
10/01/06 02:17:06 BbbKJDe6
関数ポインタなんてどですたい

498:名前は開発中のものです。
10/01/06 02:41:18 T+FI4egH
モデルの大きさは1以下にしたほうがいいとか
どっかに書いてあった気がする

浮動少数点の精度がどうたらこうたらで

499:名前は開発中のものです。
10/01/06 16:02:24 AxwVnUF1
void model_load( char *file,int zx, int zy){
~略~
mapmodel_h = MV1LoadModel(file) ;
      ~略~
}

//グローバルスコープ
int mapmodel_h;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

      ~略~
model_load("newmap2.mqo",5,6);

これのmodel_load関数のどこが間違ってるの?デバッグ中に「モデルファイル newmap2.mqo が読み込めませんでした」とか怒られる
ちゃんとファイルを置く場所も間違ってないのに・・・

500:名前は開発中のものです。
10/01/06 16:15:50 Yz0j5Uar
それはね、ほら、あれだよ

501:名前は開発中のものです。
10/01/06 19:54:12 +MjWEeUN
ファイルを置く場所が間違ってないなら、そのファイルが問題なんじゃないだろうか。
試しにDxLibのサンプルのファイルに置き換えてみるとかどうだろう。

あと念のため、>>301-302も見てみてね。

502:名前は開発中のものです。
10/01/06 21:30:52 AxwVnUF1
・・・回答ありがとう。解決したよ・・・

たった今、もの凄い恥ずかしいミスをしている事に気づいた。ぅゎー

503:名前は開発中のものです。
10/01/07 00:27:42 YFEgAVA7
うまくいかないのでやり方を教えてほしいのですが、

story.cpp内のdraw関数では、
switch(nowstage) {
case 0:
DrawGraph(0,0,img[0],FALSE);
(nowfstageは現在プレイ中のステージ。クリアすると+1されるようになってる
img[0]には画像が読み込まれている)
という宣言がしてあって、

void ShootGame::drawGameClear(){
slgmap.draw();
jikicnt.move();
bakucnt.move();
GameFrame::drawGameClear();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B)story.draw();
// if(key & PAD_INPUT_B)setGameState(GAME_MAIN);
}

とした場合、該当のキーを押している間は画像が表示されるのですが、キーを離すと表示されません。
まずキーを押したら画像が表示されて、その後キー入力で画像を切り換えて何枚か表示させた後、
またキーを押したらGAME_MAINに戻るようにしたいのですが、どうしたらいいですか?

504:名前は開発中のものです。
10/01/07 01:03:02 TMdG719d
enum
{
  START,
  FIRST,
  SECOND,
  END,
};

int draw_state = START;

drawGameClear(){
  int key = GetJoypadInputState();
  if(key & PAD_INPUT){
    draw_state++;
  }
}

some_function(){
  if(draw_state == START){
    // hyouji sinai
  }
  else if(draw_state == FIRST){
    // 1maime hyouji
  }
  else if(draw_state == SECOND{
    // 2maime hyouji
  }
  else if(draw_state == END){
    // GAME_MAIN ni modoru
  }
}

505:名前は開発中のものです。
10/01/07 01:04:01 TMdG719d
あ、キーを押した瞬間だけ検知するロジックが必要だな

506:名前は開発中のものです。
10/01/07 01:10:32 TMdG719d
bool before_key_state = false;
bool now_key_state = false;

chk_key(){
  before_key_state = now_key_state;
  if(GetJoypadInputState() & PAD_INPUT){
    now_key_state = true;
  }
}

chk_key()を毎フレームかコールバックでやってるなら
キーが押されたときに実行して以下の処理で検知とか

if(!before_key_state && now_key_state){
  // ima osareta
}

507:名前は開発中のものです。
10/01/07 01:11:44 TMdG719d
こうか。。超適当
chk_key(){
  before_key_state = now_key_state;
  if(GetJoypadInputState() & PAD_INPUT){
    now_key_state = true;
  }
  else{
    now_key_state = false;
  }
}

508:名前は開発中のものです。
10/01/07 15:40:47 4ItCtcBu
上記のchk_key関数を作ってGameClear内に呼び出すようにしたのですが、
方法が悪いのか、やはりキーを押している間しか画像が表示されません。
現在このような形にしています。

bool before_key_state = false;
bool now_key_state = false;
はすべての関数の外で呼び出し、
(int cstate = STARTは外で呼び出すと2回目から画像が出なくなったので、中にしました)

void ShootGame::drawGameClear(){
int cstate = START;
chk_key();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B){
cstate++;
}

if(cstate == START){
slgmap.draw();
jikicnt.move();
bakucnt.move();
GameFrame::drawGameClear();
    }
else if(cstate == FIRST){
story.draw();
}
else if(cstate == SECOND){
story.draw();
}
else if(cstate == END){
setGameState(GAME_MAIN);
}

509:名前は開発中のものです。
10/01/07 15:43:45 4ItCtcBu
if(cstate == START){
以下をsome_function関数にして、
void ShootGame::drawGameClear(){

int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
chk_key();
if(key & PAD_INPUT_B){
cstate++;
some_function();
}
}
というのもやってみましたが(当然ですが)できませんでした。

chk_keyの中身は、
void ShootGame::chk_key(){
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
before_key_state = now_key_state;
if(key & PAD_INPUT_B){
now_key_state = true;
}
else{
now_key_state = false;
}
}
というような形になっています。

510:名前は開発中のものです。
10/01/07 15:52:30 4ItCtcBu
キーを離すと「cstate = START」の状態に戻っていると思います。
if(key & PAD_INPUT_B){ }内の cstate++;の前後に
if(cstate == START){ を入れるというのも試してみたのですが、
やはりうまくいきません

511:名前は開発中のものです。
10/01/07 16:22:43 3PYGN21/
そりゃ cstate はローカル変数だからな
それじゃあその関数呼ばれるたびに cstate = START; がセットされるわな
int cstate = START; を static int cstate = START; に変えるか
あるいは cstate をメンバ変数にするかしないと

あと、キー押し続けチェックは彼とは違ったやりかたになるけど

chk_key();
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(key & PAD_INPUT_B){
cstate++;
}
の部分を以下に変えたらどうか
static bool holdDownB = true;
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
int pushB = key & PAD_INPUT_B;
if (pushB && !holdDownB){
 cstate++;
 holdDownB = true;
}
if (!pushB) holdDownB = false;

512:名前は開発中のものです。
10/01/07 16:39:31 4ItCtcBu
ありがとうございます。
確かにintでは値の保持ができませんね…。気が付きませんでした。
静的変数にしなくてはいけなかったんですね。
あとキー入力の部分もありがとうございました。
考えていた通りに動かすことができました。

513:名前は開発中のものです。
10/01/07 16:45:13 tQIgGLUE
DxlibをC#で使ってる解説サイトとかないかな?


514:名前は開発中のものです。
10/01/07 17:40:30 eYJAziPK
>>513
C#版は一部の関数が使えないこと以外はC版と同じ。
readme.txtに書かれていること以上に解説することがないから解説サイトもないよ。

515:名前は開発中のものです。
10/01/07 22:19:47 TMdG719d
static変数使うと初期化がうまくできなくなりがちなんだよなあ

516:名前は開発中のものです。
10/01/07 23:25:56 eYJAziPK
>>515
別に静的変数を使わなくても実装できるよ。
せっかくC++使ってるんだしクラス化してみたら?
↓みたいな感じで。

// ジョイパッド管理クラス
class Joypad
{
private:
enum
{
MAX_BUTTON = 28 // DXライブラリは最大28個のボタンに対応している
};

int PressedCounts[MAX_BUTTON]; // 各ボタンの押されたフレーム数を保存しておく

public:
void Update(); // ジョイパッドの入力状態を更新する
int GetPressedCount(int InputType, int Button); // ボタンが押されたフレーム数を取得する
};

// 使用例:-------------------------------
// ジョイパッドの入力状態を毎フレーム1回だけ更新する
joybad->Update();

// パッド1のBボタンが押された
if(joybad->GetPressedCount(DX_INPUT_KEY_PAD1, PAD_INPUT_B) == 1)
{
// 何らかの処理
}

517:名前は開発中のものです。
10/01/08 02:41:50 8yWASrLd
態々クラス化する程のことか
少なくとも手間は普通にコーディングした方が全然掛からないが

518:名前は開発中のものです。
10/01/08 09:30:18 TquDKlBD
ならその方法で良いんじゃない?
クラス化はあくまで一例でしょ
君のいう普通がどんななのかは知らないけど

519:名前は開発中のものです。
10/01/08 21:55:23 G0v30nLn
スクリーンのある位置のpixelが、
何色を表示しているかわかる方法ってありますか?

520:名前は開発中のものです。
10/01/08 21:59:21 UpbwAmjx
ある

521:名前は開発中のものです。
10/01/08 22:04:52 3zMDBTld
ある。

522:名前は開発中のものです。
10/01/08 22:08:20 G0v30nLn
GetPixelですか?


523:名前は開発中のものです。
10/01/08 22:11:52 3zMDBTld
なんでそれを聞く必要があるの?リファレンスにも書いてあるし自分で試すことも出来るのに

524:名前は開発中のものです。
10/01/08 22:16:19 5mIUw3Vj
>>523
言いたいことは分かるけど、おまいさんに突っ込む資格は無いだろうw

525:名前は開発中のものです。
10/01/08 22:23:08 G0v30nLn
>>520,521,523,524
なんとか出来そうになりました
ありがとうございます

526:名前は開発中のものです。
10/01/08 23:05:49 qPTthljo
ワロタ

527:名前は開発中のものです。
10/01/08 23:08:41 hMOVMPlC
できそうってまだできてないのw

528:名前は開発中のものです。
10/01/09 10:14:37 D2rGgWHr
ストライクウィ○チーズ保管庫画像取得
URLリンク(maniax.dlsite.com)
結構使える

529:名前は開発中のものです。
10/01/09 10:31:31 KNCSUVMR
>>528
wgetでおk

530:名前は開発中のものです。
10/01/10 04:28:31 PNNRGsjZ
ゲームプログラマになる前に覚えておきたい技術を買ったんだけど
難しすぎるだろこれ
DXライブラリのサイトのほうがどれだけわかりやすいか

これは勉強する本じゃなくて、もう理解してる人が確認する
ためのもんか?

531:名前は開発中のものです。
10/01/10 04:43:49 ePiCCxYA
少なくとも入門書レベルなら、他人に教えてあげられるくらいの実力は要ると思う。
それでもプロとしてみるなら初心者だろうね。

532:名前は開発中のものです。
10/01/10 04:58:47 PNNRGsjZ
何をやってるかはわかるんだけど、自分の力だけではコード書けない
結局サンプル見ながらそれを打ち込むだけ
こんなんじゃ意味ないでしょ?

買うのまだはやかったなー

533:名前は開発中のものです。
10/01/10 05:01:50 ePiCCxYA
とりあえず一番最初の倉庫番チャレンジしてみたらどう?
自分は昼から始めて夕方までかかった orz

534:名前は開発中のものです。
10/01/10 07:32:15 JParRIfb
>>532
最初は意味わかんなくて、できる人のソースをコピペ。
次に少しずつソースを読解できるようになり改造していく。
そしてやっと自力ですべて書けるようになる…のが
普通の流れだと思うよ。

ひらしょー本は、初心者に構造的に説明しようと誠実に書いて
くれている結果、冗長で読みにくくなった部分はあるとは思うけど
必要なことは抑えてある本だと思うので、まずは本に書いて
ある事が分かるように勉強していけばいいんじゃないかな。

何が分からないかにもよるし、教え方の手腕の問題もある
だろうけど、すぐに理解できちゃうような内容しか書いて
いない本だとお金出して買う価値もないと思うし、
ゲーム関連技術がもし簡単に書けちゃう内容だと、こんなに
解説本も出ないと思う。

535:名前は開発中のものです。
10/01/10 11:04:17 Rc1hlYFq
将来使うはずだと無理矢理クラスを使って書いてるけど
今のところ決定的にcに比べて便利だと思うところはないなぁ
確かに変数と関数を一塊にできるのは気持ちがいいのだが・・・

536:名前は開発中のものです。
10/01/10 11:07:58 2OywdL5M
listとか両方で実装してみると大分ちがわね?

537:名前は開発中のものです。
10/01/10 11:20:33 dmK/QlFI
>>532
Chapter13(I部 2次元のゲーム)までは頑張れ。

>>535
継承、カプセル化、ポリモーフィズム、演算子のオーバーロード、STLあたりを理解できるとメリットを感じられるようになるよ。

538:名前は開発中のものです。
10/01/10 11:44:54 QNWx2gsU
最初はコピペ、それを改造、ってのはごく普通の流れだろうな。

俺も昔は雑誌に載ってたプログラムをぽちぽち打ち込んでたもんよ。

539:名前は開発中のものです。
10/01/10 11:46:10 wtJzH8/F
俺も昔はラジオを録音してたもんよ

540:名前は開発中のものです。
10/01/10 13:31:00 pKLMp+mv
今は3Dゲーならudkとかunityとか、2D紙芝居なら吉里吉里とかnスクとかがあるから、
趣味でゲーム作る程度ならプログラムまで手を出す必要はないよ。

541:名前は開発中のものです。
10/01/10 15:45:18 sQQs0/m1
俺の場合は最初はソース呼んで理解するところから入ったがな
コピペがあまり意味あるとは思えん
そっから自己流のアレンジで打っていったがな
まあある程度コピペっちゃあコピペだけどな
まあコピペは動作確認には必要かも知れんがな
あとポリリズムとかは使ってったけどカプセル化は結局面倒になって公開しちゃえーて戻ったけどな
結局グローバル変数使いまくりに戻ったし、まあ使いまくりって程でもないが
カプセル化やろうと思えばできるけどだってアクセサ通すと速度落ちそうな気すんだもん、それが気になってな
小規模の個人レベルであまりカプセル化のメリット感じられんのだが
ポリポリなんちゃらは俺もlistで重宝してるな
まあポリポリ使うより天麩羅使う方がすっきり書ける場合もあるしなあ

542:名前は開発中のものです。
10/01/10 17:31:32 /Tzv4S+1
そりゃあ、ポリリズムなんて使ってたらな。

543:名前は開発中のものです。
10/01/10 17:36:55 ohvCsHNW
Javaなんかと違ってC++はクラス作るのが面倒なんだよな
場合によってはかえってミスしやすくなったり保守性が下がったりする

544:名前は開発中のものです。
10/01/10 17:45:33 RHOGN5ub
質問なんですが、画像でいうLoadGraphのように文字列を先にhoge[数字]読み込んでおいて、
DrawString(x,y,hoge[数字],Cr) ;のように呼び出して使う…ような感じになる方法ってありませんか?
あと、文中に改行も含めたいのですが・・・。
できれば1行ずつ表示されると嬉しいです。

545:名前は開発中のものです。
10/01/10 18:00:03 wtJzH8/F
外部ファイルを読み込みたいのか?
それなら龍神録にサンプルが載ってる。csv用だけどtxtにも転用できるはず

546:名前は開発中のものです。
10/01/10 18:38:42 VQ1HZqsF
やりたい事がはっきりしてるんだから、自分で作ればいいだけでは。

547:名前は開発中のものです。
10/01/10 18:52:06 RHOGN5ub
内部の別のクラスでTEXTの内容を変数に格納しておいて、
それをDrawString(x,y,hoge[数字],Cr) ;で呼び出したいんです…
char hoge[1]="AAA";
DrawString(x,y,hoge[1],Cr) ;
みたいな形です。

548:名前は開発中のものです。
10/01/10 18:58:51 2OywdL5M
普通に読み込んで、文字列の位置を計算をして出力

549:名前は開発中のものです。
10/01/10 19:01:30 TNXhxGf1
何を言っているのかわからないし
何をしたいのかもわからない

550:名前は開発中のものです。
10/01/10 19:16:21 RHOGN5ub
画面に複数行の文字を表示したいんです。
通常はDrawString( 250 , 240 - 32 , "Hello C World!" , Cr );って書くと
Hello C World!
と表示されると思うんですけど、このHello C World!の部分を、
改行を含む、変数を入れたいんです。



551:名前は開発中のものです。
10/01/10 19:20:29 3/rctmpl
#include <string>
using namespace std;

string str[10];
str[0] = "AAA";

DrawString(x,y,str[0].c_str(),Cr);

文中に改行を含めたいってのはたぶん\nとか文中に入れたいんだと思うから
C++ splitとかでググってなんかフォントの縦幅とかなんたらやればいいんじゃないかな…

552:名前は開発中のものです。
10/01/10 19:42:52 TNXhxGf1
何言ってるのこいつ?

553:名前は開発中のものです。
10/01/10 19:43:31 z71TR0/5
sprintf(str, "Hello C world!\n");
DrawString(x, y, str, Cr);

554:名前は開発中のものです。
10/01/10 19:59:40 2OywdL5M
for(i = 0; i < numof_lines; ++i) DrawString(x, y + i * font_size, str[i], color);

555:名前は開発中のものです。
10/01/10 21:11:56 dmK/QlFI
>>544
そういう関数は用意されてないので自作するしかないよ。
改行文字を検索して文字列を一行ずつに分割、forループでY座標をずらして描画すればいいんじゃない?

556:名前は開発中のものです。
10/01/10 21:40:30 MFEe7NV6
DrawFormatStringの関数の
デフォルトのフォントの大きさってどれくらいなの?
書いてないから分かんないよ

557:名前は開発中のものです。
10/01/10 21:57:23 /Tzv4S+1
作者が悪いみたいな言い方で気に入らねえなあ。
コードみりゃ書いてあんだろ、16だ。

558:名前は開発中のものです。
10/01/10 23:42:22 ePiCCxYA
話の流れとは全然関係ないんだが、画面サイズを2パターン用意したら、なんかすげぇ面倒なことに(笑)
「なんとなく」ってだけで実装するもんじゃねーなあ。

単純に拡縮するだけなら簡単なんだろうけども。



559:名前は開発中のものです。
10/01/10 23:46:51 2OywdL5M
ルートレイヤ(固定サイズ)に描画→スクリーンに拡大描画でいいじゃん

560:名前は開発中のものです。
10/01/10 23:52:21 PVCd/Cxa
16 : 9 って今後は用意すべき?

561:558
10/01/11 01:11:32 HJnYHrsQ
>>559
それは>>558の3行目で否定してる「単なる拡縮」だw

もともと800x600でゲームを作ってたんだけどさ、
とある理由により、小さいウィンドウのバージョンを作らなきゃならなくなったんだ。

でもそのまま縮小すると、特にドット絵なんかは見てられなくなるし、
元が800x600用(あくまで縮小版はオマケ)なので、縮小版を基準にして800x600用に拡大するのも納得いかず。

そんなわけで、それぞれの画像の大きさを変えずに、ゲームの中身を変えようと思ったのが色々と失敗だった(笑)


>>560
主流が16:9になるか16:10になるかは別として、今後は4:3のモニタは減っていくだろうからなあ。
とはいえ現状ではモニタ側で4:3に対応(レターボックスや引き延ばし)してくれたりするし、作りやすい方でいいんじゃない?

562:名前は開発中のものです。
10/01/11 01:27:26 1pzIf3AP
今すぐ用意すべき

563:名前は開発中のものです。
10/01/11 01:44:29 Rz8RXzhw
ドット絵が汚くなるってのは補完してるからじゃなくて?ニアレストネイバーでやれば綺麗に縮小されないかな

564:名前は開発中のものです。
10/01/11 02:18:06 HJnYHrsQ
>>563
ドット絵は無理じゃない?
あとクリティカルな部分はともかく、1つの画像ファイルでなんとかしたいよね。

565:名前は開発中のものです。
10/01/11 02:25:08 b9O3GovE
ペイントでキャラの画像を作る。保存をするとふちの部分の色が変わるのは何でだろう(´・ω・`)

566:名前は開発中のものです。
10/01/11 03:05:07 Rz8RXzhw
ペイントの拡大縮小は補完処理が働くから確実にドット絵が汚くなるよね

567:名前は開発中のものです。
10/01/11 03:06:28 /BVVeYOc
565は拡大縮小してるとは言ってないけどね。

568:名前は開発中のものです。
10/01/11 08:45:34 50WrHthA
>>565
色が劣化する形式で保存してるんじゃないの?

569:名前は開発中のものです。
10/01/11 09:45:29 MF6sCU3I
文字の回転ってどうやってやるんですか?
△の記号を90度回転させたものがほしいんだけど・・・・

570:名前は開発中のものです。
10/01/11 09:52:18 bJEynoIQ
>>565
画像をRGBにすれば解決する サイズは大きくなるがな

571:名前は開発中のものです。
10/01/11 10:18:00 32xuNCiI
文字入れられるだろ
それ回転すればいいだけ

572:名前は開発中のものです。
10/01/11 10:18:14 8N572MW3
>>569
画像にでも描いて回転描画させろ

573:名前は開発中のものです。
10/01/11 10:22:10 bJEynoIQ
>>569
DrawVString

574:名前は開発中のものです。
10/01/11 10:27:58 MF6sCU3I
>>572
それはやれると思ってたけど
変だったんで。
結局、文字を回転させる方法はないのか?
よくゲームである
△(90度回転)6 △(90度回転)な感じにしたい。

575:名前は開発中のものです。
10/01/11 10:32:32 dSgt7dTb
>>574
方法はいくらでもある。
そして、いくらでもやってる人がいる。
以上

576:名前は開発中のものです。
10/01/11 11:01:12 MF6sCU3I
>>575
でもやり方は知らないんでしょ?
知ってる人お願いしますね。

577:名前は開発中のものです。
10/01/11 11:40:02 yFPTqlzr
>>561
そうか、ワイドもあったか
ゲームやるならドットバイドットでやりたいよね

578:名前は開発中のものです。
10/01/11 11:40:28 bJEynoIQ
で、>>573は試したのかね

579:名前は開発中のものです。
10/01/11 11:43:03 JhPE/M8b
>>569
興味があったから探してみた。初心者なんで見当違いだったらスマソ
URLリンク(bbs.wankuma.com)
URLリンク(msdn.microsoft.com)

580:565
10/01/11 12:24:49 b9O3GovE
色々試したらできました
ありがとうでした。

581:名前は開発中のものです。
10/01/11 15:35:07 C8nZ8yZZ
 |> <| こういうことだろ?

582:名前は開発中のものです。
10/01/11 15:43:43 32xuNCiI
<| |> だと思ってた

583:名前は開発中のものです。
10/01/11 16:11:51 i9YgsXIH
  (゚д゚ )
 <| y |>

584:名前は開発中のものです。
10/01/11 16:25:44 MF6sCU3I
>>582
が正解

585:名前は開発中のものです。
10/01/12 00:34:41 Lz7AOqT1
>>581>>582の違いはなんだ?
abをbaと書く程度の差じゃないか

586:名前は開発中のものです。
10/01/12 19:18:12 fpWsGGI2
オブジェクトのy座標が-0.2のときそれを描画ルーチンにわたすと
0の位置に描かれそうな気がするんですけど
(つまり-0.9~0.9が同じ位置に表示されそう)
DXLibにそのままわたすとどうなりますか?

あと固定小数点のたとえば int y100;の1/100が1ドットとするとき
 int y_for_draw;
 if (y100 < 0)
 {
  y_for_draw = (y-99) / 100;
 }
 else
 {
  y_for_draw = y / 100;
 }
でfloorになる?これは一般的にどう書かれる?

587:名前は開発中のものです。
10/01/12 19:32:24 UxS4I4g/
言っている意味がよく分からない。もっと要点絞ってくれ

588:名前は開発中のものです。
10/01/12 19:52:43 vZoY7Utz
>>586
>オブジェクトのy座標が-0.2のときそれを描画ルーチンにわたすと
>0の位置に描かれそうな気がするんですけど
>(つまり-0.9~0.9が同じ位置に表示されそう)
>DXLibにそのままわたすとどうなりますか?
C言語では小数から整数への変換は小数切捨てになる。
「型キャスト」で調べてみて。

>でfloorになる?これは一般的にどう書かれる?
ならない。もっと言えばコンパイルすら通らない。
「y_for_draw = (y-99) / 100;」は小数点以下を切り上げしていないので。
一般的かどうかは分からないけど、固定小数点数を浮動小数点数にしてmath.hのfloor関数を使った方が簡単だと思う。

589:名前は開発中のものです。
10/01/12 19:57:29 fpWsGGI2
>>587
質問は2つです

1つめはDXLibでたとえば描画ルーチンのXY座標に(-0.3, -0.9)をわたしたときと(0.1, 0.9)をわたした時が同じ場所になってしまうのでは?

2つめは
たとえば、キャラクターの座標の内部的な整数の変数(たとえばint x_naibu, y_naibu;(前質問ではint y100;))が
100移動すると「1ドット」動いたことになるとすると、
描画ルーチンには基本 (x_naibu / 100) を x座標としてわたすことになりますが、
もし x_naibu が -99 でも 99 でも (x_naibu / 100)はゼロになってしまいます。
これを解決する一般的なやりかたが知りたいという話です。

書き込みに間違いが
 y_for_draw = (y-99) / 100; は y_for_draw = (y100-99) / 100;
下は  y_for_draw = y100 / 100;

590:名前は開発中のものです。
10/01/12 19:57:59 MSorSp1h
>>535
最初はそんな感じやね
C++実用レベルは理解しなきゃいけないこと多くて投げ出しがち
でも使い続けることをおすすめする
何よりまず慣れることが大事、慣れれば勝手にクラスありきになる
次第に理解が深まってゲーム製作には大いに役立つ

591:名前は開発中のものです。
10/01/12 20:04:11 VTukhXVT
C++はタブーとイディオムがある程度わかってくればいいんだがそこまでがしんどい

592:名前は開発中のものです。
10/01/12 20:11:01 fpWsGGI2
>C言語では小数から整数への変換は小数切捨てになる。
ありがとう
>「型キャスト」で調べてみて。
型のサイズの順位とか知らないことがたくさんありました。

>>でfloorになる?これは一般的にどう書かれる?
>ならない。もっと言えばコンパイルすら通らない。
ちょっと間違えました。
>>589のようにしてコンパイルはとおってますが、何か穴があるかもと心配でした。

ちなみにdoubleを使ってたらたとえば加算する数値をきっちり1.0にすることができないことによる不具合を味わったことがあり、
固定小数点なら100を加えるときっちり1ドットだけ動くのが確定している利点があると思うんです。

593:名前は開発中のものです。
10/01/12 20:36:56 vZoY7Utz
>>592
誤:y_for_draw = (y100-99) / 100;
正:y_for_draw = (y100+99) / 100;
やりたいのはこういうことじゃない?

固定小数点数にもデメリットはあるし、個人的には浮動小数点数を使った方が良いと思うんだけどなあ・・・
・表現として分かりづらい(ソースコードが見づらい)
・扱える数値の範囲が狭い
・浮動小数点数を扱う標準関数やその他のライブラリが使用できない

594:名前は開発中のものです。
10/01/12 20:50:28 efhBp1Rb
ふと思ったんだけど -0.5 の小数点以下を切り捨てってのは
普通は 0 になると考えるのか -1 と考えるのか。

595:名前は開発中のものです。
10/01/12 21:01:29 fpWsGGI2
>>593
>誤:y_for_draw = (y100-99) / 100;
>正:y_for_draw = (y100+99) / 100;
いえ、修正後を再掲すると
 if (y100 < 0)
 {
  y_for_draw = (y100-99) / 100;
 }
 else
 {
  y_for_draw = y100 / 100;
 }
で、"y100"が 0~99 のときは描画ルーチンはゼロの座標をわたしたくて、
y100が -100~-1 のときは「-1」の座標、-101のときは「-2」にしたいので
それにはこれで合ってると思います。

ちなみに固定小数点は今回だけのミニゲームで試しにやってみようって感じです。
次からはまた浮動小数点使うようになりそうです。
>・表現として分かりづらい(ソースコードが見づらい)
「y100」って感じの変数名で意外と解決されそうだったり^^;

596:名前は開発中のものです。
10/01/12 23:19:04 q3clJG+f
俺も全く同じことしてたわw
変数名の付け方も
マイナスは考慮してなかったけど
y100は表現的にある程度解決できてもそれ以外、それに関わる他の変数とか範囲とかがややこしくなってくるんだよねえ

>・浮動小数点数を扱う標準関数やその他のライブラリが使用できない
キャストすればいいんじゃないの?

597:名前は開発中のものです。
10/01/13 00:33:55 c62gE9Ki
>>595
ごめん、勘違いしてたみたい。
floor関数の動作なら>>595で大丈夫そう。

>>596
>キャストすればいいんじゃないの?
誤差を無くすために固定小数点数を使っているのでそれをやると駄目だと思うんだけど・・・

「y100」という変数名が分かり易いというのはかなり疑問を感じるな。
最初に見たとき「y+100」か「y-100」の書き間違いかと思ったし。
あと小数第2位までしか扱えないのはかなり精度が低いと思う。
アクション性の高いゲームだと誤差の影響が出そう。

598:名前は開発中のものです。
10/01/13 00:47:43 ikjcXzx3
そもそも固定小数点使ってるのは誤差を無くす為だったのか
まあ y100 というのは苦肉の策でそのまま yを使うよりはまだ分かり易いだろうということと、
そら他人からみたらあれっとは思っても自分で使う分には若干間違い減らす可能性が上がるかなといった程度だろ
あくまで少数第2位までを使うのは表示上の問題だけじゃないの?
表示する場合は整数しか扱えないが内部的には小数で記憶しておきたいという
そもそも別に少数第2位までしか扱えないわけではないと思うがなあ
ただ座標の値を少数第2位まで持ちたいってだけで
計算まで少数第2位までしか使えないってわけじゃないでしょ

599:名前は開発中のものです。
10/01/13 11:01:12 5DwaMjit
log.txtを勝手に生成されるんですけど
生成しないようにするには可能?

600:名前は開発中のものです。
10/01/13 11:13:13 c62gE9Ki
>>599
SetOutApplicationLogValidFlag(FALSE);

601:名前は開発中のものです。
10/01/13 11:54:25 e0BJb6Ws
2.25bなんだが、
vista で CheckHitKey( KEY_INPUT_RSHIFT );
がうまく動作しない。
XPだと動く。RSHIFTだけ動かないんだよな。
なんでだろう?

602:名前は開発中のものです。
10/01/13 12:44:41 c62gE9Ki
>>601
URLリンク(hpcgi2.nifty.com)

603:名前は開発中のものです。
10/01/13 13:01:04 b/PQw5gR
質問です。
画像などをロードするとっきって、パスをいつもちまちま指定しないといけないのでしょうか?

例えば、画像をロードする場合、
Load("Data\\img\\hoge.png");
みたいな感じではなく、単に
Load("hoge.png");
のようにロードできたら楽なのになぁと思った次第です。
ファイルが増えるに従って、管理がしやすくするためにパスも長くなっていきますし……。

もちろん自分でパスをセットしてくれる関数を組むのもアリなのですが、
VC#みたいに、リソース追加&ファイル名指定でさっくり使えたら楽だなと思ったので……。

リソースからの読み込みができる関数はみつけたのですが、
IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz

604:名前は開発中のものです。
10/01/13 13:22:01 qeehEc52
>>603
自動的にDataフォルダを検索してhoge.pngを探してロードするってこと?
win32APIの関数使えば出来なくも無いと思うけど多分労力に見合うほどのメリットはないと思うよ
何回もロードするもんでもないし

605:名前は開発中のものです。
10/01/13 13:26:47 HfkhU9/3
>>601-602

俺は601じゃないけど、2.25bをまだ使ってる。
で、601の様な現象知らなかったわけだが、602の解決してる時点で9月だよな。
俺が持ってる2.25bはタイムスタンプが5月だし、公式でDLできる2.25bも5月のものだ。

602の示してるレスで公開されてるtestバージョンはバージョンアップされるたびに上書きされてるから、
(今落として確認したが)つい先日のものになってるな。

2.25bバージョンの最新って管理人さん持ってるかなぁ……。

606:名前は開発中のものです。
10/01/13 13:35:20 c62gE9Ki
>>603
>IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz
IDをファイル名と同じにするとか分かり易い名前に変えてしまえばいいだけでは?

607:名前は開発中のものです。
10/01/13 13:46:41 H0QsxNXz
最近バージョンだと何か問題でもあるのか?

608:名前は開発中のものです。
10/01/13 15:49:43 Yyh3OrXE
DXライブラリが最新バージョンだと動画をLoadGraphで読んでPlayMovietoGraph使って表示したとき透明色が適用されない
(といっても透明色にするにはエンコード方式は古いMicrosoft Video 1くらいしか使えない諸刃の剣)


609:名前は開発中のものです。
10/01/13 16:07:06 HfkhU9/3
俺が過去に作ったゲームを最新のDXライブラリでリコンパイルすると透過色が無視されるてるなー。

610:名前は開発中のものです。
10/01/13 16:39:46 fVXUl//w
孔明の罠

611:名前は開発中のものです。
10/01/13 17:47:10 b/PQw5gR
>>604
その通りです。
ロードする際に使った文字列を、ハンドル代わりにつかっているので、
メリットとしては、指定をいちいちしなくてすむので楽になります。

たとえば、
Draw("hoge.png");
とかで、色々操作できるような設計にしています。

Win32APIの関数でできるのですか。
直接MSDNから探し出すスキルがない残念スキルですが、調べてみようと思います。

>>606
おおなるほど、これは盲点でした……。

612:名前は開発中のものです。
10/01/13 19:35:30 KRarygD9
>>611
良い方法じゃないかもしれないけど、マクロと
stringかsprintf系の関数使って文字列つなげば
一応Load()には、ファイル名渡すだけでもすむよ。
//--------------------------------------
#define HOGE_PATH "..\\iData\\img\\"

void Hoge::LoadData(const char* data_name)
{
char path[255];
sprintf(path, HOGE_PATH "%s.png", data_name);
Load(path);
}
//--------------------------------------
みたいな感じで(エラー処理とかは省略)。
ちなみにHogeのコンストラクタ内とかで、APIのFindFirstFile()
とか使って、フォルダ内の任意の形式のデータ名を列挙して
読み込むようにすれば、Hogeの生成時にpngの形式だけ自動で
読み込むとかも可能。

ただスクリーンショット取れるゲームとかでない限り、画像
データの名前や数は変わらないはずだから、ハードコーティング
するよりパス含んだデータ名を列挙したテキストとかを作って
おくのがいい気もする(もちろんこれも手動では作らない)。
そうしておけば、画像の数とかに変更あってもプログラムの方は
何もいじる必要ないし。

613:名前は開発中のものです。
10/01/13 20:53:47 fVXUl//w
なんというレベル・・・

614:名前は開発中のものです。
10/01/13 22:45:52 K/6CPc2l
俺はstd::mapを使ってるな。値を画像ハンドルにしてる。
キーを文字列にすれば分かりやすいし。


615:名前は開発中のものです。
10/01/14 02:11:03 842AZX10
同じファイル名が来ることはないのか

616:名前は開発中のものです。
10/01/14 02:36:14 Y9GNPZz3
画像ファイル名一覧(分割するなら分割数なども)を
外部のテキストファイルに置いて、それを読み込む手法は便利ちゃ便利だし美しいな。

ツクール系や画像ビューワなどのアプリを作りたいというなら別にしても、
結局、その画像を使うにはプログラムの修正が必要だったりするわけで、
そこまで外部化するメリットが無い気がする。

それならファイル名をプログラム側で固定してしまうというのも十分アリじゃないかな。
「趣味で!」「勉強のため」というなら好きにやるべきだし、そういうこだわりは重要だと思うけれど。


>>615
拡張子無しとか、拡張子を固定するとか、
あとは最初はbmpで次はjpg…みたいに読み込む優先度を決めておくとか。



617:616
10/01/14 02:42:40 Y9GNPZz3
送信してから思った。

最近は個人レベルのゲームプログラミングでも、
ゲームの内容を外部のスクリプトファイルで定義するスタイルが増えてきてるみたい。

全部をスクリプト化しろとは言わないけど、
例えばメニュー画面の挙動とか、何らかのキャラクターのアニメーションの仕方とか、
そういう部分的にでも外部に出しちゃう作りにすれば活かせるかもね。

まあ、非常に手間ですが。

618:名前は開発中のものです。
10/01/14 10:10:33 DPt8d+Sq
外部ファイルにパスや必要な情報書いて読み込み、
それをクラスに格納して処理、コンテナに追加して保持、分割も自動でやってる
ハンドルはアドレスをクラスに用意したポインタのメンバ変数に格納して
再ロードしても画像ハンドルへのアクセス先は変わらないようにしてる
SetRestoreGraphCallbackに↑で書いたコンテナから再ロードする関数登録

ハンドルの情報が消えてしまうときって、それまでに画像読み込んで取得したハンドル全て消えるよね?
何が消えるかよくわからなかったから
描画関係全て再設定させてるんだけど、皆さんは再ロード処理どのようにしてますか?


619:名前は開発中のものです。
10/01/14 11:35:51 f9B4N6q6
>>618
何を言っているのかわからない

620:名前は開発中のものです。
10/01/14 11:42:32 Wuk1wnH6
>>618
>ハンドルの情報が消えてしまうときって、それまでに画像読み込んで取得したハンドル全て消えるよね?
まずこれがよく分からない・・・
リファレンスに全部書いてあると思うけど。

621:名前は開発中のものです。
10/01/14 12:57:05 GEhjs3wb
ドラクエとかマップとかキャラ動かすプログラムは1個つくったら
流用が基本だよな あとはちょくちょく改造

現にSFCのドラクエ3ってSFCドラクエ6の流(ry


622:618
10/01/14 12:59:53 DPt8d+Sq
ごめん、書き方悪かった
何が消えるってか何が初期化されるのか、
ハンドル以外にもあったようなのでそれもききたかった
(DXライブラリのスレだったかな?カメラがどうとか)
ってハンドルは全て消えるよね・・・

で、リファレンスに全部書いてあるのか
見落としてたっぽい、すまねえ見てくる

623:名前は開発中のものです。
10/01/14 13:11:27 GEhjs3wb
ffshowの取り込み機能使うと紙芝居のような連番のjpgが作れる
(例:0.jpg~1000.jpg (画像の形式:jpgにフレーム番号の桁数は0に設定))
(画像の形式はpngやbmpとかできるけどファイル容量が馬鹿でかくなる)
プログラムテストで使う大量の連番JPG1個ずつくるのめんどせーって人はおすすめ


624:名前は開発中のものです。
10/01/14 13:53:55 842AZX10
俺も各クラスの画像にはハンドルのポインタ渡して
ウィンドウ⇔フルスクリーンにするときとか再ロードする場合は一括でやれるようにしてる

625:名前は開発中のものです。
10/01/14 14:22:58 f9B4N6q6
めんどくせーのでエスパーすると
ハンドル情報が無効になった場合の対処でよろしいアルか?

626:618
10/01/14 21:00:02 DPt8d+Sq
いやもう、まじでわかりづらくてすまん
>>624と同じやり方だし、これはこれでいいかな
カメラもライトもモーション状態も全部復元できた
つーわけでスルーしてくだされ

627:名前は開発中のものです。
10/01/15 12:18:57 MEm+h6H+
更新通知はオブザーバーパターンかな

628:名前は開発中のものです。
10/01/15 23:03:18 GfBht2fI
WinSockを使ってオンラインのゲームを作りたいと思っています。
非同期通信にした後、
ウィンドウメッセージをどうやって受け取ればいいのでしょうか

629:名前は開発中のものです。
10/01/15 23:16:16 mIIIz4fa
通信とウィンドウズメッセージ処理は別スレッドで

630:名前は開発中のものです。
10/01/15 23:20:44 MEm+h6H+
bccとvc++以外のコンパイラで使いたい場合はDLL化するしかないかな?

631:名前は開発中のものです。
10/01/16 14:25:40 q2B4ABrd
C#用のDLLが使える
普通のCインターフェイスだから

632:628
10/01/16 16:27:15 rUwaGg5H
開発環境はVisual Studio 2008 Express Editionです。
>通信とウィンドウズメッセージ処理は別スレッドで
これは、マルチスレッドにする、ということでしょうか?
あと、ウィンドウメッセージを受け取るにはPeekMessage関数を使うのでしょうか?

633:名前は開発中のものです。
10/01/16 16:40:06 jHRnZJbI
まだ、はやい

634:名前は開発中のものです。
10/01/18 15:10:04 NiKHIjeB
どうにかgifアニメを表示できないでしょうか?

635:名前は開発中のものです。
10/01/18 15:50:40 ocST5QSJ
ばらして一つ一つ表示すれば

636:名前は開発中のものです。
10/01/18 16:17:33 1VuUUtA0
コマごとに読み込んでハンドルを配列に入れて回しながら表示してみろ

637:名前は開発中のものです。
10/01/18 16:19:59 Y1kYbBl9
みんなアニメーションの抽象化ってどうやってんの?

638:名前は開発中のものです。
10/01/18 16:36:31 ZRf7R4pO
>>637
デザ・・・と言いたいところだが、キチガイ扱いされるので言わない^^b

639:名前は開発中のものです。
10/01/18 16:36:50 AJVbiEYR
アニメーションの抽象化ってなに。

640:名前は開発中のものです。
10/01/18 16:37:28 ocST5QSJ
14歳に乗ってたな

641:名前は開発中のものです。
10/01/18 17:21:08 NiKHIjeB
ありがとうございます!
gif自体がDXライブラリで表示できないみたいなので
ばらしてbmpに変換して表示させます。

642:名前は開発中のものです。
10/01/18 18:17:21 /YEQVsc4
ソフトによってはgifアニメを書き出す要領でアニメーション用にずらっと並べた形で排出してくれるものもあるから要チェック

643:名前は開発中のものです。
10/01/18 18:40:53 NiKHIjeB
Giamっていうツールで分解してみます。
gifが表示できたらなあ・・・

644:名前は開発中のものです。
10/01/18 19:23:22 p6A/ppr3
gifの表示だけは諦めた方がいい
と思ったけど何年か前にライセンス切れたとかだったっけ?

645:名前は開発中のものです。
10/01/18 19:34:01 YzUndEty
gifアニメ、
PlayMovie()で出来たはず。

646:名前は開発中のものです。
10/01/18 19:40:04 NiKHIjeB
>>645
うおおおおおおおおおおおおおおおおおおおおおお
できたあああああああああああああああああああああああああ
ありがとおおおおおおおおおおおおおおおおおおおお

647:名前は開発中のものです。
10/01/18 19:44:19 /YEQVsc4
playmovieが使えるのか、初めて知った

648:名前は開発中のものです。
10/01/18 19:44:24 aB6jW3dA
でもgifアニメ表示する利点というか利用価値が思いつかない

649:名前は開発中のものです。
10/01/18 19:46:09 YzUndEty
これは作者も知らないと思う、osの機能だから。

650:名前は開発中のものです。
10/01/18 19:57:40 NiKHIjeB
本当にありがとうございました。
ただのビューワを作ろうかと・・・
できないと諦めかけてたので>>645さんありがとう!

651:名前は開発中のものです。
10/01/18 21:14:28 ZRf7R4pO
>>645
APIの旅からの帰還
お待ちしておりました
全員敬礼!

652:名前は開発中のものです。
10/01/20 21:26:19 ZmWqqE9G
#define MAX_MOVIE_NUM (100) // 同時に持てるムービーハンドルの最大数
と、DxLib.hの中に書いてあったのですが、
この(100)の値を変えても100以上読むことができません
変更を適応する方法とかありますでしょうか・・・

653:名前は開発中のものです。
10/01/20 21:37:33 ZmWqqE9G
ライブラリの改造で事足りました
スレ汚しすまそ
以下スルーお願いします

654:名前は開発中のものです。
10/01/20 21:42:45 SKKsOccv
俺は言われるとスルーできねえ太刀なんだよ
どうしてくれんんだてめえ

655:名前は開発中のものです。
10/01/20 22:09:33 q0DDgX3G
キレやすそうだな。

656:名前は開発中のものです。
10/01/20 23:52:50 cMpODo4B
真面目なかたなのね

657:名前は開発中のものです。
10/01/20 23:59:20 zuhGGFh3
太刀だけにキレやすいってか
うまいこと言うじゃねーか

658:名前は開発中のものです。
10/01/21 06:53:57 zKTatolx
だれうま

659:名前は開発中のものです。
10/01/21 17:26:19 VSiukrvi
おれうま

660:名前は開発中のものです。
10/01/21 17:42:38 ASaFDbPd
きみのためならうま

661:名前は開発中のものです。
10/01/21 18:34:21 f/5KsMY8
かゆ・・・うま・・・

662:名前は開発中のものです。
10/01/21 21:15:18 3z0s89gO
昨日、この屋しきから逃げ出そうとした研究いんが一人、射さつされた、て はなしだ。
夜、からだ中 あついかゆい。
胸のはれ物 かきむしたら 肉がくさり落ちやがた。
いったいおれ どうな て
May 19, 1998

やと ねつ ひいた も とてもかゆい
今日 はらへったの、いぬ のエサ くう
May 21, 1998

かゆい かゆい スコットーきた
ひどいかおなんで ころし
うまかっ です。
4

かゆい
うま


663:名前は開発中のものです。
10/01/24 17:17:54 t3rqV2es
MV1GetFramePositionでフレームの座標取れた人いる?

664:名前は開発中のものです。
10/01/24 17:45:49 eNyArIdy
>>663
何かそれと関連するような書き込みみた
MV1Frame系の根本辺りにバグでてるのかもよ
試してないから憶測な

665:名前は開発中のものです。
10/01/24 18:30:40 t3rqV2es
>>664
そうなのか・・・

666:名前は開発中のものです。
10/01/24 18:53:34 mtzPnJPW
SetWindowStyleModeのあと
ドラッグ&ドロップが効かなくなるのは仕様ですか

667:名前は開発中のものです。
10/01/24 19:30:56 mtzPnJPW
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
char Key[MAX_PATH];
char File[MAX_PATH];
int open;
bool flag=false;
SetAlwaysRunFlag(TRUE);//アクテイブでも動作
if(ChangeWindowMode(TRUE)!=DX_CHANGESCREEN_OK || DxLib_Init()==-1) return-1;
SetDrawScreen(DX_SCREEN_BACK);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key)){
open=GetDragFilePath(File);
if(open!=-1){
clsDx();
printfDx("%s",File);
}
DragFileInfoClear();
if(Key[KEY_INPUT_Z]==1){//zキーでスタイル変更
if(flag==false){
flag=true;
SetWindowStyleMode(2);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
}
else{
flag=false;
SetWindowStyleMode(0);
SetDragFileValidFlag(TRUE);//ドラッグ&ドロップ許可
}
}
if(Key[KEY_INPUT_ESCAPE]==1)break;
ScreenFlip();
}


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch