17/04/15 11:40:04.16 3FEYykSP.net
C++11とか使ってませんが、ロード画面作るときにマルチスレッドを使いました。
あくまでロード時に凍るのを防ぐために使用するのでCPUがどうとかは無いですよ。
process.hをインクルードしてResumeThreadさせるだけで実装できます。
220:名前は開発中のものです。
17/04/15 13:07:47.39 poy2AG7G.net
何故だろう、急に挙動が変わった。
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;
}
221:名前は開発中のものです。
17/04/15 13:25:19.21 JeCVIRaX.net
> ptr = (char*)malloc(size+1);
この+1はなに?
本題とは関係ないけど
222:名前は開発中のものです。
17/04/15 14:44:24.56 qT8WsIhy.net
DXLib 知らずに覗いてるだけでどう挙動が変わったかわからんので >>213 の疑問には答えられないが、
>>214
おそらくファイルのく中身は表示などに使う文字列だという前提だと、
文字列の終端は NULL で止める必要があるのでその 1byte 分を余計に確保している。
(今どきのコンパイラは malloc での確保と同時に \0 埋めをしてくれるのかもしれないけどちょっと危ないな。)
readbin() という名前からして文字列と言っても中身はバイト列と推測できるので、
ファイルの中身には終端 NULL を入れずに記録しているんだろう。
223:213
17/04/15 15:14:07.66 YQ+vHcvV.net
+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 );
お騒がせしました。
224:名前は開発中のものです。
17/04/18 20:45:54.94 bJnkmQcY.net
ホラーだ
225:名前は開発中のものです。
17/04/29 01:27:41.32 /YvMYhCO.net
DXライブラリはgifアニメーションを再生できないのでしょうか?
DXライブラリ以外ならgifアニメ再生できたりするのでしょうか?
「こう記述すればできる」など教えてください
226:名前は開発中のものです。
17/04/29 06:09:30.20 SAAy66wJ.net
gifをそのまま読み込んで表示はできなかったはず
連番画像に変換するか、もしくは動画にするかだな
227:名前は開発中のものです。
17/04/29 16:48:35.10 /YvMYhCO.net
>>219
割とむつかしい事しなきゃ動画像は表現できないんですね・・・
爆発エフェクトとか魔法エフェクトとかgifで表現したかったんですが、少し億劫になってしまいました
回答ありがとうございました
228:名前は開発中のものです。
17/04/29 17:59:31.45 xrI1QiYS.net
LoadDivGraph使えば連番画像が配列に入るから簡単やで
っていうか簡単なエフェクトなら回転拡大縮小やブレンドパラメータの変更で表現できるんじゃない?
229:名前は開発中のものです。
17/04/29 18:40:06.93 EkJNcx6r.net
>>218
一応C#版ならサンプル転がってるね
規制でurl貼れないけど検索すればすぐ見つかる
でも221が言うようにDivGraph系使った方が楽だと思う
230:名前は開発中のものです。
17/05/05 10:05:26.44 NXBeyHLp.net
なるほど初期化とかのタイミングで一旦展開するのがエンジン的には普通なのか
231:名前は開発中のものです。
17/05/05 15:40:34.37 yUv3bLae.net
最初から専用形式化アニメGifくらいにしか出力できないツールとかでもない限り、
手間は大して変わらんだろうしな
232:名前は開発中のものです。
17/05/07 15:21:12.75 If6RMgU7.net
結局誰かが何処かで一所懸命動かしてるわけだしな
233:名前は開発中のものです。
17/05/09 08:34:24.56 K1FQSBk+.net
アニメーション用の画像を一枚にまとめた後ってLoadDivGraphでもDrawRectGraphでもアニメーションにできるけど
どっちの方が軽いとかってあるのかな
234:名前は開発中のものです。
17/05/09 09:38:53.90 2FI5hhgE.net
内部的にはほぼ同じ処理だと思う
どちらも一度のドローコールでまとめて描画するから速度はほとんど変わらないはず
235:名前は開発中のものです。
17/05/10 11:42:59.61 /rFUV6kx.net
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を掛けたもの、ループ分割
236:名前は開発中のものです。
17/05/10 15:05:35.39 AO63hxX7.net
最適化ですっ飛ばしてる可能性は?
237:名前は開発中のものです。
17/05/12 23:43:37.67 6uV/zlUc.net
どうやら周回遅れの嵐がまた戻ってきたようだな
238:名前は開発中のものです。
17/05/25 10:49:09.36 EtJgGmd+.net
DrawRotaGraphやDrawExtendGraphで画像を拡大するとかなりジャギジャギになってしまうんですけど拡縮のアルゴリズムを変更みたいなことはできないんでしょうかね?
239:名前は開発中のものです。
17/05/25 11:21:21.11 yyfkJ8TD.net
SetDrawMode(DX_DRAWMODE_BILINEAR)
240:名前は開発中のものです。
17/05/25 12:32:57.53 EtJgGmd+.net
>232
リファレンスで確認したらまさにそのことが書いてありますね…
ありがとうございます
241:名前は開発中のものです。
17/05/26 00:14:22.05 rlfOgZbA.net
>>232
定数がラベル化されてて覚えたくないっぽい感じでいいなw
242:名前は開発中のものです。
17/05/26 01:39:42.52 L1fgx/JI.net
ちょっと何言ってるかわかりませんね
243:名前は開発中のものです。
17/05/27 18:30:23.12 XdDfcHqh.net
初心者なんですけど、メインループ内で音声ファイルをboolフラグ使って再生すると、
音声ファイルが再生終了するまで全体の動きが止まってしまうんですけどこれどうやったら回避できますかね?
244:名前は開発中のものです。
17/05/27 18:52:38.31 XdDfcHqh.net
>>236
if (collision == true) {
PlaySoundMem(Sound_Bar_Handle, DX_PLAYTYPE_NORMAL, TRUE);
collision = false;
StopSoundMem(Sound_Bar_Handle);
}
ちなみにこんな処理です
245:名前は開発中のものです。
17/05/27 20:33:09.58 brkGgSz8.net
DX_PLAYTYPE_BACKじゃなかったっけ
246:名前は開発中のものです。
17/05/27 22:17:05.92 XdDfcHqh.net
>>238
なんとまあ・・・
ありがとうございました
リファレンスしっかり見てから質問するようにします!
247:名前は開発中のものです。
17/05/29 02:06:45.40 p1cVfpaJ.net
ヒカル TV出演「年間5億は稼ぐ勢いですね」
URLリンク(www.youtube.com)
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
URLリンク(www.youtube.com)
ユーチューバーの儲けのカラクリを徹底検証!
URLリンク(www.youtube.com)
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
URLリンク(www.youtube.com)
誰も言わないなら俺がYouTuberのギャラ相場を教えます
URLリンク(www.youtube.com)
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
URLリンク(www.youtube.com)
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
248:名前は開発中のものです。
17/06/08 10:48:04.41 emR6NVdG.net
スマホ版にもゲームパッドの関数がある
なんだこれ
249:名前は開発中のものです。
17/06/08 21:06:56.21 dElL6uGO.net
スマホ用ゲームパッドで使うんだろ
250:名前は開発中のものです。
17/06/09 09:39:03.45 DE3YMeBF.net
UnityやUE4がある今日、DXライブラリで作るメリットってなんだろう?
自分、DXライブラリで開発したいなと思い色々と調べていたんですが、調べれば調べるほど、UnityやUEが出てきてちょっと悩み中です。
251:名前は開発中のものです。
17/06/09 14:11:39.94 k1bCPNPm.net
PCが貧弱でUnityやUEだと重い、ぐらいかな
今から勉強するならあまりメリットは無いと思う
252:名前は開発中のものです。
17/06/09 15:55:37.40 /AOIMXs3.net
>>243
Unity, UE4 は作者からコードを引き離す方向で進化しているのに対して、
DXlib はガッツリコードを見せた上で分かりやすくという方向で、ある意味教育的なもの。
一度 DXlib で組めていれば GUI ツールでも中身がどう動いているか想像付くので
コードの内容もきっちり学びたければ無駄にはならないと思う。
253:名前は開発中のものです。
17/06/09 18:21:17.93 SGYRsMDo.net
>>243
俺の場合はVBで使えるからという理由だった
254:名前は開発中のものです。
17/06/11 14:59:07.03 0zNsaXZ9.net
>>243
こういう質問する奴はどうせUnity使うんだろw
Unityの方がグラ綺麗だし、アセットストアで何でも売ってる
ふんっ! せいぜいユニティちゃん使ってろよ
ちっとも全然まっっっったくうらやましくなんかねーからw
255:名前は開発中のものです。
17/06/12 03:41:17.25 yK1l09Lv.net
SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);で音をストリーミング再生するよう設定してるのに
タスクマネージャでディスクの欄を見ていても殆ど0%から動きません
メモリ使用量は1GB→60MBになったのでちゃんとストリーミング再生にはなってると思います
ストリーミング再生はディスクに負荷がかかると思っていたんですが、最近のHDDだと特に問題無いんですか?
256:名前は開発中のものです。
17/06/12 12:43:11.91 AYi3m4Li.net
無能ほど負荷とか並列化にこだわる法則
257:名前は開発中のものです。
17/06/12 15:21:18.37 eyqFi/CQ.net
そら無能じゃなきゃこんな板来ないしこんなライブラリ使わんからな
258:名前は開発中のものです。
17/06/14 10:21:57.41 v0unCno/.net
>>242
スマホにパッドがあったのか
嬉しい気もするけど携行性を重視した端末にでかい周辺機器をつなぐって奇妙な発想だな
259:名前は開発中のものです。
17/06/14 10:43:34.66 U2C2l7BT.net
今時の開発者は青歯も知らんのか
260:名前は開発中のものです。
17/06/14 18:41:50.21 ZT9fgl64.net
パパパパパパッドでタブレットwwwwwwww
261:名前は開発中のものです。
17/06/14 21:02:14.77 zAFWgH33.net
最近だとレイフォースがパッド対応で話題になってなかったっけ
262:名前は開発中のものです。
17/06/15 22:56:09.32 LMseahLk.net
ゲーム作りどころかプログラミング初心者です。
DXライブラリを用いてのゲーム製作を考えているのですが、C++の知識はどの程度必要になりますか?
C++の学習は早々に切り上げてゲーム製作のアルゴリズムやDXライブラリの使い方等を学習したほうがいいんですかね?
ちなみに今はC言語の苦C一通り終わらせて独習C++の半分くらいまでC++の学習を進めてます。
263:名前は開発中のものです。
17/06/15 23:41:14.12 1b6ck/rE.net
わからないところが出てきたらC++の学習に戻ればいいんじゃない
264:名前は開発中のものです。
17/06/15 23:55:33.06 LMseahLk.net
>>256
ではある程度C++について学んだ後はさっさとゲーム製作の学習に入っておkってことですかね?
ゲーム製作で必要になる主なC++知識って何なんでしょうか
265:名前は開発中のものです。
17/06/16 00:24:27.54 O/SyLshJ.net
そんなものは無い
Cだけでもゲームは作れる
266:名前は開発中のものです。
17/06/16 01:33:12.34 m1zHP4Hn.net
>>258
いやいやあんまりからかわないでくだしあ…
C++のクラスなんかの知識は必要だと聞いてます
267:名前は開発中のものです。
17/06/16 01:48:42.44 cvFevhqX.net
いや要らないしそういう設計になってる
268:名前は開発中のものです。
17/06/16 08:22:53.08 brlS6E6B.net
C++ってやや低級気味な言語だしオブジェクト指向なんかガン無視でフォートランみたいなコード書いても何も問題ない
269:名前は開発中のものです。
17/06/16 08:33:02.27 SGqKL1uB.net
DXライブラリ使うならC++知らず、C言語の知識のみでも何とかなりそう
270:名前は開発中のものです。
17/06/16 09:52:41.57 Pb7QpWU4.net
そもそもCで出来なくてC++で出来ることってクラス以外に何があるんだっけ
271:名前は開発中のものです。
17/06/16 12:01:13.26 Ogq0H9i2.net
分かって使うなら C++ の方が便利機能があるのできれいなコードが書けることが多いけど
知らないで無理に C++ を使うととんでもないコードができるので、それなら素直に C で書いた方がいい。
あと C++ クラスでデータ管理していて DXLib に渡すときに無茶なキャストをかけるとかいらない操作をあれこれしそうな予感がする。
>>261 が言ってるとおりコンパイラが C++ だとしても別に C++ の機能を無理に使う必要はないし、普通に C のコードが通る。
それを踏まえた上で C と C++ を比較するなら、
ゲームでもデータの格納、その操作が頻繁に起きるから C++ でクラスが使える点は非常に大きいと思う。
メモリ管理、文字列の扱い、ファイルなどの I/O 操作はどう考えても C++ が楽。
C++ だとループ処理もイテレータを使えるのが大きい。かなりすっきりする。
本当は例外が扱えるのも大きいけど DXLib 使うならライブラリ側の戻りを見とけばいいから余り問題はないか。
272:名前は開発中のものです。
17/06/16 15:08:58.97 gDyvoaaV.net
●●●ケネディ大統★領は何故、死なねばなら★なかったのか?●●●
URLリンク(jbbs.livedoor.jp)
この掲示板(万有サロン)に優秀な書き込みをして、総額148万円の賞金をゲット★しよう!(*^^)v
URLリンク(jbbs.livedoor.jp) →リンクが不良なら★、検索窓に入★れる!
273:名前は開発中のものです。
17/06/16 21:05:08.34 m1zHP4Hn.net
>>264
詳しい回答ありがたや…
C++の知識は正しく用いるなら便利だけど必須ではないという認識でよろしいですかね。
とりあえずC++のクラス全般について一通り学んだらDXライブラリとかゲームプログラムの勉強に入ろうと思います。
他の方も回答してくれた方ありがとうございました
また何かあったら質問するかもしれませんがその時はよろしくお願いします
274:名前は開発中のものです。
17/06/17 05:06:47.45 ANL8I6I5.net
ジェネリック・プログラミング
処理の抽象化
デザインパターン
アルゴリズムによる計算量の見積もり。
N に比例する、線形探索をしない。
ハッシュ O(1)、2分探索 O(log N)
Boost
275:名前は開発中のものです。
17/06/17 18:30:16.74 FgtAF55Q.net
>>267
役に立たないとは言わないがプログラミング技術が好きな人向けで
ゲーム作る事と乖離してる
276:名前は開発中のものです。
17/06/17 18:45:10.75 nFYpcEEx.net
計算量くらいは意識しないとまともなゲーム作れないだろ
277:名前は開発中のものです。
17/06/18 01:35:21.10 PbdM1gWB.net
ループ条件分岐さえあれば組めないプログラムなんてないんやで
278:名前は開発中のものです。
17/06/18 04:57:30.53 ml1ulS2M.net
職業プログラマじゃないんだから、まずは動くもんが作れればいいんだってば。
それで遅かったらもっと勉強していい方法見付ければいいわけで。
279:名前は開発中のものです。
17/06/18 19:05:08.47 abC7Vm3t.net
個人製作レベルの小さなゲームだとオブジェクト指向の概念自体いらないっちゃいらないとは思う
でもわかりやすく作る武器としてC++を覚えたいなら
個人的な現状の感想を書いてみると
・いる
クラスとオブジェクト指向の概念、継承、包含、コンストラクタ、getterとsetterの概念、仮想関数(抽象クラス、多態性)
・いらないんじゃね?
テンプレート、演算子のオーバーロード、標準ライブラリ(std::vectorはあってもいいかも?)、多重継承
ゲーム作る上ではこんな文法より当たり判定とか回転とかのアルゴリズムの方がよっぽど大事ってのは思う
280:名前は開発中のものです。
17/06/18 20:43:53.58 nanwc7sE.net
重要なのは何を作るか詳細な挙動やパラメータまで考えることだろ
技術的なことはいざとなったら誰かに相談すれば済む
281:名前は開発中のものです。
17/06/18 21:13:19.18 LRmtmPIY.net
ゲームなら継承は超便利
282:名前は開発中のものです。
17/06/18 21:28:36.39 j1fZdyvt.net
クラス(構造体+メンバ関数)と継承は知っといた方が得だと思う
std::vectorは超絶におすすめ
変なエラーやバグ(配列の不正アクセス)が無くなる
多態性とかテンプレートは、二作目作るとき等に勉強すると「こんな便利な方法があったのかー」と感動するし、理解しやすい
283:名前は開発中のものです。
17/06/18 22:07:10.75 xRdxAyjX.net
>>272
いる項目の半分くらいはまだ未習ですね…
当たり判定とか回転とかのアルゴリズムってどこで勉強すればいいんですかね?
定番の参考書みたいなのがあったりするんでしょうか
>>275
クラスはある程度文法学習し終わりました
std::vectorはなんのことかさっぱりです
284:名前は開発中のものです。
17/06/18 23:14:19.78 QSbBBvPO.net
当たり判定は別にいいんだけど本当に難しいのは判定後の反発、押し出し処理
いまだにメーカーごとに意見が分かれる部分
285:名前は開発中のものです。
17/06/19 00:02:59.64 p2tfhpKK.net
有名な物理エンジン使ってるゲームでも
めり込んでおかしな動きしてることあるからな
286:名前は開発中のものです。
17/06/19 11:28:36.29 pl3YSaeH.net
>>276
ゲームじゃvector一番使うべ
287:名前は開発中のものです。
17/06/19 16:14:57.42 oi8Si/s0.net
>>278
Colision detectionで一発解決
そう、unityならね(´・ω・`)
288:名前は開発中のものです。
17/06/19 17:51:36.60 gZSjLbfM.net
>>279
まじか
よくわからなくなってきたので中途半端でやめずにとりあえずC++を一通りやってからゲーム制作勉強します…
289:名前は開発中のものです。
17/06/19 19:03:22.39 p2tfhpKK.net
>>281
>>256>>271
290:名前は開発中のものです。
17/06/20 10:12:50.70 Usr/uqTE.net
いくらC++を勉強したところでDXライブラリはゲームエンジンとしての限界点が低いから
とくにグラが汚いから覚悟しておくことだ
最新の C++ 11 できっちり組んだとしても、遊ぶ人から「これレトロゲーム?」って言われる(笑)
291:名前は開発中のものです。
17/06/20 10:28:18.35 39gfrlUT.net
素のシェーダを使えばそりゃ
292:名前は開発中のものです。
17/06/20 13:23:34.57 T/7j0XdF.net
デフォのトゥーンは輪郭線が綺麗で好きだな
いくつかトゥーン作ったけど結局デフォに落ち着いた
293:名前は開発中のものです。
17/06/22 23:00:29.04 2Sd5aLez.net
javaやC#の標準ライブラリですら
rectangleクラスのintersectで簡易当たり判定は楽にできるみたいなんだよね
思想の違いだとは思うがゲームライブラリならそれくらいあってもいいとは思った
294:名前は開発中のものです。
17/06/23 00:42:29.61 IOEH1G7m.net
MFCにCRectクラスのIntersectRectがあるよ
まあしかし四角の当たり判定がないくらいで不便って言うのなら c# に乗り換えたほうがいいと思う
c++は全般的に使い勝手あまりよくないから
295:名前は開発中のものです。
17/06/23 07:01:41.36 uGgDuqlH.net
そういえば3Dの衝突判定機能はいくつかあるけど2Dは無いんだな
296:俺が遊園地だ! ◆ExGQrDul2E
17/07/08 18:53:42.86 PjfJpjf3.net
pythonで入力ゲームを作ってます。
DXライブラリの、
VisualC# 用パッケージ
で、ゲームパットは正常に動きますか?
pygameのゲームパットが難しいので、そちらが使えたら使おうかと思いました。
297:俺が遊園地だ!
17/07/08 19:17:30.02 PjfJpjf3.net
普通に使えた。
32bitだから64bitにしたらの不安が有ったけど、心配し過ぎでした。
お騒がせしました。
どうも、です。
298:名前は開発中のものです。
17/08/01 16:41:53.80 2q48AiqK.net
リファレンスのTellMovieToGraphのサンプルを参考に
LoadGraphでaviファイル読み込んでDrawGraphで映像を描画するプログラムを試してみたら
タスクマネージャで確認したところ動画の再生中はディスク使用量が常に100%近くなってしまうのですが
これはそういうものなんでしょうか?
299:名前は開発中のものです。
17/08/04 16:38:59.69 tsG7+X9W.net
DXライブラリを使ってC++で
アドベンチャーゲームを作ろうと思っています。
今時のノベルゲームでは無く、ファミコン時代のアドベンチャーゲームです。
今まではアクションゲームやシューティングゲームを作って来まして、
アドベンチャーは初挑戦なのでちょっと不安なんです。
企画だのシナリオだのの前に、まずはシステムや
アドベンチャーゲームを構成するプログラミングから考える必要がありますよね?
しかし、現段階でそれらを考えると、完全に独学のオリジナルになり、
凄く面倒なものを完成させてしまうかもしれません。
自分としては、ひな形とまでは言いませんが、
参考にできるものや、定石を学ぶ方法を模索しております。
なにかありませんか?サイトでも書籍でも構いません、教えて下さい。
300:名前は開発中のものです。
17/08/04 21:34:34.44 nr3e4i5V.net
githubにソースコード公開して作りながら適度に聞けば?
301:名前は開発中のものです。
17/08/08 03:23:59.67 te1eWtCq.net
ノベルなら公式のサンプルページにある
URLリンク(dxlib.o.oo7.jp)
302:名前は開発中のものです。
17/08/10 05:42:09.39 iSPIllot.net
>>294
ありがとございます
ただ、自分はどっちかっていうと
考え方を知りたいんですよ
アドベンチャーゲーム制作する上での
フラグの考え方や、変数の使い方です。
考えてみると、アドベンチャーゲームって
フラグめちゃ必要じゃないですかね
例えば、調べる項目が増えていくじゃないですか、
話すで選択できる相手とかも。
そして、キャラの台詞も、
質問二回目、三回目で返答内容変えたり。
そーいうの、どう考えて組み立てていけば
いいのかなって、、
303:名前は開発中のものです。
17/08/10 16:57:59.32 EVBv0/AO.net
RPGのイベントも話しかける相手や時期、話しかけた回数とかでサブイベント分岐させたりするじゃん
アドベンチャーゲームだからって専用の特殊な考え方やフラグ管理って必要ないと思う
304:名前は開発中のものです。
17/08/13 23:06:22.13 15NIY4cP.net
定石は無く、ゲームの仕様それぞれに合わせて考えるしかない
仕様が複雑ならより汎用的でいちいち面倒くさい重厚な構造になるし、
仕様が単純なら多少ごり押ししたような方法で手早く必要条件を満たす
そう、答えなきところに答えを出すのがゲームプログラミングというものだ
305:名前は開発中のものです。
17/08/14 02:28:34.22 hzdvLGH2.net
>>296
アドベンチャーゲームプレイしたことある?
ノベルじゃ無くてさ。
各シーン(場所)で出現する項目数も決まって無いし
その項目数もある項目を通過するたび項目数が増えるし、
その項目だって、何層もあった先の項目だったりする。
それが各シーンで統一できない状態なわけで、、、、
RPGなんかのフラグと同じじゃない、そんなシンプルに出来ない。
>>297
やはりゴリ押しかあ、、、、
306:名前は開発中のものです。
17/08/14 02:55:30.92 TRJCWwIN.net
場面ごとに専用のフラグや処理を作ると考えるんじゃなくて
進行フラグや取得アイテムに応じて出す選択肢を変えると考えるんだよ
なので仕組み的にはRPGとかと同じと言える
あとはスクリプトデータのフォーマットとか作り方の問題なので
それこそノベルゲームエンジンを参考にすればいい
307:名前は開発中のものです。
17/08/14 03:35:49.62 pHE8mMZP.net
ゲームの詳細が決まってないような段階で
プログラミングを抽象化するのは無謀な上に当事者は歴戦の勇士でもないという
それならいったんごり押しからの脱構築しかあるまい
そうやって作られたサンプルは動く仕様書として人に意見を聞くにも役に立つ
308:名前は開発中のものです。
17/08/14 11:01:43.32 vcZ6Fez8.net
>>298
>RPGなんかのフラグと同じじゃない、そんなシンプルに出来ない。
アンタの作ったRPGってちょっとした分岐も無い完全一本道でつまんないレールプレイングゲームになりそうだな
309:名前は開発中のものです。
17/08/14 12:27:23.39 iCSgoKHT.net
フラグはDBにまとめれば管理手段はどれも共通にできる
sqliteあたりを一通りさわれば可能性を感じられるかと
310:名前は開発中のものです。
17/08/14 23:08:47.65 qCrUMcpY.net
フラグ・クラス(というかセーブデータ・クラス)を作って、シリアライズ・デシリアライズする方法が楽だな
C#のシリアライザーやUnityのJsonでクラスがあれば、クラスまるごと簡単にファイル保存・読込できる
フラグがいくつ増えてもセーブ・ロードのコーディングしなくていい
311:名前は開発中のものです。
17/08/16 16:04:52.17 Gx1lkBAt.net
俺が書いたプログラムを毎回ウイルス扱いして止めようとするのはやめろノートン!
312:名前は開発中のものです。
17/12/31 19:25:19.56 /rN76OKL.net
簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
YF53OEVNGR
313:名前は開発中のものです。
18/01/19 06:28:35.93 1cW9r6Ce.net
お勧めの便利な隠し関数あったら教えて
314:名前は開発中のものです。
18/01/19 08:36:00.78 XJZDKDzA.net
GetUseDirect3D11Device
GetUseDirect3D11DeviceContext
なんでも出来るぞ
315:名前は開発中のものです。
18/01/28 17:17:24.80 7DlFUx6z.net
うーん、この!
316:名前は開発中のものです。
18/02/12 18:32:23.17 5pbWzyoz.net
いまいち何ができるのかがわからん
317:名前は開発中のものです。
18/02/17 07:23:32.90 G/oBdhuK.net
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
318:r> すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
319:名前は開発中のものです。
18/02/18 07:13:02.47 08zbUSEn.net
必要な人は自分で書いてるだろうけど一応
次の更新でfps値取得関数が追加されそう
URLリンク(dxlib.o.oo7.jp)
320:名前は開発中のものです。
18/02/19 05:11:46.55 3rsXcNLy.net
fpsの表示なんて、いるかあ?
こんなしょぼい機能を追加してしまうところにDXライブラリの作者のやる気の無さを感じるわ
321:名前は開発中のものです。
18/02/19 05:22:42.68 V52YqOZR.net
iOS版作ってる最中みたいだけど
iOS程度じゃやる気無しか
322:名前は開発中のものです。
18/02/19 06:47:24.41 3rsXcNLy.net
>iOS版作ってる最中みたいだけど
そりゃすごい、こういうのを期待してるんだお
323:名前は開発中のものです。
18/02/19 07:45:09.01 3rsXcNLy.net
Unityのfps表示のアセットを見ればわかることだけど、
ひとりのユーザーがfps表示のコンポーネントを公開すればみんなでそれを使えるようにすべきなんだよ
わざわざゲームエンジンに機能を追加しなくてもね
ひとりのユーザーが便利なコンポーネントを公開すればみんなでそれを使う
ということができるようにDXライブラリはもっとコンポーネント指向にして欲しいよなぁ
そのへんがもう遅れてるし、ユーザーも増えないし、コミュニティも育たない原因の一つだね
324:名前は開発中のものです。
18/02/19 07:53:25.65 rQjda85n.net
育ったコミュニティってどんなコミュニティなんよ?
325:名前は開発中のものです。
18/02/19 08:38:06.72 3rsXcNLy.net
ゲームエンジン界隈でいちばん育ったコミュニティはUnityでしょ
アセットストアやgithubなどに新しい機能や素材がたくさんあって、
そこから新しいユーザーが増えたり、ゲームが高品質・短時間・低コストで作れたりしてる
そういう人や素材の多さを見てさらにユーザーが増えるような好循環がある
326:名前は開発中のものです。
18/02/19 12:30:43.08 pD
327:BpwFKS.net
328:名前は開発中のものです。
18/02/19 13:10:01.54 MQhG+/C3.net
設計思想が全然違うものを引き合いに出されてもな
ユーザも古いライブラリの割には居るし
329:名前は開発中のものです。
18/02/19 19:33:21.30 rQjda85n.net
DXライブラリは管理人さんがこまめに更新、デバッグしてくれてるから
公式のファイル落とすだけで充分なんだという安心感があるのが逆に良い点だと思う
ユーザー同士のそういうやり取りには
公式本体ファイルのアップデートで使えなくなるのとか
組み合わせの相性が悪いのとかが出てきてもめんどくさいし
「こんな機能が欲しいです」→「○○で出来るだろ」→「どこでDL出来ますか?」
の流れが頻繁に出るのもうざいし、時間がたって消えたファイルの再Upクレクレもうざいじゃん
ユーザーを気にかけててこまめに更新を続けてくれる作者が居るコミュニティの場合
作者の独裁体制の方がユーザーは幸せだし、新規も入りやすいよ
逆に放任のところはユーザー同士の交流が活発な方が良いけどね
330:名前は開発中のものです。
18/02/20 18:33:46.88 fA7kJSoQ.net
いいライブラリだよな。
他言語用に移植されても良さそうなもんだが。
331:名前は開発中のものです。
18/02/21 15:47:15.99 1nbj1mbE.net
素晴らしいライブラリだと思うよ。
ここまでやって欲しくてこれ以上踏み込んで欲しくないラインがわかってる。
332:名前は開発中のものです。
18/02/21 22:34:52.58 Ucw8wVy1.net
Unityと比べるとblenderと親和性が良くない
逆にMMDやメタセコは良い
日本的なんだけどやはりUnityと違って世界には広まらない
333:名前は開発中のものです。
18/02/21 22:41:25.06 H0hgJRdI.net
まあ確かに世界に広まってユーザーが増えれば
今後もずっと使えるだろうって安心感も増えるよな
334:名前は開発中のものです。
18/02/21 22:48:35.83 kkwCD6fP.net
同じとこに這い寄ったって劣化版と見られるだけだべ
オンリーワンの強みを持てばいいのよ
335:名前は開発中のものです。
18/02/22 18:17:23.65 qW9SRz4G.net
持てばいいのよね
336:名前は開発中のものです。
18/02/23 01:02:51.27 IWXaYcmi.net
2Dゲー作るのにわざわざUnityなんて面倒なだけだし
ゲームの動作も重いからなぁ
337:名前は開発中のものです。
18/02/23 09:19:16.45 kxmlS11i.net
2Dゲー作るならDXライブラリの方が向いてるよな。
無駄な裏処理が少ないし
メインループ動作の基本的な考えやFPS固定前提でのエンジンなところも。
逆にDXライブラリで本格3Dゲー作ろうとは思わないけど。
338:名前は開発中のものです。
18/02/23 11:17:32.81 liJddYNV.net
>>218
ものっそい今更なんだけど
gifはムービーファイル扱いでロードするとアニメーション再生できたはずよ
過去スレで教えてもらったことがある
339:名前は開発中のものです。
18/02/23 13:04:40.91 dJxrVb2a.net
unityなんか素材をポンポンドロップしてプレハブ化してそれを呼び出すだけよ?超簡単w
340:名前は開発中のものです。
18/02/23 19:59:21.58 A9Xfzxjc.net
簡単に作れる と 自分の思うように作れる は全く違うからね
341:名前は開発中のものです。
18/02/25 17:25:26.15 r96XISKi.net
VisualStudio Express 2017には対応しないのかな?まあ2015でも別にいいんだが
342:名前は開発中のものです。
18/02/25 19:15:17.54 NZvHdLzy.net
いつの間にかMMDのアニメーションのfpsを変えられる関数が追加されてるな
前はMMDとDXライブラリはfpsが30倍違ったからモーション合わせるのが少し面倒だった
343:名前は開発中のものです。
18/03/04 01:03:33.22 bpU4ezJp.net
面倒かしら?
344:名前は開発中のものです。
18/03/04 02:55:50.19 1zP7Vw/Z.net
DXライブラリにもアセットみたいのがあればと思ったけど
ハ�
345:Cレベルなシェーダーマップやfbxに対応してない低レベルモデルしかサポートしてないし微妙だな
346:名前は開発中のものです。
18/03/08 07:47:12.60 3JaGjMOx.net
ゲームのレベルが低いうちはDXライブラリみたいな縛りがゆるくて自由に何でもできるゲームエンジンが優勢だったけど
わりと最近の、高度化されたゲームが増えるにつれて
ほかの人がつくった高品質・高機能なアセットが使えるゲームエンジンが優勢になっちゃった感じはする
347:名前は開発中のものです。
18/03/09 23:07:11.90 a5uZ81a6.net
ガワだけちゃっちゃと取り繕えるほうが今のトレンドにあってるからねえ
DXライブラリの本分とは別世界だわさ
348:名前は開発中のものです。
18/03/10 12:50:23.57 ARpShz0t.net
DXライブラリって元々2D専用で3Dはあとから要望で付けましたみたいなイメージある
3dゲーム作成はプログラム以外も大変だし手軽でクオリティ高くつくれるほうが今時XPみたいな低スペで動く軽さよりも魅力
あと利用規約とかいろいろみると結局物理エンジン自分で実装したりボーンいじるハメになるから全く個人制作向けではない
349:名前は開発中のものです。
18/03/10 16:37:51.91 4Kwil+iN.net
DXライブラリで 3D が出来るなんてただの都市伝説ですよ
350:名前は開発中のものです。
18/03/11 14:17:03.49 IH2EL2/u.net
シェーダ書くのは構わないんだけど自作モデルのメッシュ割りが下手でシェーダが活きない
モデリングセンスの壁ってあるよな
ついでに音楽センスも終わってるから作曲もやべえ
351:名前は開発中のものです。
18/03/11 14:36:45.50 zKX5fq8W.net
作曲は知識>>>センスなので勉強しよう
352:名前は開発中のものです。
18/03/12 21:57:02.23 9AivN1FY.net
全部勉強して作ってたらゲームなんて作れない、っていうか何したいか考える時間すらなくなると思うんだが
353:名前は開発中のものです。
18/03/13 09:38:33.56 jI2E+sAp.net
そうやってやらねぇ奴はずっと何もできねぇんだ
354:名前は開発中のものです。
18/03/13 14:24:59.33 +MCBtj4v.net
コード書くのは苦ではないし数学も物理学もその辺の工学部の学生程度にはあるんだけど
イラストとか音楽とか未知の世界すぎて戸惑ってるわ
355:名前は開発中のものです。
18/03/13 15:06:04.27 WvozeIrk.net
その辺はフリー素材で作ればいいんじゃないの
356:名前は開発中のものです。
18/03/14 01:15:43.12 o001Z/SH.net
BGMを自力でこなしてるやつなんて1割もおらんよ
357:名前は開発中のものです。
18/03/14 13:48:00.70 XCzjnx8U.net
プログラマはシンプルが美徳だけどキャラデザは真逆だしな
マグカップとティーカップくらい価値感が違う
358:名前は開発中のものです。
18/03/20 05:11:01.65 jyM2eVTH.net
キャラデザもシンプルだよ
大ヒットするヤツは特徴がハッキリしていてデフォルメが効いて真似しやすい
359:名前は開発中のものです。
18/03/22 20:42:03.87 Zj+2Z13f.net
>>348
あっそ!
だから何だよバ~カ
360:名前は開発中のものです。
18/03/25 18:42:51.14 gm3GwjTo.net
だいぶ手こずったけどDXライブラリとLive2dを一緒に使えるようになったぞ
情報少ねー
361:名前は開発中のものです。
18/03/25 18:45:52.17 iFO8WiZR.net
情報少ないけどunityより軽くて使いやすいわ
362:名前は開発中のものです。
18/03/26 18:43:16.19 WnoRr6Tl.net
陽炎エフェクトやろうとあれこれ検索したら
Blender 陽炎・排気熱エフェクト - YouTube
URLリンク(www.youtube.com)
まともなのはこれしかヒットしなくて。
とはいえ、これってDXライブラリに応用できますかね?
フィルタとマスクを重ねる・・・歪みってどう作れば良いんだろ。
363:名前は開発中のものです。
18/03/27 14:35:14.61 U8uMhQkL.net
Shader使えばできるだろうけど、DXライブラリはShaderの機能が貧弱なのであまりオススメしない
DXライブラリはグラフィック機能全般がはっきり言って貧弱&時代遅れだから
グラフィック処理を凝るようになったら難易度ベリーハードになってまうで・・・
もっとグラ強化してくれたらいいんだけどな
364:名前は開発中のものです。
18/03/27 14:48:13.36 PKqugYbx.net
ケースバイケースでしょ。
同人レベルじゃ第一級レベルエンジン云々はさほど重要じゃない。
365:名前は開発中のものです。
18/03/27 15:31:20.51 U8uMhQkL.net
ケースバイケースっていうけど
陽炎エフェクトつくるくらいで限界がくるようではなぁ
366:352
18/03/27 23:48:02.45 vVCMgZTn.net
そーなのかー。
GraphFilter()辺りを何度か読み直していたんだけど、『これって指定したハンドル全面に作用するよね』と頭抱えていたのです。
そのまんまは無理でも、何か似た効果で違う方法を知恵絞ってみます。
ありがとうございました。
それとお詫びです。
3Dをサンプルに出しましたけど、2Dオンリーで考えていましたm(__)m
書き漏らしました。
367:名前は開発中のものです。
18/03/28 04:54:42.91 t75c1Gyp.net
困った時は素直に管理人に直接言ったほうが良いと思うな
DXライブラリでDirectX並のことして自己解決するのは本末転倒だし
DXライブラリユーザー全体にとってもためにならない
368:名前は開発中のものです。
18/03/28 13:58:21.38 /3vY1pxw.net
手書き済むものをエフェクトエフェクトってバカじゃないの?
369:名前は開発中のものです。
18/03/30 17:11:05.44 eI6W5sP9.net
>>358
バカはお前だ
二度と書き込むな!
370:名前は開発中のものです。
18/04/03 17:22:38.42 Xz3y6FmN.net
>>359
ごめんなさい
371:名前は開発中のものです。
18/04/04 23:15:09.78 R/YROIQ5.net
書き込むなと言ってるだろう!
わかったら返事をしろ!
372:352
18/04/09 00:50:08.88 LBz4klhT.net
>>357
ある程度要望がまとまったら、管理人様に要望出すのが貴殿の言う通りLIBと皆さんの為だとも思うのだけど、
> 現在 iOS対応の作業をしているので、大きな機能追加は、機能を追加するかどうかの検討も含め
> すべて iOS対応の後となってしまいます( 半年~1年後 )、すみません m(_ _;m
3/18日頃のレスを見るに、当分無理そうだ・・・。
373:名前は開発中のものです。
18/04/09 09:29:17.25 AtbH8//X.net
シェーダーとか自動でやって欲しいような方向性ならDXライブラリはそもそも向いてなくね?
処理が軽くてブラックボックスになってなくて基本全部自分で触れるのが長所なんだから
あれこれ機能拡張を要求するのはそもそも趣旨が違うんじゃないのと。
374:名前は開発中のものです。
18/04/09 15:30:47.05 XT54V97o.net
ただのDirectXのラッパーやしな。
375:名前は開発中のものです。
18/04/10 08:42:46.46 I40ecfic.net
DirectXって初期設定とかOSのバージョン違いの誤作動とかめんどくさいから
そのあたり任せられるだけでも助かるけどな
376:名前は開発中のものです。
18/04/10 17:13:22.47 lkdKIuhd.net
個人的にはウインドウ作る基本的なとことかDXアーカイブだけでも十分ありがたい
377:名前は開発中のものです。
18/04/10 21:49:07.34 I40ecfic.net
逆をいうとそのあたり以外はいらないんだよな。
とにかくハードウェア的な部分や初期設定関係以外は基本、DirectXの関数だけでいい。
あとは余計なことせずに処理が軽いことが一番。現状でいいよ。
あれもこれもと盛ってUnityみたいにならなくていいよ。
378:名前は開発中のものです。
18/04/11 16:35:14.21 d45q6Zye.net
大きなフレーム持ってるツールは学習コストがそれなりにかかるらね。
同人や個人制作あたりだと結構あの
379:手のツールは段取りに時間かかる。 実際、DXLIBってそういう位置づけのものだと思うよ。
380:名前は開発中のものです。
18/04/13 13:56:40.97 Q35NURll.net
自分はどっちかといえばunity目指してほしい
上級者の玩具にするとDXライブラリの意味がなくなる
381:名前は開発中のものです。
18/04/13 14:04:01.73 fX9ITxio.net
Unityの方が上級者(or情弱)向きじゃね
そもそもコミュニティの規模が違うんだからDXlibにUnityライクを求めるのは間違い
382:名前は開発中のものです。
18/04/13 16:38:44.24 R7eEBoc/.net
>>369
Unityの開発何人いると思ってるんだよ。
DxLibはライブラリ。ゲーム開発ツールじゃない。
383:名前は開発中のものです。
18/04/13 18:14:01.06 qnlmuij1.net
でもバグっぽいことを掲示板で聞くとすぐ返事返ってきて修正してくれたりするからすごいよね…
384:名前は開発中のものです。
18/04/13 19:30:36.87 63ARccHk.net
あの人のサポート力は尋常ではない
385:名前は開発中のものです。
18/04/14 08:14:47.03 J5fuJkMt.net
明らかにライブラリのせいじゃないクソみたいな質問にもちゃんと答えてるの凄いわ
俺ならキレてる
386:名前は開発中のものです。
18/04/14 14:41:36.04 Hagdi1K8.net
あれは偉いよね。人間ができてるよ。
俺があの馬鹿みたいな質問の連続くらったらやっぱりキレてると思う(笑)
387:名前は開発中のものです。
18/04/15 08:45:03.93 L///N+7G.net
心配しなくてもお前らじゃあんなの作れないから、いらつく心配なんかしなくていいぞw
388:名前は開発中のものです。
18/04/15 20:44:24.72 7pypFUfB.net
なんだと?!
389:名前は開発中のものです。
18/04/18 22:24:37.19 +i4Yavlh.net
サポートに時間かけて逆に開発が遅延してるけどな
スマホ対応おそすぎどんだけ遅れればいいんだ
390:名前は開発中のものです。
18/04/19 01:03:17.04 qo2Hkkyx.net
偉そうやな、クレクレの分際で
391:名前は開発中のものです。
18/04/19 03:13:18.60 amawE2AE.net
他のゲームエンジンの後追いじゃなくて別の新しい方向に向かってもよかったかもね
392:名前は開発中のものです。
18/04/19 06:32:44.17 GWEoEFzB.net
言うほど後追いしてる?
393:名前は開発中のものです。
18/04/19 09:24:27.36 jjgvHqgw.net
>>378
文句があるなら自分で作れよ。
完全にボランティアでやってくれてるんだぞ。
394:名前は開発中のものです。
18/04/19 12:47:14.74 Q0kUJgfG.net
369 名前:名前は開発中のものです。[sage] 投稿日:2018/04/13(金) 13:56:40.97 ID:Q35NURll
自分はどっちかといえばunity目指してほしい
上級者の玩具にするとDXライブラリの意味がなくなる
こいつ利用者で一番馬鹿だわ
395:名前は開発中のものです。
18/04/21 11:46:31.61 eaIElNnW.net
単なるラッパーライブラリとして末永くやってほしい
396:名前は開発中のものです。
18/04/21 18:00:11.35 1vO5sgVY.net
てか、それが人一人ができる精一杯の限度だろうなあ。
397:名前は開発中のものです。
18/04/22 18:51:58.41 cgPT0kaN.net
今のゲームが当たり前に実装する物理レンダや物理演算は
ラッパーライブラリじゃあ実装できない
Direct Xのラッパーライブラリ作れば時代の最先端だったというのはもうずっと昔の話でしょ
過去の成功体験を忘れられないってか老害よな
398:名前は開発中のものです。
18/04/22 19:03:54.96 jyQNA3uE.net
それらが出来ないライブラリのスレに居座る老害が何いってんだ
乞食らしくUnity(笑)でも使っとけ
399:名前は開発中のものです。
18/04/22 19:29:34.04 9/rq3Yyr.net
Unity(笑)UE4(笑)
本物の老害様だ!
400:名前は開発中のものです。
18/04/22 20:26:07.89 cgPT0kaN.net
>>387-388
お前らはそこでUnityやUE4への批判をしてしまうところがよくない
DXライブラリでも面白いゲームは作れる!と熱っぽく語るべきだろ
DXライブラリが本当にダメみたいじゃないか
401:名前は開発中のものです。
18/04/22 20:34:19.03 w7fu0Q1x.net
スーファミレベルの2Dゲームが作れれば満足な俺みたいなおっさんには
今のゲームが当たり前に実装する物理レンダや物理演算なんぞ要らんのです
402:名前は開発中のものです。
18/04/23 07:23:43.24 zTmnRfht.net
>>398
ゲーム制作ツールとライブラリの区別もつかないとか
先に病院で頭見てもらうべきなんじゃないの?
403:名前は開発中のものです。
18/04/23 15:53:58.50 wUUOYYgP.net
2D作るにしても物理演算はあった方が便利っしょ。box2dくらいは使えるようになった方がいい。
404:名前は開発中のものです。
18/04/23 16:30:22.21 XokG/FK0.net
俺は物理演算いらんけどなあ。自前で組んで調整した方がいい動きになると思う。
405:名前は開発中のものです。
18/04/25 18:53:22.42 pNPtAbT4.net
とある意見「Box2Dぐらいは使えるようになった方がいい(便利だし開発が楽だから)」
とあるマゾ「俺は楽したくない変態だから物理演算はいらない。他の人間もそうあるべき」
俺「開発の効率を上げるのを拒む人間って害悪だよなあ。真空管でパンチカードでも通してろよ・・・」
406:名前は開発中のものです。
18/04/25 21:42:09.32 wCZSlXnR.net
>>394
その人にとって不必要な機能が追加されることは開発の効率を上げることに繋がらないどころか
その人の必要な機能に対して公式のサポートの手が回りにくくなることから
その人にとっては開発の効率が下がることに繋がるってことを理解しようぜ
機能はあればあるだけいいってもんじゃない、必要な機能だけあるのが一番いい
必要な機能は人それぞれ
407:名前は開発中のものです。
18/04/25 23:48:47.29 G5A97PEX.net
>>394
同じCライブラリなんやから自分で組み込みゃいいでしょ。
何いってんの?
408:名前は開発中のものです。
18/04/26 06:43:12.80 Q6Y0G65Q.net
>>394
Box2D使えばええやん
409:名前は開発中のものです。
18/04/26 08:55:16.56 8FkhnZEo.net
自分で組んでbox2Dより洗練された高速演算のライブラリを書けるならまあいいけどさ
物理挙動は入れずに衝突判定だけ取ることも出来るんだよ。そこに使うだけでもめっちゃ楽。
410:名前は開発中のものです。
18/04/26 21:26:43.42 Obi4vXUU.net
衝突判定作るのってそんな大変かね
丸と四角と線分くらいで十分でしょ
411:名前は開発中のものです。
18/04/26 21:26:57.30 O7SEtfFF.net
>>395
うーん、とりあえず君はプログラム云々以前に日本語を勉強すべきかな
日本語も満足に操れない人間がプログラミングなんてちゃんちゃらおかしいよ
412:名前は開発中のものです。
18/04/27 19:02:34.86 uyUfvLGU.net
資本力がないとゲームエンジンが開発できなくなったんだよね、今の時代
物理演算、物理レンダ、2Dボーン、タイルマップエディタ、シェーダーのビジュアルスクリプト
こういう「早い」「安い」「うまい」が実現できなければユーザー離れが起きる
413:名前は開発中のものです。
18/04/27 20:17:38.78 jXn/jYw6.net
なんか、ここ、プログラムの「プ」の字も知らなさそうな奴らが多すぎないか?
414:名前は開発中のものです。
18/04/27 22:07:00.13 uyUfvLGU.net
ん、君はプログラマーか?
最近はタイルマップエディタとかビジュアルスクリプトが普通に使えるようになったから、
プログラマの負担が減らせるわけで、それはいいことなんじゃないの
(DXライブラリではよく知らんが、少なくともUnityやUE4では)
415:名前は開発中のものです。
18/04/27 23:36:34.96 +EQaH9fl.net
>>402
うるさい、バーカ
416:名前は開発中のものです。
18/04/28 08:48:27.83 bZFWgAtf.net
>>402
少なくともここ数レスで君が一番アホっぽいよ?w
417:名前は開発中のものです。
18/04/28 15:19:30.35 o1LwlEpU.net
無駄なものを無駄と判断して切り捨てる能力こそシステム開発において至高
キャラを動かしてるだけで気持ちイイという操作感を追求するのなら物理も有益
418:名前は開発中のものです。
18/04/28 17:36:54.96 NvosXufr.net
>>405
そんな、図星を突かれたショックと悔しさを前面に出したレスをしなくても……
419:名前は開発中のものです。
18/04/29 09:32:36.04 Z/Nwj4DW.net
>>407
効いちゃった?ごめんぬw
420:名前は開発中のものです。
18/04/29 13:55:41.62 S7kv9d23.net
>>406
方向キー入れた瞬間から等速直線運動スタートしてくれた方が気持ちよくない?
確かにキャラが歩きだす時は加速度運動するのが物理的に正しいけど咄嗟の回避とか間に合わなくてストレスあるね
421:名前は開発中のものです。
18/04/29 19:49:17.45 SoZNbWO3.net
>>408
誰かと勘違いしてるのかな? 謝らなくていいからキチガイは病院へ行こうねw
422:名前は開発中のものです。
18/04/30 08:39:38.91 tt/t6/9o.net
>>410
煽られてキレて顔赤くするくらいなら煽らなきゃいいのに
煽らなかったら煽られないんだよ?わかる?w
423:名前は開発中のものです。
18/04/30 09:46:00.03 mwpHyMRP.net
話が見えないんだけど、なんで>>402は突然このスレの住民に喧嘩売りだしたの?
誰かいじめた?
424:名前は開発中のものです。
18/04/30 13:48:06.47 VZwEIDhP.net
IQ200の私にもわからん難問だな。
言えることはそっとしとけと言うことだ。
425:名前は開発中のものです。
18/04/30 20:09:14.02 KhVGgt2z.net
このスレのレベルが低いのはわかりきってるのになぜわざわざ言葉に出すのか・・・・
426:名前は開発中のものです。
18/05/07 13:58:29.93 Vfb9Bs9K.net
確かにうんこ旨そうだよな
427:名前は開発中のものです。
18/05/07 19:41:54.85 gUi75qwS.net
実際は苦いけどな
428:名前は開発中のものです。
18/05/08 19:55:01.58 zaHk58IC.net
ググったら本当に苦いらしいな
印象論だと思ってたわ
429:名前は開発中のものです。
18/06/08 22:16:08.13 uYJdfwFz.net
Nintendo Switch対応だそうだ
430:名前は開発中のものです。
18/06/09 01:01:18.87 fsH33aBO.net
まあいつも通り、素人が使う分には関係ない感じ?
431:名前は開発中のものです。
18/06/09 21:18:20.35 mBF3zINb.net
プロでこれ使ってるの見たことない
432:名前は開発中のものです。
18/06/09 21:58:18.52 fsH33aBO.net
それは流石にアンテナ低くない?
433:名前は開発中のものです。
18/06/10 16:27:22.57 qJZsL4jW.net
>>421
さあ、クソの役にも立たないゴミみたいなマウンテンゴリラレスはやめて
人の役に立つレスをしようぜ
434:名前は開発中のものです。
18/06/11 13:23:15.85 KAsMzLPf.net
ライブラリ公開してくれよ。
車輪の再発明は辞めたい。
勉強にはなるけど。
435:名前は開発中のものです。
18/06/13 01:02:11.08 zpWb0K6R.net
最新のハードに対応するのはいいが、
グラフィックがもう10年前くらいの旧世代なのをなんとかしてほしいな
シェーダー使えないとか、HDR対応してないとか
形だけ対応して中身がついてきてない感じだ
436:名前は開発中のものです。
18/06/16 19:40:00.09 8ewh1R16.net
>>423
DXライブラリはソース公開されてるよ
437:名前は開発中のものです。
18/06/17 03:19:14.87 z6C9dnYv.net
ええ、公開されてますね(困惑。
438:名前は開発中のものです。
18/06/30 00:04:57.83 QTwf7deE.net
ジオメトリシェーダとハルシェーダが使えないのは別に文句ないけど
technique使用不可なのは地味にイライラする
439:名前は開発中のものです。
18/07/04 18:03:25.24 GKLylxjM.net
DXライブラリのシェーダーまわりはそれだけじゃないつーか
DirectX9とDirectX11でコーディング方法が違ったり、
Android版ではそもそもシェーダー使用不可能だったり、
2Dスプライトの表示にシェーダー使えなかったりして
あれもないこれもないって感じになっちゃうなぁ。まあそういうのがいらない人向けなんだろうけど
440:名前は開発中のものです。
18/08/09 02:58:08.73 w7j+HefU.net
VRoidのVRMファイルの読込に対応しようとしたらマテリアルが物理レンダのパラメータで
DXライブラリだとVRMファイル読込むのは難しそうだ
物理レンダ対応してくんないかな
441:名前は開発中のものです。
18/08/11 12:47:56.79 RmGfKRPO.net
DxLibのシェーダーのSamplerで、テクスチャごとに違うフィルタリングモードでSamplerを作りたいんだけど無理かな?
プログラム側でSetDrawModeで設定したフィルタリングモードになっちゃうんだけど
442:名前は開発中のものです。
18/08/11 13:37:54.92 mdLblHI4.net
未だにMMDとメタセコだから
VRMファイルはナウでヤングすぎる
443:名前は開発中のものです。
18/08/11 20:00:03.15 0BvUQheC.net
DXライブラリは時代遅れすぎてどうにもならない
444:名前は開発中のものです。
18/08/11 20:48:54.21 V6BT8wZU.net
すぎてってほどではないと思う、まだ
445:名前は開発中のものです。
18/08/12 00:15:54.84 DLCHw2GI.net
時代に遅れすぎた理由は、アセットストアがないせいだな
いまだにアセットがひとつもないのは、アセットおじさんも真っ青だわ
446:名前は開発中のものです。
18/08/12 09:49:59.00 n2rCCHLV.net
お前は何を言ってるんだ
447:名前は開発中のものです。
18/08/15 02:14:13.34 I59D2OX6.net
DXライブラリでようやく地面モデルと線分の当たり判定つけられた
そこに主人公モデルの位置を同じにした
まだモーションつけてないから
主人公が棒立ちのまま移動した
坂道登れるだけで感動した(小並感
448:名前は開発中のものです。
18/08/20 12:57:34.10 HuW2CUtM.net
日記ですか
449:名前は開発中のものです。
18/08/26 11:59:52.50 Oz7phZC4.net
日記の続きまたー?
450:名前は開発中のものです。
18/08/29 12:37:25.65 8rKJxZI3.net
DXライブラリって世間的にはゲームエンジン扱いなのな
451:名前は開発中のものです。
18/08/30 08:01:34.88 w5Eoz0MG.net
>>439
多分そこが一番誤解されやすいとこだよな。
基本はDirectXで自前で全部作りたいけれどめんどくさい設定周りだけはやって欲しい人向けのお助けラッパーだよね。
そこにDirectX以上の機能はいらないし。今の状態で十分。
452:名前は開発中のものです。
18/08/30 14:26:51.75 83gEz2C2.net
「各種ゲーム用エンジン紹介」みたいなところで触れられる分には「そんなもんか」って感じだけど
「ゲームエンジンを使っている」カテゴリの中にDXライブラリ製ゲームが含まれるとあれ?って思う
自分でも基準がよく分からない
453:名前は開発中のものです。
18/08/31 10:19:13.96 MuDS6z7U.net
教えてほしいんですが
int fp = FileRead_open("csvファイル");
この場合、fpにはcsvがそのまま入ってるという解釈でいいですか?
つまり、ifstream ifs(fp);が可能になるのかが知りたいです。
ifstream ifs(FileRead_open("csvファイル"));は無理ですか?
なんでこんな面倒なこと考えるかというと、
archive化したファイル内のcsvを読みたいんです。
454:名前は開発中のものです。
18/08/31 10:29:38.50 MuDS6z7U.net
>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関数系を使わなくて済む様にしたいんです。
、、伝わりますか?僕の言いたいこと。。
455:名前は開発中のものです。
18/08/31 23:18:37.63 8gsP87Iw.net
archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない?
456:名前は開発中のものです。
18/09/01 06:52:39.05 RWsTVHZH.net
>>444
>
457:archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから え、それ本当ですか? >最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない? すみません、もう少し具体的に教えてください!
458:名前は開発中のものです。
18/09/01 07:02:25.87 BLfEX+5a.net
>>445
ファイルサイズが1000なら
char t_data[ 1000 ] にファイルのデータを格納する
で、後は添え字で任意のデータにアクセスする
459:名前は開発中のものです。
18/09/01 11:30:13.35 ghpuXsiR.net
FileRead_scanfじゃいかんの?
460:名前は開発中のものです。
18/09/01 14:32:20.17 PENKT9BN.net
>>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だかを使うとよい
461:名前は開発中のものです。
18/09/01 14:44:21.63 PENKT9BN.net
追記
csvファイルの最後に無駄な改行がついてたりすると配列のサイズ超えたりしがちなので注意
462:名前は開発中のものです。
18/09/01 14:53:41.96 PENKT9BN.net
さらに追記
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);
463:名前は開発中のものです。
18/09/02 02:13:46.38 qrAMxSjg.net
Cは文字列処理が弱いからCSVParserを書くのも一筋縄にはいかんよ
464:名前は開発中のものです。
18/09/03 04:26:51.22 8cSGEO2Y.net
そしてCSVの仕様を調べて、予想以上に面倒くさいことを知る
465:名前は開発中のものです。
18/09/03 23:58:20.90 JgPc/ZW2.net
「,」じゃなくてTABスペースで区切るとか
「'座標(x,y)'」みたいにシングル・ダブルクォーテーションで囲む「,」を含むセルだとか
CSVも奥が深い
466:名前は開発中のものです。
18/09/04 02:54:31.44 jVVbpFTb.net
ヘッダにコメントにセル内改行に空白セルに非固定列数に…
あれやこれや対応させると面倒なので、仕様はExcel出力版に決めうちとかしちゃう
それでいてExcel経由でもやり方によって微妙に違ったりするけど
467:名前は開発中のものです。
18/09/04 12:16:43.15 qFImTgae.net
Excel出力でも小数点の区切りがカンマな国とかあって地獄絵図なんだよなぁ
468:名前は開発中のものです。
18/09/04 12:18:12.23 qFImTgae.net
日本語がおかしかった
「小数点ががカンマ」ね
469:名前は開発中のものです。
18/09/04 12:18:39.57 qFImTgae.net
死にたい・・・
470:名前は開発中のものです。
18/09/04 18:21:03.16 87Ucq8PA.net
ワロタw
そもそも「小数点の区切りがカンマ」って別に変な日本語じゃないと思うけど?
471:名前は開発中のものです。
18/09/05 02:54:47.49 6fPtkJ/i.net
「(整数と)小数の区切り記号がカンマ」か
「小数点という区切り記号がカンマ」かってとこじゃない?
まあいずれにせよ通じる内容、普通に見落としちゃうレベルではある
472:名前は開発中のものです。
18/09/05 23:25:30.03 jdPHLPpw.net
もう>>442は投げ出しているだろうよ
473:名前は開発中のものです。
18/09/07 06:49:13.67 SP/YWN4v.net
>>460
投げ出していません。
>>448さんのせっかくのソースがちょっと複雑で、、、
言葉でなにをしなければならないのか、アドバイスほしいです。
要は、
archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
普通にCSVを開くプログラムを書いていると
archive後、正常に読み込まないってことですよね?
ということは、バイナリ状態のCSVを読み込むプログラム文を書けってことですか?
でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
バイナリ化してないcsvなんでエラーが起きますよね?
だからすごく困っています。
どうすればいいのか
474:名前は開発中のものです。
18/09/07 12:19:35.09 knV8JfdB.net
>>461
>>でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
>>バイナリ化してないcsvなんでエラーが起きますよね?
何を言っているのか分からん
デバッグモードだろうがバイナリ形式のファイルを読み込むプログラムを書けばバイナリ形式で読み込むし、
テキスト形式を読み込むプログラムを書けばテキスト形式で読み込むでしょ
475:名前は開発中のものです。
18/09/07 12:41:21.71 SP/YWN4v.net
>>462
えっと、自分の知識不足かもしれませんが
普通に数字と「,」だけが詰まったcsvファイルを用意していても
バイナリ形式で読むプログラムを書いていれば
バイナリ形式で読むってことですか?
バイナリ形式で読むプログラムを書いた場合は
用意するファイルもバイナリ形式で保存されたファイルじゃないと
ダメなのかなと思っているんですけど。
476:名前は開発中のものです。
18/09/07 13:34:50.10 knV8JfdB.net
>>463
そもそも上の方に書いてあった
「バイナリ形式は改行が削除される」っていうのが表現として適切じゃないな
改行コードを改行として認識するのがテキスト形式
改行コードをそのまま文字の羅列として認識するのがバイナリ形式
テキスト形式のファイルをバイナリ形式で読み込んだら
そのテキスト内の改行コードがそのまま文字列として読み込まれるだけ
477:名前は開発中のものです。
18/09/07 13:46:37.16 2W2TZVJf.net
1 複数データを一つにまとめたい(暗号化したい)
2 読み込みプログラム(csvパーサー?)は既存のものをそのまま流用したい
ってことなのかな……
>>444,>>446,>>448のキモは、DXアーカイブファイルを一本のchar配列に読み込む(バイナリデータとして扱う)という部分なので、
結局DXアーカイブもifstreamも関係なくて、char配列内のバイナリデータを自力で解析できるかという話になる
パソコンで使うデータは全てバイナリデータと言えるので、csvだろうが音声だろうがDXアーカイブファイルだろうが全てバイナリ形式で読み込める
478:名前は開発中のものです。
18/09/07 14:40:43.77 SP/YWN4v.net
>>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を利用しろと言われたことがあるので。
でもあなたの話を聞いてたら、違うのかな、とか。。。
479:名前は開発中のものです。
18/09/07 15:06:25.39 knV8JfdB.net
>>466
アーカイブは言わば「バイナリ形式」のファイルでしょ?
「テキスト形式のファイルを読み込むプログラム」でバイナリ形式のアーカイブを読み込もうとしてるからバグってるんじゃない?
123
456
789
上記のファイルがあったとして「1行読み込む」関数を使った場合
「123」「456」「789」って読み込むだろうけど
アーカイブ化(バイナリ形式)すると「1行読み込む」関数を使うと
「123\r\n456\r\n789」みたいに 一つの文字列として全部読み込むから数値が正常に読み取れてないと思うんだけど
480:名前は開発中のものです。
18/09/07 15:15:20.85 2W2TZVJf.net
まず、DXアーカイブファイルは全部のファイルを無理矢理合体&暗号化した完全独自形式のものなので、基本的にDXライブラリが用意した専用の関数でしか読み込めない
画像やサウンドはDXライブラリの読み込み関数を使うから、何もせずともDXアーカイブファイルから読み込めるようになってるんだよ
LoadGraph等には、内部的にFileRead_openが入ってるので、元のフォルダだろうとアーカイブだろうと読み込める
ただ、暗号化されてない場合に限り、小細工を弄すればバイナリファイルとして直接読める。(フォーマットを理解して自力でポインタ移動する必要がある) 上でみんなが説明してるのはこれ
これまでのやり取りを見る限り、バイナリファイル云々は今の君の知識で理解するのはたぶん無理なので、DXライブラリの関数使って地道にがんばったほうがいい
というかなぜFileRead_openを拒むのかがわからない……
481:名前は開発中のものです。
18/09/07 15:15:27.11 SP/YWN4v.net
呼び出し 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;}}
482:名前は開発中のものです。
18/09/07 15:22:35.20 SP/YWN4v.net
行数制限のせいで見づらいソースになってますが、ご了承ください。
処理内容は引数で配列の縦と横の値と、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を組み込む前と同じバグの状況です。
483:名前は開発中のものです。
18/09/07 15:27:55.83 2W2TZVJf.net
だからFileRead_readやFileRead_getsで読むんだぞ
もう一度リファレンスを熟読するんだ
484:名前は開発中のものです。
18/09/07 15:28:30.17 SP/YWN4v.net
あ、ちなみに>>469で利用しているMap配列の要素数は決めておらず、
vector<vector<int>>Map;と宣言しており、
第一、第二引数を受け取ってから要素数を決定させています。
485:名前は開発中のものです。
18/09/07 15:35:23.97 SP/YWN4v.net
>>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は正常に読み込まないんです、、、、ほんと参ってます。。
なにが悪いんでしょう?
486:名前は開発中のものです。
18/09/07 15:45:28.86 SP/YWN4v.net
なぜ、FileRead_openを使ってるのに、
FileRead_openを使ってないときのバグが出るんでしょうか。
でも、archive化しなければ、FileRead_openを使ってるそれでも正常に動くのです。
引数でcsvファイルのパスを受け取っているのが問題なんでしょうか?
でも、利用するcsvファイルがいくつもあるので呼び出し命令の引数でファイルを選択してやらないと
困るんですよね。
もちろん、引数では数値を受け取り、switchで数値ごとにcsvを選択させてもいいですが、、
でも引数が問題では無いとも思うんですよ、、、、、。
なんでなのか、もう何日も悩んでいます。
もしよかったら頭から数字,数字,.....というdataが入ったcsvを
FileRead_openで開いて、配列に入れていくという
シンプルなソースを書いてみてくれませんか?
DXライブラリのリファレンスにはcsvを使ったものが載ってないんですよ、、
なので、見せてほしいです。それを理解して応用させたいので。
お願いします、ほんと凄く困っていまして、、、
487:名前は開発中のものです。
18/09/07 15:48:35.98 6e9JnvLB.net
それ逆じゃないのか?
488:名前は開発中のものです。
18/09/07 17:09:17.90 stA8I9vh.net
良く分からんけど、こんな感じの事がしたいの?
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 );
}
489:名前は開発中のものです。
18/09/07 20:11:51.17 stA8I9vh.net
>>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作ってるのに
それを通常の入出力関数で読み出そうとしてるのがバグの原因だよ
490:名前は開発中のものです。
18/09/07 22:11:13.47 SP/YWN4v.net
>>477
>getlineが使われてる様だが?
int fh = FileRead_open(s.c_str());
えっと、まずこれをした時点で、
ファイル内の文字がfh
491:に入ってると思ってるんで それをgetline(fh,buf[line]))するわけですから 問題ないかと思っているんですが、、私、なにか勘違いしてるのでしょうか、、 >t.open( "abc.csv");とかしたって読み込まないよ >そんなファイル無いんだから これはどーいうことですか?パスの表記の話でしたら ここでは割愛しただけですので実際は頭のフォルダとファイル名と入力してます。 t.open( "フォルダ名/abc.csv");な感じで。 、、そー言う問題ではなくて、archiveした場合 "abc.csv"というファイル名ではなくなるという話ですか?? >>476 まさか、これ、自分と同じことやってるプログラムですか? まさかこんなに短くできますよ、とかじゃないですよね? すごく興味深いのでちょっと処理をじっくり読ませて頂きます。
492:名前は開発中のものです。
18/09/07 22:15:41.50 SP/YWN4v.net
>>477
あ、今気づきました、
自分FileRead_read使ってないですね、、、
FileRead_openとFileRead_readと一緒くたに考えてソース作ってしまってました。
FileRead_openもDXライブラリの関数でそれで開いてるから
DXライブラリArchiveしたファイルを開く問題はすでにクリアしたと。
493:名前は開発中のものです。
18/09/07 22:26:57.73 2W2TZVJf.net
薄々気づいていたけど、あまりにも基本的なことがわかってなさすぎる
勘違いですらなくて、全くわかってない
int fn はただのハンドル(識別番号)だし、ファイルオープンと読み込みは違うし、アーカイブファイルについても全くわかってないし、その知識でバイナリファイルを理解できるわけがない
あんま厳しいこと言いたくないけど、拾ってきたコピペを組み合わせて作ろうと思わず
c++の基本から勉強して、一文字ずつ自分で打ち込んだほうがいい
494:名前は開発中のものです。
18/09/07 23:04:19.42 SP/YWN4v.net
>>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の値だけをインクリメントしてるだけでなぜ二次元配列をすべて回すことが可能になるんですか?
495:名前は開発中のものです。
18/09/07 23:12:10.86 SP/YWN4v.net
>>480
経験が浅いのは認めます、、
特に外部ファイルをいじるのと、archiveファイルについてはほんと理解度が低いです。
でも、ここでそう指摘されることも、
また私が質問させていただくことも自分が成長するひとつの事柄にはなりませんでしょうか、、
ただコピペしたいのでは無く、ソースを理解したくて>>481でも質問させて頂きました。
未熟者なのは認めます、疑問に思ったことをまず自分で検索で調べてみての質問です。
教えて頂けないでしょうか。。
正直、DXライブラリのアーカイブを使わなければ
ゲームは動くのですが、DXライブラリのアーカイブでつまずいてしまっています。
releaseビルドしたあとにバグ�
496:ナ遊べないのでほんと辛いのです。
497:名前は開発中のものです。
18/09/07 23:21:53.72 SP/YWN4v.net
>>480
C++を熟知せずとも、便利な関数のおかげで
手軽にゲームを作れる、それがDXライブラリの良さであり、
短所でもあるのだと思います。
画像を描画するのも関数ひとつです。それで表示できるので
つまずきませんでした。
でもmap情報を外部ファイルにして読むことは、つまずています。
厳密にはアーカイブしなけば読むことは成功していますが、、
「お前は基本がなっていない」と言われたらそうなんですが
でもチュートリアル的なブログや参考書でも、ひとつひとつ完全に理解しようとすると挫折するから
今の自分ではわからなくてもとりあえずそうなんだという精神で進めていきましょう的な
助言も多かったです。ぶつかるたびに覚えていけばいい的な、、違いますでしょうか?
ファイルを扱う、バイナリ形式とかは、初めてです。なのでソースも見苦しいです。
でもそんな私でも>>476のプログラムはすごく魅力的だということがわかるんです。
学びたいんです、、簡単な解説でいいので、お願いできませんか?
498:名前は開発中のものです。
18/09/07 23:54:23.29 VUsIud2k.net
長い。
【1・2】isdigitが分からないならisdigitについて調べれば?
【3】教科書の最初に載ってるはずだが「'0'」は0という文字そのものを表す
【4】適当に数字を入れて計算してみれば?
499:名前は開発中のものです。
18/09/08 00:37:34.88 DgEMMqli.net
>>484
【4】適当に数字を入れて計算してみれば?
これ、今やってるんですが、目から鱗です、、、
すごい、添字の回し方、こんなシンプルな表現方法がったなんで
すごい!
500:名前は開発中のものです。
18/09/08 00:38:42.99 DgEMMqli.net
stA8I9vhさん、天才だ、、参考書やブログで見たことないですよ、
こんな回し方してる人。
501:名前は開発中のものです。
18/09/08 00:46:42.46 DgEMMqli.net
>>481の4、まじでやばい質問でしたね。アホすぎる、というか
検証しろって感じですよね。ほんとすみません。
ただ、[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ]では
配列の列数と添字とが同じ値だからこそできる計算式ですね。
ちぐはぐの場合は、やはり
for(int line=0; line<y; line++){
for(int col=0; col<x; col++){
を使うしか無い。
ネットで見たことないのは、
配列の列数と添字とが同じ数にぶちこむケースがあまりないから
ですね、、なんだそういうことか、、、
502:名前は開発中のものです。
18/09/08 00:51:04.46 zhYpFAkU.net
>>486
やり方としては定番だよ
初心者向けの記事とかだと説明しないだけで
503:名前は開発中のものです。
18/09/08 00:57:50.45 DgEMMqli.net
>>488
はい、シンプルですごく驚きました。
それに、二次元配列の要素を回す場合は
これが使えるのは両方の値が同じ場合だけですよね?
自分が要する配列は添字より列数が多い場合ばかりなので
この方法は使えない。
要は>>476さんはソースの参考にということで
記載してくれたので、ちゃんと自分のやりたいことに
組み込めってことですよね。
504:名前は開発中のものです。
18/09/08 01:05:53.57 DgEMMqli.net
でも少しでも認めて頂けると嬉しいのです。
初心者ですが、昨今ゲーム制作においてもっともポピュラーなUnityでは無く
人口が減少しつつあるC++やDXライブラリでゲームを作ろうとしてる私のこのヤル気を。
まあ、csvのarchiveファイルから読み込む云々でモチベ下がりましたけど
なんで画像やサウンドみたくスムーズに利用できないのか、と
なんら問題なく進められたのに。。
簡単な話、DXライブラリの関数に
getline(識別番号,配列[]))の代わりになるものがあればよかったのに。
引数が違うじゃないですが、どれも。
505:名前は開発中のものです。
18/09/08 01:09:04.45 zhYpFAkU.net
し らんがな
ね ろ
506:名前は開発中のものです。
18/09/08 01:12:38.23 DgEMMqli.net
>>491
この問題を考えているので寝ることができないです
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
これの ( t_Char - '0' ); はなにを表しているんですか?
t_Char - '0'です。
なぜ、文字列の'0'を引く必要があるのか、知りたいのです。
507:名前は開発中のものです。
18/09/08 01:18:28.37 vg2kVoor.net
URLリンク(dixq.net)
URLリンク(dixq.net)
あっちの回答は当てにならないってか
508:名前は開発中のものです。
18/09/08 01:28:20.69 DgEMMqli.net
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' ); の意味や
'0'がなにを表しているのか検索しようにも
現状のワードだけで検索するのは無理ですよ。。
なぜ俺が長文のプログラムでしていることを
たった一行にできているのか、さっぱりです。
509:名前は開発中のものです。
18/09/08 01:34:42.92 DgEMMqli.net
>>476の処理なんですが
二行目のint t_FileSize = FileRead_size( t_FileName.c_str() );
をしたあと、変数t_FileSizeは一切使用されておりませんが
ここでファイルのサイズを得る必要があるのはなぜですか?
どなたかわかる方、解説おねがします。
510:名前は開発中のものです。
18/09/08 02:39:16.41 38R4ypyC.net
>>495
あぁごめんね
FileSizeの部分は消して良いよ
あとシングルクォートで囲んでるのは文字を示すよ C言語の基礎ね
で、'0'~'9'までの文字コードの値は順に並んでいる事が保証されてるから
'0'を引くと整数値に変換出来る
'0' → 48
'1' → 49
'2' → 50 //以下略
511:名前は開発中のものです。
18/09/08 02:50:26.67 zhYpFAkU.net
まあ文字周りのの仕様から考えると決してC/C++的には正しくないんだろうけどな
やっちゃうよな
512:名前は開発中のものです。
18/09/08 03:32:28.47 DgEMMqli.net
>>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をつかって
一文字ずつ読んで格納することを考えていこうと思いますが、、
513:名前は開発中のものです。
18/09/08 03:46:12.30 f8SOqHWR.net
>>498
何回か言われてたと思うんだけど
FileRead_read関数を使えば良いんじゃないの?
514:名前は開発中のものです。
18/09/08 04:11:23.63 DgEMMqli.net
>>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 );
これでいけますか?
515:名前は開発中のものです。
18/09/08 04:21:08.99 f8SOqHWR.net
STLのstring?
それを3000個も用意する意味ないでしょ
配列やstringが何なのか分かってないとしか
やるなら
char t[ 3000 ]でしょ (要素数は3000から可変にすべきだけど)
FileRead_read( buf,FileRead_size,t_FileName );
何でファイルハンドル指定する第3匹数にstringをぶち込んでるの?
訳分からん事してるよ
516:名前は開発中のものです。
18/09/08 04:34:19.67 DgEMMqli.net
>>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 );
これです。
これなら問題ないですか?
517:名前は開発中のものです。
18/09/08 04:57:08.51 f8SOqHWR.net
string3000個もいらねーって言ってるだろーが!
バッファの先頭アドレスを指定する所にstringの実体を入れてるのも駄目だと思うけど
あと夜遅くてPC使えないとかで手元に実行環境が無いんだ�
518:チたら 使える様になるまで待ってみては?当てずっぽでソースコードっぽいものを書かれても困る
519:名前は開発中のものです。
18/09/08 05:41:44.22 DgEMMqli.net
>>503
String型(文字列型)とchar型(文字型)と勉強したんで、
csvに入った長い文字列(3,12,43,34,0,32,2,....が数百並ぶとかザラです)を
入れるためにString型を用意したつもりです。
実際、エラーは出ずに今まで動いているのですが、問題になっている理由を
聞かせてください。
char型でも
while(ifs && getline(ifs,buf[line])){
line++;
} 
は正常に動くんですよね?
ちなみに3000というのは、csvの文字列がどれだけ長くても対応できるように、、
と思ってそうしているんですが、、、文字列の量によっては無駄になるメモリもありますが、、
>当てずっぽでソースコードっぽいものを書かれても困る
確かにまだ確認はしていませんが、熟練の方でしたら
どうなるのか、わかるかなと思いまして、、聞いてみました。
(確かにいちいち自分で試せばいいですが、以前予期せぬエラーというか
無限ループとか、そういう危ないエラーを食らったことがあるので
なるべく聞いて確認したい気持ちもあります)
520:名前は開発中のものです。
18/09/08 05:49:23.91 DgEMMqli.net
結局、今夜も夜通しで進展せず朝を迎えた。
プログラムとサイトやブログとにらめっこしてました。
外部ファイル扱いの理解度が足りないせいもありますが
一番は、DXライブラリサイトのリファレンスが親切じゃないこと。
archiveファイル読み込み関数でcsvファイルを扱う場合の説明が不十分。
ifstreamやgetlineで問題なく動くプログラムをやっとこさ組めたのに。。
画像やサウンドなんてFileReadで触らずとも、それぞれ描画関数や再生関数で
archiveファイルから勝手に開けるのに、、、なぜリファレンスサンプルに
テキストファイル取り上げないの、、、、、、
521:名前は開発中のものです。
18/09/08 06:26:04.85 2HdjcsD1.net
C/C++にはString型(文字列型)なんてものは無く
std::stringクラスオブジェクトを3000個も用意するなって事でしょう
基礎の理解がおぼつかないまま先に進もうとしてめちゃくちゃになってる
DXのサンプル無くてもCのfopen/fread辺りのTXT読み込みサンプルを探して試してみて
デバッガで動きが理解できたら対応するDXライブラリのAPIに置き換えればいい
522:名前は開発中のものです。
18/09/08 06:40:52.25 t6UqvRI+.net
>>504
例え話をしよう
新居を購入して、そこに引っ越し用のダンボール箱を3000個 搬入したいとする
※新居はダンボール箱3000個まで収容可能とする
でもあなたは"家"を3000個用意してる訳 おかしい事してるの、わかる?
プログラムでいうと、buf[ 0 ]のstringにデータが入ってて
buf[ 1 ] ~ buf[ 2999 ]は無駄になってる
あと文字列 = stringって思ってるみたいだけど
文字列って要はchar型の配列だから別にstringである必要は無いよ
文字列比較とかするつもりが無いんだったら、
std::vector< char > t_DataVec;で充分だと思うけど
523:名前は開発中のものです。
18/09/08 06:46:54.61 DgEMMqli.net
>>506
>Cのfopen/fread辺りのTXT読み込みサンプルを探して試してみて
fopen/freadあたりの扱い方が近い、ということでしょうか?
了解しました、一度確認してみます。
>>507
ものすごいわかりやすい例え話でした。。
ありがとうございます、ちょっとそれを考慮して修正してみます。
524:名前は開発中のものです。
18/09/08 09:14:50.02 nuE0zfH6.net
Ruby では簡単。
Ruby, JavaScript などの動的言語を一通りやっていないと、C などポインタのある言語は無理。
言語の難易度が違いすぎる
# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
input_file = "input.csv"
CSV.foreach(input_file, col_sep: ":") do |row|
puts( row[0] + row[1] )
end
525:
526:名前は開発中のものです。
18/09/08 10:26:18.43 zhYpFAkU.net
>>509
今の話題に関しては、メモリ空間を認識できるかどうかの違いでしか無くね…?
527:名前は開発中のものです。
18/09/08 22:08:22.95 DgEMMqli.net
>>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]に変えてエラーになるということは。
528:名前は開発中のものです。
18/09/08 22:19:35.21 /fM1gWQu.net
完全にスレ違いなので他所に行った方がいい
個人的にはc++の教本を一から読み直すことを勧める。
初歩的なことが全くわかってない、ということをまず自覚したほうがいい
529:名前は開発中のものです。
18/09/08 22:42:35.24 DgEMMqli.net
あと、すみません>>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だけを利用した算出方法では行数の添え字の動きに支障が出ませんか?