DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 http://homepage2.nifty.com/natupaji/DxLib/ 【関連スレ】 C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net http://peace.2ch.net/test/read.cgi/gamedev/1420939171/ ゲームプログラムなら俺に聞け32(c)2ch.net http://peace.2ch.net/test/read.cgi/tech/1441693570/ ●DXライブラリではなくDirectXの質問ならこっちへ 【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net http://peace.2ch.net/test/read.cgi/tech/1418438785/ あとはシングルスレッドの場合はどうしてもロード時に固まってしまうだろうから、マルチスレッドでロードを行うようにするのはどうだろうか? マルチスレッドということはC++11を扱うということですね Core i7を乗せてるのでCore UPUに対応したゲーム開発も興味はあるが 技術的に敷居が少し高いので今はまだいいかな 最新のC++コンパイラも必要になるし ゲームのプレイヤーがCore i7 や Core i5のCPUを乗せてないと威力は発揮されない 短い場合(メモリー上にwave展開しない) SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS ); 長い場合(ストリーミング再生) SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ); どちらか書く ちなみに画像や音声のマルチスレッド読み込みはDXライブラリ標準機能で SetUseAsyncLoadFlag(TRUE)使えば簡単よ C++11とか使ってませんが、ロード画面作るときにマルチスレッドを使いました。 あくまでロード時に凍るのを防ぐために使用するのでCPUがどうとかは無いですよ。 process.hをインクルードしてResumeThreadさせるだけで実装できます。 何故だろう、急に挙動が変わった。 sizeが0を返すからファイルが見付からない訳じゃないと思うのだけど。 void* readbin( char *filename) { int size ,rsize ,h; char *ptr; if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); ptr = (char*)malloc(size+1); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); rsize=FileRead_read(ptr ,size ,h); printfDx( "%s : %d/%d\n" ,filename ,size ,rsize ); FileRead_close( h); return ptr; } > ptr = (char*)malloc(size+1); この+1はなに? 本題とは関係ないけど DXLib 知らずに覗いてるだけでどう挙動が変わったかわからんので >>213 の疑問には答えられないが、 >>214 おそらくファイルのく中身は表示などに使う文字列だという前提だと、 文字列の終端は NULL で止める必要があるのでその 1byte 分を余計に確保している。 (今どきのコンパイラは malloc での確保と同時に \0 埋めをしてくれるのかもしれないけどちょっと危ないな。) readbin() という名前からして文字列と言っても中身はバイト列と推測できるので、 ファイルの中身には終端 NULL を入れずに記録しているんだろう。 +1は苦し紛れにあーだこーだいじる過程でダメ元で付加してみたのでした。 末端に不定の1バイトが付加されるので無駄な容量食いではありますが、危険という認識はありませんでした。 早急に削除します。 そして、自己解決しました。if文の連結順序を誤解していました。何故今まで動いていたんだ・・・。 if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); ↑これは↓こうですね。 if ( (size = FileRead_size( filename )) == -1 ) errmsg( NOTREAD ,filename ); if ( (h = FileRead_open( filename )) == 0 ) errmsg( NOTOPEN ,filename ); お騒がせしました。 DXライブラリはgifアニメーションを再生できないのでしょうか? DXライブラリ以外ならgifアニメ再生できたりするのでしょうか? 「こう記述すればできる」など教えてください gifをそのまま読み込んで表示はできなかったはず 連番画像に変換するか、もしくは動画にするかだな >>219 割とむつかしい事しなきゃ動画像は表現できないんですね・・・ 爆発エフェクトとか魔法エフェクトとかgifで表現したかったんですが、少し億劫になってしまいました 回答ありがとうございました LoadDivGraph使えば連番画像が配列に入るから簡単やで っていうか簡単なエフェクトなら回転拡大縮小やブレンドパラメータの変更で表現できるんじゃない? >>218 一応C#版ならサンプル転がってるね 規制でurl貼れないけど検索すればすぐ見つかる でも221が言うようにDivGraph系使った方が楽だと思う なるほど初期化とかのタイミングで一旦展開するのがエンジン的には普通なのか 最初から専用形式化アニメGifくらいにしか出力できないツールとかでもない限り、 手間は大して変わらんだろうしな アニメーション用の画像を一枚にまとめた後ってLoadDivGraphでもDrawRectGraphでもアニメーションにできるけど どっちの方が軽いとかってあるのかな 内部的にはほぼ同じ処理だと思う どちらも一度のドローコールでまとめて描画するから速度はほとんど変わらないはず FOR-NEXT 10億回ループまとめw追加&補正その4w DarkGDK(Core i7 4770K).. 1.7秒 DarkBASIC(Core i7 4770K). 1.8秒 JavaScript(CeleronG1820) 2.3秒 DarkGDK(CeleronG1820).. 2.3秒 DarkBASIC(CeleronG1820). 2.5秒 AGK ver1.0(CeleronG1820).. 33.0秒 H.S.P. 3.4(CeleronG1820). 126.0秒 (*1) *New! JavaScript(PS4Slim). 130.0秒 (*2) EZ-BASIC(PlayStation2). 227.0秒 (*3) 99BASIC(Core i7 4770K). 330.0秒 99BASIC(CeleronG1820). 463.0秒 プチコン3号(new 3DS LL). 673.0秒 プチコンmkII(new 3DS LL) 20300.0秒 (*4) プチコンmkII(new 3DS LL) 20500.0秒 (*5) (*1) H.S.P.、簡易インタープリター言語 (*2) CPUリソース割り当てが極端に少ないか、サブCPU担当と予想される (*3) SCPH-90000、BASIC STUDIO パワフルゲーム工房、ループ分割 (*4) スケーリングあり、ループ回数を100分の1にして、計測結果に100を掛けたもの、ループ分割 (*5) スケーリングなし、ループ回数を100分の1にして、計測結果に100を掛けたもの、ループ分割 DrawRotaGraphやDrawExtendGraphで画像を拡大するとかなりジャギジャギになってしまうんですけど拡縮のアルゴリズムを変更みたいなことはできないんでしょうかね? SetDrawMode(DX_DRAWMODE_BILINEAR) >232 リファレンスで確認したらまさにそのことが書いてありますね… ありがとうございます >>232 定数がラベル化されてて覚えたくないっぽい感じでいいなw 初心者なんですけど、メインループ内で音声ファイルをboolフラグ使って再生すると、 音声ファイルが再生終了するまで全体の動きが止まってしまうんですけどこれどうやったら回避できますかね? >>236 if (collision == true) { PlaySoundMem(Sound_Bar_Handle, DX_PLAYTYPE_NORMAL, TRUE); collision = false; StopSoundMem(Sound_Bar_Handle); } ちなみにこんな処理です >>238 なんとまあ・・・ ありがとうございました リファレンスしっかり見てから質問するようにします! ヒカル TV出演「年間5億は稼ぐ勢いですね」 https://www.youtube.com/watch?v=G7qL6ftpets 第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ! https://www.youtube.com/watch?v=asF2wQ2xhjY& ;t=61s ユーチューバーの儲けのカラクリを徹底検証! https://www.youtube.com/watch?v=FUSb4erJSXE& ;t=504s 【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開! https://www.youtube.com/watch?v=Y7DAQ0RKilM& ;t=326s 誰も言わないなら俺がYouTuberのギャラ相場を教えます https://www.youtube.com/watch?v=E4q-vaQh2EQ& ;t=118s YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法 https://www.youtube.com/watch?v=Fr0WXXZRMSQ 最高月収5000万円だとさ。年収じゃなくて「月収」な おまえらもyoutubeに動画投稿したほうがいい やろうと思えばスマホがあればできるぞ 最低2年はやらないとここまではいかないだろうけど才能とアイデアと 企画力と継続力があればが大儲けできる可能性がなくもない まだまだ他の職種に比べれば競争率は低いからオススメ 顔出したくないならラファエルみたいに仮面つければいい UnityやUE4がある今日、DXライブラリで作るメリットってなんだろう? 自分、DXライブラリで開発したいなと思い色々と調べていたんですが、調べれば調べるほど、UnityやUEが出てきてちょっと悩み中です。 PCが貧弱でUnityやUEだと重い、ぐらいかな 今から勉強するならあまりメリットは無いと思う >>243 Unity, UE4 は作者からコードを引き離す方向で進化しているのに対して、 DXlib はガッツリコードを見せた上で分かりやすくという方向で、ある意味教育的なもの。 一度 DXlib で組めていれば GUI ツールでも中身がどう動いているか想像付くので コードの内容もきっちり学びたければ無駄にはならないと思う。 >>243 俺の場合はVBで使えるからという理由だった >>243 こういう質問する奴はどうせUnity使うんだろw Unityの方がグラ綺麗だし、アセットストアで何でも売ってる ふんっ! せいぜいユニティちゃん使ってろよ ちっとも全然まっっっったくうらやましくなんかねーからw SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);で音をストリーミング再生するよう設定してるのに タスクマネージャでディスクの欄を見ていても殆ど0%から動きません メモリ使用量は1GB→60MBになったのでちゃんとストリーミング再生にはなってると思います ストリーミング再生はディスクに負荷がかかると思っていたんですが、最近のHDDだと特に問題無いんですか? そら無能じゃなきゃこんな板来ないしこんなライブラリ使わんからな >>242 スマホにパッドがあったのか 嬉しい気もするけど携行性を重視した端末にでかい周辺機器をつなぐって奇妙な発想だな 最近だとレイフォースがパッド対応で話題になってなかったっけ ゲーム作りどころかプログラミング初心者です。 DXライブラリを用いてのゲーム製作を考えているのですが、C++の知識はどの程度必要になりますか? C++の学習は早々に切り上げてゲーム製作のアルゴリズムやDXライブラリの使い方等を学習したほうがいいんですかね? ちなみに今はC言語の苦C一通り終わらせて独習C++の半分くらいまでC++の学習を進めてます。 わからないところが出てきたらC++の学習に戻ればいいんじゃない >>256 ではある程度C++について学んだ後はさっさとゲーム製作の学習に入っておkってことですかね? ゲーム製作で必要になる主なC++知識って何なんでしょうか >>258 いやいやあんまりからかわないでくだしあ… C++のクラスなんかの知識は必要だと聞いてます C++ってやや低級気味な言語だしオブジェクト指向なんかガン無視でフォートランみたいなコード書いても何も問題ない DXライブラリ使うならC++知らず、C言語の知識のみでも何とかなりそう そもそもCで出来なくてC++で出来ることってクラス以外に何があるんだっけ 分かって使うなら C++ の方が便利機能があるのできれいなコードが書けることが多いけど 知らないで無理に C++ を使うととんでもないコードができるので、それなら素直に C で書いた方がいい。 あと C++ クラスでデータ管理していて DXLib に渡すときに無茶なキャストをかけるとかいらない操作をあれこれしそうな予感がする。 >>261 が言ってるとおりコンパイラが C++ だとしても別に C++ の機能を無理に使う必要はないし、普通に C のコードが通る。 それを踏まえた上で C と C++ を比較するなら、 ゲームでもデータの格納、その操作が頻繁に起きるから C++ でクラスが使える点は非常に大きいと思う。 メモリ管理、文字列の扱い、ファイルなどの I/O 操作はどう考えても C++ が楽。 C++ だとループ処理もイテレータを使えるのが大きい。かなりすっきりする。 本当は例外が扱えるのも大きいけど DXLib 使うならライブラリ側の戻りを見とけばいいから余り問題はないか。 ●●●ケネディ大統★領は何故、死なねばなら★なかったのか?●●● http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/53 この掲示板(万有サロン)に優秀な書き込みをして、総額148万円の賞金をゲット★しよう!(*^^)v http://jbbs.livedoor.jp/study/3729/ →リンクが不良なら★、検索窓に入★れる! >>264 詳しい回答ありがたや… C++の知識は正しく用いるなら便利だけど必須ではないという認識でよろしいですかね。 とりあえずC++のクラス全般について一通り学んだらDXライブラリとかゲームプログラムの勉強に入ろうと思います。 他の方も回答してくれた方ありがとうございました また何かあったら質問するかもしれませんがその時はよろしくお願いします ジェネリック・プログラミング 処理の抽象化 デザインパターン アルゴリズムによる計算量の見積もり。 N に比例する、線形探索をしない。 ハッシュ O(1)、2分探索 O(log N) Boost >>267 役に立たないとは言わないがプログラミング技術が好きな人向けで ゲーム作る事と乖離してる 計算量くらいは意識しないとまともなゲーム作れないだろ ループ条件分岐さえあれば組めないプログラムなんてないんやで 職業プログラマじゃないんだから、まずは動くもんが作れればいいんだってば。 それで遅かったらもっと勉強していい方法見付ければいいわけで。 個人製作レベルの小さなゲームだとオブジェクト指向の概念自体いらないっちゃいらないとは思う でもわかりやすく作る武器としてC++を覚えたいなら 個人的な現状の感想を書いてみると ・いる クラスとオブジェクト指向の概念、継承、包含、コンストラクタ、getterとsetterの概念、仮想関数(抽象クラス、多態性) ・いらないんじゃね? テンプレート、演算子のオーバーロード、標準ライブラリ(std::vectorはあってもいいかも?)、多重継承 ゲーム作る上ではこんな文法より当たり判定とか回転とかのアルゴリズムの方がよっぽど大事ってのは思う 重要なのは何を作るか詳細な挙動やパラメータまで考えることだろ 技術的なことはいざとなったら誰かに相談すれば済む クラス(構造体+メンバ関数)と継承は知っといた方が得だと思う std::vectorは超絶におすすめ 変なエラーやバグ(配列の不正アクセス)が無くなる 多態性とかテンプレートは、二作目作るとき等に勉強すると「こんな便利な方法があったのかー」と感動するし、理解しやすい >>272 いる項目の半分くらいはまだ未習ですね… 当たり判定とか回転とかのアルゴリズムってどこで勉強すればいいんですかね? 定番の参考書みたいなのがあったりするんでしょうか >>275 クラスはある程度文法学習し終わりました std::vectorはなんのことかさっぱりです 当たり判定は別にいいんだけど本当に難しいのは判定後の反発、押し出し処理 いまだにメーカーごとに意見が分かれる部分 有名な物理エンジン使ってるゲームでも めり込んでおかしな動きしてることあるからな >>278 Colision detectionで一発解決 そう、unityならね(´・ω・`) >>279 まじか よくわからなくなってきたので中途半端でやめずにとりあえずC++を一通りやってからゲーム制作勉強します… いくらC++を勉強したところでDXライブラリはゲームエンジンとしての限界点が低いから とくにグラが汚いから覚悟しておくことだ 最新の C++ 11 できっちり組んだとしても、遊ぶ人から「これレトロゲーム?」って言われる(笑) デフォのトゥーンは輪郭線が綺麗で好きだな いくつかトゥーン作ったけど結局デフォに落ち着いた javaやC#の標準ライブラリですら rectangleクラスのintersectで簡易当たり判定は楽にできるみたいなんだよね 思想の違いだとは思うがゲームライブラリならそれくらいあってもいいとは思った MFCにCRectクラスのIntersectRectがあるよ まあしかし四角の当たり判定がないくらいで不便って言うのなら c# に乗り換えたほうがいいと思う c++は全般的に使い勝手あまりよくないから そういえば3Dの衝突判定機能はいくつかあるけど2Dは無いんだな pythonで入力ゲームを作ってます。 DXライブラリの、 VisualC# 用パッケージ で、ゲームパットは正常に動きますか? pygameのゲームパットが難しいので、そちらが使えたら使おうかと思いました。 普通に使えた。 32bitだから64bitにしたらの不安が有ったけど、心配し過ぎでした。 お騒がせしました。 どうも、です。 リファレンスのTellMovieToGraphのサンプルを参考に LoadGraphでaviファイル読み込んでDrawGraphで映像を描画するプログラムを試してみたら タスクマネージャで確認したところ動画の再生中はディスク使用量が常に100%近くなってしまうのですが これはそういうものなんでしょうか? DXライブラリを使ってC++で アドベンチャーゲームを作ろうと思っています。 今時のノベルゲームでは無く、ファミコン時代のアドベンチャーゲームです。 今まではアクションゲームやシューティングゲームを作って来まして、 アドベンチャーは初挑戦なのでちょっと不安なんです。 企画だのシナリオだのの前に、まずはシステムや アドベンチャーゲームを構成するプログラミングから考える必要がありますよね? しかし、現段階でそれらを考えると、完全に独学のオリジナルになり、 凄く面倒なものを完成させてしまうかもしれません。 自分としては、ひな形とまでは言いませんが、 参考にできるものや、定石を学ぶ方法を模索しております。 なにかありませんか?サイトでも書籍でも構いません、教えて下さい。 githubにソースコード公開して作りながら適度に聞けば? >>294 ありがとございます ただ、自分はどっちかっていうと 考え方を知りたいんですよ アドベンチャーゲーム制作する上での フラグの考え方や、変数の使い方です。 考えてみると、アドベンチャーゲームって フラグめちゃ必要じゃないですかね 例えば、調べる項目が増えていくじゃないですか、 話すで選択できる相手とかも。 そして、キャラの台詞も、 質問二回目、三回目で返答内容変えたり。 そーいうの、どう考えて組み立てていけば いいのかなって、、 RPGのイベントも話しかける相手や時期、話しかけた回数とかでサブイベント分岐させたりするじゃん アドベンチャーゲームだからって専用の特殊な考え方やフラグ管理って必要ないと思う 定石は無く、ゲームの仕様それぞれに合わせて考えるしかない 仕様が複雑ならより汎用的でいちいち面倒くさい重厚な構造になるし、 仕様が単純なら多少ごり押ししたような方法で手早く必要条件を満たす そう、答えなきところに答えを出すのがゲームプログラミングというものだ >>296 アドベンチャーゲームプレイしたことある? ノベルじゃ無くてさ。 各シーン(場所)で出現する項目数も決まって無いし その項目数もある項目を通過するたび項目数が増えるし、 その項目だって、何層もあった先の項目だったりする。 それが各シーンで統一できない状態なわけで、、、、 RPGなんかのフラグと同じじゃない、そんなシンプルに出来ない。 >>297 やはりゴリ押しかあ、、、、 場面ごとに専用のフラグや処理を作ると考えるんじゃなくて 進行フラグや取得アイテムに応じて出す選択肢を変えると考えるんだよ なので仕組み的にはRPGとかと同じと言える あとはスクリプトデータのフォーマットとか作り方の問題なので それこそノベルゲームエンジンを参考にすればいい ゲームの詳細が決まってないような段階で プログラミングを抽象化するのは無謀な上に当事者は歴戦の勇士でもないという それならいったんごり押しからの脱構築しかあるまい そうやって作られたサンプルは動く仕様書として人に意見を聞くにも役に立つ >>298 >RPGなんかのフラグと同じじゃない、そんなシンプルに出来ない。 アンタの作ったRPGってちょっとした分岐も無い完全一本道でつまんないレールプレイングゲームになりそうだな フラグはDBにまとめれば管理手段はどれも共通にできる sqliteあたりを一通りさわれば可能性を感じられるかと フラグ・クラス(というかセーブデータ・クラス)を作って、シリアライズ・デシリアライズする方法が楽だな C#のシリアライザーやUnityのJsonでクラスがあれば、クラスまるごと簡単にファイル保存・読込できる フラグがいくつ増えてもセーブ・ロードのコーディングしなくていい 俺が書いたプログラムを毎回ウイルス扱いして止めようとするのはやめろノートン! 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 YF53OEVNGR GetUseDirect3D11Device GetUseDirect3D11DeviceContext なんでも出来るぞ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる