こんばんは。シューティングゲームのステージについて自分は下のようなプログラムを考えています。
このやり方は標準的ですか?もし間違っているのなら、正しい方法を教えていただきたいです。
・ステージごとに関数を作る
・敵の動きを書いた関数を敵の種類だけ作り、ステージの関数内に書く
・メインプログラムで、ステージの関数を1つめから順に表示する
迷っているのが、ステージの関数を作る必要があるかです。
メインプログラムが短くなるのなら使ったほうがいいと思うのですが…
関数内で関数を呼び出すというのはスコープ?というものを使うらしく、こっちのほうが複雑になってしまう気もします。
みなさんはどのように作られているのでしょうか。
シューティングゲーム ステージについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: シューティングゲーム ステージについて
ステージが違ってもやることは似ていますから、ステージごとに関数は作らないでしょうね。よほど違えば別です。
敵毎やBOSS毎に関数は作ると思います(敵もパラメータだけで動きが変更できる場合は共通化します)。
あとはテーブル化するなどで、処理の共通化を出来るだけ図ります。
敵毎やBOSS毎に関数は作ると思います(敵もパラメータだけで動きが変更できる場合は共通化します)。
あとはテーブル化するなどで、処理の共通化を出来るだけ図ります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: シューティングゲーム ステージについて
この世の中に標準的なものなんてありはしません。多くの人が同じように組むだろうという技術を、標準的と言ってるだけです。そんなのはググればいいし、ここのプログラミングの館でも学べますよ。フイ さんが書きました:このやり方は標準的ですか?もし間違っているのなら、正しい方法を教えていただきたいです。
頭で考えるより、まずは作れ。
作った結果のソースを掲示するなら、それに対して「こうすればもっといいんじゃない」みたいなアドバイスもできるけど、作る前からこの考え方は標準的ですかだなんて。失礼ですが人に聞くようなことじゃないですよ。
そもそも複雑になるかどうかは、貴方の腕次第なんだってこと。複雑になったって後で整理すりゃいいだけじゃん。
オフトピック
たとえるなら小説家になりたいんですけど、どうすればいいですか。と老練の小説家に尋ねるようなものです。
本当に小説家になりたいなら、自分で作成した小説をみせに「どうですか」と行くでしょう。まずはその情熱を見せてください。
本当に小説家になりたいなら、自分で作成した小説をみせに「どうですか」と行くでしょう。まずはその情熱を見せてください。
written by へにっくす
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: シューティングゲーム ステージについて
まぁまぁ、へにっくすさん。
へにっくすさんの言われることも最もで、まず作れるようになってから効率は考えたほうが良いです。
始めは色々と失敗してください。その経験を活かせば、次からはもっと良い物が作れるようになります。
考えすぎに作ってみてください。
どう作るかを考えすぎて作れない人も沢山いるので、考え過ぎは創作において害にしかならない事があります。
まず作りましょう。作らないと見えてこないことが沢山あります。
【補足】
ちなみに標準的というのは幻想なので「無い」としか答えれません。
ある程度多くの人が使うゆるいパターンの様なものはありますが絶対ではありません。
なので、ご自分のパターンを確立してください。
へにっくすさんの言われることも最もで、まず作れるようになってから効率は考えたほうが良いです。
始めは色々と失敗してください。その経験を活かせば、次からはもっと良い物が作れるようになります。
考えすぎに作ってみてください。
どう作るかを考えすぎて作れない人も沢山いるので、考え過ぎは創作において害にしかならない事があります。
まず作りましょう。作らないと見えてこないことが沢山あります。
【補足】
ちなみに標準的というのは幻想なので「無い」としか答えれません。
ある程度多くの人が使うゆるいパターンの様なものはありますが絶対ではありません。
なので、ご自分のパターンを確立してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: シューティングゲーム ステージについて
「ステージが違ってもやることは同じ」っていう処理があるのではないでしょうか.動作の枠組みというか.
そういうのまでもを ステージ毎の別々の関数内に重複して実装している という意味なのであれば
多分ちょっと「{普通?一般的?効率的?}ではない」と言えるかと思います.
そういうのまでもを ステージ毎の別々の関数内に重複して実装している という意味なのであれば
多分ちょっと「{普通?一般的?効率的?}ではない」と言えるかと思います.
Re: シューティングゲーム ステージについて
蛇足かもしれませんが、ことわざを紹介しておきます。
案ずるより産むが易し
習うより慣れろ
案ずるより産むが易し
習うより慣れろ
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: シューティングゲーム ステージについて
とりあえず、ステージ1だけのゲームを作って
ステージ2を作る際、1を参考にしながら再利用できるものがあるかどうか考えながら作り
その上で、まとめなおしてみるのがいいと思います。
ステージ2を作る際、1を参考にしながら再利用できるものがあるかどうか考えながら作り
その上で、まとめなおしてみるのがいいと思います。
Re: シューティングゲーム ステージについて
ステージを管理する関数は作りますが、コード上でまとめるためではありません。フイ さんが書きました:みなさんはどのように作られているのでしょうか。
実行時におけるオブジェクトのライフサイクルを制御するためのものです。
キャラはステージに依存せず、出現や消滅はイベントとして実装します。
敵キャラが、プレイヤーに倒されて消滅するのも、ステージの終わりに強制的に消滅するのも、同じ消滅です。
強制的に消滅させなければステージが変わってもずっと画面の中を動き続ける、そんなふうに作ります。
上に書いた実装をするには、可視範囲(スコープ)や生存範囲(ライフサイクル)をきちんと理解する必要があります。フイ さんが書きました:関数内で関数を呼び出すというのはスコープ?というものを使うらしく、こっちのほうが複雑になってしまう気もします。
正しいか正しくないかで言ったら、改善といえる方向に進むのが正しいかと思います。
できるだけ依存性を減らす方向が改善というのは間違いなく言えるかと。
ただ、一足飛びに話を聞いても理解することは難しいのではないかと思います。
ネットに溢れているゲームプログラミング情報のほとんどは素人向けで素人のあいだしか通用しないような内容です。
そんな素人向けの情報を完璧にマスターしてもとうてい太刀打ちできないような人たちが掲示板にはたくさんいます。
そのような場所で、あなたの常識とわたしの常識は同じですか?違いますか?などと問うのは意味がないですね。
そもそも常識を問うこと自体がナンセンスですし。
将来必要になると思うもののほとんどは実際は必要でない(YAGNI)、というプログラマ向けの格言があります。
下手の考え休むに似たり、です。
現実の話をしましょう。