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/
探検
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/01/05(火) 23:44:29.77ID:fkNSYSkc
2016/02/29(月) 23:23:38.33ID:leqKH6jq
シャープDXってなんぞ。
初心者にオススメの1つではあるが、これで作られた市販ゲームもあるくらいには幅広いよ
初心者にオススメの1つではあるが、これで作られた市販ゲームもあるくらいには幅広いよ
2016/03/01(火) 05:56:45.53ID:+UwmpDoJ
C言語で書きたくてwindowsAPI、グラフィックAPI触りたくない人向け
2016/03/01(火) 15:06:45.22ID:YBHnpXlS
確かにC++ぽく作られてないのは嬉しい。
他の人のソースコードとかが解読しやすい。
他の人のソースコードとかが解読しやすい。
2016/03/02(水) 02:56:18.34ID:ObT9YhJL
俺もライブラリ作ってやるぜ!と意気込んで、
グラフィックと入力と音周りが出来たあたりで、DXライブラリで良いんじゃね?と気づいて戻ってくる感じ
グラフィックと入力と音周りが出来たあたりで、DXライブラリで良いんじゃね?と気づいて戻ってくる感じ
2016/03/10(木) 14:06:18.95ID:hKSGgP4O
キャラクターIDをソートする場合なんですけど
こういう場合はやっぱりバケットソート的なアルゴリズムが最速なのでしょうか?
条件
・10000体のキャラクターがいる(ID0〜ID9999)※ID0番は空欄扱いの時に使うので実質9999体
・それぞれのキャラクターはスコアを持ってる(とりうる値はunsigned charの0〜255)
・ソートする時はスコアの低い順に並べる
・スコアが同点ならIDが若い順に並べる
自作した処理の概要
int baketu[10000*256];
int kekka[10000];
まず配列baketu[]を0クリアして
for(int ID=1;ID<10000;ID++){
baketu[(IDのスコア*10000)+ID] = ID;
}
int x=0;int i=0;
while(x<9999){
if(baketu[i]>0){kekka[x]=baketu[i];x++;}
i++;
}
こんな感じです
int baketu[10000*256] ←なんかこれで10メガくらい使うみたいですし
もっとスマートなやり方は無いものでしょうか?
ただ、かなり頻繁に呼ぶ処理なので最優先したいのは速度です
こういう場合はやっぱりバケットソート的なアルゴリズムが最速なのでしょうか?
条件
・10000体のキャラクターがいる(ID0〜ID9999)※ID0番は空欄扱いの時に使うので実質9999体
・それぞれのキャラクターはスコアを持ってる(とりうる値はunsigned charの0〜255)
・ソートする時はスコアの低い順に並べる
・スコアが同点ならIDが若い順に並べる
自作した処理の概要
int baketu[10000*256];
int kekka[10000];
まず配列baketu[]を0クリアして
for(int ID=1;ID<10000;ID++){
baketu[(IDのスコア*10000)+ID] = ID;
}
int x=0;int i=0;
while(x<9999){
if(baketu[i]>0){kekka[x]=baketu[i];x++;}
i++;
}
こんな感じです
int baketu[10000*256] ←なんかこれで10メガくらい使うみたいですし
もっとスマートなやり方は無いものでしょうか?
ただ、かなり頻繁に呼ぶ処理なので最優先したいのは速度です
2016/03/10(木) 14:23:40.45ID:chbXq+m7
普通にクイックソートでいいのでは
ソート時間の比較
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/speed-compare.html
ソート時間の比較
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/speed-compare.html
2016/03/10(木) 14:44:23.96ID:w2U+RHTk
そもそも頻繁に呼び出すなら
いちいちソートしないでソート結果をずっと保持する。
オブジェクトの追加削除が頻繁なら、
ソートではなく、正しい位置に差し込むようにする。
いちいちソートしないでソート結果をずっと保持する。
オブジェクトの追加削除が頻繁なら、
ソートではなく、正しい位置に差し込むようにする。
2016/03/10(木) 14:44:30.14ID:HzV85MQu
RPGなどのスクロールゲーは、描画可能画像(マップサイズ)を作ってそこに描画した後に、ウィンドウに描画すればいいのですか?
速度やメモリを考えると、やめた方がいいですかね
速度やメモリを考えると、やめた方がいいですかね
2016/03/10(木) 15:25:16.50ID:hKSGgP4O
2016/03/10(木) 21:20:58.41ID:w2U+RHTk
どっちも2,560,000ループだから変わらないね。
可読性なら、俺は45のほうが解りやすかった。
(というか45を読んでようやく41がなにをしたいのか解った)
スコアの変動幅が少ない(=順位の変動が少ない)なら、
スコアが変わるたびに前後のスコアと比較して入れ換えるやりかたでもいいかな
スコアが頻繁に変わるなら
数秒毎にまとめてquicksort
可読性なら、俺は45のほうが解りやすかった。
(というか45を読んでようやく41がなにをしたいのか解った)
スコアの変動幅が少ない(=順位の変動が少ない)なら、
スコアが変わるたびに前後のスコアと比較して入れ換えるやりかたでもいいかな
スコアが頻繁に変わるなら
数秒毎にまとめてquicksort
2016/03/11(金) 00:14:12.32ID:0nAdN0wU
2016/04/22(金) 20:37:11.38ID:OBq0v7em
スマホ版DXライブラリ使ってみた人いる?
2016/04/22(金) 23:20:09.41ID:SApaeOWl
純粋なc#でDXライブラリ作りたいと考えてる
2016/04/23(土) 15:51:01.47ID:dvo5BuGI
フレームレートを上げてゲームの進行の高速化をしたいけどどうすればいいの?
setgraphmodeの第4引数に値をぶっこんでも何も起きん
setgraphmodeの第4引数に値をぶっこんでも何も起きん
2016/04/23(土) 21:52:14.10ID:9QnQQ2rD
> 画面モードを設定する
> int SetGraphMode(int ScreenSizeX,int ScreenSizeY,int ColorBitDepth,int RefreshRate=60)
> 戻り値
> DX_CHANGESCREEN_OK 画面変更は成功した
> DX_CHANGESCREEN_RETURN 画面の変更は失敗し、元の画面モードに戻された
> DX_CHANGESCREEN_DEFAULT 画面の変更は失敗しデフォルトの画面モードに変更された
> DX_CHANGESCREEN_REFRESHNORMAL 画面の変更は成功したが、リフレッシュレートの変更は失敗した
とりあえず戻り値の確認しとけ。
あとはフレーム管理をどうやってるかによると思う。
垂直同期に丸投げしないで自前でフレーム管理してるなんてオチは……流石にないか
> int SetGraphMode(int ScreenSizeX,int ScreenSizeY,int ColorBitDepth,int RefreshRate=60)
> 戻り値
> DX_CHANGESCREEN_OK 画面変更は成功した
> DX_CHANGESCREEN_RETURN 画面の変更は失敗し、元の画面モードに戻された
> DX_CHANGESCREEN_DEFAULT 画面の変更は失敗しデフォルトの画面モードに変更された
> DX_CHANGESCREEN_REFRESHNORMAL 画面の変更は成功したが、リフレッシュレートの変更は失敗した
とりあえず戻り値の確認しとけ。
あとはフレーム管理をどうやってるかによると思う。
垂直同期に丸投げしないで自前でフレーム管理してるなんてオチは……流石にないか
2016/04/23(土) 22:17:31.43ID:kA71q19C
SetWaitVSyncFlag(FALSE)
2016/04/23(土) 23:16:26.28ID:O3+kZkoe
ゲームループを秒間60回さなくても高速処理できちゃうの?
元より軽く作って、普段はウエイト入れてるだけにしないといけないんじゃないかな。
元より軽く作って、普段はウエイト入れてるだけにしないといけないんじゃないかな。
2016/04/23(土) 23:49:59.85ID:9QnQQ2rD
>>53
何を疑問に思ったが知らんが、最初からそういう話じゃねぇの
何を疑問に思ったが知らんが、最初からそういう話じゃねぇの
2016/04/24(日) 08:09:36.09ID:5496X3BE
2016/04/24(日) 09:15:29.66ID:nXkxGb8d
いやだからフレーム管理方法なんて複数あるんだから
使い分ければいいじゃない
使い分ければいいじゃない
2016/04/24(日) 09:50:30.41ID:joRVkrHg
>>55
頭はゲームの内容を考えることに使った方がいいと思います
頭はゲームの内容を考えることに使った方がいいと思います
5853
2016/04/26(火) 22:34:03.08ID:x+Gf6b1S2016/05/04(水) 00:59:12.39ID:vZnLncWj
まあ使う機会があるかどうかは全く別の話だしなー
2016/05/06(金) 14:02:59.70ID:l2ANUrOw
今更だけど、リフレッシュレート変えるのはアカンだろw
垂直同期もオフにすんなw
根元でフレーム間の時間経過を定数倍するとか、
更新処理を複数回呼ぶとかいろいろやり方あるだろが
垂直同期もオフにすんなw
根元でフレーム間の時間経過を定数倍するとか、
更新処理を複数回呼ぶとかいろいろやり方あるだろが
2016/05/06(金) 14:26:18.62ID:jbS1d0cx
2016/05/06(金) 15:26:36.70ID:l2ANUrOw
2016/05/06(金) 19:13:13.73ID:jbS1d0cx
固定するならタイマー管理なのかねぇ
最近は120Hzとかのモニタも珍しくないし
>入門サイトにありがちな経過フレーム数を1とする可変更新方式
どんなん?
最近は120Hzとかのモニタも珍しくないし
>入門サイトにありがちな経過フレーム数を1とする可変更新方式
どんなん?
2016/05/06(金) 21:28:30.41ID:Grw/W8UC
俺も垂直同期切ってタイマー管理だな
75ヘルツのモニターで早送りになった経験があるから
75ヘルツのモニターで早送りになった経験があるから
2016/05/06(金) 22:18:18.35ID:l2ANUrOw
固定更新のために垂直同期切ってタイマー管理はありだけど
ティアリングが気になったりしない?
>>62はちょっと分かりにくかったかな
要は垂直同期をとりながら更新をカウントしてるようなタイプね
メジャーなところだと龍神録とか
この方法は環境の違いを直接受けるし、その対処も醜くなるんだよ
ティアリングが気になったりしない?
>>62はちょっと分かりにくかったかな
要は垂直同期をとりながら更新をカウントしてるようなタイプね
メジャーなところだと龍神録とか
この方法は環境の違いを直接受けるし、その対処も醜くなるんだよ
2016/05/07(土) 01:18:08.48ID:oS0WNQLp
固定にするなら、リフレッシュレート制御かテアリングか
どっちかを取るしかないんじゃないの?
>カウント
龍神録ちろっと見てみたけど分からんかった
単位時間あたりのループ回数をチェックして、それ超えそうになったらウェイト入れる感じ?
どっちかを取るしかないんじゃないの?
>カウント
龍神録ちろっと見てみたけど分からんかった
単位時間あたりのループ回数をチェックして、それ超えそうになったらウェイト入れる感じ?
6750
2016/05/08(日) 09:38:16.57ID:y6rKy2Br 2フレームに一度スクリーンフリップをすることでゲームの進行速度が2倍になりました
ゲーム中に速度の変更がきくようになったので目的は達成し解決しました
ゲーム中に速度の変更がきくようになったので目的は達成し解決しました
2016/05/11(水) 22:20:44.58ID:bMgn9LMw
ttp://gameprogrammingpatterns.com/game-loop.html#play-catch-up
69名前は開発中のものです。
2016/06/07(火) 01:07:55.74ID:hB66gw1M 垂直同期でやってるけど何故かFPSが59.9が多いんだよな
偶に60いくんだけど。龍神録のFPS管理は何故か57FPSになる
偶に60いくんだけど。龍神録のFPS管理は何故か57FPSになる
2016/06/07(火) 11:13:02.03ID:AssHyOle
もともとNTSCの垂直同期って59.94Hzだけど
今のは完全に60Pなんかね
今のは完全に60Pなんかね
2016/06/07(火) 20:41:15.55ID:wUcW1H+O
龍神録のところのプログラムって、垂直同期とタイマー待機を同時にやってた気がする
どっちかだけにするといいはず
どっちかだけにするといいはず
72名前は開発中のものです。
2016/06/08(水) 16:24:56.19ID:uqtESUHJ2016/06/21(火) 16:36:29.41ID:bN0TQeIa
LoadGraph等で同じ画像を複数回読み込んだときは、やはり同じ画像が複数個分メモリに展開されるのだろうか?
2016/06/21(火) 18:42:57.95ID:YpRlukE1
うん
2016/06/21(火) 19:13:04.10ID:2iYzZ5We
画像を改変したりして複数いるなら1回読み込んで、コピーするべき
HDD等からの読み込みは遅いから
HDD等からの読み込みは遅いから
2016/07/20(水) 18:57:39.10ID:/hGHlgJA
垂直同期切ってもウィンドウモードだと60fpsになっちゃうんだけどこれどうにかならない?
2016/07/21(木) 02:55:43.25ID:cqeRkCwh
垂直同期切れてないんじゃない?
2016/08/03(水) 16:59:01.47ID:X+OZY+Fp
仮想関数の呼び出しが遅い
最初はDXlibと関係あるのかなーと思ったけどC++の仕様っぽい
みんなも気をつけろ
最初はDXlibと関係あるのかなーと思ったけどC++の仕様っぽい
みんなも気をつけろ
2016/08/04(木) 02:17:02.01ID:SwoLOy80
自分も聞いたことあるけど、それがクリティカルになるって、
他のところがボトルネックになってたりしない?
あとは最適化オプションとかで何とかなりそうではあるが
他のところがボトルネックになってたりしない?
あとは最適化オプションとかで何とかなりそうではあるが
2016/08/04(木) 18:34:57.87ID:BM0zlQCD
関数の呼び出し速度が気になるようじゃ元々が問題だと思うんだけど
実際に通常関数を呼ぶのと速度的にはどれくらいの差なんだろう
実際に通常関数を呼ぶのと速度的にはどれくらいの差なんだろう
2016/08/05(金) 17:45:28.67ID:GXDTbL61
3Dモデルのボーンをプログラムで動かすときに、
・ボーンをワールド座標の特定の場所を向くようにしたい(カメラの注視のようにボーンを一点に向けたい)
・ボーンをワールド座標の特定の角度にしたい。例えば、ボーンを水平な角度にしたい
を行いたいのですが、
ボーンを動かすのは MV1SetFrameUserLocalMatrix でローカルの変換行列を指定する方法しかないですが
どうやればできますか?
・ボーンをワールド座標の特定の場所を向くようにしたい(カメラの注視のようにボーンを一点に向けたい)
・ボーンをワールド座標の特定の角度にしたい。例えば、ボーンを水平な角度にしたい
を行いたいのですが、
ボーンを動かすのは MV1SetFrameUserLocalMatrix でローカルの変換行列を指定する方法しかないですが
どうやればできますか?
2016/08/07(日) 21:54:52.11ID:0nKMuJM/
プログラムをステップ実行したときに
DXライブラリのソースにステップインするにはどうやればできますか?
Visual Studio 2013使ってます
DXライブラリのソースにステップインするにはどうやればできますか?
Visual Studio 2013使ってます
2016/08/07(日) 22:00:00.73ID:0nKMuJM/
ちなみにDXライブラリのソースにステップインしたい理由は
エラーコードが-1しかなくて、何が原因かわからなくて調べるためです
たまに挙動不審になったときの調査もしたいです
エラーコードが-1しかなくて、何が原因かわからなくて調べるためです
たまに挙動不審になったときの調査もしたいです
2016/08/07(日) 22:44:42.94ID:0nKMuJM/
>>82は解決しました。簡単にできましたww
2016/08/08(月) 00:03:13.72ID:nCWjYGMh
自己解決した時は、どんなに簡単であってもその方法をだな
2016/08/08(月) 09:58:38.04ID:A5U2Nxs1
その方法も何もDXライブラリのソース公開されているからlibファイルの代わりにソースをプロジェクトに追加するだけやん
2016/08/08(月) 10:00:13.35ID:z9kN9Vnb
pdbを置くだけでしょ
ステップインしたらその時にソースの場所聞いてくるわ
ステップインしたらその時にソースの場所聞いてくるわ
2016/08/08(月) 10:03:39.19ID:YjIAwMDj
という風に、人によってやり方違うので
どんなに簡単でも手順は書いておいたほうが
それが質問した人の礼儀かと
レスしようとして自分とこで検証して回答しようとしたら
自己解決しましたの一言でしまってたりすること多いしねえ
どんなに簡単でも手順は書いておいたほうが
それが質問した人の礼儀かと
レスしようとして自分とこで検証して回答しようとしたら
自己解決しましたの一言でしまってたりすること多いしねえ
2016/08/08(月) 10:12:41.36ID:A5U2Nxs1
pdbって使い道あったのか
いつも使い道分からずに放置してたわ
いつも使い道分からずに放置してたわ
2016/08/12(金) 09:00:00.33ID:j8xGV0qx
DXライブラリは3Dモデルの大きさをセンチメートルで管理するのがいいのか?
メートルで管理してカメラの Near Clip を小さくするとアウトラインやZTestがおかしくなる
メートルで管理してカメラの Near Clip を小さくするとアウトラインやZTestがおかしくなる
2016/08/13(土) 05:15:02.85ID:smt/5o17
単位は人それぞれだけど、精度を下げりゃ描画が甘くなるのはそりゃ当然よ
2016/08/13(土) 08:56:44.42ID:kHkMVs63
Zバッファのビット深度を変更する関数があったような
デフォは16bitだから32bitとかにしてみては
デフォは16bitだから32bitとかにしてみては
2016/08/13(土) 09:38:49.80ID:cO1Dtflu
>>90
俺も以前同じようなことで悩んだわ
Near Clipは破綻しない程度に大きな値をとる必要があるとのこと
俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、
ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた
おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった
ただし代償として描画処理の負荷は上がったけど・・・
>>92
SetZBufferBitDepthでZバッファの深度を変えられる
でも確か24ビットまでじゃなかったかな?
俺も以前同じようなことで悩んだわ
Near Clipは破綻しない程度に大きな値をとる必要があるとのこと
俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、
ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた
おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった
ただし代償として描画処理の負荷は上がったけど・・・
>>92
SetZBufferBitDepthでZバッファの深度を変えられる
でも確か24ビットまでじゃなかったかな?
9490
2016/08/13(土) 10:22:48.53ID:MTyr6UWS >>91-93
レスありがとうございます
SetZBufferBitDepthは簡単なのですぐに試してみます
「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は
ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい
レスありがとうございます
SetZBufferBitDepthは簡単なのですぐに試してみます
「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は
ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい
2016/08/13(土) 13:32:29.62ID:cO1Dtflu
>>94
方法さえ教えてもらえればそんなややこしい実装じゃなかったよ
1. まずMakeScreen関数で合成用のサブ画面を作る
2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定
3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定
4. ワールド空間の物体を描画
5. SetDrawScreen関数で裏画面を描画対象にする
6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画
7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す
8. ScreenFlip関数で裏画面と表画面を切り替える
みたいな感じ
継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった
方法さえ教えてもらえればそんなややこしい実装じゃなかったよ
1. まずMakeScreen関数で合成用のサブ画面を作る
2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定
3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定
4. ワールド空間の物体を描画
5. SetDrawScreen関数で裏画面を描画対象にする
6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画
7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す
8. ScreenFlip関数で裏画面と表画面を切り替える
みたいな感じ
継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった
2016/08/13(土) 17:10:08.44ID:MTyr6UWS
>>95
ありがとうございます。実装できる気がしてきました
ありがとうございます。実装できる気がしてきました
2016/08/23(火) 06:56:44.62ID:8oK85pQf
すいません。 初歩的なことを教えて下さい。
DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。
エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。
丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして
再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。
どんなポカミスが考えられるでしょうか。
DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。
エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。
丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして
再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。
どんなポカミスが考えられるでしょうか。
2016/08/23(火) 08:00:58.44ID:ZkV35hFb
DXライブラリのフォルダの下を 'DxDrawFunc_vs2012_x86_d.lib' で検索して、
そのフォルダがプロジェクトのプロパティの「リンカー」の中の
「追加のライブラリディレクトリ」に設定されているか確認してみたか?
設定してなかったら設定する
そのフォルダがプロジェクトのプロパティの「リンカー」の中の
「追加のライブラリディレクトリ」に設定されているか確認してみたか?
設定してなかったら設定する
9997
2016/08/23(火) 10:52:44.72ID:8oK85pQf ありがとうございます。
おっしゃるとおりでした。
C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。
これで総て正常終了できました。
ありがとうございました。
おっしゃるとおりでした。
C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。
これで総て正常終了できました。
ありがとうございました。
10097
2016/09/16(金) 19:48:32.55ID:/GVguODS DrawBox()って思った以上にコスト高なのね。
エディタ作っているのですが、マウスで指定範囲を決定するのに半透明のFilling=TRUEで
サイズが{400,200}程度になると追いついて来ないし。うちの環境だと。
まあ範囲が分かれば良いだけなので、非透明のFilling=FALSEにしましたが。
機能の根幹に必要な命令じゃなくて良かった・・・。
エディタ作っているのですが、マウスで指定範囲を決定するのに半透明のFilling=TRUEで
サイズが{400,200}程度になると追いついて来ないし。うちの環境だと。
まあ範囲が分かれば良いだけなので、非透明のFilling=FALSEにしましたが。
機能の根幹に必要な命令じゃなくて良かった・・・。
101名前は開発中のものです。
2016/09/16(金) 20:42:39.00ID:arX7j3iZ ハードウェアで描画してないだけちゃうの?
102100
2016/09/17(土) 02:14:24.29ID:bU3etqlH103名前は開発中のものです。
2016/09/18(日) 05:02:11.08ID:/gg7FKD1 画面全体塗りつぶすのに毎フレーム使ったりするし重いわけないと思うがなぁ
最新版では試してないけど
最新版では試してないけど
104100
2016/09/22(木) 22:23:47.41ID:j/yM3Z13 >>103
すいません、DXライブラリは無罪でした。
コード読み直していたら、離れた所から12回ループでDrawBox()してからScreenFlip()しておりました。
そりゃ感覚とは結果が違うのも当たり前で。
大変失礼しました・・・。
すいません、DXライブラリは無罪でした。
コード読み直していたら、離れた所から12回ループでDrawBox()してからScreenFlip()しておりました。
そりゃ感覚とは結果が違うのも当たり前で。
大変失礼しました・・・。
105名前は開発中のものです。
2016/09/23(金) 11:02:39.00ID:grmg4z9F ∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
まぁ原因判明してよかったね
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
まぁ原因判明してよかったね
106名前は開発中のものです。
2016/09/26(月) 22:11:34.39ID:gS8npJwc スーファミっぽくラスタースクロールの波うつようなあのぐにゃぐにゃした表現をしたいんだけれども
DrawRectGraphで一列ずつ描画するのと
SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのと
どっちが早いんだろう
DrawRectGraphで一列ずつ描画するのと
SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのと
どっちが早いんだろう
107名前は開発中のものです。
2016/09/27(火) 07:34:39.52ID:6RU/4Se1 どっちもクソ遅そうな気が……
ラスタースクロールのシェーダー書くのがいいが、
シェーダーはDXライブラリではちょっと敷居が高くてプログラム難しそうなのな
ボーンを仕込んだポリゴンの板に画面の画像を貼り付けて、
ボーンでラスタースクロールふうにアニメーションさせるのが楽な気がする
ラスタースクロールのシェーダー書くのがいいが、
シェーダーはDXライブラリではちょっと敷居が高くてプログラム難しそうなのな
ボーンを仕込んだポリゴンの板に画面の画像を貼り付けて、
ボーンでラスタースクロールふうにアニメーションさせるのが楽な気がする
108名前は開発中のものです。
2016/09/27(火) 12:29:31.97ID:kk2kAC73 10年前のPCで動くSTG(弾は500発程度)で、640*480程度なら上から一行ずつ描画でも特に処理落ちしなかった
DrawRectGraph使った
今のハードなら余裕だと思う
DrawRectGraph使った
今のハードなら余裕だと思う
109名前は開発中のものです。
2016/10/04(火) 20:15:50.94ID:rnDdxDqG SetLoopAreaTimePosSoundMem()
この関数めっちゃ便利なんだけどググっても全くヒットしなかったんだが、いつ頃からあるんだろ?
ループ開始位置と終了位置をms単位で指定できるから音声ファイルを編集する必要がなくなった
無加工のファイルでもこっちの好みでループ範囲を指定できるから
音楽ファイルはこの素材屋からDLしてねってreadmeに書いておけば配布するファイルサイズも小さく出来る
あと軽く検証しただけだけど再生中に指定しなおしても有効だったから
FF6のラスボス戦みたいに
イントロ‐Aメロ‐繋ぎ‐Bメロ‐繋ぎ‐Cメロ〜 みたいになってるファイルで
最初はAメロをループ、条件を満たしたら繋ぎを経由してBメロループに移行〜みたいな演出も簡単に出来る
この関数めっちゃ便利なんだけどググっても全くヒットしなかったんだが、いつ頃からあるんだろ?
ループ開始位置と終了位置をms単位で指定できるから音声ファイルを編集する必要がなくなった
無加工のファイルでもこっちの好みでループ範囲を指定できるから
音楽ファイルはこの素材屋からDLしてねってreadmeに書いておけば配布するファイルサイズも小さく出来る
あと軽く検証しただけだけど再生中に指定しなおしても有効だったから
FF6のラスボス戦みたいに
イントロ‐Aメロ‐繋ぎ‐Bメロ‐繋ぎ‐Cメロ〜 みたいになってるファイルで
最初はAメロをループ、条件を満たしたら繋ぎを経由してBメロループに移行〜みたいな演出も簡単に出来る
110名前は開発中のものです。
2016/10/04(火) 21:56:37.68ID:HgclvPkb そんなのあったのか
最後まで行ったら途中から再生、ってのは
結構前からあったの覚えてるんだが
最後まで行ったら途中から再生、ってのは
結構前からあったの覚えてるんだが
111名前は開発中のものです。
2016/10/15(土) 11:32:13.14ID:NMxKtSgQ 試してないけど
アンドロイドでも
動くように
なってたのね知らなかった
何処まで、動くのかな?
アンドロイドでも
動くように
なってたのね知らなかった
何処まで、動くのかな?
112名前は開発中のものです。
2016/10/16(日) 19:58:12.00ID:ZsomXKa1 あらかじめ大きめのサイズの空っぽの画像をMakeScreenで用意しておくことの有用性に今頃気付いたぜ
これとDerivationGraphのコンビで作り直したらぐっと軽くなった
これとDerivationGraphのコンビで作り直したらぐっと軽くなった
113名前は開発中のものです。
2016/10/16(日) 21:02:14.27ID:ldA8bGPF テクスチャ切り替えはコスト大きいからね
114名前は開発中のものです。
2016/10/23(日) 23:02:40.45ID:t2BOiWAY >>109
使ってみたら、ほんとにスゴイですね。
時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。
ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。
もう少しデータの作り方工夫すれば上手く行くのだろうけど。
使ってみたら、ほんとにスゴイですね。
時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。
ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。
もう少しデータの作り方工夫すれば上手く行くのだろうけど。
115名前は開発中のものです。
2016/10/24(月) 06:53:24.03ID:YwSDnTaO >>114
MP3はこの関数に限らずループの時に違和感が出ると言われてるから
たぶんMP3の仕様の問題もあると思う
ogg形式では上手くいったよ
ただ変換の時にビットレートを固定したファイルでしか検証してないから
可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証
MP3はこの関数に限らずループの時に違和感が出ると言われてるから
たぶんMP3の仕様の問題もあると思う
ogg形式では上手くいったよ
ただ変換の時にビットレートを固定したファイルでしか検証してないから
可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証
116名前は開発中のものです。
2016/10/24(月) 12:40:43.17ID:GmlKA2wN MP3は権利の問題があるから他の使えって言われてた時期があったね
117名前は開発中のものです。
2016/10/24(月) 13:10:36.88ID:Y2gOrRK8 権利よりも仕様が問題だな
MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない
他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし
MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない
他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし
118名前は開発中のものです。
2016/10/24(月) 23:43:54.13ID:UrCtC7CV ループできないからだったか、昔は
DXライブラリではogg使うなとかもあったね
DXライブラリではogg使うなとかもあったね
119名前は開発中のものです。
2016/10/27(木) 13:49:28.51ID:1Lorx2LL 昔は BGMにはmp3, 効果音にはwav だったでしょ
120名前は開発中のものです。
2016/10/27(木) 15:57:58.01ID:HwaxCMEV 116の言う通りmp3はライセンス関係が危ないということで避けられoggが推奨されていた
仕様よりもこっちのほうが重大問題
ゲーム制作関係でmp3推奨というのは聞いたことがない
仕様よりもこっちのほうが重大問題
ゲーム制作関係でmp3推奨というのは聞いたことがない
121名前は開発中のものです。
2016/10/27(木) 17:43:02.40ID:rFz+rXeH MP3登場時にはoggなんてなかったから
Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど
Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど
122名前は開発中のものです。
2016/10/27(木) 18:10:43.67ID:HwaxCMEV ogg普及前はソフトウェアMIDIが多かった
もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ
まぁ00年代前半まではそういう時期でもあったけど
もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ
まぁ00年代前半まではそういう時期でもあったけど
123名前は開発中のものです。
2016/10/27(木) 20:01:09.28ID:lueiMAyc 市販のゲームで5000本以上販売が課金の条件だったから、フリーゲームや小規模同人では普通に使われてたよ
124名前は開発中のものです。
2016/10/27(木) 20:28:51.91ID:BuMiN4CL 制作中のゲームにはキャラの髪型や服や装備や小物を変えるキャラメイキング(着替え)の機能があって、
今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、
だんだんアイテムが増えてきてファイルが大きくなってしまったので
別の方法をとりたいのですが、
キャラメイキングや着替えを実装するのに何かいい方法ありませんか?
髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが
楽なのではないかと思っていますが、もっと良い方法ありませんか?
今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、
だんだんアイテムが増えてきてファイルが大きくなってしまったので
別の方法をとりたいのですが、
キャラメイキングや着替えを実装するのに何かいい方法ありませんか?
髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが
楽なのではないかと思っていますが、もっと良い方法ありませんか?
125名前は開発中のものです。
2016/10/31(月) 19:03:23.01ID:X+KVjoNa DXライブラリのユーザーが作ってるのって
2Dゲーと3Dゲーのどっちが多いんだろ?
俺は3Dには手が出せてないんだけど
2Dゲーと3Dゲーのどっちが多いんだろ?
俺は3Dには手が出せてないんだけど
126名前は開発中のものです。
2016/10/31(月) 19:10:44.78ID:8dsRDt6U 2D
127名前は開発中のものです。
2016/11/01(火) 22:09:07.08ID:kJ7Uoghc 3Dは海外のゲームエンジンが無料化されてしまったので、
3Dゲーム制作者はそっちへ行ってしまった気がする
2Dだとどれもあんまり変わらない気がするが
3Dゲーム制作者はそっちへ行ってしまった気がする
2Dだとどれもあんまり変わらない気がするが
128名前は開発中のものです。
2016/11/01(火) 22:26:25.51ID:+8ot24fl 2Dも描画しかないDXライブラリよりもオブジェクト管理出来たりするエンジンに流れている気がする
129名前は開発中のものです。
2016/11/02(水) 07:20:39.55ID:/aW+4m+D 全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って
なんというか我ながらアホだよね
この状況を卒業するには何を勉強したらいいのかアドバイスください
作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます
とりあえず思いついてるやり方は
セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて
イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして
そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り
イベントの内容を全部数値に置き換える方法なんですけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って
なんというか我ながらアホだよね
この状況を卒業するには何を勉強したらいいのかアドバイスください
作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます
とりあえず思いついてるやり方は
セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて
イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして
そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り
イベントの内容を全部数値に置き換える方法なんですけど
130名前は開発中のものです。
2016/11/02(水) 08:13:58.60ID:8LrVjVrS >>129
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。
テキストファイルの読み込みと解析が出来るなら
単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。
まあそれ以上に複雑なことをやるなら、素直に
既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。
次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。
各クラスの書き方、各ファイルの依存関係なんかを整頓することで、
ちょっと修正したくらいなら、長時間のビルドを要さなくなる。
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。
テキストファイルの読み込みと解析が出来るなら
単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。
まあそれ以上に複雑なことをやるなら、素直に
既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。
次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。
各クラスの書き方、各ファイルの依存関係なんかを整頓することで、
ちょっと修正したくらいなら、長時間のビルドを要さなくなる。
131名前は開発中のものです。
2016/11/02(水) 13:45:37.24ID:/aW+4m+D 大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが
躊躇している理由が2つあります
基本的に作り始める時に
クラスとかポインタとかよくわかんないけどとりあえずやってみるべ!と始めたので
配列と構造体だけで設計されてて、実は今でもクラスのことはよくわかっていません
だけどキー入力を把握すことと、変数の操作と、画像と音を自分の望む形で望むタイミングに表示再生出来るなら
自分の作りたいゲームは作ることが出来るはずだ!という考えの下で強引に作り続け
変数の値に合わせて画像や音の状態を制御する関数を作って、それを毎フレームScreenFlipの前に呼び出している
なんていう作りになってしまってます
キャラクターに歩行アニメーションや特殊なポーズをとらせたりするのも
BGMを変更するのも効果音を鳴らすのも、HPMPの増減やアイテムの入手なども
picture[ kyaraDATA[kyaraid].pictureID ].pattern=8;
SEplayflag[seID]=1; BGMID=BattleBGMID; とか
kyaraHP[kyaraid]+=1000;
itemstorage[itemid]++; とか
ほとんどこういう形でイベントを組み立ててるんですよね……
ちなみにこの変数全部グローバル変数です
この単純な変数操作を外に出のに、変数全部に番号振ってやる以外に方法が思いつかず
その数が数だけにちょっと躊躇っているのです
それに
if(itemstorage[itemid]<99){
itemstorage[itemid]++;
takarabakoOpenFlag[takaraID]=1;
}else{
JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります
なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね?
躊躇している理由が2つあります
基本的に作り始める時に
クラスとかポインタとかよくわかんないけどとりあえずやってみるべ!と始めたので
配列と構造体だけで設計されてて、実は今でもクラスのことはよくわかっていません
だけどキー入力を把握すことと、変数の操作と、画像と音を自分の望む形で望むタイミングに表示再生出来るなら
自分の作りたいゲームは作ることが出来るはずだ!という考えの下で強引に作り続け
変数の値に合わせて画像や音の状態を制御する関数を作って、それを毎フレームScreenFlipの前に呼び出している
なんていう作りになってしまってます
キャラクターに歩行アニメーションや特殊なポーズをとらせたりするのも
BGMを変更するのも効果音を鳴らすのも、HPMPの増減やアイテムの入手なども
picture[ kyaraDATA[kyaraid].pictureID ].pattern=8;
SEplayflag[seID]=1; BGMID=BattleBGMID; とか
kyaraHP[kyaraid]+=1000;
itemstorage[itemid]++; とか
ほとんどこういう形でイベントを組み立ててるんですよね……
ちなみにこの変数全部グローバル変数です
この単純な変数操作を外に出のに、変数全部に番号振ってやる以外に方法が思いつかず
その数が数だけにちょっと躊躇っているのです
それに
if(itemstorage[itemid]<99){
itemstorage[itemid]++;
takarabakoOpenFlag[takaraID]=1;
}else{
JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります
なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね?
132名前は開発中のものです。
2016/11/02(水) 15:10:54.49ID:C/+BZRXz 2chは行頭の半角スペースやタブは無視する
133名前は開発中のものです。
2016/11/02(水) 15:11:48.53ID:C/+BZRXz 途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて
134名前は開発中のものです。
2016/11/02(水) 15:50:25.87ID:/aW+4m+D if(itemstorage[itemid]<99){
itemstorage[itemid]++;
takarabakoOpenFlag[takaraID]=1;
}else{
JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
複数行にまたがってる部分はここだけです
後は本当に変数に代入してるだけというか…
itemstorage[itemid]++;
takarabakoOpenFlag[takaraID]=1;
}else{
JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
複数行にまたがってる部分はここだけです
後は本当に変数に代入してるだけというか…
135名前は開発中のものです。
2016/11/02(水) 15:53:23.25ID:22j5AZ4g >>131
データにしやすいパターンやお約束のイベントだけをデータベース化して
特殊処理はそのままハードコートでいいんじゃねぇの
「これをデータ化したら本当に効率化されるのだろうか」と考えて
非効率になりそうだったらハードコートのまま
そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい
データにしやすいパターンやお約束のイベントだけをデータベース化して
特殊処理はそのままハードコートでいいんじゃねぇの
「これをデータ化したら本当に効率化されるのだろうか」と考えて
非効率になりそうだったらハードコートのまま
そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい
136名前は開発中のものです。
2016/11/02(水) 17:31:46.86ID:mreiywNQ  あ
この板Unicode参照出来なかった?
この板Unicode参照出来なかった?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国と対話で良い関係つくるのが責任と首相 ★2 [少考さん★]
- 参政党、梅村みずほ参院議員を党ボードメンバーから解任 参議院国会対策委員長の役職も外れる [少考さん★]
- 日本テレビ、国分太一の会見受け回答「『コンプライアンス違反行為があった』ということ以上に公にできない」「答え合わせ難しい」 [Ailuropoda melanoleuca★]
- 平本蓮「久々にあんなキレたわ あのくそ金髪芸人」SNSでブチギレ、心当たりある芸人が即謝罪「僕ですよね?」 [muffin★]
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に ★2 [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★3 [Ailuropoda melanoleuca★]
- 【悲報】高市、終わるwwwwwwwwwwwwwwwwwww [308389511]
- 【悲報】高市、答弁修正。バカウヨ敗北wwwwwwwwww [834922174]
- 【速報】高市「日本はサンフランシスコ平和条約で台湾に関する全ての権利と権限を放棄している。台湾の法的地位や認定する立場ではない」 [931948549]
- 【高市速報】岡田克也、18:45からネット番組に緊急ライブ出演 [931948549]
- 参政党、梅村みずほを解任 [175344491]
- 【悲報】トランプ「お前マジいい加減にしろよ?」高市早苗「すみませんでした」答弁修正へ
