DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
ググったら本当に苦いらしいな
印象論だと思ってたわ >>421
さあ、クソの役にも立たないゴミみたいなマウンテンゴリラレスはやめて
人の役に立つレスをしようぜ ライブラリ公開してくれよ。
車輪の再発明は辞めたい。
勉強にはなるけど。 最新のハードに対応するのはいいが、
グラフィックがもう10年前くらいの旧世代なのをなんとかしてほしいな
シェーダー使えないとか、HDR対応してないとか
形だけ対応して中身がついてきてない感じだ ジオメトリシェーダとハルシェーダが使えないのは別に文句ないけど
technique使用不可なのは地味にイライラする DXライブラリのシェーダーまわりはそれだけじゃないつーか
DirectX9とDirectX11でコーディング方法が違ったり、
Android版ではそもそもシェーダー使用不可能だったり、
2Dスプライトの表示にシェーダー使えなかったりして
あれもないこれもないって感じになっちゃうなぁ。まあそういうのがいらない人向けなんだろうけど VRoidのVRMファイルの読込に対応しようとしたらマテリアルが物理レンダのパラメータで
DXライブラリだとVRMファイル読込むのは難しそうだ
物理レンダ対応してくんないかな DxLibのシェーダーのSamplerで、テクスチャごとに違うフィルタリングモードでSamplerを作りたいんだけど無理かな?
プログラム側でSetDrawModeで設定したフィルタリングモードになっちゃうんだけど 未だにMMDとメタセコだから
VRMファイルはナウでヤングすぎる 時代に遅れすぎた理由は、アセットストアがないせいだな
いまだにアセットがひとつもないのは、アセットおじさんも真っ青だわ DXライブラリでようやく地面モデルと線分の当たり判定つけられた
そこに主人公モデルの位置を同じにした
まだモーションつけてないから
主人公が棒立ちのまま移動した
坂道登れるだけで感動した(小並感 DXライブラリって世間的にはゲームエンジン扱いなのな >>439
多分そこが一番誤解されやすいとこだよな。
基本はDirectXで自前で全部作りたいけれどめんどくさい設定周りだけはやって欲しい人向けのお助けラッパーだよね。
そこにDirectX以上の機能はいらないし。今の状態で十分。 「各種ゲーム用エンジン紹介」みたいなところで触れられる分には「そんなもんか」って感じだけど
「ゲームエンジンを使っている」カテゴリの中にDXライブラリ製ゲームが含まれるとあれ?って思う
自分でも基準がよく分からない 教えてほしいんですが
int fp = FileRead_open("csvファイル");
この場合、fpにはcsvがそのまま入ってるという解釈でいいですか?
つまり、ifstream ifs(fp);が可能になるのかが知りたいです。
ifstream ifs(FileRead_open("csvファイル"));は無理ですか?
なんでこんな面倒なこと考えるかというと、
archive化したファイル内のcsvを読みたいんです。 >archive化したファイル内のcsvを読みたいんです
厳密に言いますと、
ifstream ifs();で読み込んで
string buf[要素数];
while(ifs && getline(ifs,buf[line])){
line++;
}
とbuf[]に一旦、そのままcsvの中身を格納したいんです。
普通なら、
ifstream ifs(csvファイル);で問題ないじゃないですか?
でも、そのcsvがarchiveしたファイルから読み込む場合
ifstream ifs(csvファイル);だと読み込みません。
そこでFileRead_openを使うわけですが、
自分はどうしても
ifstream ifs(csvファイル);
string buf[要素数];
while(ifs && getline(ifs,buf[line])){
line++;
}
の流れで利用したいんです。
なので、ifstream ifs(csvファイル);に来る前に
FileRead_openを使い終わらせ、
あとはFileRead関数系を使わなくて済む様にしたいんです。
、、伝わりますか?僕の言いたいこと。。 archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない? >>444
>archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
え、それ本当ですか?
>最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない?
すみません、もう少し具体的に教えてください! >>445
ファイルサイズが1000なら
char t_data[ 1000 ] にファイルのデータを格納する
で、後は添え字で任意のデータにアクセスする >>445
2chは長い行で書き込めないのよ
string all;
char* path = "./hello.csv";
int size = (int)FileRead_size( path ) ; // 1char = 1byte
char* buffer = new char[size];
int id = FileRead_open( path, false ) ;
FileRead_read( buffer, size, id) ;
all = buffer; // copy to string
delete[] buffer;
FileRead_close(id);
// allをcsvのrow(\r\n)とcol(,)でパースする。csv書式の不正チェックとか丁寧にやると長くなるので以下適当
string csv[ROW][COL];
string tmp = "";
int x = 0; int y = 0;
for(int i=0; i<all.length(); i++){
char c = all[i];
if(c == ',') {
csv[y][x] = tmp; tmp = ""; x++;
} else if (c == '\n') { // 本当は\r\nの2つで改行なんだけど
csv[y][x] = tmp; tmp = ""; x = 0; y++;
} else { tmp += c; }
}
csv[y][x] = tmp; // 最後の一個
文字列(string)から数値(intとか)に変えるときはatoiじゃなくてstrstreamだかを使うとよい 追記
csvファイルの最後に無駄な改行がついてたりすると配列のサイズ超えたりしがちなので注意 さらに追記
csvの最後ってヌル文字で終わってないだろうから自分で足したほうがいいかも
string all;
char* path = "./hello.csv";
int size = (int)FileRead_size( path ) ;
// '\0'が無い文字列char*をstringに渡すと長さ不定でまずい
char* buffer = new char[size+1];
buffer[size] = '\0';
int id = FileRead_open( path, false ) ;
FileRead_read( buffer, size, id) ;
all = buffer; // copy to string
delete[] buffer;
FileRead_close(id); Cは文字列処理が弱いからCSVParserを書くのも一筋縄にはいかんよ そしてCSVの仕様を調べて、予想以上に面倒くさいことを知る 「,」じゃなくてTABスペースで区切るとか
「'座標(x,y)'」みたいにシングル・ダブルクォーテーションで囲む「,」を含むセルだとか
CSVも奥が深い ヘッダにコメントにセル内改行に空白セルに非固定列数に…
あれやこれや対応させると面倒なので、仕様はExcel出力版に決めうちとかしちゃう
それでいてExcel経由でもやり方によって微妙に違ったりするけど Excel出力でも小数点の区切りがカンマな国とかあって地獄絵図なんだよなぁ ワロタw
そもそも「小数点の区切りがカンマ」って別に変な日本語じゃないと思うけど? 「(整数と)小数の区切り記号がカンマ」か
「小数点という区切り記号がカンマ」かってとこじゃない?
まあいずれにせよ通じる内容、普通に見落としちゃうレベルではある >>460
投げ出していません。
>>448さんのせっかくのソースがちょっと複雑で、、、
言葉でなにをしなければならないのか、アドバイスほしいです。
要は、
archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
普通にCSVを開くプログラムを書いていると
archive後、正常に読み込まないってことですよね?
ということは、バイナリ状態のCSVを読み込むプログラム文を書けってことですか?
でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
バイナリ化してないcsvなんでエラーが起きますよね?
だからすごく困っています。
どうすればいいのか >>461
>>でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
>>バイナリ化してないcsvなんでエラーが起きますよね?
何を言っているのか分からん
デバッグモードだろうがバイナリ形式のファイルを読み込むプログラムを書けばバイナリ形式で読み込むし、
テキスト形式を読み込むプログラムを書けばテキスト形式で読み込むでしょ >>462
えっと、自分の知識不足かもしれませんが
普通に数字と「,」だけが詰まったcsvファイルを用意していても
バイナリ形式で読むプログラムを書いていれば
バイナリ形式で読むってことですか?
バイナリ形式で読むプログラムを書いた場合は
用意するファイルもバイナリ形式で保存されたファイルじゃないと
ダメなのかなと思っているんですけど。 >>463
そもそも上の方に書いてあった
「バイナリ形式は改行が削除される」っていうのが表現として適切じゃないな
改行コードを改行として認識するのがテキスト形式
改行コードをそのまま文字の羅列として認識するのがバイナリ形式
テキスト形式のファイルをバイナリ形式で読み込んだら
そのテキスト内の改行コードがそのまま文字列として読み込まれるだけ 1 複数データを一つにまとめたい(暗号化したい)
2 読み込みプログラム(csvパーサー?)は既存のものをそのまま流用したい
ってことなのかな……
>>444,>>446,>>448のキモは、DXアーカイブファイルを一本のchar配列に読み込む(バイナリデータとして扱う)という部分なので、
結局DXアーカイブもifstreamも関係なくて、char配列内のバイナリデータを自力で解析できるかという話になる
パソコンで使うデータは全てバイナリデータと言えるので、csvだろうが音声だろうがDXアーカイブファイルだろうが全てバイナリ形式で読み込める >>462
>パソコンで使うデータは全てバイナリデータと言えるので、
>csvだろうがDXアーカイブファイルだろうが全てバイナリ形式で読み込める
その理論だとcsvや音声などの外部素材データをDXarchiveファイルにしたとしても、
archiveする前、つまりはビジュアルスタジオのプロジェクト上で
ビルドして正常に機能してるプログラムそのままでも
archive後も正常に機能するはずではないですか?
もう少し具体的に言いますと>>442で説明しきれなかったんですが
ifstream ifsを利用して、csvの中の数値を配列に入れ込むプログラムを
自分は書いてまして、そのプログラムで問題なく動いてるゲームがあるんですが、
それの完成後にreleaseビルドして、使用してるサウンドやcsvの素材は
フォルダごとarchiveファイル化したんですよ(配布する場合は皆さんそうしますよね?。
そしてexeファイルを実行したところ、画像やサウンドは正常に読み込むんですが、
csvだけ正常に読み込んでくれないんです。
エラーになるというよりは、数値を正しく読み込んで無いようで、配列を利用した背景画像が
バグります。
例えばそこで素材をarchiveファイル化せずに、素材が入ったフォルダをそのままで
利用すると画像やサウンドはもちろん、csvも正常に読み込み、ゲームも正常に動くんです。
なので、私は、こう思ったわけです。
「csvについては、archiveファイル化すること前提にしたプログラムを組まないと
正しく読めないのかな」と。
それで、「FileRead_open」を使わないとダメなのかなと。
archiveファイルのcsvを読み込む場合、FileRead_openを利用しろと言われたことがあるので。
でもあなたの話を聞いてたら、違うのかな、とか。。。 >>466
アーカイブは言わば「バイナリ形式」のファイルでしょ?
「テキスト形式のファイルを読み込むプログラム」でバイナリ形式のアーカイブを読み込もうとしてるからバグってるんじゃない?
123
456
789
上記のファイルがあったとして「1行読み込む」関数を使った場合
「123」「456」「789」って読み込むだろうけど
アーカイブ化(バイナリ形式)すると「1行読み込む」関数を使うと
「123\r\n456\r\n789」みたいに 一つの文字列として全部読み込むから数値が正常に読み取れてないと思うんだけど まず、DXアーカイブファイルは全部のファイルを無理矢理合体&暗号化した完全独自形式のものなので、基本的にDXライブラリが用意した専用の関数でしか読み込めない
画像やサウンドはDXライブラリの読み込み関数を使うから、何もせずともDXアーカイブファイルから読み込めるようになってるんだよ
LoadGraph等には、内部的にFileRead_openが入ってるので、元のフォルダだろうとアーカイブだろうと読み込める
ただ、暗号化されてない場合に限り、小細工を弄すればバイナリファイルとして直接読める。(フォーマットを理解して自力でポインタ移動する必要がある) 上でみんなが説明してるのはこれ
これまでのやり取りを見る限り、バイナリファイル云々は今の君の知識で理解するのはたぶん無理なので、DXライブラリの関数使って地道にがんばったほうがいい
というかなぜFileRead_openを拒むのかがわからない…… 呼び出し LoadData(int,int,string);//縦、横、csvファイルパス
void LoadData(int y,int x,string s){
m_line = y; m_col = x;
int line = 0;int count = 0;int sum = 0;int nokorinoketa=0;
ifstream ifs(s);
string buf[3000];
Map.resize(m_line);//resizeで行数を決める
for(int i = 0; i<m_line; i++){Map[i].resize(m_col);}//resizeで各行の列数を決める
while(ifs && getline(ifs,buf[line])){line++;}
for(int line=0; line<y; line++){
for(int col=0; col<x; col++){
if(col < x-1){
sum = buf[line][count]-48;
count++;
while(isdigit(buf[line][count])){
sum = sum*10 + (buf[line][count])-48;
count++;}
Map[line][col] = sum;//Noが格納
count++;}
if(col == x-1){//最後の数字
nokorinoketa = buf[line].size()-count;
sum = buf[line][count] - 48;
while(nokorinoketa > 1){
count++;
sum = sum*10 + (buf[line][count])-48;
nokorinoketa--;}
Map[line][col] = sum;//Noが格納
}}
count=0;}} 行数制限のせいで見づらいソースになってますが、ご了承ください。
処理内容は引数で配列の縦と横の値と、csvファイルのパスを受け取り、
まず、bufに全部入れてから、map配列に入れていく感じです。
呼び出しはLoadData(4,4,"h/m/data.csv");みたいな感じで書きます。
archiveファイル化しなければ、これで正常に動きます。
>>468
>基本的にDXライブラリが用意した専用の関数でしか読み込めない
>画像やサウンドはDXライブラリの読み込み関数を使うから、
>何もせずともDXアーカイブファイルから読み込めるようになってるんだよ
納得です。それを聞きたかったんです。わかりやすいです。
>>というかなぜFileRead_openを拒むのかがわからない……
拒んでいません。
一応、FileRead_openを>>469のプログラムに組み込んで動くようにしたんです。
問題なく、動きます。それはプロジェクト上で、ですが。
で、やっぱり外部ファイルをarchiveしたら、そのプログラムではうまくcsvを読み込まないんです。
FileRead_openを組み込んだのに、FileRead_openを組み込む前と同じバグの状況です。 だからFileRead_readやFileRead_getsで読むんだぞ
もう一度リファレンスを熟読するんだ あ、ちなみに>>469で利用しているMap配列の要素数は決めておらず、
vector<vector<int>>Map;と宣言しており、
第一、第二引数を受け取ってから要素数を決定させています。 >>471
ちゃんとFileRead_readで読むプログラムに修正しました。
具体的には、
ifstream ifs(s);
while(ifs && getline(ifs,buf[line])){line++;}
の箇所を
int fh = FileRead_open(s.c_str());
while(fh && getline(fh,buf[line])){line++;}
と変更するだけです(この場合は最後にFileRead_close(fh);してます。
これで問題なくないですか?
実際に、visualstudioのプロジェクト上でビルドすると
正常に動いています。
なのに、releaseビルドして、素材ファイルをarchiveした途端
csvは正常に読み込まないんです、、、、ほんと参ってます。。
なにが悪いんでしょう? なぜ、FileRead_openを使ってるのに、
FileRead_openを使ってないときのバグが出るんでしょうか。
でも、archive化しなければ、FileRead_openを使ってるそれでも正常に動くのです。
引数でcsvファイルのパスを受け取っているのが問題なんでしょうか?
でも、利用するcsvファイルがいくつもあるので呼び出し命令の引数でファイルを選択してやらないと
困るんですよね。
もちろん、引数では数値を受け取り、switchで数値ごとにcsvを選択させてもいいですが、、
でも引数が問題では無いとも思うんですよ、、、、、。
なんでなのか、もう何日も悩んでいます。
もしよかったら頭から数字,数字,.....というdataが入ったcsvを
FileRead_openで開いて、配列に入れていくという
シンプルなソースを書いてみてくれませんか?
DXライブラリのリファレンスにはcsvを使ったものが載ってないんですよ、、
なので、見せてほしいです。それを理解して応用させたいので。
お願いします、ほんと凄く困っていまして、、、 良く分からんけど、こんな感じの事がしたいの?
void LoadData( int t_Width, int t_Height, std::string t_FileName )
{
int t_FileHandle = FileRead_open( t_FileName.c_str() );
int t_FileSize = FileRead_size( t_FileName.c_str() );
std::vector< std::vector< int > > t_MapDataVec;
int t_LoadNum = 0;
char t_Char;
//マップの配列を確保
t_MapDataVec.resize( t_Height );
for( int i = 0; i < t_Height; i++ )
{
t_MapDataVec[ i ].resize( t_Width );
}
//正常に1文字を読み込める間、繰り返す
while( ( t_Char = FileRead_getc( t_FileHandle ) ) != -1 ){
if( isdigit( t_Char ) != 0 ){
int t_Sum = 0;
do{
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
t_Char = FileRead_getc( t_FileHandle );
}while( isdigit( t_Char ) != 0 );
t_MapDataVec[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ] = t_Sum;
++t_LoadNum;
}
}
FileRead_close( t_FileHandle );
} >>473
int fh = FileRead_open(s.c_str());
while(fh && getline(fh,buf[line])){line++;}
ん?
FileRead_readとかのDXライブラリ関数じゃなくて
getlineが使われてる様だが?
例えばabc.csvを他のファイルと纏めて
Archive.dxaっていうアーカイブにした場合、
std::ifstream t;
t.open( "abc.csv");とかしたって読み込まないよ
そんなファイル無いんだから
DXライブラリ用のArchive作ってるのに
それを通常の入出力関数で読み出そうとしてるのがバグの原因だよ >>477
>getlineが使われてる様だが?
int fh = FileRead_open(s.c_str());
えっと、まずこれをした時点で、
ファイル内の文字がfhに入ってると思ってるんで
それをgetline(fh,buf[line]))するわけですから
問題ないかと思っているんですが、、私、なにか勘違いしてるのでしょうか、、
>t.open( "abc.csv");とかしたって読み込まないよ
>そんなファイル無いんだから
これはどーいうことですか?パスの表記の話でしたら
ここでは割愛しただけですので実際は頭のフォルダとファイル名と入力してます。
t.open( "フォルダ名/abc.csv");な感じで。
、、そー言う問題ではなくて、archiveした場合
"abc.csv"というファイル名ではなくなるという話ですか??
>>476
まさか、これ、自分と同じことやってるプログラムですか?
まさかこんなに短くできますよ、とかじゃないですよね?
すごく興味深いのでちょっと処理をじっくり読ませて頂きます。 >>477
あ、今気づきました、
自分FileRead_read使ってないですね、、、
FileRead_openとFileRead_readと一緒くたに考えてソース作ってしまってました。
FileRead_openもDXライブラリの関数でそれで開いてるから
DXライブラリArchiveしたファイルを開く問題はすでにクリアしたと。 薄々気づいていたけど、あまりにも基本的なことがわかってなさすぎる
勘違いですらなくて、全くわかってない
int fn はただのハンドル(識別番号)だし、ファイルオープンと読み込みは違うし、アーカイブファイルについても全くわかってないし、その知識でバイナリファイルを理解できるわけがない
あんま厳しいこと言いたくないけど、拾ってきたコピペを組み合わせて作ろうと思わず
c++の基本から勉強して、一文字ずつ自分で打ち込んだほうがいい >>476
すみません、今まで使ったことない関数や表現がありますのでよかったら教えて頂けませんでしょうか、、
自分は今成長したいんで、非常に関心がありますのでぜひともお願いします。
質問1、
if( isdigit( t_Char ) != 0 )
ここの意味は、isdigitで「t_Charの(頭が)空じゃ無いなら」の認識で正解ですか?
判定関数のisdigitを利用したことないもので、、
質問2、
もし1の私の認識が当たっているとすれば
do{ t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
t_Char = FileRead_getc( t_FileHandle ); }while( isdigit( t_Char ) != 0 );
ここの条件式は、t_Charの中の文字を読み進めながら
「空の領域になるまで」という理解になりますが、それで間違いないですか?
質問3、
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
すみません、ここのt_Char - '0'の理解ができてないんですがこれはなにを意味していますか?
推測では「,」の場所を判断するために記載していると思うのですが
「- '0'」は文字の0と文字の「,」は同義語ですか?
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' ); はなにをしているのか
解説して頂けませんでしょうか、、
4、究極に理解が足りず困っているのが
t_MapDataVec[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ] = t_Sum;
です。
本当に、これは初めて見た表現なんですが
t_LoadNum / t_Widthでなぜその時の行数の添字が割り出せるのか、
t_LoadNum % t_Widthでなぜその時の要素数の添字が割り出せるのか
お願いします、解説を、、、、すごく関心があります。そもそも、誰もが記載するであろう、
for(int line=0; line<y; line++){
for(int col=0; col<x; col++){
の式が無いプログラムで、二次元配列を回している様子が
自分の想像限度外で、もうなにがなんだか。
t_LoadNumの値だけをインクリメントしてるだけでなぜ二次元配列をすべて回すことが可能になるんですか? >>480
経験が浅いのは認めます、、
特に外部ファイルをいじるのと、archiveファイルについてはほんと理解度が低いです。
でも、ここでそう指摘されることも、
また私が質問させていただくことも自分が成長するひとつの事柄にはなりませんでしょうか、、
ただコピペしたいのでは無く、ソースを理解したくて>>481でも質問させて頂きました。
未熟者なのは認めます、疑問に思ったことをまず自分で検索で調べてみての質問です。
教えて頂けないでしょうか。。
正直、DXライブラリのアーカイブを使わなければ
ゲームは動くのですが、DXライブラリのアーカイブでつまずいてしまっています。
releaseビルドしたあとにバグで遊べないのでほんと辛いのです。 >>480
C++を熟知せずとも、便利な関数のおかげで
手軽にゲームを作れる、それがDXライブラリの良さであり、
短所でもあるのだと思います。
画像を描画するのも関数ひとつです。それで表示できるので
つまずきませんでした。
でもmap情報を外部ファイルにして読むことは、つまずています。
厳密にはアーカイブしなけば読むことは成功していますが、、
「お前は基本がなっていない」と言われたらそうなんですが
でもチュートリアル的なブログや参考書でも、ひとつひとつ完全に理解しようとすると挫折するから
今の自分ではわからなくてもとりあえずそうなんだという精神で進めていきましょう的な
助言も多かったです。ぶつかるたびに覚えていけばいい的な、、違いますでしょうか?
ファイルを扱う、バイナリ形式とかは、初めてです。なのでソースも見苦しいです。
でもそんな私でも>>476のプログラムはすごく魅力的だということがわかるんです。
学びたいんです、、簡単な解説でいいので、お願いできませんか? 長い。
【1・2】isdigitが分からないならisdigitについて調べれば?
【3】教科書の最初に載ってるはずだが「'0'」は0という文字そのものを表す
【4】適当に数字を入れて計算してみれば? >>484
【4】適当に数字を入れて計算してみれば?
これ、今やってるんですが、目から鱗です、、、
すごい、添字の回し方、こんなシンプルな表現方法がったなんで
すごい! stA8I9vhさん、天才だ、、参考書やブログで見たことないですよ、
こんな回し方してる人。 >>481の4、まじでやばい質問でしたね。アホすぎる、というか
検証しろって感じですよね。ほんとすみません。
ただ、[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ]では
配列の列数と添字とが同じ値だからこそできる計算式ですね。
ちぐはぐの場合は、やはり
for(int line=0; line<y; line++){
for(int col=0; col<x; col++){
を使うしか無い。
ネットで見たことないのは、
配列の列数と添字とが同じ数にぶちこむケースがあまりないから
ですね、、なんだそういうことか、、、 >>486
やり方としては定番だよ
初心者向けの記事とかだと説明しないだけで >>488
はい、シンプルですごく驚きました。
それに、二次元配列の要素を回す場合は
これが使えるのは両方の値が同じ場合だけですよね?
自分が要する配列は添字より列数が多い場合ばかりなので
この方法は使えない。
要は>>476さんはソースの参考にということで
記載してくれたので、ちゃんと自分のやりたいことに
組み込めってことですよね。 でも少しでも認めて頂けると嬉しいのです。
初心者ですが、昨今ゲーム制作においてもっともポピュラーなUnityでは無く
人口が減少しつつあるC++やDXライブラリでゲームを作ろうとしてる私のこのヤル気を。
まあ、csvのarchiveファイルから読み込む云々でモチベ下がりましたけど
なんで画像やサウンドみたくスムーズに利用できないのか、と
なんら問題なく進められたのに。。
簡単な話、DXライブラリの関数に
getline(識別番号,配列[]))の代わりになるものがあればよかったのに。
引数が違うじゃないですが、どれも。 >>491
この問題を考えているので寝ることができないです
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
これの ( t_Char - '0' ); はなにを表しているんですか?
t_Char - '0'です。
なぜ、文字列の'0'を引く必要があるのか、知りたいのです。 t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' ); の意味や
'0'がなにを表しているのか検索しようにも
現状のワードだけで検索するのは無理ですよ。。
なぜ俺が長文のプログラムでしていることを
たった一行にできているのか、さっぱりです。 >>476の処理なんですが
二行目のint t_FileSize = FileRead_size( t_FileName.c_str() );
をしたあと、変数t_FileSizeは一切使用されておりませんが
ここでファイルのサイズを得る必要があるのはなぜですか?
どなたかわかる方、解説おねがします。 >>495
あぁごめんね
FileSizeの部分は消して良いよ
あとシングルクォートで囲んでるのは文字を示すよ C言語の基礎ね
で、'0'~'9'までの文字コードの値は順に並んでいる事が保証されてるから
'0'を引くと整数値に変換出来る
'0' → 48
'1' → 49
'2' → 50 //以下略 まあ文字周りのの仕様から考えると決してC/C++的には正しくないんだろうけどな
やっちゃうよな >>496
>FileSizeの部分は消して良いよ
ありがとうございます、FileSize、なぜ読むのか検索したり情報読んだりで
ずっと悩んでいました。必要無いんですね。
>'0' → 48
なるほど、"-48"を>>496さんは"-'0'"で表していたんですね。
勉強になりました。
ご迷惑かけまくって申し訳ありません。
あと、ひとつだけ質問させて頂いていいですか?
FileRead_openでハンドルを取得したあと、
string型のbuf配列を作って、まずは一旦そこに全部を入れ込みたいんですが
「getline(fh,buf[line])」の様な感じで使えるDXライブラリファイル読み込み関数が
判断つきません。もしかして、無い感じですか?
FileRead_getsを使って、
string buf[3000]; 
FileRead_gets( buf,3000, t_FileName ) ;
とか、いけませんか?
私は、一旦buf[]にぶち込んで、
そのあとはもうDXライブラリ関数とか必要無しの状態にして
buf[]の中を回して1文字を読み込んで二次元配列に格納していくって
処理をしたいのですが、、、、それが無理なら
やっぱり、FileRead_getcをつかって
一文字ずつ読んで格納することを考えていこうと思いますが、、 >>498
何回か言われてたと思うんだけど
FileRead_read関数を使えば良いんじゃないの? >>499
DXライブラリのリファレンスページの
「FileRead_read」のサンプルのプログラムは
画像データの取り込みなので
FileRead_read( Buffer, FileSize, FileHandle ) ;
が配列に使えるのか、わからないのです。
int t_FileSize = FileRead_size( t_FileName.c_str() );
string buf[3000];
FileRead_read( buf,FileRead_size,t_FileName );
これでいけますか? STLのstring?
それを3000個も用意する意味ないでしょ
配列やstringが何なのか分かってないとしか
やるなら
char t[ 3000 ]でしょ (要素数は3000から可変にすべきだけど)
FileRead_read( buf,FileRead_size,t_FileName );
何でファイルハンドル指定する第3匹数にstringをぶち込んでるの?
訳分からん事してるよ >>501
あ、すみません。
間違えました。
int t_FileHandle = FileRead_open( t_FileName.c_str() );
int t_FileSize = FileRead_size( t_FileName.c_str() );
string buf[3000];
FileRead_read( buf,FileRead_size,t_FileHandle );
これです。
これなら問題ないですか? string3000個もいらねーって言ってるだろーが!
バッファの先頭アドレスを指定する所にstringの実体を入れてるのも駄目だと思うけど
あと夜遅くてPC使えないとかで手元に実行環境が無いんだったら
使える様になるまで待ってみては?当てずっぽでソースコードっぽいものを書かれても困る >>503
String型(文字列型)とchar型(文字型)と勉強したんで、
csvに入った長い文字列(3,12,43,34,0,32,2,....が数百並ぶとかザラです)を
入れるためにString型を用意したつもりです。
実際、エラーは出ずに今まで動いているのですが、問題になっている理由を
聞かせてください。
char型でも
while(ifs && getline(ifs,buf[line])){
line++;
} 
は正常に動くんですよね?
ちなみに3000というのは、csvの文字列がどれだけ長くても対応できるように、、
と思ってそうしているんですが、、、文字列の量によっては無駄になるメモリもありますが、、
>当てずっぽでソースコードっぽいものを書かれても困る
確かにまだ確認はしていませんが、熟練の方でしたら
どうなるのか、わかるかなと思いまして、、聞いてみました。
(確かにいちいち自分で試せばいいですが、以前予期せぬエラーというか
無限ループとか、そういう危ないエラーを食らったことがあるので
なるべく聞いて確認したい気持ちもあります) 結局、今夜も夜通しで進展せず朝を迎えた。
プログラムとサイトやブログとにらめっこしてました。
外部ファイル扱いの理解度が足りないせいもありますが
一番は、DXライブラリサイトのリファレンスが親切じゃないこと。
archiveファイル読み込み関数でcsvファイルを扱う場合の説明が不十分。
ifstreamやgetlineで問題なく動くプログラムをやっとこさ組めたのに。。
画像やサウンドなんてFileReadで触らずとも、それぞれ描画関数や再生関数で
archiveファイルから勝手に開けるのに、、、なぜリファレンスサンプルに
テキストファイル取り上げないの、、、、、、 C/C++にはString型(文字列型)なんてものは無く
std::stringクラスオブジェクトを3000個も用意するなって事でしょう
基礎の理解がおぼつかないまま先に進もうとしてめちゃくちゃになってる
DXのサンプル無くてもCのfopen/fread辺りのTXT読み込みサンプルを探して試してみて
デバッガで動きが理解できたら対応するDXライブラリのAPIに置き換えればいい >>504
例え話をしよう
新居を購入して、そこに引っ越し用のダンボール箱を3000個 搬入したいとする
※新居はダンボール箱3000個まで収容可能とする
でもあなたは"家"を3000個用意してる訳 おかしい事してるの、わかる?
プログラムでいうと、buf[ 0 ]のstringにデータが入ってて
buf[ 1 ] ~ buf[ 2999 ]は無駄になってる
あと文字列 = stringって思ってるみたいだけど
文字列って要はchar型の配列だから別にstringである必要は無いよ
文字列比較とかするつもりが無いんだったら、
std::vector< char > t_DataVec;で充分だと思うけど >>506
>Cのfopen/fread辺りのTXT読み込みサンプルを探して試してみて
fopen/freadあたりの扱い方が近い、ということでしょうか?
了解しました、一度確認してみます。
>>507
ものすごいわかりやすい例え話でした。。
ありがとうございます、ちょっとそれを考慮して修正してみます。 Ruby では簡単。
Ruby, JavaScript などの動的言語を一通りやっていないと、C などポインタのある言語は無理。
言語の難易度が違いすぎる
# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
input_file = "input.csv"
CSV.foreach(input_file, col_sep: ":") do |row|
puts( row[0] + row[1] )
end >>509
今の話題に関しては、メモリ空間を認識できるかどうかの違いでしか無くね…? >>501さん
>配列やstringが何なのか分かってないとしか
>string3000個もいらねーって言ってるだろーが!
>>507さん
>buf[ 1 ] ~ buf[ 2999 ]は無駄になってる
あのうお二人にお聞きしますが、charかstringのどちらがふさわしいかは、今は置いておいて、
stringだと、buf[3000]も要らないんですよね?
私はbuf[3000]のbuf[ 1 ] ~ buf[ 2999 ]は無駄になってるって話でしたよね?
(私は怒っているわけではありません)
string buf[3000];をstring buf[1];に書き換えたら
ビルド後、エラーが出る様になったんですけど、、
もちろん、string buf[3000];に戻せば、正常に動きます。
どういうことでしょうか。
ちなみに私の作ったソースは>>469なんですが、
string buf[1];にしただけでエラーが出始めるということは
列数が足りてないってこと=[0]からも利用してたってことじゃないでしょうか。
お二人は、ちゃんとソースを理解して、無駄だからやめろ、と
ご指摘してくださったのかと思っていたのですが、、、
私はstring buf[];にcsvの文字を入れ込む必要があるので
念のため3000にして、いくらか余りが出てもいいくらいの思いで宣言して利用してるんで
お二人にご指摘された後、ん〜、string buf[0];でcsv内の文字列が全部格納できれば
世話ないんだけど本当かな〜、ともちょっと疑っていたんですが
先ほど試してみて、やっぱりエラーが出た、とう結果です。
>>469のソースの
while(ifs && getline(ifs,buf[line])){line++;}
ここの部分、このgetlineでbuf[]を使うわけですが、[1]だけじゃ困る、
ということですよね??
[3000]を[1]に変えてエラーになるということは。 完全にスレ違いなので他所に行った方がいい
個人的にはc++の教本を一から読み直すことを勧める。
初歩的なことが全くわかってない、ということをまず自覚したほうがいい あと、すみません>>476さん、
昨日からずっと>>476さんのソースを研究させて頂いてるんですけど
間違っているのではないかと思われる箇所があるんですが、
自分の思い違いなのか、書いた>>476さんにお尋ねさせてほしいのですが
//マップの配列を確保
t_MapDataVec.resize(t_Height);
for( int i = 0; i < t_Height; i++ ){
t_MapDataVec[i].resize(t_Width);}
↑
ここで配列t_MapDataVecの行数はt_Height、
t_MapDataVecの要素数はt_Widthからそれぞれ決めていますよね、
ここはそれで正解なんですけど、
問題はこの後、その配列に数値を格納するときなんですが
t_MapDataVec[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ] = t_Sum;
++t_LoadNum;
↑
これでは、行数の添え字の進み方ががおかしくなりませんか?
これ、行数と要素の添え字を両方ともt_Widthを利用して算出してます。
しかし、行数の数はさっきのresizeではt_Heightで決めています。
つまり、t_Widthとt_Heightの値とは必ず同じというわけでは無いはずなので
t_Widthだけを利用した算出方法では行数の添え字の動きに支障が出ませんか? >>512
>初歩的なことが全くわかってない
それは>>511の内容(エラー)について
私の方が無知で責められる内容だということですか?
ご指摘頂けませんか?
「あなたが言う様に変更したらエラーが出る様になりました」
「、、お前は初歩がわかってないから消えろ」では
納得いきません。申し訳ありませんが、自分が間違っているのであれば
気付かせてからの「わかったら消えろ」発言にして頂きたいです。 >>512
もしかしてstringでは配列を作る必要がないということですか?
string buf[1];では無くstring buf;にしろと。
それはそれでエラーになるじゃないですか。
ここで↓
while(ifs && getline(ifs,buf[line])){line++;}
だからbufは配列じゃないと困るんですけど、、 >>512
ちなみにこの
https://teratail.com/questions/44651
PAGEの質問の回答者の中に
>C++なのに、あえてmojiretuをchar配列にする理由があるのでしょうか。
>std::string mojiretu[10];
>このように定義しておけば、
>mojiretu[0] = s;
>mojiretu[1] = s2;
>は問題なく通ります。
とstringで配列を作ることを肯定する記載もあります。
別に、charでは無くstringで配列を作ってもダメな手では無いはずです。 >>518
そもそもstringクラスの話はココの人に「それでは無駄がでている」との指摘を受けて
話に出しているだけで私としては修正することでエラーが出るなら
buf[3000]で無駄が出ていようが構わいことです。
とにかく、何日も悩んでいるのは、archiveしたcsvを読むのに、
DXライブラリ関数を使っているのにビルド上は問題ないのにarchive後は正しく読まない、
その理由がわからない。
>>477さんが指摘したDXライブラリ関数では無いgetlineも
自分で新たにbool getline2(int fh, string& s);と宣言し
bool StageDataBase::getline2(int fh, string& s)
{char buf[1024];
if (FileRead_gets(buf, sizeof buf, fh) == -1) return false;
s = buf;
return true;}
とFileRead_getsを使って入れ込む関数を作っても、archive後は正常に読み込んでいない。
ここの住人さんが提示するソースを研究なり導入しても改善せず、なにがなんだかわからんのです。
私の未熟なのはわかりましたが、私のやりたいことに対して、
現在のソースの間違い個所を指摘してもらいたいんです。
未熟だ、charでは無駄が、とか正直そんなのどうでもいいですよ。
解決したいのは、archiveしたcsvを今のソースでは
正しく読んでくれないんです。どこが間違っているせいですか?
それがご相談したいことなんです。 >>while(ifs && getline(ifs,buf[line])){line++;}
>>ここの部分、このgetlineでbuf[]を使うわけですが、[1]だけじゃ困る、
ということですよね??
「一旦CSVファイルの内容を全部変数に格納して、
その変数からデータを読み込みたい」って話だったでしょ?
バグってんのは、あなたがそういう仕様にコードを修正出来てないから
>>while(ifs && getline(ifs,buf[line])){line++;}
>>だからbufは配列じゃないと困るんですけど、、
bufじゃなくて、そのwhile〜の部分のコードの方を修正するって考えに何故ならない?
>>getline(ifs,buf[line])
別の掲示板の書き込みを見る限り、これあなたが独自に定義した関数でしょ?
関数の説明も無く「エラーが出るんですけど」とか言われても他人は答えられんでしょ
>>これでは、行数の添え字の進み方ががおかしくなりませんか?
おかしくないよ?具体的な数値入れて見直してね
基礎が出来てないとこんな有様になるんだねぇ…可哀想に 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) そっちは本当に正解が見えているのか、いないのかわからないのに
私の相談内容外の問題ばかり指摘してくる方だろうと
レスをくれたからにはちゃんとこちらも返事しているつもりです。
私のほかの問題はどうでもいい。相談内容に対しての
perfectなご指摘が欲しいんですよ、私は。
今のところ、本当に有益だった解答は、たったひとつだけです。
>>477さんの
「DXライブラリ用のArchive作ってるのに
それを通常の入出力関数で読み出そうとしてるのがバグの原因だよ」
だけです。
それ以外は、正直どうでもいいことです。
ソースは千差万別、実力によりピンキリでしょ?
無駄があるとか、綺麗じゃないとか、言いたいことはわかりますが
正味の話、ビルド後、思ったことができていれば問題なくないですか?
みんなが見るのはゲーム画面です。ソースじゃないんですよ。
私はブサイクな自分のソースを晒してまでご相談させて頂いてるんです。
自分のソースに対して、なぜarchive後に正常にcsvを読めなくなってしまうのか、
perfectなご指摘を、どうかお願いします。 大前提だけどアーカイブにはちゃんと目的のファイル入ってる?
FileRead_gets後のbufの中身はデバッガなりprintf/OutputDebugStringAで見て
正しいデータか壊れているかは確認してるよね >>521
あのですねgetline関数は
istream クラスのメンバー関数です。
C++の関数ですよ?
知らないんですか?
ただ、>>477さんにDX専用の関数つかえと
指摘されたので
あとでDXライブり関数を利用するgetline関数を自作しました。
それがこれです↓
bool getline2(int fh, string& s);と宣言し
bool StageDataBase::getline2(int fh, string& s)
{char buf[1024];
if (FileRead_gets(buf, sizeof buf, fh) == -1) return false;
s = buf;
return true;}
で、FileRead_getsを使って入れ込む関数を作った、のに
やっぱりarchive後まだ正常に読んでくれませんでした。
だから未だに困っていますが。 このくそがき、コピペしてそのまま動くパーフェクト(笑)なコードよこせと駄々をこねてるんだろ?
ソース書いてやったらお礼も書かずにすたこらさっさと消えるタイプだから相手にしなくていいよ
C++入門書のメモリ管理とファイルIOの章でも100回読み返せw お前らのほとんどのレスが無益だったらしいぞwww
スレチなんだからスルーしとけよ 今のところ、本当に有益だった解答は、たったひとつだけです。
今のところ、本当に有益だった解答は、たったひとつだけです。
今のところ、本当に有益だった解答は、たったひとつだけです。 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) >>523
>正しいデータか壊れているかは確認してるよね
もちろん、デバッグで確認して、bufじゃないですが
最終的な配列の中身を確認し、ちゃんとcvsの数値が
そのまま各要素に入っていることは確認しています。 それ以外は、正直どうでもいいことです。
まじクソやなこいつwww >>525
あなたみたいな人間こそ、必要ありませんよ。
私のレスを見て、どこがコピペで済むソースくれ、と読み取れるんですか?
修正しながら何度も問うているでしょ
何度も修正し、頑張っているんですが? >>530
ほぉそれにしては
まともにレスしてるやつに対してよくも「正直どうでもいいことです」とか言えるなお前
消えろカス まあこのスレの住人も千差万別、私よりも知識がある人ばかりでも無し。
外部ファイルから読み込んだことも無い様な人もいるんでしょう。
自分は的確な回答ができない人がそうやって煽るしかできないんでしょうね。
DXライブラリでゲーム作りながらも
archiveファイルにしてない人も沢山いますから。
それどころか、ゲームを完成させたことも無い人もいるでしょうから。 https://dixq.net/forum/viewtopic.php?f=3&t=20345
class MapCheck {
vector<vector<int>> Map;
int m_line, m_col;
public:
void LoadData(int y, int x, string s);
void ShowData(int y, int x);
bool getline(int fh, string& s);
};
getline を定義してやれば、そのコードで動くことを確認しました。
お前上記の掲示板でgetline独自に定義してるじゃん
お前が使ってるのはistreamクラスのメンバー関数じゃないよ
>>C++の関数ですよ?
>>知らないんですか?
何?その基礎も理解も全く出来てねーくせに喧嘩腰の言い方
もう知らネ 一生困ってろ >>531
まともにレスってなんですか?
相談内容とはまったく違うことに目を向けてきて
「基本からやりなおせ」と指摘してくるレスですか?
相談内容とはまったく違うことに目を向けて
そこ無駄だからcherにしろ、と言うレスですか?
私は、私の相談内容を理解して
それで間違い個所を指摘してくれるレスが欲しいんですが。 >>533
それはあなたがその掲示板を先にみて、
先入観をもってるだけでしょ。
私は、その掲示板で相談する前から
自分のソース内で
#include <iostream>してgetlineを利用しています。
その相手の方が、#include <iostream>してることを
知らないから独自に作っただけです。
私のソースではgetlineを定義せず、動いています。
あなたの勘違いですよ ひとつ、言っておきたいのですが、
私のソースは、動くんですよ?
ちゃんと完成してるんです。
ただ、releaseビルドしたあと、素材はフォルダごと
archiveしますよね?
そのarchiveしたフォルダを読むと、うまく読まないんです。
そういう相談なんです。
なのに、archiveファイルを読むのに
関係無い個所の指摘や意見をされても
その話に乗っていくと本題からそれていくので
私も困るのです。 >>535
記載されたソースコード見る限り
#include <iostream>してないけどね 勘違いもクソも無いだろ
>>その相手の方が、#include <iostream>してることを
>>知らないから独自に作っただけです。
意味不。
あと「上手くいかない」「エラーが出る」とかじゃ意味分からんね 具体性がない 素材フォルダをarchiveしなければ、
素材フォルダと実行ファイルとでもう動くんです。
ただ、素材フォルダをarchiveしたいと思ったから
>>477さんのおかげで、archiveしたファイルを扱うなら
DXライブラリ関数にしなければならない、とアドバイスを受け
読み込み部分のプログラムを修正しなければならないと知りました。
で、今、いろいろやってるんですが、正しく読み込まない、
なぜだ?DXライブラリ関数を使っているつもりなのに、、、困った。
そういう現状なんです。
どうか、このバカめに、知識人様のお知恵を貸しください。
どこが間違っているのかの、ご指摘がほしいのです。 >>537
>あと「上手くいかない」「エラーが出る」とかじゃ意味分からんね 具体性がない
まあ、どういう状況かはこのスレに書いてきたんですが
途中から来た貴方に私が過去レスを見てくれというのも
おこがましいので、貴方のために説明します。
経緯は>>538です
で、私のもともとのソースは
>>469です。
これがarchiveファイルにしていなければ正常にcsvファイルの中身を
Map配列に入れ込める関数です。
この段階のgetline関数はiostreamの関数です。
そのgetlineでなにが行われているのかは、もちろん私より承知なんでしょう。
まあ要は、
このソースのどこをDXライブラリ関数に変えたらいいのか、という相談なんです。
ピンポイントで修正個所を言ってくれる人はほとんどおらず、
別の部分をいろいろご指摘されたわけですが。
で、次にDXライブラリ関数を使って
自分なりに完成させたソースを貼りますね >>539
ここ毎日夜通しで修正してますし、
夜通しでここに書き込みしています。
こんなにヤル気がある生徒なのに、、 夜通しやって昼間やらないんじゃ逆効果だろ
自律神経狂うし寝不足で効率落ちるから、休息にもヤル気が必要
ただし煽り猿は気にしなくていい じゃあもうアーカイブするなよw それで解決じゃんwww まず、>477の前に俺が>468と>471でパーフェクトな回答をしたことに気付いてほしい
あと、パーフェクトな答えはいっぱい出てるのに何故できないのかというと、君は「変数の型」のことがわかっていないのに自分ではわかってるつもりになっていて、何度それを指摘されても理解しようとしないから
間違いの一例をあげると
>int fh = FileRead_open(s.c_str());
>ファイル内の文字がfhに入ってると思ってるんで
これはC言語の初歩を勉強した人なら絶対にありえないパーフェクトな間違いで、これに気付かないのが全ての元凶になってる
型も入出力も全くわかってない上に、DXライブラリのリファレンスを読む気まるで無しなので、何を説明しても通じない
しかもこういう間違いが書き込みのたびに出てきてるので、皆が基礎を学べと言ってる
もうきりがないので究極にパーフェクトな答えをピンポイントで書くと、
DXライブラリのリファレンスをよく読みCのファイル入出力と見比べて
FileRead_read、FileRead_getsあたりを使って「型の合った正しい引数」を与えればうまくいく >>大前提だけどアーカイブにはちゃんと目的のファイル入ってる?
>もちろん、デバッグで確認して、bufじゃないですが
>最終的な配列の中身を確認し、ちゃんとcvsの数値が
>そのまま各要素に入っていることは確認しています。
アーカイブからFileRead_readでCSV読むのは解決済みじゃないか おめでとうさようなら
Releaseビルドすると不安定な挙動になるのはエラーチェック不足や初期化漏れのせい
Debugビルドのときはcharやintのローカル変数が自動で初期値クリアしてもらえてるから >>542
本当にその通りです、
この生活を繰り返してたら剥げそうです
優しい言葉に涙が出そうです。
連投したこと、反省します。
>>544
>俺が>468と>471でパーフェクトな回答をしたことに気付いてほしい
はい、実は>>522を書き込んだあとに過去スレ見返して
あなたが真っ先にperfectな回答をくださってると気づきました。
すみません、477さん以外にまともな回答が無いみたいな発言をしてしまって。
あと、あなたのご指摘が胸に刺さりました。
プログラマに向いてない性格の自分を再確認させられました。
実は私はプログラマに向いてないのに無理やり頑張っていた人間で
ゲームが完成して、調子に乗ってしまっていたようで、自分のそれを忘れていました。
私はすべて独学ですので、まともに学んだとは言えません。
>もうきりがないので究極にパーフェクトな答えをピンポイントで書く
ありがとうございます。
それをちゃんと実行して、考えたいと思います。
>>レスくれた皆様がた
皆様、もう一回初心にかえり
リファレンスとにらめっこしてまいります。
ご迷惑おかけして申し訳ありませんでした。
失礼します。 >>546
ifstream ifs(s);
ここのsに何が入ってるか気になる
まぁとりあえず
現状のDXライブラリの関数しか使ってないソースコード貼ってくれ プログラマ向いてないのとまともに学んでないのはソース見てわかったよ
こんなところに躓くほどアホなやつ他の初心者スレでも見たことないし 俺かなり真剣に考えてレスしたはずなのに
有益ではないと断言されてしまった というか、>>546はちゃんとデバッグしてる?
ステップ実行とかすれば簡単に原因が分かるはずだが?
「アーカイブにした途端読み込まない」って
十中八九ファイルパスが間違っててopen出来てないからそこを確認すべき
大方、下記の状態の時に
f.open("data.csv");とか
f.open("csv/data.csv");とかやってんだろうけど
■Test
┣Archive.dxa
┗game.exe デバックで問題点をぼりこむスキルもないのに、
いきなりゲームを作ろうとするからだよw
そもそもスキル足らない人間の質問なんて要領得ないし、
自分のコードは見せないけど、俺のコードのどこに問題点があるか教えてケロケロって言ってる
アホさ加減にすら気がついてない。 だから、Ruby から始めればよい。
大学の授業を受けたほとんどの人が、C 言語はわからないし無意味だって、言ってるw
>プログラマに向いてない
C/C++ などポインタのある言語は、
人間には無理なことをやらしているのだから、向いていないのは当たり前。
君らは、多言語の経験が無いから、自分が馬鹿だと思っているけど、全然違う!
漏れは、10言語以上やってるけど、
動的言語・静的言語・ポインタのある言語の順に、難しくなっていく。
人間から離れて、機械に近づいていくから、だんだん無理になっていく
C++ なんて、1万人に1人とかだから、もっと無理。
数年山籠もりが普通
慶応卒の、Rubyの女神・女優の池澤あやかが言ってる。
授業でC を教えるのはおかしい。
Rubyから始めるべきだって!
C/C++が必要だからって、勉強をC/C++から始める必要はない。
ポインタを追っかけ回すのに時間を取られて、勉強にならないから効率が悪い
動的言語から始めて、プログラミング・システムの基礎を学ぶべき ゲームプログラマになる前に覚えておきたい技術、平山 尚、2008
これは大賞も取った、俗に言う「セガ本」だけど、
セガの入社試験を受ける前に、読んでおいて下さいって言うけど、
これだけでも、マスターしている人は、セガにほとんどいないだろうw
何歳までに始める言語とか、この手の本も、全く簡単じゃない
この手のタイトルの本を、信用しない方がよい。
C/C++ なんて、簡単に学べるわけがないから! >>509
Ruby では、これだけで、CSV ファイルを読み込める。
動的言語では、ファイルI/O なんて読み書きできて当たり前!
ポインタのある言語をやるから、難しくて出来ない
動的言語・静的言語・ポインタのある言語の順に、難しくなっていくから、
ポインタのある言語なんて、多言語でプログラミングして、10年後に始めるべき
言語の難易度が違う
なぜ、C/C++ をやる人が、プログラミング出来ないのかを解説した >動的言語・静的言語・ポインタのある言語の順に、難しくなっていくから、
>ポインタのある言語なんて、多言語でプログラミングして、10年後に始めるべき
例えれば、君はヒマラヤ登山をする初心者w
絶対に無理なのが、わかるよね
まず10年は、簡単な山から登って、基礎体力や登山の方法を学ぶ
まず10年は、コンピューターシステム・プログラミングの方法を学ぶ >>char buf[1024];
>>if (FileRead_gets(buf, sizeof buf, fh) == -1)
あと高確率で勘違いしてるだろうから
ついでに上記のsizeofについてもダメ出ししとく
sizeof演算子を配列に使用した場合、
得られるのは「配列全体のサイズ」であって「配列の要素数」じゃない
多分、要素数が求められると思ってるでしょ?
char型はどの処理系でも1バイトだからたまたま問題なく動くけど
配列のサイズ/配列の要素1個のサイズにしとかないとintとかdouble型とかだと範囲外エラーになる そのsiseofの使い方はなんら問題はない
なぜなら関数はバイト数を入力されることを期待しているから
突っ込みどころはそこじゃない あホントだ この関数はサイズ指定でいいのか すまぬ
しかし「int型に文字列のデータが入っている」と思うレベルで
ゲームを完成させたというのなら逆に凄いと思うわ ファイルの読み込みなどは、C でやらない。
Lua, Squirrel などの動的言語を使う
本当は、Rubyが良いけど、ライセンスがGPL だから、アプリに組み込めない デバッガーを使って、1行ずつ、デバッグすれば?
それか、Rubyみたいに各行に、Print文を入れていく
p 0
文1
p 1
文2
p 2
これで、どこまで処理が進んだかわかる
例えば、0, 1 と表示されれば、文2 でエラーを起こしているとわかる sp4用のDXライブラリ使いたいのに、自由に使わしてもらえないの?
DXライブラリ製作者じゃ無く、変な運営団体が牛耳ってないか? PS4に限らず、CS向けの開発資料関係はソニーと要契約だし、
PS4向けのDXライブラリにはそういう情報も含まれてるでしょう。
いづれにしても個人が契約結ぶのは無理だし、この会社が窓口請け負ってんじゃないかな。
おそらくOSSにはならないと言うかなれないと思うよ。 CS開発にDXライブラリの知識や資産が活かせるってだけであって
DXライブラリを使えばCS開発ができるという意味ではないからなあ 結局この前のやつはアーカイブから読み込めたのかね
教えてクレクレ君は大体が初歩的な内容をマルチポストして
解決するか挫折するかして失踪するから困る
基礎を学ぶ気が無いんだったら◯◯ツクールとかの製作支援ソフトでも使ってりゃいいのに PS4の開発機材要るしね。実行環境なければソフトウェアだけではどうにもらなん。 C/C++ は、ポインタがある言語だから、難しい
機械に近い言語だから、人間の感覚に合わない。
一つ一つのチェックに、時間が掛かる ポインタがあると思うから難しく感じるねん。
基本がポインタで、int や char が特別やねん。
基本が malloc で、配列が特別やねん。
ほんでその特別な方で済むならそっち使えばええ言語やねん。
思い込んでるほど難しいもんやあらへん。
C++ はそれにたくさんもっと約束事を追加してるもんで、
覚えるのは大変やけど、それ覚えたらプログラマ同士でより複雑なプログラミングも可能になるわけや。
C が三角ベースなら、C++ ベースボールやんな。
そこまで構えんでええ。独習シリーズ買ってあとは必要に応じて参考書買えば大丈夫、大丈夫。 ポインタを難しいと全く思わなかったせいか
人に教えるときも、どうもそのへんの感覚が分からんのよねぇ ダブルポインタ、スマートポインタ、constポインタ、const変数へのポインタ、関数ポインタとか
色々あるけど、別に「理解不能」とはならなかったな
ポインタで詰まってる人ってどこで詰まってるんだろね 入門書を読んで理解して無理のない使い方するだけなら簡単だろう。
理解が難しい書き方も出来るから、そういうコードを見た時に難しいと感じるんだろう。
あるいは全く意識しない書き方も出来るからこそ、なぜポインタなんてものがあるのか?と理解に苦しむパターン。 言語の機能が極端に少ない・足りないのをポインタという裏技でどうにかするのがCやで
むしろなぜド素人がCなんて使うのか?と理解に苦しむパターン。 >>580
は?俺Cとかめっちゃ使えるしド玄人なのになんで勝手に文脈を誤解されてド素人言われなければいけないのか理解に苦しむパターンだわこれはマジでむしろ理解に苦しむパターンの理解に苦しんでるパターンだろ。
なんで理解してないのに理解に苦しむパターンを勝手に使うのか理解に苦しむパターン。 ダブルポインタとか言ってるやつは人間として信用しない STLやポインタが難しいって20年も昔の話だろw
関数ポインタとか、ポインタのポインタとか、C#とか他の言語でも息を吸うように使われてるよ Cだとポインタ使わずに書くのが難しい処理があるのは事実で、
それに慣れた使用者にポインタは難しいとか他言語にポインタはないとか言っておけば耳障りはいいし、他言語を自由度の低いものとして恐れるようになる。
つまりC言語帝国主義者の陰謀でポインタに関するデマが広められているだけなので要注意。 C/C++入門書なんかよりJavaやC#から始めた方がポインタの理解が早いかもな ゲーム作るのが目的だし、PCの性能も上がってるから
スクリプト言語のような動的な言語もありだし、JavaやC#から入っても良いだろう。
ただまあ、DXLibのスレでC/C++の文句言うなら他をあたりんさいとしか言えんがな。
ただスクリプト言語用のゲームライブラリってそれなりにあるけど、開発が止まってたり、
LGPLだったりと別の意味で使い勝手が難しいものが多いね。 もう一度言っておくが俺みたいに機械語から始めれば何の問題もないぞ 機械語を知らないのかネタなのか、判断に困るのである
機械語は難しいというより面倒臭そうなイメージ 【天文台閉鎖、FBI】 アポロ捏造のキューブリックも真っ青、太陽に映ったのはマ@トレーヤのUFO
http://rosie.5ch.net/test/read.cgi/liveplus/1537840672/l50
おまいらが注目しないから宇宙人は出てこれない、その結果、地球の放射能危機がどんどん進んでしまう! ポインタが難しいから、ほとんどの言語にはポインタがない
GC で、自動的にメモリも解放する ポインタは簡単だからポインタ・関数ポインタと同等の機能が他の言語でも当たり前に使われている
ゲームだとガベコレ回避にRAIIでメモリを扱うし結局やってることは同じ
バッファコピーをforループでするより組み込み関数memcpy()の方が速いとか、
ポインタの利点はそんな微々たる最適化に使えるかどうかだな
もしその粒度で高速化したいならc++のクラスとかSTLは全部使えん ダメだー、頭が悪くてわからない!
誰か数学に強い人、計算方法教えてくれませんか、、、
1マスのサイズが16×16、そのマスを縦横並べて構成されている
碁盤上のフィールド上で、1マスと同じ16×16のサイズのプレイヤーが
縦、横、斜めと縦横無尽に1ドットずつ移動できるとする。
しかし、そのプレイヤーが移動を辞めてストップするたびに、
その碁盤の区切りにプレイヤーを綺麗に合わせるために
プレイヤーのx、y座標を16で割れる数に修正したい。
つまり、止まるたびに配置を調整されるようにしたいんだよ。
でもどうすればプレイヤーのその時のx、y座標の数値から、
一番移動修正が少なくて済む16の倍数を割り出せるのかが思いつかない、、、
なんか良い計算方法あります? プレイヤーが移動をやめるということは、方向キーの入力をやめるということでいいのか?
移動してる最中は上下左右斜め自由自在に動けるけど
キー入力をやめたら最寄りのマスに合わせて止まるってこと? 602のいうように16で整数除算すりゃいいんだよ
X軸座標が0から始まるとして、プレイヤーのX軸座標を16で除算した結果が、0から連番のマス位置だ
マス位置の番号に16を掛ければ、そのマスの基点(左端のX軸座標)が求められるからプレイヤーのX軸座標を合わせりゃいい
Y軸も同じ考え方 >>600
座標をfloat型などの小数型に変換(型キャスト)して、
16.0fや16.0で割り、
小数第1位を四捨五入して、整数型に変換(型キャスト)する
四捨五入の方法や分からん言葉はググルべし 整数型として、
プレイヤーの「中心座標」を、マス幅(16)で割る? うあ、リロードしてなかった
恥ずかしい
それはともかく、移動をやめたときに適当な座標に合わせるって挙動いいな
自分も機会があったらパクるわ 16で割るだけだと移動やめたとたんにカクッと移動しそうな感じするけど >>608
実際にやるなら、
・入力ニュートラルになってから一定時間立つと自動移動フラグがON
・自動移動がONの間、少しずつ対象座標に近づく(一定ドットずつなりイージングなり)
・移動完了または入力があったら自動移動フラグOFF
かな うわー、起きたら、
みんなありがとうございます!
こんなにアイデアっていうか、計算方法出してもらえるなんて
過疎過疎なんで返事無いと思ってましたんで
>>601のおっしゃる通りで、イメージとしては、
将棋版の上でプレイヤーが将棋のコマを好きに移動させられるけど、
移動を止めるたびに、そのコマを盤上の最寄りのマスにきっちり合わせて止める
って感じです。
マスもコマも16×16で同じサイズなので、
一番大きく修正される状態でも半分の8ドットなはずなんで
そこまで瞬間移動に見えないかなと思ってます
とりあえず、>>602さんと>>603さんのが一番理解しやすかったんで
それが最良っぽいんで、それでやってみます。
あ、プレイヤーの移動数値、座標位置ともにdouble型の小数点でやってるんで
>>604さんの案でいえば、キャスト変換しないほうが(すでに小数点なので)良い??
逆で、その都度int型にキャスト変換してから>>602さんの言う16で整数除算した方がいい?
自分ではよくわからない、、 >>610
やり方はいくつか上がったんだから、想定する入出力例をいくつか紙に描いてみて、
コンソールアプリでもビルドして、どのやり方が適切か計算結果を確認してみりゃいい。
一番良いやり方は当人しか分からん。
上がっている方法について少し付言すると、
整数型の割り算は小数が切り捨てられる。
また四捨五入する値が負の場合は、半分の値を引く必要がある 整数で割るのはマップデータの当たり判定のほか
パズルゲームとかマウスでアイテム欄から選択とか
いろいろ応用が利くので慣れとくといいかも 単純に「座標なら整数型で持ってるだろう」という前提で
みんな話してたと思うよ
座標みたいに整数で出力される値でも
内部的にはdoubleで持つというのは、理由があるなら別に悪いことじゃない
まあfloatは無いかな… doubleじゃなくてlong longにして100で割って下二桁を小数点として扱えば? 今始まった話じゃないんだけど。
ttps://i.imgur.com/U9YOAm8.png
DXライブラリ関係だけ曖昧と指摘されて、コンパイル出来ない。
思い出した様にたま〜〜〜に出て、一度終了してから起動すると出ない。
出ない時は全然出ないので再現性がなく、作者様にお伺い立て様もなく。
VisualStudio2017Comunityですが、同じ症状の人います? もともとVisualStudioは外から来たライブラリを激しく嫌う習性がある
if文の括弧つけ忘れとかセミコロン置き忘れのようなライブラリと関係なさそうなミスでも
「おめーの関数あいまいなんだよ」みたいな態度を取って文句を言ってくる ABCDEFGH
1□□□□□□□□
2□□□□□/□□
3□□□□//□□
4□□□//□□□
5□□□/□□□□
6□□□□□□□□ DXライブラリ関係ない話題ですんません
2DのRPGの話なんですが
普段は上下左右の4方向にしか移動できないタイプのゲームで
マップで坂道を表現するときの処理の仕方なんですけど、どんな風にやればいいかなと
マップの侵入不可とかの地形データの中に坂道フラグみたいなのを設定して
移動の時にそれを参照して、現在位置の地形が坂道の場合、斜めに移動する
ってやったら>>618の図で言うところ
のぼる時は 4C→4D→3E→2F→1Gになり
戻ろうとすると1Gは平面で1Fに行ってしまう
また階段途中で引き返しても4Dから5Cに行っちゃう
要するに、坂道に足を踏み入れた時と、坂道から抜け出す時の座標のずれが気になるんですよ >>619
横視点?
上からの平面マップで疑似斜め地形を表現したいってこと?
重力はあるのかな? >>620
横視点というより上視点でしょうか
普通にRPGツクールシリーズのマップみたいなイメージです
坂や階段を表現するときにどうしたらいいかなーと
今のままでも5のラインから登って行けば2のラインに出て
2のラインから降りていけば5のラインにたどり着くんですけど
先述の通り途中で引き返したりすると違和感が出てきてしまって…
気にしすぎなだけかもなんですが 真上視点で斜めに移動するってのがイマイチ分からない >>622
FF6の町マップにある階段のような挙動をイメージしてます なるほど把握
マップチップで考えずに、
単純にキャラクターの表示座標を上方向にズラすんじゃダメ?
もちろんそのままでは背景との整合性が取れなくなるから
マップチップの方をうまく調整しなきゃいけないけど 5Cから1Gまでは一直線移動で途中から横には出られないようにすべきだね。
エスカレーターの出入り口みたいにする。エスカレーター内は左右or上下で自力移動だけど。
途中で降りられるようにするとおかしくなるよ。 いまさら遅いと思うけど、グリッドベースで進行するゲームの場合キャラの位置もグリッド座標で持つようにして
キャラ絵は接触判定とか無視して自動で指定位置に移動するほうがいい
落ちものパズルとかターン制ストラテジーがだいたいこんな感じになってる >>616
む、そーだったのか!
でもwarningはあったとしてもerrorはない状態でも出るんですよね。
再起動してビルドするとスンナリ通ります。 visual studioといってもC++コンパイラだけでしょ
テンプレートのエラーなんかでも的外れなエラーをずらずら吐き出すし VisualStudio2015で使ってるけどたまにあいまいですって出るなあ
ビルド通らなくなったかは覚えてないけど気持ち悪い以外に特に問題はないみたいだから気にしないようにしてる 2013でやってるけどあいまい出て気持ち悪かったなぁ、ctrlk+ctrldで何故か直ってたが 過疎ってたから何らかの話題出したかっただけやですまんな ios対応したんか
mac持ってないとビルドできないのかな クロスコンパイルのこと言ってるのか?
DXLibじゃ無理だろ。 ios対応したのかー
まぁ、俺の昔作ったプログラムは、あることがしたくて、dxlibの非公開APIとwindowsAPIを直接叩いているから、移植は難しいだろうなぁ >>615
何度見直しても問題点が見付からなかったので、発生した関数内で呼び出している関数のプロトタイプで
extern void test( int ,int);
としていたのを
extern void tese( int a ,int b);
にしたら、赤線が取り敢えず消えた。 型だけじゃなく仮変数も付けた方が良いのか。
他にも発生条件あるんだろうなあ。 本家サイトの掲示板で5chに自分の悪口書かれてるって騒いでる奴がいたから、
何を書かれてるのか見にきたら、別に何も書かれてなくてワロタ。
それどころか7ヶ月以上書き込みが無い…。
別のスレで書かれてるのか?
それとも総合失調症ぎみの人なのだろうか?
「ネットストーカーが」とか書き込んでるから、ちょっとヤバそうなそうな人の気配はしたが果たして…。
青葉の件から、ああいう書き込み見るとマジで不安になっちゃうよ…。 青葉真司、京アニの放火の犯人(と今の所されてる男)。
ネタや煽りで「ネットストーカー」とか書き込んでるんなら性格or頭が悪いってだけで、
実質的な害は無い(気分は悪いけどね)からまあいいんだけどさ。
世の中には少数だけど青葉みたいに本気で頭おかしい人が居るからね。
文面だけじゃ本気なのかネタなのか区別つかんし…。
こことか2chとかアングラな掲示板ならともかく、
平和な本家サイトの掲示板では使う言葉は選んで欲しいよ。
レスバしたいんなら、他でやればいいのに…。 ios対応ってどういうことですか?
だって、DXライブラリで作ったゲームって
directX必須じゃなかった??
アイフォンで動くゲームにビルドできるんですか? Android版とios版はOpenGL ESで描画してる。
ただし関数名はWindows版とまったく一緒なので、c++ソースが共用出来るのがメリットかな。
※OSに依存している部分は書き換える必要が有り
あと、当たり前だけどiosアプリ作るにはMacでXcode使ってビルドする必要がある。
っていうか本家HPに全部説明書いてありますがな…。 >>644
その人は、通称「虐殺ちゃん」といって
プログラマのQAサイトteratailやyahoo知恵袋、おしえてgooで騒いでる超問題児
teratailのスレでウォッチされてる >>652
teratailのスレ見てきた。
本当に同一人物なら相当ヤバいねあの人。
文章見る限りそんなに知能がたりないわけでもなさそう(人としてバカだし性格は糞だが…)なのに、
プログラミングに関しては本当に無能通りこして障害レベルだね…。
脳みその構造どうなってるんだろ?
ああゆうのが発達障害ってやつなのかな…。
それとも文章はギリギリ健常者だけど、他は知的障害とかあるのか?
日本語は通じてるようだが、プログラミングに関しての所は全く読めてない感じだもんなー。
バカのふりして遊んでるだけならまだいいんだが、なんかガチっぽいのもなぁ…。
しかも、執念も異常っぽいから、
何十年もかけて善良なひとを騙してかき集めたコードを繋ぎ合わせて、
何かゲームのようなもの(もちろんバグらだけ)を完成させるような気もするのがなお怖い…。 >>654
こんにちは、虐殺ちゃんですか?
こんな所まで出張とは精が出ますね。
その時間を使って、Cの基礎を勉強なさったらどうですか?
そして、あなた多分「怖い」の意味を理解できてないですよ、
日本語も不自由なようですね…。
一回辞書で調べてみてください。紙の本が面倒なら、google検索等で
「怖い 意味」と入れるとWebの辞書のページがヒットします。
多分あなたの知らない使い方が出てきますよ。
言葉には一つの単語でも色んな意味があるんです。
とりあえず、気になったら調べる癖をつけましょう。
そうすればプログラミングも上達するはずです。
頑張ってください。(なるべく人に迷惑をかけずにね...) Dxlibつかってゲームのロジックとか設計とか組むのは面白いけどゲームとして完成しない
かれこれ5年以上同じ事続けてる >>658
作ってるのが楽しいなら、別にそれでいいんじゃない。
そもそゲームってファミコン時代でも数人がかりで、数ヵ月〜数年かけてつくるもんだし、
一人で趣味で作ってたら十年かかってもおかしくないよ。
完成させるのが目的なら、とりあえず簡単なプログラムで済むゲームにして、
スケジュール管理もしっかりした方がいいとはおもうけどね。 まぁエンジンのが効率いいわな・・・
基礎的な部分は全部出来合いの物があるみたいだし
DXライブラリって結局全部自分で組めっていってるようなもんだよな? DXライブラリも一応ゲームエンジンに分類はされてるよ。
ただまあ、描画・サウンド・キー入力位しかサポートしてないからなぁ...。(物理エンジンはMMDのモデルのみ対応)
「Unity」「Unreal Engine」とかの開発環境付きのゲームエンジンに比べたらかなり手間ね。
(DirectXを直に触るよりは格段に楽だけどさ。)
ワールドマップを表示するだけでも、
「プログラムコード内でマップデータを数値入力する」
「既存のツールのファイルを読み込むプログラムを書く」
「独自ツール開発してファイルを読み込むプログラムを書く」
のどれかをしないといけないからね。
(専用の2Dマップエディタとか3Dマップエディタがあればかなり効率よくなると思うのだが…)
プログラミングが好きじゃないなら「Unity」とか「Unreal Engine」「ツクール」を使った方がいいよね。
あと利点としてはライセンス料かな、
確か「Unity」とかは無料版もあるけど売り上げがある程度あるなら金払わなきゃいけないからな。 画面を出す仕組みがデフォで組み込まれてるから一応ゲームエンジンといえなくもないが、
やはりライブラリを名乗ってる以上ライブラリな気はするw MMDに対応してるおかげでモーション作りやすいのは利点かな
UE4のcontrol rigも進歩してるけど俺のノートPCじゃUE4は重すぎる
マシン買い換えるまではDXだな エンジンっていうほどのフレームワークは持ってないでしょ。
マルチメディアライブラリ以外の何ものでもない。 TOPに置いてある14歳からの〜シリーズを見たせいなのか
DXライブラリが子供向けのゆとり仕様だと思ってる奴がいて腹立ったわ
Unityとかのがよっぽどお手軽だよな・・・? >>665
Wikiでもゲームエンジンに分類されちゃってるからなー。
(広義の意味でとは書いてあるが)
細かく言うとゲームに特化したミドルウェアなんだろうが…。
>>666
とりあえずゲーム作りたいならUnityの方がお手軽ね。
DXライブラリはC言語の基本さえわかれば、すぐ使えるって意味ではお手軽だけど、
それってCは出来る事前提だからね。
あと、マシンスペックはDXの方が低性能でもうごくから、そこもお手軽かもね。
UnityやUnreal Engineをサクサク動かそうと思うと結構スペック要求される。 やっぱそういう認識だよな
ほんとに単純なゲームならCだけできるってのは確かにそうだけど
結局ある程度以上となるとオブジェクト指向で組まないと逆に複雑になる気もするし うん、大規模なゲーム作るなクラス使わんと無理だと思う。
ただDX自体がC言語の文法だけで書けるようになってるから、
大体のDXの入門系のサイトはCの書き方になっちゃてるんだよね。
c++の文法で始めた方が後々楽だと思うんだけどね…。 C言語用のこういうライブラリってほかはもうSDLとか
古典ライブラリしかないし、気に入っているけどね。
インターフェースまで持ってっちゃうんで、そこを便利と見るか
余計と見るかは分かれるだろうけど。 非同期読み込みがonの状態で作成したグラフィックハンドルについて質問です。
存在しない画像ファイル名をLoadGraphの引数に渡したのですが、戻り値が-1ではありませんでした。
おそらく非同期読み込み用のフラグをハンドルに持たせているからなのでは?と思っているのですが、
DXライブラリにハンドルの作成失敗を確認することができる関数は存在しますか? Android Studioにも対応したみたいね。
AdMobにも対応できるのかな?
NativeActivityだから設定一筋縄でいきそうにないけど…。 >>674
断言できるという事はDXライブラリの内部処理に詳しい方ですか?
すいませんが、対応できない技術的な理由を教えていただけませんか?
NativeActivity自体はAndroid StudioならAdMob対応させる方法あるみたいですけど…、
DXライブラリってAdMobが使えなくなるような何か特殊な処理をしてるんでしょうか? >>674
色々AdMob試してたら、バナータイプのテスト広告はエミュレーター・実機とも表示されましたが…
本番の広告は表示されないって事でしょうか?
正しく広告収益にカウントされないとか、そう言った問題があるんですかね? 管理人、前はゲームの自体のプログラミングの相談にも親切に答えてたけど、
最近はゲームの処理は自分で考えろってスタンスになったみたいね。
教えてもコードコピペだけして全く成長しない人とか、
自分で考えたり調べたりせずに質問ばかりする人が増えたからしょうがないか…。
そもそもマニュアルやサンプルプログラムすら目を通してるか怪しい人もいるしな。 初心者の相手はキリがないからね
ましてやゲームロジックまで面倒みれないよ 実際掲示板見ててヒヤヒヤするよ。あまりにも無知な上に礼儀知らずな奴がいて。
しょうもない無礼な質問で管理人さんの手をわずらわせないで欲しいよ。
管理人さんはお前の母親じゃないっての。 礼儀もまた知識。
どんな無礼かと思い覗けば、総てでなくとも自治も出来ている様子。
まあまあ、悪くない状態じゃないかな?
# 個人的にも色々やらかした事があるので胸が痛い。 あまりに無知で変な質問は管理人が答える前に他の人が答えるようになったけど、
その返信内容が結構厳しめだったりするから、
それがまた雰囲気悪くしてる原因のような気もしなくもない。
まあ、厳しく言われてもしょうがない奴がいるのが大元の原因なんだけども…。 技術的な無知もアレなんだけど
そういう人に限ってまた態度が横柄というかため口というか…
「あとこれもついでに訊くんだけどさー」みたいなどういう育ち方したのかなと思う口のきき方。
そこも問題なんじゃないのかな。中高生なんだと思うが。 久しぶりに見たらジオメトリシェーダーに対応したんだな
でも、うーん使わねー・・・・・モデルに毛でも生やすか?
まあ選択の幅が広がるのはいいか PCのスペック云々ってしつこくPCのせいにしてる人に、
「PCのスペックじゃなくて、お前のスペックが足らないんだよ」って
みんなハッキリ言わないのは優しさなんだろうけど、余計残酷な気もするな…。
永遠に人や物のせいにして、自分自信の改善は何もできないんだもん。 >>687
リファクタリングってか最適化って、地味な作業だしねえ。
ループの外へ変動しない計算式を出すだけでもそれなりに軽くなるものだけど、今はコンパイラが
勝手にやってくれるんだっけ?
DXlib関係だと、3万ばかりの点を打たないといけなかったのを小円で打とうとしたら激しく重くなったので、
今絶賛思考ループ中です。
#あ、DXlib的には画像貼り付ける方が速いかも・・・。 5chに対して言ってるなら最初から品位なんてないぞ。
DXの掲示板に対して言ってるなら、回答無視して同じような質問繰り返してる奴が一番嫌味な奴だ。
嫌味ってのは「人に不快な感じを与える言葉や態度」の事だからな。 なんとか小手先のごまかしで最後まで逃げ切って作ろうとしてるんだよねこの人は。
この間違った情熱をまともな方向に使えばもっと早く作りたいものが作れるんじゃないかと思うが。
とにかくいまどきのPCでサンプル動かしてるくらいでスペックが問題になんてなるわけないだろうと。
問題が起きたらまず自分のプログラムの構造を疑えよと思うんだけどこの人はもうこのスタイルを変える気ないよな。 >>692
彼は通称「虐殺くん」といって3年くらい前から
いろんな質問サイトで迷惑かけまくってるひとよ
プログラミングを少なくとも5年以上勉強しているのに
if文もfor文も正しく使いこなせない勇者 DXLib使ったオープンソースのSTGってないですか? DXLib使ったオープンソースのACTないかな?
勉強したい 3Dのアクションサンプルなら普通に公式ページにあるよ。
↓「Sword Bout」ってやつ
https://dxlib.xsrv.jp/SwordBout/
ソースコードも3Dデータもダウンロードできる。 なんか「虐殺」の事に触れると急に別の話題書き込むやつ現れるよな。
ここも監視してんのかね?
ここは寺尾スレと違って流れ遅いから無駄だと思うがね…。 ↓公式ページに一通り2Dサンプルあるじゃん
https://dxlib.xsrv.jp/dxprogram.html
だいたい、サンプルよこせって奴そこすら見てないよな…。 >>702
あったんですね
ありがとうございました 便利だけどこれが使いこなせるなら本家のdirectxも大して難しくないだろうっていう中途半端さ
いや便利だけどさ
誰も使ってないのがな >>661
どこがだw
DXlibはダダ甘だろw
この程度でゼロからゲーム作るとか言うかw
使ったことないけどそれならunityってもうツクールレベルなんじゃね? unityは使い方によっては、もうツクールレベルだと思うよ。
便利なツールや既存のスクリプトが大量にあるから…。
DXは描画とサウンド以外は全部自前でプログラム書かなくちゃいけないから、
そんなに甘くも無いと思うけど…。(超便利だけどさ)
どのレベルから作ればゼロからなの?
まさかグラフィックエンジンから作れとでも? >>706
DXライブラリが気に食わないんなら、そっちに行けば? >>707
何処をどう読んだらDXライブラリが気に食わないって認識になるの?
甘くも無いけと超便利って書いてんじゃん…。 >>707
DXライブラリが気にくわないんじゃなくて、
(>>705)の意見や認識が気に食わないんだよww
流れ見ればわかるだろ…、大丈夫かお前? >>706
ごめん、返信相手を間違えた!
どうかしてた、三日後に出直してくる またまたすまん
>>708だった。。。
返信って恐ろしい このスレも酷いけど板自体にバカしかいねえな
ゴミスレばっか立ってるやん >>705が勝手に「ゼロから」と読み替えて反論した気になってるだけ 俺的には、これの利点は、お作法関係なしにちょいと試せるって事に尽きる。
openglesに対応してくれたら言うことないのだが >>704がDXライブラリが使いこなせれば本家DirectXもたいして
難しくないだろって言ってますが
私はDXライブラリを解説している「ライブラリではじめるC言語ゲーム開発」
と、インプレスから発売された「DirectX5ゲームプログラミング入門」を
持っていますが両者の内容の難しさでは圧倒的に後者が難しいです
DirectDrawオブジェクトを作成してからの一連のDirectDraw初期化に
関わるAPIの呼び出しをラッパー関数にしたのを説明してくれていますが
DirectDraw初期化にかかわる処理の流れをマニュアル読まなくても
説明できるようになれなくてもサンプルコードの何処にコードを肉付けしたら
ビットマップを動かしたりできるのかを分かるようになることが
大切なのでしょうか? 明けましておめでとうございます。
もう、1月3日だけど…。 >>676
ちょうどAdMob実装で悩んでいる者です。
setContentView()を使ってViewを追加する感じで試しているのですが上手く動きません。。。
ヒントをいただけるとありがたいですー!! >>717>>718
明けましておめでとう!
何か話題ないのか?w >>721
こういうシェーダ実装するならPBRとか遅延シェーダとか根本的に描画方法見直さないとキツそうな気がするんだが 根本的に描画方法を見直すから一ヵ月以上かかるって事じゃないのかな?
バグ修正やちょっとした機能追加だと、
当日中にベータ版アップとか普通にするからねDXLibの管理人。 ダークソウルは僕には難しすぎてクリア出来なっかたなあ… 事前にコンパイルされてないシェーダーも扱えるようになったらちょっと嬉しいよね >>729
JAVA使わんと出来ないよ。Cだけじゃ無理。
やり方は自体は単純で、NativeActivityに直接広告をを表示させる事ができないから、
ポップアップウインドウを作ってそこに張り付けるってだけ。
参考にしたサイト↓
https://www.dynadream.com/ddweb/index.php/Special_Blog?id=20
JAVAとCのサンプルコード↓(一週間で消えるから早めにダウンロードしてくれ)
https://52.gigafile.nu/0217-c435ad0b8f695d247aa68c914b41d7dbf
ちなみにポップアップウィンドウを作って張り付けるやり方は本家の掲示板に回答書かれてるよ↓
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5092
(>>719の日付のタイミング的に↑の質問者がマルチポストしてる臭くて無視しちゃったんだよね…。) >>730
返事遅くなり申し訳ございません。
719自体かなり前の投稿でしたので、もう見ていないだろうな…と半ば諦めていたので拾っていただけるとは思いもよりませんでした笑
今からこちらを参考に取り組んでみたいと思います。親切にありがとうございます!! >>732
すみません…javaの知識が足りておらず頂いたmainactivity通りに書き換えたのですが
com.google.android.gms.ads達がimport出来ていないのかそこでエラーを吐いてしまいます。
原因はmetadataの所にあると考えて、自分なりに色々試してみたのですが、動きませんでした。。
お心当たりあれば申し訳ありませんが教えて頂きたいです(_ _)
お見苦しいので、一応仮メアドもお付けしました。こちらの方にご連絡下さっても大丈夫です!お願いします(_ _) >>733
「730」だけど、importする物の一部が赤字になってる感じ?
(ちなみに「732」は私じゃないぞ。)
だったら、importの赤字になってる所にマススカーソル乗せて少し待つと「シンボル〜が解決できません」って出るから、
そこで「Add dependency on 〜」って項目選べば自動でプロジェクトに組み込んでくれるよ。
(プロジェクトに組み込むのに少々時間(数分)かかる場合があるから気長に待ってくれ)
import出来てるのにエラーになる場合は、多分AndroidManifest.xmlにmeta-data書く場所間違ってる。
(<application〜>の下じゃなくて中に書いてるとか…)
もしくは単純にJNIの設定間違えてるだけだと思うよ。
(それとも他のJavaのコードだけにしたらエラーなくビルド出来る感じ?) >>734
あれwそうだったんですね笑(_ _)
仰っている通り赤字になっていたのでクリックすれば解決し、しっかりサンプルの広告が掲示されるようになりました!
色々手間暇かけて教えていただき本当にありがとうございました!!助かりました!! vs2017comuで作業しているのですが。
ふと思い付いたサンプルを形にしようとしたら、知っていたけどプロジェクト作成までがメンドイ。
じゃあ雛形作って物置に置いて、そこからコピーしてプロジェクト名書き換えて使うか・・・と思ったら、VS上から書き換えられないのかな見付からない。
面倒でも手作業で毎回作るか・・・はあ。
#いやDXの話ではないなコレは。でもDXでの話なんです。 >>740
わざわざ御教え下さったのに気が付かず2ヶ月近く放置してしまいました。
申し訳ございません。
こんな事出来るんですね・・・思えば、あっても不思議ではない機能です。
ただ、作ってZIPに固めたは良いけど、それの使い方が分からず四苦八苦してしまいました。
なんの事はない、スタートページから利用を案内されるのですね(^^;
1回しか固めていないハズのZIPが2ヶ所に同じものが作ってあったり、プロジェクトテンプレート利用するとディレクトリが同名で二重に掘られたりと把握しかねる仕様ではありますが、手作業で書き直せそうなXMLだから何とかなりそうです。
ありがとうございました。 >>662
dxlibは開発環境の操作を別途学習する必要があるんだよね
Unityとかはほとんど全ての作業がパッケージ化されてる
素材集めさえも
dxlibの作成者や普及を望む人たちはそれに気付くべきだった いやそもそもライブラリとエンジンの違いだし、その違いはそのままでいいと思う
今となってはdxlibではクロスプラットフォーム対応が弱すぎる
コンシューマーへのリリースはPlay,Doujin!っていうよくわからん1社を通さなきゃならんし Unityみたいにしろとは言ってない
ライブラリだけ提供して、はい後は各自で勝手にやってねってやり方がまずかった 作者がさんざん説明している主旨を理解していないだけじゃん
DXライブラリは作者自身が現場で使っているものを他の皆にも提供しますというスタンスで、
ゲームに特化した便利機能を極力採用していないのも、プログラミング技術を転用しやすいようにとのことだよ ただのマルチメディアライブラリなのでゲーム作るかどうかは当人次第ですよ。
作ろうと思えば作れるってだけです。 >>753
公式サイトにはそんなこと書いてないんだけど
本人? >>756
公式サイトの掲示板で機能要望の際などに、そのように回答している例がいくつもあるよ
プログラミング技術を転用しやすい〜の旨は公式サイトの「DXライブラリの仕様と特徴」に書いてある 最近は忙しいらしいな
バグ修正したら早めに新しいリリースをしてほしいが 結局はエンジン系に移るのは避けられないでしょ
Unityが仮になくてもUnrealやGodotにも負けてるよ てか、目指している方向がゲームエンジンとは違うでしょ。比べるほうが間違ってる。 unityはエディタ込みの制作環境でDXlibは命令(関数)セットを束ねたライブラリで、抽象度の差でDXlibの方が遥かに軽いって認識。
とはいえunityを試験導入した訳ではないのだけれど。
同じコードで検証した人っているのかな? NFTゲーム、ブロックチェーンゲームに今すぐ参入しなさい
これからこの市場は100倍になる
2年もしたら先行者利益が失われてブルーオーシャンからレッドオーシャンになるだろう それが事実ならわざわざ他人を呼び込んで儲けを減らす行為は利益がない
よって信用できないw 先行者利益を得るには、後行者が居ないと無理だからなw DXライブラリを使ってアンドロイド用のゲームを作ってる(作った)人いる? >>770
おれも。
unityがどんなものか試しに使ってみたけど、予想外に難しかった…
ワクワク感はあるんだけどね。
「unityでゲームを作っても8割はコーディングだ」と言ってる人もいたので、結局慣れてる方のDXに戻って来た >>794
勉強のためにいじっています。
unityとかすごいと思います(習得しようともしています)が、なんか違う感があって。
自分は昔ゲーム開発にたずさわった事があるだけのおじいさんなので、ピコピコゲームにunity はいらんだろうと思ってしまいます。なのでDXでって感じです。知らないところで色々と動くのが嫌なんですよ。 Dxlibってスマホアプリに広告入れるのってできるの? クラスのコピーコンストラクタとか代入とかって
単純に全メンバコピーでOKな場合は書かない方が良いのな
なんでこんな遅いんだろうと色々試行錯誤してググってたらこんな説明があったわ
>デフォルト演算子は、優れたコードを生成するためにどのような作業が必要かを把握しています。
>この結果作成されるコードは、ユーザーが作成したコードよりもはるかに高速です。
>これは、プログラマが通常使用できないアセンブリレベルの機能をコンパイラが利用できるためです。
>そのため、デフォルト演算子が必要な作業をこなしてくれる場合は、プログラムでこれらの演算子をユーザー定義によって宣言する必要はありません。
ttps://docs.oracle.com/cd/E19205-01/821-2495/bkahq/index.html >>796
>知らないところで色々と動くのが嫌なんですよ。
まあ、でも道のりは遠いよ。DXLIBで状態遷移やらコンテナ管理のフレームワーク積み上げていくのは。
専門学校の教材向けとしては良いけれどその現場ですら昨今はOpenCiv3Dとか言い出してるし。
当たり判定もライブラリだのみか!と内心戦慄する思いではあるけれど。 現在DXライブラリでMMD表示とモーション再生のサンプルを作っているのですが
モデルは表示されるのに何故かモーションが再生されず困ってます。
MMDモデルとモーションデータは読み込めているようで、それぞれ939589632,0とハンドル値が返ってきています。
デバッグしてみるとMV1AttachAnim()が-1を返してくるのですがこの原因がわかりません。
int ModelHandle = MV1LoadModel("MMD/初音ミク/Lat式/Lat式ミクVer2.31/Lat式ミクVer2.31_Normal.pmd");
int VmdH = MV1SetLoadModelAnimFilePath("MMD/モーション/シュレディンガイガーのこねこ_モーション/シュレディンガイガーのこねこ_Lat式ミク.vmd");
int AttachIndex = MV1AttachAnim(ModelHandle, 0, VmdH);
他のモーションデータをいくつか試してみても同様の症状です。
何か原因わかる方いましたら教えてください。 >>812
MV1SetLoadModelAnimFilePath()の使い方が間違ってるのかな
下のは困ってる事情は別だけど、その辺りのコード使ってるから参考になるかも
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4266 ありがとうございます。関数仕様を調べ直しました。
どうもvmdファイルの指定の仕方が根本的に違ったようですね…
モーションデータをリネームしてモデルデータと同ディレクトリに配置したところ、無事に再生されました。
(てっきりモデルとモーションを別に読み込んでアタッチすれば良いものと思っていましたが違うんですね) ゲームをして遊びながら稼ぐ時代が到来したぞ
NFTアートとNFTゲームとGameFiとブロックチェーンゲームと
DeFiとメタバースに提供する側・作る側として参入しよう。
(むりなら参加する側でもいい)
DAOとPlay-to-Earn(遊んで稼ぐ)が世界の未来になる
特にNFTアートとNFTゲームとGameFiは今なら先行者利益取れるぞ
NFTアートとNFTゲームとGameFiはこれから1000倍規模の市場になる Nimは至高のプログラミング言語と言われてるので使ってみたいと思ったけど、DXライブラリ的なものはなさそうで(?)残念。
C++は難しすぎる… dxlib.dll使って好きな言語から呼び出しなよ
コンパイル時間がかからない言語だと作業効率が格段に良くなるよ 教えてくれて超ありがとう。
「DXライブラリ置き場」の説明文に「C++言語用のゲームライブラリです。」とあるので、Nim等では使用不可だと思ってた… nimってC++のlibを読み込めるんじゃなかったっけ
dllで使用する場合は「VisualC# 用パッケージ」にあるものだったはず
これはC++のソースを機械的にdllに変換しているらしいので、C#かどうかは問わない
(C#の関数定義のヘッダーファイルが用意されているだけ) 日本語で処理内容を書いたらコードにしてくれる
AI Programmerってサイトを雑談スレで知ったんだけど
DXライブラリの関数も認識してくれるみたい
試しにDrawFormatStringで文字列描画するって入れてみただけなんだけど
普通に認識してびっくりした 起動画面にDXライブラリのロゴを入れておきたいな、と思い付きで思い立ち、サイト見に行ったらトップページの一番上にあるロゴしか、らしいロゴがなかった。
あーーー、うーん・・・。
ほなら、マイクロソフトのDirectXのロゴはどうなってる?
取り敢えず仮のでっちあげの参考に・・・と思ったら、負けず劣らず中々にデザイン性が低い(笑)。
感性肌ではない技術屋寄りな感性は嫌いじゃないしむしろ好感が持てるけど、それでもデザイン性が低いモノは低い。
とは言え好き勝手に批判しているけれど、私自身もデザイン出来ないからウダウダしている訳で。
ttps://imgur.com/a/rtaxY0p 直リンし直し。
ttps://i.imgur.com/owdZYUo.png これ思い出した
ttps://www.nicovideo.jp/watch/sm1972187 ,__.,、_,、
( (´・ω・`)
u u∩u ∩
(・ω・ | |
| |
| ノ
∪∪
`ヽ.__/
| / |
| / ミ |
| ビターン / ミ |
| \、_,ノ 、_/ |
| _,ノ ,、_,、 ( |
| `) ('ヽ、 )) ___──
| ヽ /  ̄ ̄ ̄
| / ,- ヽ  ̄ ̄ ̄──
| '⌒)(__,/ ヽ__)(` |
| /' '^\ | 金髪顔でDXライブラリを我が物顔で語り
コミケに出て東方作者抜かす、東方二次まで否定し威張り散らしたおじさんスレが6周年w
自作ゲーム開発者たちのメンバー募集
https://echo.5ch.net/test/read.cgi/gamedev/1484755223/ このライブラリ好きだから使い倒したいけどシェーダーさっぱり分からんなぁ
世の中にはDXライブラリでPBR実装してる猛者がいるみたいだけど >>827
https://echo.5ch.net/test/read.cgi/gamedev/1484755223/166
166 :Hiromiti:2017/01/23(月) 08:35:33.99 ID:W7jAWX1Z
俺ぐらいの人間になるとね
人を集めようとはせずに一人になることを求めたがる
自分一人の方が楽だし、俺の感性や頭脳に追いつく人間もいない
回りの人間のレベルに合わせてみたり、
回りの人間に説明して説得する時間が勿体無いから
「もういいよ。全部、俺がやるから」と言って何でも自分でやろうとする
俺はそういう常人にはない特殊な感性を持った人物です
本人がやりたいと思ったことは世間の常識に囚われず本当にやってみせる
2ちゃんねる管理人ひろゆきを正式メンバーに入れることも冗談ではないよ?
チャンスさえあって、自分の目の前に彼が偶然現れれば
迷いなく彼に「俺に力を貸せ」と言ってることでしょう
これは仕事ではないので給料など出さん
その代わり面白いゲームを誕生させようぜ
だが、たくさん売れればその売り上げはメンバー全員で山分けしようぜ
あのクラスになれば金なんて腐るほど持ってるんだろう?
だったら目先の金(給料)などどうでもいいじゃん?
その代わり、面白いゲームを作ろう!
史上最強の同人ゲームを作ろう!
それを冬コミで売るなら、冬コミでトップセールスを記録してみようぜ!
ZUN氏の東方シリーズを超えるほどのね >>827
288 :Hiromiti:2017/01/27(金) 02:36:35.36 ID:fq1oBnv1
DXライブラリはPS4やPSVITAのゲーム開発にも対応したからね
同人ゲームでPS4のゲームが開発できるんだぜ?魅力的じゃない?
それにDXライブラリのプログラミングの本質的な開発に専念できるところも
分かりやすくて気に入ってる
複雑なツールの操作を必要とせず、DXライブラリ関数をC言語プログラムで呼び出すだけで済むし
まあ、来月からプログラミング講座を開くので楽しみにしておいてよ
2年後の冬コミで同人ゲームを出展させることも本気ですから
まあ予定より早くゲームが完成したなら
その時点で売ればいいが、最長で2年の開発期間という意味
525 :Hiromiti:2017/02/09(木) 17:05:25.61 ID:U0omOnFe
俺は堀井雄二を超えてみせる >>827
192 :Hiromiti:2017/01/23(月) 21:57:01.74 ID:W7jAWX1Z
同人ゲームを売るために東方の二次創作に頼る時点で間違っておる!
東方シリーズの作者ZUN氏は、自分でオリジナルのブランドを誕生させたことが成功の鍵
あの人は誰かの同人ゲームの二次創作で勝負を掛けたわけではなく
自分のゲーム、自分の音楽で勝負に出た
それで東方シリーズというオリジナルブランドを確立
後に続く者がZUN氏にあやかって東方の二次創作ゲームを作るとかさ
それこそ保身に頼りすぎ
自分で勝負に出ようとしない
オリジナルのキャラで、オリジナルのゲームジャンル(弾幕シューティング)を誕生させる
これが必要なんだよ 思う所あって、作業中断してポリゴンで3Dダンジョン作ってみたくなった。
3Dなんて30~40年前にIF文とLINE文で頑張ったのが最後で、一切触れてこなかった分野だからメインループ構築が最初の難関・・・と思ったのだけど、公式で入門プログラムが用意してあった。10年以上前から先読みされているとか、準備が良すぎる。
マップデータに対して、実際の表示が何故か左右反転しているのが気になるからそれを解消したいけれど、stateの値が即値でそれが目障りだからenumで差し替え・・・という段階。
はやく3D命令を把握したいです。 # 半ば日記です。
公式の3Dサンプル1の迷路をいじることで、初めて3Dプログラム読み書きしているのですが。
実際の作画が通り道をチューブ状に表示していたのを、文字通り壁ブロックを表示するように変更。
その為にBlenderの初期画面でサンプル表示される立方体を少し加工してエクスポート。ついでにMV1変換の過程でまるで知らなかったライティングで痛い目に遭う。おかげで暗く明減するアニメ効果を実装。
今は両脇がまるで見えない問題の解決策として、視点位置を現在の自スペース中心から後方に移動して視界を確保。でもそのまま左右を向くと物陰から枝道を覗く視点になってしまうので、視点移動を実装中。少数は避けて通ったint派なので、中学生に戻った気分です。
そして根本的なこと。
もしかして、3Dって座標系違いますよね?
2Dの画面では左上の原点(0,0)から右下に加算していきますが、3Dのxz面(迷路的には床面)は原点(0,0)が右上に伸びて行くイメージ。だから、迷路を定義しているchar Map[BLOCK_NUM_Z][BLOCK_NUM_X] が上源反転している様に見えたというか。
状況証拠の蓄積からの推理であって、間違って確信すると後々恥ずかしいのでここで白状してしまいますが。 > もしかして、3Dって座標系違いますよね?
YES >>841
回答ありがとうございます。
安心して作業に戻れます。 モデルの座標やスケール値を読み出せるのに、なんでサイズを読み出す命令がないんだろう・・・。
Blenderと往復して壁のデータ作って変換して持ち込んでいるけれど、何もいじらないと中心点が原点扱いになるから、Blenderで上に持ち上げて底面がゼロ原点になるようにいじらないといかん。
マテリアルも一発OKで持ち込めたけれど、データサイズから察するにfbx→MV1ではテクスチャを持ち込めないみたいだから、やり方も勉強しないと。Blenderならアドオンで他形式からでも持ち込めるよね、多分。
と言うかビュア起動が面倒!変換はコマンドラインでどうにかなりませんかね。 公式に確認してお許しが出たので、晒す。
色々とままならないままなのですが。
・照度が上がらない!
画面をもう少し明るくしたいのですが、ライト関係への理解がまだまだ浅い・・・。
・動作が少し重い。
これでも改善したのですが。1動作60コマなのがまずいかな。
・暗くて見えませんが、壁のデザインは古代ギリシャ建築を参考にしたのにローマ風だなあ・・・とBlender画面見ながら思ったのですが、実際のゲーム画面だと何故かSF風味。造り手としては、なんで!?どうして!?意味分からん!状態です。
・壁が点滅する。
解像度を上げたら軽減しましたが、アンチエイリアスが満足行くレベルでない様子。どうすれバインダー・・・これがSF風味に一役買っているんだろうなあ。 https://dot_up.org/uploda/dot_up.org3010520.zip.html
pass:dxl
なんとアップローダがNGワード???
dotとupの間のアンダーバーを抜いてください。 アンチエイリアスが全然効かねえ・・・二次元はGraphFilter()の解説通りにすればまあ解決だけれど、同じ手法を三次元では全然効果ない。
シェーダーに手を出さないとアカンのか・・・? ま、いっか。 >>847
テクスチャじゃなくてポリゴン描画の輪郭にアンチエイリアスかけるには
DxLib_Initの前にSetFullSceneAntiAliasingModeで
マルチサンプルのレベルとクオリティを指定する必要がある
(デフォルトだとOFFになってる)
ちなみに有効にした場合は描画先を必ずDX_SCREEN_BACKにして
ScreenFlipで表示を切り替えるダブルバッファリングが必須になる あと3Dモデルのテクスチャにアンチエイリアスかけたいなら
事前にDxLibModelViewerに読み込んで、テクスチャの所の
フィルタリングモードで設定してMV1で保存しておけばいい
3DファイルをいじりたくないならMV1SetTextureSampleFilterModeで
プログラムからでも設定は変えれる >>849 >>850
すいませんボケかましてしまいました。
3D関連だからと、3Dのところばかり読み直していました。
現在データ構造の見直し中で半端に書き直してしまいコンパイル出来ない状態ですが、一文を追加しておきました。
つぶやきを拾って下さって、ありがとうございました。 三角関数の生数字0~1未満のVECTORを2つ、その中点を取りたいのですが単純にVAdd()で加算してVScale()で0.5f倍するだけだと何かうまく行かない。
もう少し具体的には、空中をふらつく視線と90度旋回を別々にやるとうまくいくのに、同時にやろうとすると70~80度旋回で完了してしまう感じ。
まあもっとも、角度degをDX_PI_F/180でradにしないといけない所を90で割っていた私なので、またポカしているだけなのだろう。 初めての3Dプログラミングで実数に四苦八苦していましたが、結局中身はintで下駄を履いた角度で保持することになりました。
まだ少し実数で計算する所もあるけれど、取り敢えず再度コンパイルが通るようになったので肩の荷を一つ下ろせました。
ダンジョン徘徊RPGを作りたいけど、先立つ技術がないとシンドいですね(^^; このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2996日 23時間 36分 41秒 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login レス数が1000を超えています。これ以上書き込みはできません。