[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/01 10:04 / Filesize : 217 KB / Number-of Response : 979
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DXライブラリ 総合スレッド その7



1 名前:名前は開発中のものです。 mailto:sage [2010/10/04(月) 17:24:47 ID:zBoueRHu]
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
homepage2.nifty.com/natupaji/DxLib/

【過去スレ】
DXライブラリ 総合スレッド
pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
pc11.2ch.net/test/read.cgi/gamedev/1249822550/
DXライブラリ 総合スレッド その5
pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
hibari.2ch.net/test/read.cgi/gamedev/1267108154/

712 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 07:03:48 ID:wzAw0A/n]
傍から見てて思ったんだが別にポリモ使うのに new/delete 必須じゃなくね

713 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 07:50:12 ID:vYbU4BgG]
必須じゃないね
void f(Obj* o)
{

714 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 07:51:36 ID:vYbU4BgG]
途中でかきこんだわ・・・
void f(Obj* o) {
 o->update();
}
ObjA a;
ObjB b;
f(&a);
f(&b);
こういうこともできるわけだし

715 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 08:17:22 ID:DfvbrRc2]
ぶっちゃけゲームが出来上がることが最優先なので
とりあえずCで書き始めて、できる範囲でC++化することにしているよ

現段階では、クラスが変数と関数のセットであることくらいしか使えてねーけどなw

716 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 09:29:09 ID:vYbU4BgG]
それでいいと思うよ
そりゃC++を完璧にマスターしてから作ったほうが圧倒的に効率いいだろうけど
C++は十年勉強して先輩のコーディング盗んでようやく半人前の世界だからねw

717 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 09:36:50 ID:hi6mskVF]
慣れが大事だし使い続けるのが良いと思うよ
使ってるうちに理解が深まる

718 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 10:00:06 ID:stjfxyZ6]
new、deleteどころかオブジェクト指向プログラミングをしなくても、
ゲームは普通に作れるからな。初心者にとって無関係といえば無関係だろ。

719 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 12:17:01 ID:+QgrF6fp]
オブジェクト指向勉強したかったらJavaやC#でやったほうがいいと思うよ
C++ではノイズが多すぎて本質がわかりにくい
いちいちクラス作るのも使うのもめんどくさすぎ

720 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 12:27:24 ID:Bp6r7tC9]
visualC++は自動でクラス作ってくれるじゃん



721 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 12:34:00 ID:+QgrF6fp]
そんな機能が必要なこと自体がおかしいんだよ
別にC++のオブジェクト指向が使えないと言ってるんじゃなくて、
勉強の妨げになる余計なものが多すぎると言ってるだけ

722 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 13:08:48 ID:stjfxyZ6]
それは同意できるな。
C++はCとのしがらみのせいで無駄に複雑になってる。
純粋にオブジェクト指向を学びたかったら、
しがらみを完全に断ち切ったC#、Javaのほうが分かりやすい

723 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 13:14:20 ID:KY5hMpMn]
オブジェクト指向を学びたい!のなら教育用の別の言語をオススメするが、Windowsの実用言語として同時に学ぶならC#かなぁ
.NET FrameworkとVisual Studio Expressは非常に強力
Javaもいいんだけど、標準クラスライブラリだけだとWindowsアプリケーションをさくっと作るみたいな使い方が難しい
俺がJavaに詳しくないだけかもしれないけど、GUIの作成周りがどうも・・・

724 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 14:10:59 ID:k3JuiCGX]
>>714
実質的に必須だろ・・・
引数の参照使って多態もできるけど、それはあくまでも関数レベルの話なんだし
そりゃ部分的には参照使うほうがスタック領域のオブジェクト使うから早いけど、
例えば敵が格納されてるリストの中に複数種類の敵入れたりするときどうすんだよ
古典タスクでも使うのか?

725 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 17:08:03 ID:FRrxkwCp]
ゲームはオブジェクトの振る舞いを場合によって変化させないといけないから
オブジェクト指向を使うにしても結構訓練を必要とすると思うよ

726 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 22:24:40 ID:gmKYG7No]
enumのパラメータの名前がよく被る
どうしよう

727 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 22:30:00 ID:Eb0WRl87]
クラスに持たせて、クラス名::enum

728 名前:名前は開発中のものです。 mailto:sage [2011/02/06(日) 22:48:27 ID:Bcoc3jNp]
enumに型名を付けるとfor文で回せなくてめんどくさくね

enum STAGE
{
  FIRST,
  SECOND,
  THIRD,
  STAGE_NUM,
};

for(STAGE idx=FIRST; idx<STAGE_NUM; idx++){
}

こういうことができない。
enumは型名がない方がよくね

729 名前:名前は開発中のものです。 [2011/02/06(日) 23:56:26 ID:o0IXDaRU]
C++ってメモリの操作がこまめに出来るからプログラミングの勉強にすごいなると思う

730 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 00:06:53 ID:o+ZRLSEj]
for(int idx=FIRST; idx<STAGE_NUM; idx++){
}

は出来ないの?



731 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 00:13:22 ID:o7zGWqwC]
>>729
低レベルな作業が勉強になるというなら
クラスもnewもdeleteもテンプレートも使うべきじゃないよ
せっせとHSPみたいなコード書いてればいい

732 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 00:29:30 ID:d7Cek6eo]
>>731
HSPは勉強にもってこいなのか?

733 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 00:36:10 ID:o7zGWqwC]
低レベル(!=簡単)な言語の例として挙げただけ
もちろんハード寄りの低レベルな知識は大事だけど
プログラミングには抽象化も重要だ
アセンブラには関数がないからC言語より勉強になるの?

734 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 00:46:04 ID:5kwAP+20]
>>728
なんでforで回せられないん?

735 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 01:07:36 ID:ln0Hp/Vm]
intでできたは

736 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 05:11:14 ID:WyOjR7J5]
HSPって低レベルだっけ

737 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 05:20:57 ID:z2dDXVbA]
なにげにアレHSP用の関数実装とか無しに外部DLL呼び出せたりして面白いよね
HSPでdxlib使ってる人っている?

738 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 05:32:21 ID:2KMBKGJ1]
HSPは参照というものが存在してなかったはず。抽象度という意味ではかなり低レベルかと

739 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 11:25:04 ID:b8F3RAga]
低レベルって、低級言語って意味で言ってるんだよな?

740 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 12:56:25 ID:InNumn8p]
HSPか
初心者の勉強に向いてるの?



741 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 13:20:20 ID:tg7ZaRxP]
HSPは小学校用と思った方がいい。入口がかんただが、複雑になると泥沼。

742 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 13:29:51 ID:InNumn8p]
>>741
有難う。

743 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 15:19:07 ID:PS0gfCYa]
HSPは勉強用ではなく体験用と思えばとてもすばらしい環境だな
手軽に弄って手軽なものを作る分には最適だが本格的なものを作ろうとした時に
どうしても仕様上の不便さが目立ってしまう
元々のコンセプトがそういう方向性なんだから本来の目的は達成している筈なんだが
簡便さゆえに万能を求められてしまうなんたらかんたら〜はスレ違いの話だな

まあ勉強が目的なら応用性の高い言語を選択した方が回り道は少ないだろうな
逆に見ればそれ程大規模でもなく複雑な表現も処理速度も必要としないようなソフト製作であれば
HSPでも十分だとも言える
多少の知識があればDXlibの2D機能ぐらいなら一応使えるしな

744 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 17:36:43 ID:orHlWPg7]
ちょっとした動作デモが、1時間くらいで組みあがったりしたのを見てビビった


745 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 19:07:46 ID:4Bjtftyn]
HSPで簡単と思える程度のゲームなら他の言語でも簡単なんじゃね

746 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 19:11:19 ID:z2dDXVbA]
他の言語て

747 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 19:15:19 ID:4Bjtftyn]
日本語でおk

748 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 20:57:52 ID:cLL/ycl2]
他の言語でもおk

749 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 21:06:03 ID:WyOjR7J5]
HSPって低級言語だっけ

750 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 22:03:36 ID:ao/YIlT9]
一般には高級言語に分類されてる



751 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 23:04:20 ID:wF/kiWoY]
せめてクラスか構造体があればな

752 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 23:15:47 ID:OcsNs/sY]
クラスはHSPのコンセプトからはずれると思うが、構造体は欲しいな

753 名前:名前は開発中のものです。 mailto:sage [2011/02/07(月) 23:30:15 ID:OcsNs/sY]
そういえばそれ以前に妙ちくりんな型変換をなんとかして欲しいな

754 名前:名前は開発中のものです。 mailto:sage [2011/02/08(火) 01:11:11 ID:zz8oJ9kr]
俺的にはHSP=BASICって感じ。高望みはしないし、人に勧める気もしない

755 名前:名前は開発中のものです。 [2011/02/08(火) 16:05:17 ID:6L0TPnqD]
すれ違い

756 名前:名前は開発中のものです。 mailto:sage [2011/02/08(火) 17:54:15 ID:+ML1FjeC]
から生まれる

757 名前:名前は開発中のものです。 mailto:sage [2011/02/08(火) 20:35:13 ID:SsLD3XMz]
小さな愛

758 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 02:00:42 ID:5lfRH9sH]
AIにいい参考資料ってやっぱ本買うしかないのかな?
全くイメージが出来ない

759 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 02:47:15 ID:ieGKHoAe]
AIって言われても漠然としていて何を知りたいのか分からん

760 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 09:32:08 ID:56rbMTpR]
実例で学ぶゲームAIプログラミング
www.oreilly.co.jp/books/9784873113395/



761 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 20:36:21 ID:v7oSuKhP]
いわゆる和ゲーのAIと、洋ゲーのAIじゃあ全然違うだろうな

762 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 20:57:36 ID:7Rex9UNl]
勇者が死ぬとメガザル

763 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 21:04:48 ID:bxVvIYXu]
FF13だっけ?味方の戦闘AIの設定いじって戦うやつ
ドラクエであれやってみたら結構楽しそう

764 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 21:52:06 ID:MQeJ0Td3]
どうだろうな。

「HP50%以下でホイミ」と指定されていれば、その通り行動しないとマズいけど、
「いのちだいじに」なら、殺られる前に殺れというのも選択肢に入る懐の広さはあるだろうし。
一応、キャラごとの性格設定や、プレイヤーが勝手に想像する余地というメリットもあるからなあ。

765 名前:名前は開発中のものです。 mailto:sage [2011/02/09(水) 23:34:22 ID:gbbiuBkv]
今現在で実用的な意味でのAI というと特定の条件下での話になっちゃうからね
目的とゲーム条件と製作者の好みで決めちゃうところが大きいかと

766 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 13:12:29 ID:nJI+bwQD]
ぐぐっても見つからなかったので質問です。

リフレッシュレートに依存せず、指定したfpsで処理を行う場合のサンプルがあれば、
その場所を教えてほしいです。
dxlib wiki かなにかがないか探したのですが、見つかりませんでした。

同梱のhelpだと、リフレッシュレートにあわせて処理を変えてしまえというものはあったのですが、
fps60固定でやりたいので、使えませんでした。

普通の2DアクションゲームならどのゲームでもやってるFAQ・TIPSだと思いますし、
wikiにも真っ先に掲載されるようなネタですので、
自分の拙いコーディングと調査で時間食うより、サンプルコピペで一瞬で済ませたいです。

実現方法としては、
・flip時に待たない
・自前で待つ:msec単位の現在時刻取得APIを利用し、sleepする(?)
あたりでいけるとは思ってます。

ご存じの方、よろしくお願いします。

767 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 13:16:58 ID:hgni81jL]
>>766
>自分の拙いコーディングと調査で時間食うより、サンプルコピペで一瞬で済ませたいです。
それを自前でやればスキルアップでほかの部分もより良いコーディングができるようになるかと。
最近はPCも液晶ばっかりで大抵リフレッシュレートが60Hzだから垂直同期依存のソフトも多いんじゃないかな。

まぁ、無精せずにじっくりやれって事ですw

768 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 13:30:22 ID:qAUrfDwp]
>>766
時前でレートを作ると、がたつき(ティアリング)がおきるぞ、わかってるのか?

769 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 16:16:10 ID:mJ46d9vv]
リフレッシュレートに依存しないって言うから、
可変FPSの話かと思ったが、どうやら違ったようだ。

770 名前:名前は開発中のものです。 mailto:sage [2011/02/12(土) 16:34:22 ID:WPIK0Noa]
龍神録プログラミングの館の43章、「きっちりFPSを制御してみよう」に解説がある
SetWaitVSyncFlag()で垂直同期を切れば思い通りになるはず



771 名前:766 mailto:sage [2011/02/13(日) 09:42:41 ID:KpZXeEQj]
>>770
教えていただいたとおりに実装したところ、思い通りになりました。ありがとうございます!
一番時間かかった問題(sleepでやると2回に1回くらい描画結果がwindowに反映されない)は、
PC再起動でなおりました。

>>767-768
アドバイスありがとうございます。ティアリングは覚悟済みです。
余談ですが、もちろん普通に垂直同期を待つモードもついています。
今回は1関数コピペで済むレベルなので不精しましたが、
そうでない場合はいただいたアドバイスどおりじっくりやりたいと思います。

772 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 10:32:36 ID:kx3d0uWe]
listのイテレータをstaticで持っておきたいのですが
そのイテレータを使い終わった時に初期化したいです
しかし一体何を入れればいいのかわかりません
別に初期化しないでもバグにならないように設計すればよいのですが
何か気持ち悪くて・・・

773 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 10:45:00 ID:hu/634nm]
初期化しないで使い、毎回使うときに初期化するのが基本だけど、
どうしてもってのならNULLを入れとけばいいです
NULL(=0)は絶対にポインタとしてあり得ない数値なんで、it==NULLなら参照しない、って使い方が出来ますにゃ
(当然、NULLが代入されてるイテレータで要素を参照してしまうとアプリは落ちる)

774 名前:名前は開発中のものです。 mailto:sage [2011/02/16(水) 20:49:33 ID:RSQiCP9S]
イテレータstaticでもつって何に使うの

775 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 12:10:06 ID:POOkR4PO]
当たり前すぎるのか検索しても引っかからないのですが、
3Dモデルのデータにはテクスチャファイルは埋め込めないんでしょうか?
ごちゃごちゃするのでまとめたいんですが…。

それとも最終的にDXアーカイブにすれば(mv1のみ?)でまとめろって話ですかね。

776 名前:名前は開発中のものです。 [2011/02/17(木) 18:48:14 ID:L+DlSeIR]
DrawRotaGraphってめっちゃ重かったりする?
擬似3Dゲームを作ろうと思ってマップや敵を回転させてたらめっちゃ重い

777 名前:名前は開発中のものです。 [2011/02/17(木) 18:54:18 ID:s7Rh9Whn]
原因はお前のクソコード

778 名前:名前は開発中のものです。 [2011/02/17(木) 19:06:21 ID:L+DlSeIR]
ひょっとして、画像のロードをループのたびにやってるのがいけないのか?
でもさ、フィールド関数の領域???でロードしたら、次から画像ハンドルが空っぽになってんだよ

779 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:11:41 ID:NFDiEQjC]
寿命が尽きたんだ。諦めろ。

780 名前:名前は開発中のものです。 [2011/02/17(木) 19:18:03 ID:L+DlSeIR]
おかしいな、このスレ誰もいないのかな



781 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:19:56 ID:+LcL54Sl]
誰もいませんよ

782 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:21:09 ID:8eHPFNop]
むしろ自分はDrawRotaGraphで統一してる。
関数によって、座標指定が左上だったり中央だったりするのが面倒だったので。


>>780
せめて24時間は待てよw

783 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:53:11 ID:JfE8kAGm]
>>778
>画像のロードをループのたびにやってる
そんな事やってたら重いのは当たり前だ

>画像ハンドルが空っぽ
明らかなバグ臭、ちゃんととレースしてデバッグしろ

784 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 19:55:24 ID:/kIHAK9a]
ローカル変数に代入してるんじゃね?staticもなしに

785 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 20:07:30 ID:2T4y7T5P]
>>778
783も言ってるけどまんま原因はそれだよw
ロードは描画の度やるようなもんじゃない
変数の有効範囲をちゃんと管理できるコードか書けない初心者のうちは、
画像ハンドルはグローバルで置いとくべき
そしてゲーム起動時に全部読み込むくらいでいいにゃん

786 名前:名前は開発中のものです。 mailto:sage [2011/02/17(木) 20:22:19 ID:NFDiEQjC]
そしてグローバル変数の初期化にLoadGraph使ってまた発狂

787 名前:名前は開発中のものです。 [2011/02/17(木) 21:57:53 ID:L+DlSeIR]
ありがとうございます
またできる環境になったら試して見ます
またお世話になるかと思いますがよろしくお願いします

788 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 01:46:16 ID:GOKTeo9s]
またお世話になる前にC言語勉強して公式をよく読め

789 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 14:19:13 ID:R8VH2Snc]
ログファイルの出力フォルダの設定ってどうやったらできますか?
時間をログファイル名につけて保存する設定にしたのはいいんですが実行するたびにファイルが増えるのでひとまとめにできたらいいなと思うんですが

790 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 14:30:19 ID:evmgDxOS]
そう言うのは公式で聞いたほうが早い



791 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 14:49:54 ID:R8VH2Snc]
ありがとうございます。そうしてみます

792 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 19:00:32 ID:G40bfkWJ]
DXライブラリ ゲームプログラム講座
のとおりにやってたら、そんなバグ仕込むことは少ないと思うんだけどなあ

よくわかんないうちは、
それを改造していく方法でいいじゃん

ほかにもソース公開してる人がいるから、それを改造していってもいいし

793 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 19:11:39 ID:4cFumhE/]
特に変数のスコープを解説されてない講座に従えば、
そりゃ間違いを犯すだろ。改造と並列して原理を学ばないと。

794 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 21:34:07 ID:2/JFNBpt]
ポインタにNULLを入れて何回でもdeleteしてやる

795 名前:名前は開発中のものです。 mailto:sage [2011/02/18(金) 21:48:34 ID:DL5by/CF]
君がッ! 泣くまでッ! deleteを止めないッ!

796 名前:名前は開発中のものです。 [2011/02/19(土) 00:11:11 ID:aRLzCjm9]
DXライブラリってDirectGraphic使ってるの?

797 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 00:12:54 ID:aRLzCjm9]
サーセン

798 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 00:18:35 ID:AyR1BOuA]
>>790
公式でそういうクソみたいな質問させるのやめろよ

799 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 00:41:55 ID:hJx6ylHW]
軽くソースをあたってみると、公式や2chで質問するより早く分かったりする。
分からないことも多いけど。

800 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 07:24:18 ID:wF23eZ21]
ミスのない、凝ったことをやってない、そういうレベルのソースに出会えるといいね。



801 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 10:26:58 ID:HniCnkbn]
ゲームのソースって人それぞれオリジナリティに溢れてて読みづらいんだよね
純粋にC++の勉強としては、ゲーム以外のプログラムとかゲームエンジンのソースとか読んだ方がいい気がする

802 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 11:12:29 ID:q8myv8eW]
>>763
リメイク版ドラクエ4で「めいれいさせろ」が追加された頃から察してくれ…

803 名前:名前は開発中のものです。 mailto:sage [2011/02/19(土) 13:02:18 ID:/MJ/MkF7]
>>798
じゃあ、お前が答えてやれよ

804 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 15:53:01.31 ID:H/f3jJzW]
縦横座標から濃度と色を計算して1点ずつ描画モードを切り替えて点を打つっていう処理をやったら
案の定遅くなったんだけどやっぱ無謀だったんですか?
関数呼び出すだけで時間かかるから1点1点描いてくのはダメなのかな?
1ドットにつき数回三角関数や逆三角関数を使ったのもあるかもしれないけど
ドット打つところを2*2の四角形に変えたら少しはマシになったのでやっぱ描画関数の呼び出し回数の問題っぽい。

何が言いたいかと言うと、
char gamen[???][???][4]; //縦×横×三色と濃度
みたいな配列みたいなのを用意してこれを渡せば一括で描画してくれるなんて関数があればいいなぁってね。
画像のデータ構造の中身なんてわかんないけど似たような事やってるんじゃないのかな?

805 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 16:40:26.86 ID:9GgWz1ID]
ソフトイメージとDrawSoftImageでいんじゃね?
言ってることはこれそのままっぽいし

806 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 16:52:59.96 ID:h9QhWIFW]
>>804
片方ずつ実行して時間計れば、処理速度くらいわかるでしょ。
結論から言うと画像を作ってから、一回で描画すればおk。

807 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 17:01:58.37 ID:H/f3jJzW]
あーん、あったねぇ……うん、ごめんね。
都合良く、アルファ濃度にも対応してるのあるのね。まさにピッタリ。
DrawSoftImageの説明に重いとは書いてあるけどDrawPixel毎回呼び出すよりはマシなのかな。
今度比べて試してみます。ありがとうございました。

808 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 17:07:06.38 ID:MMcVeH9B]
なんか解決したみたいだけど一応書いとく

描画モードの変更関数は結構重いよ
どのくらい重いかというと毎フレーム3000回呼んでたら60fps維持できないくらい

809 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 17:12:14.93 ID:H/f3jJzW]
あーそうなんだ。
ドット毎にあのパラメータを変更するためにSetDrawBlendMode呼んでたから、なるほど。
ますますソフトイメージの方が良いみたいだね。
重ね重ねありがとう。

810 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 21:14:42.39 ID:xa3qwwu7]
ソフトイメージもクソ重いけどな・・・



811 名前:名前は開発中のものです。 mailto:sage [2011/02/21(月) 21:37:06.89 ID:MMcVeH9B]
804がどんなことをやりたいと思ってるのかが気になる
サブサーフェスみたいなのがやりたいのか、それともお絵かきツールみたいなのを実装しようとしてるのか……

812 名前:名前は開発中のものです。 mailto:sage [2011/02/22(火) 01:34:18.44 ID:M0x+7GIl]
ピクセルシェーダ向きだな
とんでもなく速くなるよ

813 名前:804 mailto:sage [2011/02/22(火) 05:37:38.23 ID:fi/o64E4]
>>811

t:時間
x:キャラの中心線からの相対横座標
y:キャラの下端からの相対縦座標
xmax:模様の横幅/2
ymax:模様の縦幅

red[i][j]=255*sin(0.05*t*t+sin(acos(x/xmax)/16+0.1*t));
alpha[i][j]=255*y/ymax*x*x/xmax/xmax;

これは適当だけどこんな感じの計算をしてキャラの周りを波模様の筒状のオーラが囲むような
演出を作りたかったんだよね一瞬だけど。
だからそこまで必須じゃなかったり。いやドットでやるのは馬鹿げてるってわかってはいたんだけどね。

814 名前:名前は開発中のものです。 mailto:sage [2011/02/22(火) 12:21:32.47 ID:8kTZW2q7]
波長や振幅が固定で良いなら画像なんだろうけどなあ

815 名前:名前は開発中のものです。 mailto:sage [2011/02/22(火) 12:36:39.49 ID:2hGlEXNN]
それだと、やっぱりシェーダか2Dポリゴンかなぁ

816 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 02:06:02.89 ID:UA4c++Ac]
C++にLuaを組み込むメリットは処理の速さですか?

現在RPGを製作中で、自分でスクリプトを組んでやってるんですが
若干レスポンスが遅いです
これが改善されるならLua導入も検討しようと思うのですが

817 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 02:09:38.48 ID:6JL+nAie]
スレチ

818 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 02:19:07.06 ID:+qfQHx1D]
>>816
軽量設計した簡易スクリプトがluaより遅いって事はまずない
もしも毎回読み込んで構文解析して実行してるならそこで遅くなる
起動時にスクリプトを構文解析して、実行用の中間コードを保持しておくとか工夫してみたら?
luaの長所はスクリプト内でとてつもなく複雑なことをしても動作することがある程度補償されてる点

819 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 04:24:07.24 ID:Gd9oN5TQ]
DXライブラリレベルならスクリプト要らないと思うけどな
記述が簡単なDXライブラリに記述が簡単なスクリプト言語を追加してどうすんの
動的リロードとかは魅力だけどデバッグが更に面倒になるし

820 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 05:23:52.62 ID:2fkZgoQ8]
Luaというか組み込みスクリプト言語のメリットは動的リロードとコルーチンだろ・・・



821 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 05:24:24.01 ID:+qfQHx1D]
スクリプトには再コンパイルなしでイベント追加ができるなどの強みはあるよ
人形劇みたいなイベント有りのRPG作るならスクリプトみたいな仕組みはないと困るんでない?

822 名前:名前は開発中のものです。 mailto:sage [2011/02/23(水) 13:24:26.50 ID:KDGE0euW]
結局のところ、複数で担当するかどうかというのも大きいよな。


823 名前:名前は開発中のものです。 [2011/02/23(水) 20:20:54.51 ID:slm3+WaE]
2DRPG程度で重くなってる方がやばいな

824 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 00:34:35.38 ID:llK7EsEr]
DXライブラリにluaが合わさったら最強に見えるかも、
と思ったことはある

825 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 00:39:08.09 ID:/pRzzwPn]
luaにポーティングとかもう誰かやってんじゃないの?

826 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 00:52:29.00 ID:DM00gsqn]
「lua DXライブラリ」でググるといくつか挑戦したのが見つかるね

827 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 08:56:00.23 ID:eTqHkKj4]
Lua+DXライブラリって何かいい事あるの?

828 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 11:25:41.87 ID:enInS/6/]
なんで良い事ないと思うの?

829 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 11:34:41.26 ID:i8Eo6Mya]
単純に疑問かもしれないのに

一体何と戦ってるの?

830 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 12:31:16.83 ID:llK7EsEr]
質問の意図次第かな
・DXライブラリを使ったゲーム開発において、
 組み込みスクリプト言語を導入することでのメリットとは何か
・DXライブラリ+組み込みスクリプト言語 を用いたゲーム開発において、
 ほかの組み込みスクリプト言語に比べてのluaの優位性とは
で回答は変わるわな



831 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 12:45:40.80 ID:DM00gsqn]
DXライブラリは基本的には描画がメインだからなぁ
組み込みスクリプト使うような規模の作品になれば、描画をフレームワーク化するのは当然になるし、
有用な組み合わせとしては「DXライブラリ+スクリプト」というよりは「自作フレームワーク+スクリプト」って感じになって、
DXライブラリを使うかどうかって所はあまり関係しない気がする

832 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 13:35:39.83 ID:eTqHkKj4]
いや、DXライブラリとLuaを組み合わせたら最強とかあったから、
何か他のものとは違う特別なメリットが得られると思った次第。
言葉足らずでごめん。
別にそういうのは無い感じなのかな?

833 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 13:38:49.16 ID:enInS/6/]
単に開発が楽ってだけだろ
Luaじゃなしに組み込みスクリプト言語ならそんなに変わらん
速度面・普及面じゃLua一択だが

834 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 15:04:09.36 ID:8F4iVscQ]
DXライブラリで開発してる人は、大なり小なりフレームワーク的なものを組んでるような気がする。
この辺の情報ってあんまり出ないよね。


835 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 15:26:33.72 ID:/pRzzwPn]
単に、Tonyu systemみたいな環境を自分で作れたら夢が広がりんぐ 程度の意味だと思うよ

836 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 17:22:25.72 ID:E0NawrDD]
Luaの場合は構文やクセの把握をしておけばまたどこかで役に立つ可能性があるくらいには普及してる
どっかの誰かが作ったほとんど使われてないスクリプ言語はそういったトライアンドエラーを他の環境で活かせる度合いが小さい
・・・程度の差はあるね

まあ損しないことばかり考えてると何も作れないんだがなw

837 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 20:31:19.79 ID:0j1IiD9M]
DxLibはゲームライブラリって感じじゃないからなぁ

838 名前:名前は開発中のものです。 mailto:sage [2011/02/26(土) 21:07:57.84 ID:HzAF130I]
そろそろスレチ

839 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 09:19:22.82 ID:OH7ge9Jj]
DXライブラリとフレームワークについては興味あるなあ
まぁこれもDXライブラリに限らない話だからスレチかな

840 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 09:35:38.18 ID:tW/E8A8B]
良くも悪くもラッパーライブラリだしな、フレームワーク必須に近い
それなりの規模なゲームを作ろうとしたら自前実装だらけになる



841 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 09:46:08.08 ID:0L5aKjyl]
ゲームフレームワーク作るなら、DXライブラリで楽できる分なんて
作業全体の中では少ないから結局自分でやっても変わらん

842 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 10:13:30.78 ID:TzpLKbBT]
>>841
いや、割と結構な部分省けるべさ
レンダリングフレームワークを作る手間がまるまる消えるんだし

843 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 13:46:42.55 ID:9Fl/vGOB]
DXライブラリの上に自前フレームワークを作るのなら
DirectXの余計なことに頭を使わなくてすむ。
クラス設計とかだけを考えれば良いからすごい楽になる。

ってか楽になった。
俺はもうDeviceLostと格闘するのは嫌だわ・・・

844 名前:名前は開発中のものです。 mailto:sage [2011/02/27(日) 15:10:27.18 ID:aZ0j/EAR]
>フレームワーク
ベースの部分を、DXライブラリとそうでないものとで切り替えられると良いんだろうけどな。


845 名前:名前は開発中のものです。 mailto:sage [2011/03/02(水) 00:54:47.81 ID:u6ffonYs]
BGMのループポイントの話だけど、ループポイントの設定の仕方がミリ秒とサンプルとバイトの3つあるけど、
それぞれメリットデメリットってあるの?
細かさは

バイト>サンプル>ミリ秒

なのはいいとして、やっぱバイト単位とかのほうがミリ秒と違って再生環境によるズレが無いのかな?
バイトってなんかこうファイルを直接見てる感じがするからそんな気がするのよ。
もしそうじゃなくて「ミリ秒でずれるときはバイトでもずれる」とかなら俺的には
バイトのメリットが無いからもうミリ秒でいいやって話になるわけよ。
どうせ10ミリ秒ぐらいの違いじゃあわかんないし俺。

というか
ttp://izuministrator.com/ref/
によると
SetLoopPosSoundMem
でバイトでの指定ができるはずなんだけど、なぜかミリ秒指定と同じ動きになっちゃってるから
バイト指定できなくて困ってるのよね。

長文スマソ

846 名前:名前は開発中のものです。 mailto:sage [2011/03/02(水) 21:23:00.01 ID:J7GxD6/6]
公式のリファレンスでは、現在SetLoopPosSoundMemはミリ秒指定用の関数になってるね

ミリ秒でもズレないからミリ秒でやったほうがいいと思うよ
コード見たわけじゃないけど、多分内部では計算して単位揃えて同じ動作で動いてると思うし

バイトやサンプル数だと、周波数とか変えたとき変更しなきゃなるし、メリットは殆ど無いって言っていい

847 名前:名前は開発中のものです。 mailto:sage [2011/03/02(水) 23:38:04.82 ID:EReXQxMM]
なるほどありがとう。

しかしまぁ公式リファレンスは
int GetCurrentPositionSoundMem( int SoundHandle ) ;
の項目で
int SetCurrentPositionSoundMem( int SamplePosition, int SoundHandle ) ;
のと同じ説明書いてるし信用できないな。
とりあえず名前が違うのに同じ挙動の関数がある時点で、
どちらかはバイトのほうを実装しようとして間違えたんだと思うけど。

848 名前:名前は開発中のものです。 mailto:sage [2011/03/02(水) 23:57:52.31 ID:qyJBDqiQ]
バイト指定なんてしても変なずれ方するだけだし最小単位はサンプルでいいと思うけどそれは置いといて
ソースみたところ、SetLoopTimePosSoundMemとSetLoopPosSoundMemの実装が同じコードになってる。多分バグじゃないかな。
メリットデメリットの話で言うなら、それぞれの関数は内部でSetLoopSamplePosSoundMemの実装を呼び出してるだけなので全く同じなはず。

849 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 16:24:34.69 ID:Zh6pP09G]
同じような内容で、引数が違う関数の場合、
片方が他方のラッパーなんだろうな〜と思ってソースを眺めてみると、実は違う場合があったりするよな…。


850 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 17:31:53.66 ID:EV+fS59G]
そこら辺揺れるのが非公式関数だからなー
そういうのは公式に質問したほうがいんじゃないかな
なんらかのリアクションあるだろうし



851 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 21:36:34.77 ID:9izXx4AI]
DXライブラリでも、ちゃんと作れば状態遷移を行って帰ってきても1バイトたりとも増えないの?
メニュー画面からゲーム画面に行って帰ってくるとメモリ使用量が増えてるんだけど。
ちゃんと各画面において終わる時にInitGraphとInitSoundMem呼んでるしのに。
ファイル読み込み関連はLoadGraphとLoadDivGraphとLoadSoundMemしか使ってないからこれで大丈夫のはずなんだが。
fopenも使ったけどちゃんとfcloseしてるし。mallocの類は全く使ってない。

852 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 21:45:58.98 ID:SaQE7YU5]
メモリ使用量って何を見て言ってるの?
タスクマネージャなんだったら、ウィンドウを一時的に最小化してみたらいいよ
タスクマネージャの数字を減らすのは、自称詳しいユーザーを安心させる程度の意味しかない

853 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 21:55:06.60 ID:9izXx4AI]
最小化すると正しい値が出るの?
やってみたけどやっぱ上がったものは上がったままだなぁ。

854 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 23:03:00.90 ID:UieYMyVE]
ループを進めて時間が経ったらメモリ増えなくなるかも知れない。
ある程度のメモリは即開放されずに内部に留められたりするものらしい

855 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 23:32:31.47 ID:qrLZpjId]
読み込んだファイルはOSが一時的にキャッシュ保存しているよ。

856 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 23:35:35.10 ID:9izXx4AI]
じゃ、じゃあやっぱ気にしなくていいってことかな……うん。

857 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 23:37:05.63 ID:zB1jyOJI]
状態遷移のたびに際限なく増えてるならメモリリークの可能性大

あともしVista以降だったらタスクマネージャにデフォルトで表示されてるプライベートワーキングセットには
DLL側のメモリの使用量は含まれてないよ

858 名前:名前は開発中のものです。 mailto:sage [2011/03/03(木) 23:59:37.80 ID:9izXx4AI]
えー……じゃあやっぱ原因探さないとな。ありがとう。

859 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 00:05:04.17 ID:ZZu9fnGE]
>>858
何処を見て判断しているか説明しないと、色々出るだけだろ。何処見てるんだよ!

860 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 00:08:06.20 ID:Gm+qWo11]
いや、タスクマネージャ……



861 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 00:25:23.10 ID:phAV7U6c]
とりあえずゲームループに入って100秒くらい経ってもまだメモリ増えるならアウト

862 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 01:01:17.80 ID:Gm+qWo11]
や、やっぱり法則がわからない。
何事も、初めのうちは増えるんだよね。
例えば効果音で、初めのうちは鳴る度にメモリ増えるんだけど、
何度も鳴ってると増えなくなる。
画像の読み込み+表示でもそうみたい。

863 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 01:06:04.38 ID:Gm+qWo11]
また肝心な事言い忘れた。
そういうことだから、やっぱループし初めは初めて尽くしだからポンポン増えてくけど、
落ち着けば変わったことが起こらない限り増えない。

864 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 01:07:59.19 ID:Gm+qWo11]
重ね重ねごめんね。誤字

ループし初めは初めて尽くし→ループし始めは初めて尽くし

865 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 01:30:31.12 ID:+Ujkj93Y]
ずっと動かし続けてみたら?
数時間プレイし続けただけで落ちたらメモリリークだろうし

866 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 23:09:56.12 ID:3Qrvh8YP]
プログラマ諸兄方に教えて頂きたい。

正直、俺のヘボいプログラムを人に見せるのは恥ずかしいけど、
訊くは一時の恥、とサンプルを晒します。

ttp://www.dotup.org/uploda/www.dotup.org1396225.zip.html

あくまでサンプルで、適当にやってるところもあるけど、大体において俺はこんな形でゲーム作ってます。
ご覧の通り一応動きはするけど、プログラムの組み方は拙いです。

これをいわゆる普通なやり方に直すとするとどうなりますでしょうか。
特にキャラクターデータやグラフィックハンドルの管理をどうしてるのか、とかが知りたいです。

よろしくお願いします。

867 名前:名前は開発中のものです。 mailto:sage [2011/03/04(金) 23:26:51.42 ID:kgJhX4cx]
で、ダウンロードパスは?

868 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 00:21:59.55 ID:wFok8gdI]
あ、すみません。書くの忘れてました。
DXlib です。

869 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 00:32:14.95 ID:Yfm7rI7q]
やり方に直すって、全部コード書けってことかい?
流石に面倒だぞ
ぱっと見たところ、クラスちゃんと使えよと思ったな
C++の言語仕様くらいはちゃんと勉強しな
あとキャラクタ管理にはリスト構造とか使えばいいと思うよ

870 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 01:28:05.42 ID:1UObIsvi]
拙いという割にはちゃんと細かい処理も関数に分けてて分かりやすいと思う
コメント多めなのも良い
クラスなんて構造体扱いでも全く構わないよ
全体的にわかりやすいベターCコードって印象



871 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 01:31:08.83 ID:Yfm7rI7q]
構造体扱いなら
class Hoge{
public:
};
なんてせずに
struct{
};
でいいだろ。
そもそも、C++的に書きたいのか、C言語的に書きたいのかってのを言わんと目指すコードが分からんよな。

872 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 01:31:35.11 ID:Yfm7rI7q]
struct Hoge{}; だったすまん

873 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 04:19:43.37 ID:/y9kIpiy]
>>866
コメントも多いし処理ごとにブロック化されているので
読みやすくて(保守しやすいので)良いと思う。

敢えて言えば、サンプルだからかもしれないけれど
敵のタイプや数はマジックナンバーを使わないほうがいいと思う。
ENEMY_DATA[100]も、#define ENEMY_NUMBERS 100 とかにして
まとめてヘッダに定義しておけば可読性もあがるし、敵の数を
変える必要があっても、他の部分(たとえば敵初期化時の
forループの所とか)も直さなくていいから、楽になると思う。

874 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 04:21:30.33 ID:/y9kIpiy]
>キャラクターデータやグラフィックハンドルの管理
C++で書くつもりなら、ゲーム内のオブジェクトについては
まず基底クラス作って、そこから各キャラを派生させて
敵や弾ごとにリストや、マネージャーとなるクラスで
管理しておけば処理や修正も楽だよ。

そうしておけば、サンプルのように描画時に敵のタイプで
switchしなくても、たとえば敵リスト->Draw(); みたいに
書くだけでOKだし、もし新キャラを後で追加したくなっても
Draw_rtn関数内は何も修正しなくてすむ。
同様に移動処理も、基底クラスのメンバに仮想関数として
Move()とか持たして、派生先の各キャラごとに実際の処理を
書いておけば、Move_rtn関数内では
敵リスト->Move(); とかしておくだけですむ。

でも最初にカッチリと複雑なものを作ろうとして、
いつまでたってもゲーム完成できない…というのは最悪なので
当面はこういう感じで書いていくのもいいと思う。
不便や必要を感じたら、その都度勉強したらいいし。

こういった話はDxLibの話とは関係ないし、
C++で書かれているゲーム開発用の入門書のサンプルにたいてい
載ってると思うので何冊か買ってみるといいかも。

875 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 13:47:42.01 ID:lRq0e7jV]
しかし管理人様はマジですげーぜ

876 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 16:58:19.71 ID:4fF2MP2u]
同意

877 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 21:00:41.90 ID:+x8oBxgp]
画像のハンドル=ポインタですか?

878 名前:名前は開発中のものです。 mailto:sage [2011/03/05(土) 21:06:11.54 ID:QynImjUh]
違います

879 名前:はじめまして。 [2011/03/06(日) 22:54:57.95 ID:QYrw4Tbt]
確認なのですが、DXLibの描画順序って、コードの順序ですよね?

しかし、まずフィールドモデル(mqo)を描画した後、
メタセコイアで透過PNGを貼りつけた板モデル(mqo)を描画すると
板が先に描画されたかのように表示されます。

具体的には、以下のように表示されます。
cdn-ak.f.st-hatena.com/images/fotolife/p/peroon/20110306/20110306223051.jpg?1299418311

どうすればよいのでしょうか?

880 名前:はじめまして。 [2011/03/06(日) 23:00:32.76 ID:QYrw4Tbt]
すみません、ちょっと怪しい部分がありますので、
もう少し自分で調べてみます。



881 名前:はじめまして。 [2011/03/06(日) 23:12:39.74 ID:QYrw4Tbt]
ミスでした。思い通りに描画できました。

(update()でも描画していたというオチでした。。w)

882 名前:名前は開発中のものです。 mailto:sage [2011/03/07(月) 00:49:57.69 ID:CZyikCNH]
透過処理のポリゴンは大変なんですよ。
Zバッファーへの書込みをしなかったり、Zソートして描画しないといけなかったり。
>>879は、単にZバッファーに書込みしてるのでそれをOFFすれば、そのシーンだけは
正しく表示されるかな。

883 名前:名前は開発中のものです。 mailto:sage [2011/03/07(月) 19:08:00.52 ID:b7x4k2Cf]
Zソートってみんなどうやってるの?
俺とりあえず表示する予定の全モデルの全メッシュを片っ端からキューに入れて
メッシュ座標の最大値と最小値の中点求めて
それのワールド座標求めてそれのスクリーン座標求めてそれのZでソートかけて描画してる
糞重たそうwwww
最近のPCスペック高いからぜんぜんわかんないけど

884 名前:名前は開発中のものです。 mailto:sage [2011/03/07(月) 19:16:35.82 ID:qzzE/e1x]
PlayMovieでGIFアニメの再生が可能、と聞いたのですが

885 名前:名前は開発中のものです。 mailto:sage [2011/03/07(月) 22:14:07.46 ID:xxQTGPDS]
なんかFPSが安定しないな〜って思って
vsync待ちする時間を1分測ってみたら
60fps目標でで20ミリ秒以上待つフレームが
0.3〜0.6%ほどあるんだけど
そういうもんなんかな?
BGMとゲーム内容を同期させたいから0.2秒くらいずれると
違和感感じるようになって困っちゃうんだよね

886 名前:名前は開発中のものです。 mailto:sage [2011/03/07(月) 23:05:01.44 ID:SO4RWHi7]
>>885
どういうコード書いてるか知らんけど
自分は龍神録のコードのfps制御のとこだけコピペしたらすごい安定したよ

887 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 00:37:13.97 ID:3MPvLyMj]
>>886
簡単なテストコードなんだけどね〜
前回ScreenFlipした直後と
今回ScreenFlipした直後の間の時間を求めるだけの

自分の環境だけなのかどうか判断したいんで
ちょっと試してみてくれんかな?
ウィンドウモード時とフルスクリーンモード時の二つ
ソースも一応いれといた
www1.axfc.net/uploader/Sc/so/212454
パスはvsync

フルスクリーンの時のほうがタイムオーバーする回数がだいたい2倍多くなるんだよな〜

888 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 00:51:45.04 ID:bFxplNfr]
タイムオーバーカウントとやらは
ウィンドウ:0〜3回
フルスク:6〜12回
程度。
フルスクは立ち上がりの1秒くらいが不安定っぽいな

889 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 00:57:56.84 ID:KY1+fYB9]
関係ないかもしらんが俺の環境ではフルスクリーンだとなぜかVsync待ちすらしてないようでvsync_time: 0.005くらいが出まくってた。カウントは16。

890 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 22:22:52.93 ID:3MPvLyMj]
>>888
>>889
テストありがとう
ん〜、環境によってわりかし違うなぁ
どうすべ〜



891 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 22:26:55.30 ID:8AuwhuEL]
環境設定で垂直同期オフのタイマー待ちモードを選べるようにしたらいいんじゃないか

892 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 22:38:03.07 ID:6A/P0SlX]
似たような話で申し訳ないが、俺もちょっと気になる事が。

俺は垂直同期信号待ちを切ったプログラムを組んでる。
それとは別に、ウィンドウモードかフルスクリーンモードかを記録して、
プルグラム起動時にはその記録を読み込んで、どちらのモードで始めるか決まるようにしてる。

で、ここからが気になる事なんだけど。

フルスクリーンで起動した時は、まったくティアリングが出ないんだけど、
ウィンドウモードからフルスクリーンに切り替えた時は酷いティアリングが発生してしまう。
(フルスクリーンで起動して、一度ウィンドウモードにしてからまたフルスクリーンに戻しても同じ)

普通に考えたら垂直(略)待ちしてなければティアリングは発生して当たり前なんだから
フルスクリーン起動時の方が特殊なんだろうか??

他の人でこういう現象を経験した人っていますかね。

893 名前:名前は開発中のものです。 mailto:sage [2011/03/08(火) 23:27:50.64 ID:hpvVdE5K]
>>886に同じ

894 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 00:22:43.32 ID:rJmaFgi1]
>>892
フルスクリーン → ウィンドウモード → フルスクリーン の時の動作が良くわからんなあ。

895 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 00:50:26.09 ID:OL3/YmmT]
>>892
その様な話を聞いた気がする。新しいので治っていたような…と曖昧な記憶があった。

896 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 05:50:27.58 ID:6m0CA7fb]
グラフィックの白い部分は濃度100%で、灰色の部分は濃度50%で描画したいんだけど、いい方法ないかな?

そうしたいグラフィックをhoge_a.bmpにして真っ白いhoge.bmpも用意してhoge.bmpのほうを描画するようにすればいいんだろうけど
あんまスマートじゃないよね。

897 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 06:16:14.89 ID:FAQ2zmRE]
それ加算合成じゃね?

898 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:04:03.90 ID:6m0CA7fb]
違うのよね。例えば描画しようとした場所が元々、色(255,128,0)だったら
白い所は色(255,255,255)になって灰色(128,128,128)の所は色(255,192,128)になって、黒いところは色(255,128,0)のままって感じ。
ようはアルファブレンドの濃度を画像から読み込みたいの。
DrawGraph系はそれがデフォで実現できるんだけど。

899 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:18:31.39 ID:vOLR/zA1]
素直に>>896に描いた通りに画像を用意するか、そういう透過度のPNG画像を用意するかだね
PictBearとかあればぐその通りのPNG生成できるし

900 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:24:22.95 ID:6m0CA7fb]
ああーPNGかぁ……そういえばそんなのもあったねぇ。
16色BMPしか使った事無かったからその発想は無かった。



901 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:25:05.24 ID:6m0CA7fb]
言い忘れた。
回答ありがとうございました。

902 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:26:03.94 ID:vOLR/zA1]
16色BMPっていつの時代だよw

903 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:37:10.25 ID:6m0CA7fb]
いやなんかこう、描いたまんまなのが保障されて信用できるっていうか。
(0,0,0)だけが透過されるってわかりやすいし。元々俺ドット絵しか描けないし。

でもPNGって色情報とその色が何ビット連続で続くかっていうデータ構造なんだっけか?
それなら見た目は変わらないだろうしそのほうがサイズ的にもいいんだよね。
いや前から気付いてたんだけどね、めんどくさいからずっとそのままでやっての、ごめん。

904 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 09:38:01.41 ID:jQ8f/olW]
PNGは基本的にはピクセルのデータをzip圧縮してるだけ
可逆圧縮だから絶対に全てのピクセルが描いたままの色になる

905 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 12:34:25.51 ID:+yprSrry]
俺も最初bmpでやってたけどpngにしたら
かなり表現したいものが楽で簡単に作れるようになった
おすすめ

906 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 12:35:03.98 ID:+yprSrry]
楽で簡単ってなんだよ…orz

907 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 19:59:55.15 ID:6m0CA7fb]
やったぁPNGでできたヨーありがと

908 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 20:13:25.51 ID:FAQ2zmRE]
PNGでドット絵というなら、pngoutっていうフリーのコンソールアプリケーションでPNGの最適化とかおすすめよ
別にしなくてもいいけど

909 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 20:33:30.41 ID:6m0CA7fb]
ということはデフォルトでは最適じゃないってこと?
まぁ情報ありがとう。

910 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 21:43:01.44 ID:2JxcKgYY]
圧縮の最適なパラメータ値を探し出すのは
わりと時間がかかるからね。



911 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 23:01:54.80 ID:eX9JRndm]
男は黙って32bitBMP

912 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 07:33:52.45 ID:gK4E7Ao2]
データーがでかすぎじゃん。
最近のゲームはDVD埋めるためにBMP使ってるとしか思えん

913 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 07:45:02.94 ID:fDILOKgF]
最近のゲームってBMPなのか?
違法コピー対策にデータ量水増ししてるという話は聞いたことあるけど

914 名前: [―{}@{}@{}-] 名前は開発中のものです。 mailto:sage [2011/03/11(金) 07:46:39.43 ID:jcxEZYMy]
でも結局実行するときには展開するわけじゃん。圧縮したまま表示できるわけじゃないし。メモリ使用量は変わらんのでしょ?展開処理が省かれる方がいいじゃん

915 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 08:26:21.44 ID:3h44Ixvy]
メモリやCPUの少ないPSとかの中期コンシューマ機はわからないけど、
そういった処理能力が十分にある最近のPCは「展開速度<読み込み速度」だと思うのよね
大きいファイルをHDDガリガリ言わせて読み込むよりは、小さい圧縮ファイルをちょいと読み込んで、
高速なメモリやCPUで展開した方が速度的には早いんじゃないかな

916 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 10:50:48.71 ID:plaIhemI]
そもそもそんなbmpとかpんg違うだけで変わってくるもんなんか

917 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 10:50:54.67 ID:OccSvVJ3]
SDカードからデータを読み込む時マップ移動でめっちゃ遅かったけど
圧縮してみたら物凄い早くなってびっくりした

918 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 10:56:30.82 ID:LEs/Jeuf]
そりゃHDDに比べて転送速度がかなり遅いのが多いからな

919 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 11:36:41.06 ID:KcMscP0h]
>>884
過去スレにそういう話が出てた。
14ヶ月ぐらい前のレスだったけど、多分
今も再生できると思う。


645:名前は開発中のものです。[sage]2010/01/18(月) 19:34:01 ID:YzUndEty

gifアニメ、
PlayMovie()で出来たはず。


920 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 21:37:47.82 ID:plaIhemI]
つい2か月前じゃんw



921 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 21:58:57.74 ID:XN7O6btB]
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /


922 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 22:06:30.00 ID:7H8Pgyin]
>>890だけど
結局vsync待ちするのやめて
ティアリング発生覚悟で
高精度パフォーマンスカウンタでFPS制御することにしたわ
すげー安定した
ティアリングも思ったより気にならない

923 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 22:41:51.60 ID:TNQZ9jw4]
そういえばVistaか7かでOS側がティアリング防止してるなんて話も聞いたような気がする
垂直同期信号待ちとかもうする必要なさそうだね

924 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 22:44:33.33 ID:7H8Pgyin]
>>923
らしいね、オレはXPだから関係ないけどな〜
どういう仕組みでティアリング防止してるんだろ

925 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 22:50:03.08 ID:TNQZ9jw4]
ちょっと調べた感じだと、単純に1フレーム遅らせてるだけみたい
Vistaでマウスの位置に画像を表示するだけのプログラム動かすとちょっと遅れて付いて来てるような感じを覚えてるなそういえば

926 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 22:54:16.60 ID:2Fw05PYB]
DWMは画面全体をゲームの画面と同じように描画するんだよ
DXライブラリの言葉で説明すると、まず各ウィンドウをそれぞれ別々のグラフィック(テクスチャ)に描いて
それをDrawGraphで裏画面に描画した後、垂直同期待ちを行ってから表示する

927 名前:名前は開発中のものです。 mailto:sage [2011/03/12(土) 11:21:42.70 ID:9O79jOON]
管理人さん無事みたいだな

928 名前:名前は開発中のものです。 mailto:sage [2011/03/12(土) 11:26:31.82 ID:f65tMTTN]
おお、よかった

929 名前:名前は開発中のものです。 mailto:sage [2011/03/12(土) 11:37:26.12 ID:o3j8l5hp]
よかたよかた


930 名前:名前は開発中のものです。 mailto:sage [2011/03/12(土) 11:59:56.06 ID:yD3YkCG3]
ふう



931 名前:名前は開発中のものです。 [2011/03/14(月) 22:40:22.44 ID:gNx4XTy2]
流れぶったぎったうえに初心者で申し訳ないんですが、質問させてください。

アクションゲームを作ろうと思っているんですが、
CheckHitKey関数でキー情報を取得→ベクトルで座標計算
という風にすると左キーと右キーを同時押しした時に
右と左に同時に座標が計算されて、キャラが静止してしまいます。
これを回避するにはどうすればいいでしょうか?
まだポインタも理解していない程なので理解力が低いかもしれませんが、
よろしくお願いします。

932 名前:名前は開発中のものです。 mailto:sage [2011/03/14(月) 22:45:54.96 ID:UnZDECUY]
静止しちゃまずいのか?
どう動いて欲しいのかを書かない限り「どのコードも正しい」

933 名前:名前は開発中のものです。 [2011/03/14(月) 22:55:43.30 ID:gNx4XTy2]
>>932
すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。

934 名前:名前は開発中のものです。 mailto:sage [2011/03/14(月) 23:06:54.10 ID:TbizatYE]
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる

935 名前:名前は開発中のものです。 [2011/03/14(月) 23:13:39.89 ID:gNx4XTy2]
>>934
アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!

936 名前: [―{}@{}@{}-] 名前は開発中のものです。 mailto:sage [2011/03/14(月) 23:21:23.20 ID:E5S/TLVJ]
while(1)
{
  old_left_key_state = left_key_state;
  old_right_key_state = right_key_state;

  if(CheckHitKey(LEFT_KEY)){ left_key_state = PUSH; }
  else{ left_key_state = RELEASE; }
  
  if(CheckHitKey(RIGHT_KEY)){ right_key_state = PUSH; }
  else{ right_key_state = RELEASE; }

  if(left_key_state == PUSH && right_key_state == RELEASE){ press_key = LEFT_KEY; }
  if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
  if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }

  if(left_key_state == PUSH && right_key_state == PUSH){
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
  }
}

937 名前:名前は開発中のものです。 [2011/03/14(月) 23:54:12.21 ID:gNx4XTy2]
>>936
コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。

938 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 00:03:07.27 ID:X3tKRN+k]
ttp://dixq.net/rp/2.html
これの値でかいほうにすりゃいんじゃね

939 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 03:26:20.84 ID:DqTTW319]
これ関係ないキーまで256回もチェックするのが気になるのだが
256回程度じゃ問題ないという考えなのか

あとその上の奴は4塊目
普通
else if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
else if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
入れるもんじゃないのか

もしそうするとその次の
if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう

それとその後の
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
だが
left_key_state == PUSH && 、right_key_state == PUSH && いるかね
こまけえこたあいいんだよ?


940 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 06:05:58.86 ID:xbXr2Nkf]
>>939
「これ」とか「その」とかってなんだよ、ちゃんとどこか安価でもしろよ
答える方に探せってか?
幸いレスが近いから>>936のことだろうって分かるけどよ
あと4塊目ってなんだよ、そんな言葉初めて聞いたよ

簡単な例示のプログラムなんだから
こまけぇこたあいいんだよでおkだろ
おまえの言ってることはあってるけど、動作的には同じだろ?
条件を明示的にわざと条件を冗長に書いて
コードの可読性を上げるという意味はある
nに1〜4までしか入らないswitch文でも
switch(n){
case 1: break;
case 2: break;
case 3: break;
default: break;
}
とは書かんだろ?

>これ関係ないキーまで256回もチェックするのが気になるのだが
全部のキーを調べないと汎用性がないだろ
もし、使いたいキーが増えたらその都度増やすのか?
べつにそれでもいいけどさ
あと、普通はGetHitKeyStateAll使うだろ



941 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:09:53.01 ID:DqTTW319]
普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ

あと安価付けるの照れ臭いんだ
察してくれよw

4塊目ってのは言い方が思い付かなかったんだから分かるだろと思って俺が勝手に作ったんだよ
分かるだろ?w
まあ何か言い方はあるんだろうけどすぐに思いつかなかった
まあそれだけのことだw

明示的にわざと書いてとは言うがこの場合は書かなくても分かると思ったんだよ
まあ人それぞれだろうが

全部のキーを使わないと汎用性ないだろとは言うがだからといって256個も使うわけねえだろって思ってw
大体方向キーとボタン数個だけだろ、使うとは言っても
いくら汎用性がないとはいえ調べる必要ない奴の方が圧倒的に多いのに256個もチェックする必要があるかねって思っただけw


942 名前:名前は開発中のものです。 [2011/03/15(火) 09:12:40.30 ID:gnI9eXa6]


943 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:14:29.72 ID:DqTTW319]
だから
> if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう
は置いといてもだ

>     if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
>     if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }

> left_key_state == PUSH && 、right_key_state == PUSH &&
はすぐ上に同じ条件があるんだからいるかね?って思っただけ

まあ別に大した問題ではないんだけどねw
それでも細かい俺は気になったの
細かいこと気にし過ぎ?w

944 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:23:09.01 ID:7Ujss6hx]
まぁ情報が少なくて困るよりは、
教科書どおりの良い情報と、流し見でいい発展情報とがあるほうが、いいんでないかい

教科書と発展とが混ざってわからなくなると困るけど、そこはみんな
鋭くツッコミ入れてくれるところだしな

945 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:34:29.08 ID:xbXr2Nkf]
>>943
気にしすぎ
あとイチイチ語尾に芝はやすのうざい
真面目にレスする気なくす

>普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
言えよ

>あと安価付けるの照れ臭いんだ
>察してくれよw
ムリ

あとはコーディング規約をどうするかって話だけだ
そこは人と場合それぞれで明確な解答はない
以上、もうお前にはレスしない

946 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:47:22.67 ID:LRL3QteV]
bool Input::KeyDown(BYTE key)
{
return (m_keyInput[key] & ~m_keyInputPrev[key]) == 1? true:false;
}
俺は上みたいにしてるよ
前フレームのをmemcpyで配列毎コピーすれば良いと思う

947 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:12:36.70 ID:DqTTW319]
>>945
今回は敢えて言う必要ないかなと思っただけだよ
レスしねえなら最初っからすんじゃねえカス

948 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:35:06.21 ID:sVXS+gQF]
相手からの反論がないならと安心して罵倒か
カスはお前だろw

949 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:47:54.36 ID:xUaeA1H3]
>あと安価付けるの照れ臭いんだ
>察してくれよw

無茶言うなw

950 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 16:58:39.83 ID:18Xm69u5]
プリコンパイル済みヘッダって、DxLibくらいじゃ効果薄いよね?



951 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 17:11:32.96 ID:KXScCzgE]
とある人の受け売りだけど、VCにてビルドを超高速化する方法

自作のヘッダファイルにはインクルードガードを施す

cppファイルを1つを除いて全部「ビルドから除外」する

そして、その1つのcppファイルにそれら「ビルドから除外」したcppファイルを全部インクルードする

ビルドする

サラマンダーよりはやーい

プリコンパイル済みヘッダはシラネ

952 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 17:14:05.00 ID:fAuDpb2f]
>>951
最後なんなんだよ。
俺とやる気か?あ?

953 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 18:01:11.55 ID:nteT3Zz7]
>>950
めっちゃ早くなってるよ
アホだから設定苦戦したけど。

954 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 19:05:01.55 ID:QQAoE1bu]
>>951
それって1ファイル書き換えただけで全部の.h/.cppをコンパイルし直すことにならないか?

955 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 19:44:40.83 ID:KXScCzgE]
>>954
よっぽどの量でない限り、一つのファイルのコンパイル速度はコード量に左右されないよ
ビルドで時間使ってるのはプリプロセスやobjのリンクで、それをすっ飛ばせるとかなり早くなる
cppが多いプロジェクトを書き換えると感動すると思うよホント
正直今まで人に教えるのを勿体無いと思ってたレベル

956 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:12:52.73 ID:Q7+nM0HN]
つうか、普通にそういうのオフに出来るオプションあるんじゃないの?
いや、詳しくは知らんけど。

957 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:32:14.80 ID:xbXr2Nkf]
>>951
includeの順番間違えて
ビルド出来るようにするまでちょっと戸惑ったけど
むっちゃくちゃ速くなった、ありがとう


958 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:38:02.64 ID:hTtiuP+j]
#includeでcppか……違和感はあるな

959 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 21:01:01.48 ID:44jcDk3e]
LL系言語のloadfileみたいだなw

960 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 15:22:41.05 ID:ywftU18L]
理に適ってるかどうかは置いといて、非合理的ではある



961 名前:名前は開発中のものです。 [2011/03/16(水) 16:22:15.68 ID:zS54Nj1q]
なぜ非合理的なのでしょうか?

962 名前:名前は開発中のものです。 [2011/03/16(水) 16:25:58.79 ID:zS54Nj1q]
つか、理にかなってないかわからないけど
非合理的って矛盾してね?

963 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 16:26:24.95 ID:do/XMJJp]
合理的かどうかは知らんが、スピードを優先するために何かを犠牲にするって話だよね
何かってのは例えば>>957がたどったような手間とか

964 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 18:52:54.43 ID:UW09KiLI]
>>963
オレがその>>957だが、ビルド出来るようにする手間より
ビルドにかかる時間の短縮のほうがでかかったよ
すげ〜得した
>>955の言うとおりcppファイルが沢山あるプロジェクトほど効果はデカイ
>>960のレスこそ非合理的って話だな

965 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 18:53:19.02 ID:gTLtkOfi]
まぁぶっ飛んだ裏技的やり方だからね
C++の仕様を理解できてコードの依存関係を頭の中でちゃんとイメージ出来る人だけ
楽する手段としてつかって欲しい感じ

966 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:07:37.43 ID:BjnjOb1q]
このやり方を支援するプラグインがあればいいのにな

967 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:17:41.84 ID:i6gMh4cT]
てか、俺からしたらそんなにビルドに時間がかかるほどのゲームを作ってる人がいるのに驚きだ。
しかもDXライブラリを使って? いったいどんな規模のゲームなんだ。

968 名前:名前は開発中のものです。 [2011/03/16(水) 19:17:48.09 ID:BC+pXFRw]
デフォでオフだけど並列でビルドするオプションがある
すごく早くなる

969 名前: [―{}@{}@{}-] 名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:31:14.46 ID:wm2Br6SF]
// main.cpp
#include <stdio.h>

#include "sub_1.cpp"
#include "sub_2.cpp"

extern int get_sub_1_val(void);
extern int get_sub_2_val(void);

int main(void)
{
  printf("sub_1_val: %d\n", get_sub_1_val());
  printf("sub_2_val: %d\n", get_sub_2_val());
  return 0;
}

// sub_1.cpp
static int val = 10;
int get_sub_1_val(void){ return val; }

// sub_2.cpp
static int val = 20;
int get_sub_2_val(void){ return val; }

sub_2.cpp(1) : error C2370: 'val' : 再定義 ; 異なるストレージ クラスです。
sub_1.cpp(1) : 'val' の宣言を確認してください。


970 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:47:41.09 ID:zS54Nj1q]
なるほどね
Cだと駄目だね
無名空間とかもそうなるのかな?



971 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:50:17.06 ID:gTLtkOfi]
>>967
そんな大規模じゃなくてもcppファイルが多くて…… STGなんだけど、
自作計算関数、自作システム関数、保存データ管理関数、敵クラス、弾クラス、その他オブジェクトクラス、
ゲームシーンクラス、メニューシーンクラス、リソース定義……とか
全体の行数はたった6000行ちょい(空改行除く)

>>969
extern宣言してないグローバル変数の衝突は仕方ない……
てか考えると思ったよりも問題の出るケース多そうね……

972 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 20:02:03.60 ID:1Ae82QgD]
>>968
教えてくれてサンクス
一瞬で終わって驚いた

973 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 21:19:17.62 ID:tAHP0ur9]
全体の行数ってどうやったら数えられるんだっけ?

974 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 21:19:47.26 ID:tAHP0ur9]
書き忘れた、もちろんVCの話で…

975 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 23:33:53.97 ID:do/XMJJp]
行数カウントツールが、フリーソフトページにあるよね

並列ビルドはぐぐったけど見つからなかった
複数プロジェクトを同時ビルドってのは初期値が2で最大値が32みたいだけど、これは違うよねきっと

976 名前:名前は開発中のものです。 [2011/03/17(木) 01:14:09.79 ID:jlNSzrqd]
VCに「複数プロセッサによるコンパイル」という項目がある

977 名前:名前は開発中のものです。 mailto:sage [2011/03/17(木) 04:33:38.84 ID:FsTg2Syb]
プロジェクトのプロパティ>構成プロパティ>C/C++>全般>複数プロセッサによるコンパイル
だな
VC++2010にはあるけど、VC++2008には無いみたいだな

978 名前:名前は開発中のものです。 mailto:sage [2011/03/17(木) 21:28:02.94 ID:USLN5jlJ]
2008なら/MPオプションを直接与えればいい






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef