Re: Stack Overflow とでて起動しない。 ( No.1 ) |
- 名前:ゆめ 日時:2024/08/08 21:55
そもそもゲーム制作は素人で、ステージを一つのゲームにまとめるやり方が、これで正しいのかもわかりません。
一般的にはステージが始まるとき、NowLoading などが出ますから、ファイル自体が分かれて、それを読み込んでいるのでしょうか?
そのやりかたがあったら教えていただきたいです。
今私のやり方は、別のcppファイルにステージの関数を作り、そのヘッダーファイルを作り、メイン関数のインクルードで一番上で全ステージのヘッダーファイルを読み込んでいます。
|
Re: Stack Overflow とでて起動しない。 ( No.2 ) |
- 名前:管理人 日時:2024/08/09 00:47
> これが、メイン関数に10ステージ分を入れると Stack Overflow と出て、起動しません。
スタックオーバーフローはローカル変数( 関数内で定義されている変数や構造体や配列 )が多いと発生するエラーです
サイズの大きい配列や構造体などが関数のローカル変数になっていないでしょうか?
もしそのような配列や構造体があり、且つグローバル変数にしてしまっても問題ない場合は
ローカル変数からグローバル変数に変更することでスタックオーバーフローを解消することができます
> 一般的にはステージが始まるとき、NowLoading などが出ますから、ファイル自体が分かれて、それを読み込んでいるのでしょうか?
ステージとステージの間で何をロードするかはソフトによって異なると思いますが
一般的には『そのステージでしか使用されない画像や音楽や効果音』がステージ開始前に読み込まれます
敵キャラクターの動きなどが C++ のプログラムではなく、スクリプトによって制御されている場合は、そのステージにしか登場しない
敵キャラクターのスクリプトがステージ開始前に読み込まれます
> 今私のやり方は、別のcppファイルにステージの関数を作り、そのヘッダーファイルを作り、メイン関数のインクルードで一番上で全ステージのヘッダーファイルを読み込んでいます。
現在のPCやゲーム機は昔と比べて使用できるメモリの容量が非常に大きいので、その設計でも問題ないと思います
( スタックオーバーフローは解決する必要がありますが )
|
Re: Stack Overflow とでて起動しない。 ( No.3 ) |
- 名前:ゆめ(解決済) 日時:2024/08/14 11:29
ローカル変数からグローバル変数にしたことで解決いたしました。
ご教授ありがとうございました!
|