トップページgamedev
1001コメント353KB

C/C++ゲーム製作総合スレッド Part4

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その12
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/

前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
0446名前は開発中のものです。2013/10/16(水) 01:13:03.73ID:lgAm+riK
垂直同期の説明
int i=0;
void update() {
i++;
}
void draw() {
printf("%d\n", i);
}
画面のフレームレートが60fpsで、実行時のフレームレートが180fpsとする
垂直同期が有効なら
1秒で1〜60の数字が描画される
1/60秒毎に1増えた数字が表示される
垂直同期が無効なら
1秒で1〜180の数字が描画される
だが、1/60秒後とに3つの数字が同時に表示される

これでわかんなかったらどう説明したら良いかわからん
0447名前は開発中のものです。2013/10/16(水) 04:03:31.33ID:B/+e+WNx
>>445
その電子銃が下から上に移動する一瞬の時間の事だ
ちなみに今はCRTなんてほとんど売ってないぞ
0448名前は開発中のものです。2013/10/16(水) 07:10:58.80ID:L8mOrdaC
>>444
俺はUTF-8に対応済み
しかし海外に対応する気は全く無い
0449名前は開発中のものです。2013/10/16(水) 07:26:54.00ID:L8mOrdaC
Windows-31Jで発生するバグがUTF-8だと直ってるんだよな
Windows-31Jの頃は運用で回避してきたが
0450名前は開発中のものです。2013/10/16(水) 08:07:02.94ID:umSiVyCp
APIとやりとりするならUTF-16じゃないのか?
なんでUTF-8でバグが直るんだ?
0451名前は開発中のものです。2013/10/16(水) 10:14:36.63ID:OgPi9Jui
細けえ事はいいんだよ!
0452名前は開発中のものです。2013/10/16(水) 17:52:35.98ID:B/+e+WNx
文字コードなんてゲームと関係ないじゃねーか
0453名前は開発中のものです。2013/10/16(水) 18:21:31.42ID:J+ERhyUQ
ゲーム以前の基礎レベルの話だもんな
0454名前は開発中のものです。2013/10/16(水) 18:32:38.56ID:Z0cE1bpK
デフォルトで使ってて変だと思ったら変えればいいんや
0455名前は開発中のものです。2013/10/17(木) 18:38:36.38ID:n2Urv0VX
20時までに書き込みがあったらゲーム作る
0456名前は開発中のものです。2013/10/17(木) 18:40:34.59ID:GUz904Uc
はよ
0457名前は開発中のものです。2013/10/17(木) 18:41:51.86ID:L9H0bqaE
期待
0458名前は開発中のものです。2013/10/17(木) 19:51:07.97ID:4aABW+0o
何作るの?
0459名前は開発中のものです。2013/10/17(木) 22:56:47.94ID:vaYuLY10
FPSで決まりだろJK
0460名前は開発中のものです。2013/10/17(木) 23:23:47.17ID:HnsHZ9SY
この板のどこかでゲーム作ってたけどff14やりすぎて手に付かない
0461名前は開発中のものです。2013/10/18(金) 00:34:01.43ID:GBldfOBg
>>460
俺も昔、灰プレイしてたけど
友人の一言でゲームしなく成った

友人「無限ループって怖くねぇ」
俺「………」

殆ど同じ毎日を過ごしてる俺にとって
一番、効いた一言だったかもな…

年を取ると分かるが
狭く見えてた地域が大きく感じる
若い内から此処は狭いと決め付けてたから
気付くのに時間がかかった
色んな事に目を向けると見たものだけ世界が広がるぞ
0462名前は開発中のものです。2013/10/18(金) 21:03:24.92ID:dgvIsp3H
>>460
俺は日替わりanvaderだ。
日替わりモードでは、ランダムにレベルデザインされてるんだが、これが熱い!
くそっ、アイツに負けたくない!
スレチだが、ランダム要素が増えると、スコアアタックに対する情熱が冷めやすくなるな。
0463名前は開発中のものです。2013/10/19(土) 02:36:23.45ID:/a7EdBZA
最近、FPSの解説を偶然書いていたので紹介しておくことにしよう

タイトル画面開発:正確な時間でアクション処理させる - C言語/C++ゲーム開発の章
http://c-games.main.jp/ckaihatu/ckaihatu6.html
0464名前は開発中のものです。2013/10/19(土) 09:57:23.64ID:9CwPsbm2
>>463
なんか色々怪しい解説だな…。
Windowsは1/60秒ごとにメッセージを送ってくるとか、パソコンのFPSの設定とか…。(リフレッシュレートの事?)
フレームレートに依存しないことと、タイミングが正確なことは別もんなんだけど、あまり区別がついていないようにも感じる…。
0465名前は開発中のものです。2013/10/19(土) 10:18:56.36ID:1nFuLmGb
描画処理はVSYNC同期にしてリフレッシュレートと同じ回数実行するべき
計算処理は経過時間を考慮してモニタのリフレッシュレート以上の速度で実行すれば問題ない

描画処理と計算処理を分けて考えるべき
描画処理はリフレッシュレートを超えて実行するのは無駄だし
VSYNC固定してないとティアリングが発生するから固定するべき
0466名前は開発中のものです。2013/10/19(土) 11:36:03.36ID:VlhENTvs
液晶モニタってvsyncどう扱ってんの?
走査線も無いのに
0467名前は開発中のものです。2013/10/19(土) 11:54:46.10ID:bsz0ZbF+
液晶の表示の変化に時間がかかるんだ
昔は液晶だと動画がブレまくってねぇ・・・・・・
0468名前は開発中のものです。2013/10/19(土) 12:00:53.90ID:9CwPsbm2
モニタが画面を更新するタイミングと同期を取る事を伝統的に垂直帰線同期と呼んでるだけで、モニタの仕組みがどうのっていうのは今や関係ない。
2D画像の合成の事を、本来のモノと仕組みも出来ることの幅もまるで違うのに、未だにスプライトって呼んでるのと似たようなもんじゃない?
0469名前は開発中のものです。2013/10/19(土) 12:58:18.70ID:sRchjxIh
>463を見て、kとかJで始まる何かを思い出してしまったのだが…
0470名前は開発中のものです。2013/10/19(土) 14:49:46.80ID:MKjjfqZL
>>463
1/60でなんで固定してんだよ
120Hzのモニターだったらタイミングが変わるだろ・・・
0471名前は開発中のものです。2013/10/19(土) 14:51:05.16ID:MKjjfqZL
あ、kazukiだわ
お察し・・・・
0472名前は開発中のものです。2013/10/19(土) 14:54:29.50ID:/3z9MfkX
なぜ、この板の住人はあいつの誘導にすぐ引っかかるかね
0473名前は開発中のものです。2013/10/19(土) 15:14:17.22ID:/BqcH5CG
引っ掛かっているのは奴の追っかけだけだろ
勝手に住人全員とばかりに決めつけるんじゃねえよ
0474名前は開発中のものです。2013/10/19(土) 15:19:11.27ID:zlmhW9Ft
全員と決め付けてるのはあんた
全員なんて書いてないっしょ
0475名前は開発中のものです。2013/10/19(土) 15:43:14.27ID:8wPLLvtt
>>463
こいつ何年もタイトル画面ばっか作ってんな
なのに、いつもサイトの名前が「ゲーム開発〜」っていう。

タイトル画面しかないゲームとか斬新すぎるわ
0476名前は開発中のものです。2013/10/19(土) 16:14:34.31ID:u+UBGDr9
>>315,316
ありがとう。
共通するメンバをできるだけ基底クラスに集めて、
ロジックだけ差し替える感じでやってみる。
0477名前は開発中のものです。2013/10/19(土) 16:27:28.79ID:igbx0LRU
いつまでもタイトル画面とか
基礎の部分は既存のフレームワークを参考に作ればすぐ終わるのに・・・
0478名前は開発中のものです。2013/10/19(土) 17:11:31.92ID:HNInh2Mx
>>463
他の解説記事も見てきたけどあっちこっち怪しいところ間違ってるところ多いな
解説を書くならもうちょっと勉強してからの方がよくね?
0479名前は開発中のものです。2013/10/19(土) 20:47:59.48ID:MKjjfqZL
>>478
すでに何人も改めるように提言したが無理
風物詩と思ってアキラメロン
0480名前は開発中のものです。2013/10/19(土) 22:01:09.82ID:a2djsHc3
http://www.4gamer.net/games/236/G023686/20131019004/

キタ━━━━(゚∀゚)━━━━ッ!!
0481名前は開発中のものです。2013/10/20(日) 00:07:55.13ID:0ur5LLqt
>>470
60Hzのモニターでも120Hzのモニターでも
その速度で描画可能にするためには
パソコンがその速度に対応している必要があります

そのパソコンが管理している時間(カウント)を扱って処理制御しているので
問題ないと思われますが

>>464
「Windowsは1/60秒ごとにメッセージを送ってくる」ではなく
「Windowsに1/60秒ごとにメッセージを送る必要がある」です

そうやってメッセージを送ってる時に
例外ハンドラーが働き
Windowsがエラーであることを理解するのです
0482名前は開発中のものです。2013/10/20(日) 00:12:43.33ID:CCOva6nt
>>481
kazukiはblogに帰れ
0483名前は開発中のものです。2013/10/20(日) 00:19:45.50ID:0ur5LLqt
>>482
http://c-games.main.jp/img/bbs/bbs1.png

以上
0484名前は開発中のものです。2013/10/20(日) 00:41:34.00ID:m5Iqtrsb
自分で自分のHNをNGワードとかwww

さすがは現実逃避を繰り返し続ける
コミュ不全なナマポニートのやる事は一味違うなw
0485名前は開発中のものです。2013/10/20(日) 00:58:11.94ID:VwrzDutR
悪口以外書かれることが無いって自覚してんだなw
0486名前は開発中のものです。2013/10/20(日) 01:32:12.86ID:0hzC+QTZ
C++ってfor文ないの?
C++は初心者なもんで
0487名前は開発中のものです。2013/10/20(日) 01:48:07.91ID:7EucjFyL
タイトル画面開発:
タイトル画面開発:
タイトル画面開発:
タイトル画面開発:

逃亡
0488名前は開発中のものです。2013/10/20(日) 02:49:06.57ID:TUni1VW8
>>481
ここに君向けの記事があるから、一度読むといいよ
ttp://karetta.jp/book-node/game-programming/236546

まぁ、間違ってたいのなら今のままでもいいけどサ
0489名前は開発中のものです。2013/10/20(日) 02:59:36.61ID:VrtyArlJ
というかhttp://karetta.jp/book-cover/game-programmingをトップに貼っとけば解決するんじゃね
0490名前は開発中のものです。2013/10/20(日) 08:59:45.30ID:0ur5LLqt
>>488
その解説は間違っています

> //Windowsからのメッセージを処理
> if( ProcessMessage() == -1 ) {
> break;
> }

この部分のProcessMessage関数のコメントが間違っています

正しくは「Windowsからのメッセージを処理」ではなく
ProcessMessage関数でWindowsにメッセージを送り
その返り値で処理するです

この場合、Windowsにメッセージを送る処理をProcessMessage関数で行い
その処理に失敗した場合にbreakです
0491名前は開発中のものです。2013/10/20(日) 09:07:32.69ID:0ur5LLqt
ProcessMessage();

C言語およびC++でこのようにコードを書いた場合、
関数を呼び出す命令になります

これは基本中の基本です

この場合、ProcessMessage関数を評価し
その結果がProcessMessage関数のreturnに代入され
成功したら「0」を、失敗したら「-1」を返します

int a = ProcessMessage();

つまり、このようなコードを書いて処理に成功した場合は
a変数に「0」が代入されます
0492名前は開発中のものです。2013/10/20(日) 09:20:13.47ID:0ur5LLqt
> if( DxLib_Init() == -1 ) {
>  return -1;
> }

あと、DXライブラリの初期化処理に、
こんなコードを書いていますが
例外処理にはtryブロックとcatchブロックを使うようにしましょう

// 例外処理
try {
  // DXライブラリの初期化処理
  if( DxLib_Init() ) throw 0;
}
//失敗時の処理
catch(int){
  return -1;
}

http://c-games.main.jp/ckiso/ckiso17.html

C言語の書籍を出してる割には大したことないですね
0493名前は開発中のものです。2013/10/20(日) 11:03:01.56ID:H1a6UBHV
ひょっとしてProcessMessage関数知らない?
必須機能っしょ
0494名前は開発中のものです。2013/10/20(日) 11:52:53.89ID:lEXKh2b1
さわらないでスルーかスルー推奨って書くかにしろ
0495名前は開発中のものです。2013/10/20(日) 14:12:23.28ID:0ur5LLqt
素朴な疑問を投げかけてみる

if( a > 0 ){
a=1;
b=2;
}

if文を使う時、こんな風に
よく中カッコを使うコードを見かけることがあるのですが、
私はこれは演算子が増えた分、処理が遅くなるように思える

if( a > 0 ) a=1 , b=2 ;

私はこのように組んだ方が、{ } (中カッコ2つ)と
;(セミコロン1つ)の計3つの演算子を使わない分
こっちの方が処理速度が僅かに早くなるように思える

どちらもエラーコードではないので
素朴な疑問を呟いてみただけです
0496名前は開発中のものです。2013/10/20(日) 14:34:49.94ID:i55eZoQa
処理が速くなっても誤差レベル。
それよりもコードが見づらくなって不具合を起こしやすくなるだけでしょ。
0497名前は開発中のものです。2013/10/20(日) 14:43:39.43ID:0ur5LLqt
>>496
なるほど、よく解かりました

誤差レベルでも処理が速くなってることには間違いないわけですね
私は簡単なコードは1行でまとめた方がスッキリして見やすいと思うので
簡単なコードの場合は中カッコは使わないようにしています

http://c-games.main.jp/ckaihatu/ckaihatu6.html
例えば、このページの最後のコードのif文を
全て中カッコにすると縦に長いコードになると
かえって読みにくくなりますよね
0498名前は開発中のものです。2013/10/20(日) 14:43:43.89ID:qTgVZt4b
アホなことを言う前に、
出力されたアセンブラのコードを見てみろ
いかに間抜けなことを言っていたか分かるから
0499名前は開発中のものです。2013/10/20(日) 14:46:47.71ID:0ur5LLqt
ああ、このコードのことです

http://c-games.main.jp/img/ckai/ckaiE8.png

さて、そろそろタイトルロゴ表示の解説でも書こうかな
拡大とフェードインを同時に処理なので
3Dモデルで実装することにしよう

2D素材だと拡大がちょっとややこしいんだよね
3Dモデルならz座標をいじるだけで済むし・・・

ではまたね
0500名前は開発中のものです。2013/10/20(日) 15:13:31.51ID:5a9ZrG2U
まずそのif文が大量に並んだクソみたいなコードをなんとかすることを考えろ
0501名前は開発中のものです。2013/10/20(日) 15:13:38.47ID:0ur5LLqt
ところでどんなミニゲームを作ろうかと
ずっと悩んでいたのですが
ようやく決まった

ミニゲーム第一弾はスロットゲームにしよう
パチスロ仕様なスロットにしてボタンを押して絵柄を揃えたら
絵柄の種類によってお金をゲットするというものです

で、400G以上ゲット出来たらミニゲーム2が出現する
そしてミニゲーム2の内容はUFOキャッチャーにしてみよう
プレイヤーがゲットした人形がプレイヤーの分身になってゲームをプレイしていく

さらに、ミニゲーム3の出現条件は、ミニゲーム2で1つ以上人形をゲットにします
つまり、ミニゲーム2で人形をゲットできなければ
またミニゲーム1に戻ってお金を貯めないといけない

で、ミニゲーム3はマウスを使ったハエ叩きゲームでもしようかな
0502名前は開発中のものです。2013/10/20(日) 15:15:41.32ID:0ur5LLqt
>>500
いやです
0503名前は開発中のものです。2013/10/20(日) 15:26:34.56ID:CCOva6nt
また一人で語り始めたよ。
そろそろブログ消去かな。
0504名前は開発中のものです。2013/10/20(日) 15:47:46.42ID:m5Iqtrsb
>>482>>488>>493>>496>>498>>500
わざわざ相手するからだよ
どんなに紳士的に且つ真剣に間違いを指摘したところでそれを間違いと認めず
自身の学んだものが何より一番正しいと思い込んで一方的に語りたいだけだから
何言っても無駄。

わざわざレスしたものなら自分語りするための餌を与えるだけだから無視するに限る。
0505名前は開発中のものです。2013/10/20(日) 15:52:59.02ID:VrtyArlJ
kazukiって書いとけばレス来ないんだろ
天安門みたいだな
0506名前は開発中のものです。2013/10/20(日) 16:05:10.56ID:0ur5LLqt
>>503
C/C++でのゲーム製作のスレなのに
誰一人、ゲーム製作の話題を出さない方が異常かと思う
というか、ゲーム製作の話題がないと面白くない

このスレに訪れる人はゲーム製作の話題を期待して来ている

そして私は現在進行形でC/C++によるゲーム開発中
きっと、そんな彼のサイトに行けば
色んなゲームの作り方を盗めると思う

http://c-games.main.jp/

もう今は、ここでは多くは語らない
気が向いた時に一言二言発言するだけに留めている

実はデブだったストーカー君には目もくれない
0507名前は開発中のものです。2013/10/20(日) 16:26:25.08ID:H1a6UBHV
ポーカーでメダルを稼ぐ

高レート勝負が解禁されるのでもっと稼ぐ

伝説のディーラーが現れる

去年ツクールでやってたのとたいして発想が変わってないな

kazuki
0508名前は開発中のものです。2013/10/20(日) 16:32:42.27ID:VwrzDutR
上のほうでゲーム製作の話もいろいろ出てるのに一体どのスレのことを言ってるんだろうな

kazuki
0509名前は開発中のものです。2013/10/20(日) 16:33:21.63ID:m5Iqtrsb
スレを一番に荒らそうとしている奴が
正常なスレ進行を望むとかwww

kazuki
0510名前は開発中のものです。2013/10/20(日) 16:37:09.63ID:xi56AEFM
>色んなゲームの作り方を盗める
ゲーム制作じゃなくてc++によるアニメーション作成しかしてないじゃん…

kazuki
0511名前は開発中のものです。2013/10/20(日) 16:43:10.23ID:6V21KIB0
まったく成長してないな
いったい何を職業訓練で学んできたのか

kazuki
0512名前は開発中のものです。2013/10/20(日) 16:48:47.75ID:VrtyArlJ
講座の前にゲームの一つでも公開したほうがいいんじゃね
つくったことない人間がつくりかた語るのって滑稽だろ

kazuki
0513名前は開発中のものです。2013/10/20(日) 16:48:57.63ID:0ur5LLqt
私が作るスロットゲームはただのスロットではないよ

リーチアクションでプレイヤーを興奮させたい(台を派手に光らせる)し、
最後の絵柄は1コマずつ回転して
惜しいところになるとゆっくり回転し
絵柄が過ぎたと思ったら、最後に逆戻りして絵柄が揃って
パンパカパーン!と(笑)

UFOキャッチャーでは、
本物のUFOキャッチャーみたいに
クレーンで人形を釣り上げているのに
僅かな振動で落ちてしまったりと、面白要素満載にしてみたい

ちなみに各ミニゲームは4ステージまであり
UFOキャッチャーは1ゲーム100G必要
なので、400G以上持ってないと遊べない
0514名前は開発中のものです。2013/10/20(日) 16:55:43.90ID:0ur5LLqt
ちなみにUFOキャッチャーで釣り上げた人形がプレイヤーの分身になるのだが、
複数の人形をゲットすれば、
プレイヤーキャラをいつでも変更が可能になる

で、別のミニゲームでスーパーマリオのようなゲームを用意する
選択した人形によって、走るスピードやジャンプ力が異なったりして
ゲームを有利に展開することも出来る

さらに、別のミニゲームでもっとお金を稼がせるゲームを用意し
そのお金を使って車を購入して、3Dレースゲームにもなる

車種は複数あり値段によって能力も違う
部品を購入して車のカスタマイズも可能

さらに宇宙船を購入してシューティングゲームにも発展させて
どこかの星に到着すると、ミニRPGに発展(笑)

まあ、ゲームを面白くする要素を色々考えています。
お楽しみに
0515名前は開発中のものです。2013/10/20(日) 17:04:40.36ID:rlFq2/3M
>>500
なんか俺もこんな感じになってるわ
もうちょっと単純な分岐だけど

移動操作に、入力されたキーに応じて特定の法則で値を入れると、8方向の分岐判定ができるって
過去にこの手のスレで騒いだんだけど見づらくなるからif文にしろと一喝されてな・・・
0516名前は開発中のものです。2013/10/20(日) 17:06:20.16ID:rlFq2/3M
◯値を入れると
×値を加算していくと
0517名前は開発中のものです。2013/10/20(日) 17:15:31.41ID:CLSVpEEJ
みんな暇そうなので質問
効果音,画像,モデルのロードや管理はどうやってる?
モデル、画像は単体で存在できないから物クラス板クラスをnewするときに持たせたりロードさせてるんだけど、
効果音の管理がうまくできない
今システム音は一括起動ロード、ゲーム内の音は音を出す物体に持たせてる
でもバラバラになりやすくて困る
0518名前は開発中のものです。2013/10/20(日) 17:30:33.91ID:0ur5LLqt
>>515
8方向移動のコードですか
ちょっと考えてみました

//移動
void Idou(){
if( 上ボタン ) y--;
if( 下ボタン ) y++;
if( 左ボタン ) x--;
if( 右ボタン ) x++;
if( 上ボタン && 右上ボタン ) y-- , x++;
if( 上ボタン && 左上ボタン ) y-- , x--;
if( 下ボタン && 右下ボタン ) y++ , x++;
if( 下ボタン && 左下ボタン ) y++ , x--;
}

//エラー
void Idou_E(){
if( 上ボタン && 下ボタン );
if( 右ボタン && 左ボタン );
}

こんな感じの2つの関数を作って2つとも呼び出せばいいのかな?
0519名前は開発中のものです。2013/10/20(日) 17:35:02.87ID:0ur5LLqt
>>517
http://c-games.main.jp/ckaihatu/ckaihatu7.html

俺はこんな感じにインストラクタで一括で読み込み
メンバ関数内でメンバ変数を呼び出して使用

他の方どうぞ
0520名前は開発中のものです。2013/10/20(日) 17:41:16.55ID:0ur5LLqt
間違った(笑)
こうかな?

//移動
void Idou(){
if( 上ボタン ) y--;
if( 下ボタン ) y++;
if( 左ボタン ) x--;
if( 右ボタン ) x++;
if( 上ボタン && 右ボタン ) y-- , x++;
if( 上ボタン && 左ボタン ) y-- , x--;
if( 下ボタン && 右ボタン ) y++ , x++;
if( 下ボタン && 左ボタン ) y++ , x--;
}

まあキャラクターを移動するところになったら
もっとじっくり考えてみよう
0521名前は開発中のものです。2013/10/20(日) 17:43:24.26ID:KGuhRKDR
このスレで聞くよりなんでも掲示板行った方がいいぞw
0522名前は開発中のものです。2013/10/20(日) 17:47:01.59ID:TSQ7+MLu
>>515
さすがに移動処理をまとめるのはないわ
それを言われてifだらけにするのもないわ

例えばAジャンプB加速C攻撃Dガードだとまとめることは不可能
同じキー処理なのにあっちではfor、こっちではifとか見にくいからifで統一すべきってこと
移動量なんかよりキー処理の方が大きい存在だから移動量側の都合に合わせたらあかん
0523名前は開発中のものです。2013/10/20(日) 18:04:48.98ID:5a9ZrG2U
効果音って結構使い回すからグローバルクラス作って全部押し込んでるな
よくないんだろうけど
0524名前は開発中のものです。2013/10/20(日) 18:14:32.71ID:TUni1VW8
>>520
Windowsから送られるメッセージを処理するで絶対間違いないって
なんならDXライブラリ作った人に掲示板で聞いてきてあげようか?
0525名前は開発中のものです。2013/10/20(日) 18:27:55.76ID:tZaAXPVJ
>>517
俺も>>523みたいな感じだな。マネージャクラスを作ってデータの実体はそこで一元管理してる。
ロードは各シーンに移ったタイミングで使うファイルを指定して全て一括ロード。
動的なロード/アンロードみたいなことはしてない。

古典的で単純な設計だけど、変に工夫しても複雑化するばっかで使いづらいだけだったので結局コレに落ち着いた。
今やメモリ2Gがゴミスペックって時代だし、個人レベルで作れる規模のゲームならリソースの容量的にもロード時間やメモリ残量がネックになることはないと思うし。
高度なリソース管理システムがないと管理不能な程リソース数があるわけでもなし。
なので、重複ロードだけ防げればいいかなって考え。
0526名前は開発中のものです。2013/10/20(日) 20:58:42.50ID:IiFjB0r4
よく使う(かもしれない)リソースはキャッシュしている

使っている間はリソースが解放されないようにさえしておけば
キャッシュの最大容量を減らすだけで低メモリ環境に対応できる
メモリが十分あるなら最大容量を多めにしてロード時間を削減できる

バッググラウンドで次使うデータをロードし続けると、更にロード時間削減するのに良いが流石にこれは難しい
0527名前は開発中のものです。2013/10/20(日) 21:53:23.68ID:nyJspEC4
解説サイト作るならdoom3やquake3のソースを丁寧に解説してくれれば
すんげー便利なんだが…、まぁ読むのがめんどくさいだけなんだがな(´д`;)
0528名前は開発中のものです。2013/10/20(日) 22:32:36.98ID:TSQ7+MLu
グローバル管理はきついからなぁ…
キャッシュ機能追加してみよう
0529名前は開発中のものです。2013/10/20(日) 22:56:51.42ID:5jHWN8P9
ボクは移動とかのキー入力に関しては携帯ゲーム機のキーコードを参考にビットで演算してる
ぶっちゃけそんなに使うキーも無いし特定のボタンを特定のビットに対応させてtrueとfalseで、判定させたい時に&で比較して押されてるか確認する

改行多いって言われたから連投する
画像のロードはたぶん誰かがすでに手法の公開とかしてると思うけど
res.h
#pragma once
#include <string>

namespace res {
namespace ID {
enum {
NONE = 0,
TEST_1,
TEST_2,
MAX
};
}

const std::string FILE_NAME[ID::MAX] {
//NONE用
"",
"res/test_1",
"res/test_2"
}

static int FileReadCount[ID::MAX] = {0};

std::string LoadFile(const int ID);

bool UnLoadFile(const int ID);
}
0530名前は開発中のものです。2013/10/20(日) 22:57:24.68ID:5jHWN8P9
res.cpp
#include "res.h"
std::string res::LoadFile(const int ID) {
res::FileReadCount++;
return res::FILE_NAME[ID]
}

bool res::UnLoadFile(const int ID) {
res::FileReadCount--;
if(res::FileReadCount <= 0) {
return true;
}
return false;
}

すまんかなり見辛いな
ヘッダーとcppソースファイルの両方使ってる

それと外部テキストファイルに書き出してそのシーンで使うと思われるのを全てコンストラクタでそのシーン用のリソースが書いてある外部テキストファイルからロードして、デストラクタ時にそのファイルを全て破棄するってのもやってた
けど、前述のソース載せてる方の方が使いやすくて結局そっちだけしか使ってない

今は、今のシーンと次のシーンで同じファイルを使うなら使うファイルだけ破棄しないで使わないファイルは破棄して移行するってのを作ってる
0531名前は開発中のものです。2013/10/21(月) 07:52:17.59ID:wANeExEF
これ見てちょっとオサレな多機能マネージャー思い付いたかもしれん
既存のと組み合わせて頑張ってみる
0532名前は開発中のものです。2013/10/22(火) 01:16:32.21ID:qHDmg+Zc
クラスでprivate宣言するものは全てcppファイルに書くのってどうなんだろう?
0533名前は開発中のものです。2013/10/22(火) 06:39:40.68ID:ExrKC0WT
hに書いた方がいいんじゃね
cppをいじる時にパッとタブ切り替えた時にメンバ一覧として分かり易いしその程度だけど
0534名前は開発中のものです。2013/10/22(火) 07:16:23.97ID:oFXCBPaS
メンバ定義をヘッダに書くとヘッダの依存関係がな…
実装の隠蔽とか以前に結局pimplとか使わんと作業上の支障が出てしまう。
0535名前は開発中のものです。2013/10/22(火) 15:19:36.10ID:+qTS1YgK
>>534
boostさんをディスんなyo!
0536名前は開発中のものです。2013/10/22(火) 16:18:08.16ID:oKt5RaZ2
そういえば、ヘッダでメンバ定義する時の話だけど
メンバに、あるインターフェースクラスのポインタを持たせるときって
@インターフェースのヘッダをインクルードする?
Aそれともインターフェースの型を前方宣言する?

もちろん、相互に参照しなきゃいけないときは、片方はAを強制される場合もあるけど
0537名前は開発中のものです。2013/10/22(火) 17:23:07.33ID:Hu98QIBo
テンプレートにする
0538名前は開発中のものです。2013/10/22(火) 18:00:19.46ID:ZgWiXBx7
>>536
ハーブサッターはAって言ってたな(gotwの7番、理由はコンパイル時間)
俺はよくヘッダ間のinclude関係忘れるからcpp側でも全部includeするけど
STLとかベンダでまちまちらしいし
0539名前は開発中のものです。2013/10/23(水) 23:23:36.36ID:lFn9LRyC
>>520
それだと複数のボタンが同時に押されている場合、効果が相殺されてしまう
例えば上ボタンと下ボタンの両方が押されていると
y--した後に、y++するのでy座標はじっとしたままになる
2行目以降はifではなく、else ifにした方がいいよ
0540名前は開発中のものです。2013/10/24(木) 00:30:32.21ID:BVtLeqeM
>>539
上下同時押しの時に相殺された方がいいかどちらかが優先された方がいいかは好みの問題じゃない?
それより斜め移動の速度が2の平方根の二倍になってるほうが問題あるだろ

ネタにマジレスしてしまったのだろうか
0541名前は開発中のものです。2013/10/24(木) 00:55:05.09ID:1hhrwRIp
まっすぐよりジグザグ移動の方が速いゲームが確かあったな
0542名前は開発中のものです。2013/10/24(木) 01:05:12.14ID:vQRNGmRF
0.9899って地味にいい数値だよな
0543名前は開発中のものです。2013/10/24(木) 05:23:32.15ID:SKhb4znW
飛行機にしろ自動車にしろ全方位に等速で動けると考える方がおかしい。
結局作りたいものによる。
0544名前は開発中のものです。2013/10/24(木) 07:07:41.21ID:vgxDEvxF
縦横と斜めで三倍の差というのは流石に開きすぎとも思ったけど、クォータービューだと良いのかもな
0545名前は開発中のものです。2013/10/24(木) 09:00:36.97ID:PzLm+IDY
マリオ系のアクションは左右と上下分割した方が扱いやすいし、シレン系とかのマス移動なんかは斜めの速度なんて考慮する必要ないし、
まぁケースバイケースか
■ このスレッドは過去ログ倉庫に格納されています