シューティングゲーム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
管理人

シューティングゲーム

#1

投稿記事 by 管理人 » 17年前

↑クリックで拡大します。↑

以前「管理人の作ったゲームが何故ダウンロードできないんだ?!」
というご指摘を受けました。
それは2次加工、配布不可能な素材を使っているせいで、配布が出来ないのです…。
ですので、今回はDXライブラリを使ってどんなゲームが出来るのか体験してもらうために、ゲーム素材を公開されているHPの素材(絵と音楽)を使ってダウンロードしていただけるゲームを作っています。
写真はその一部です。
う~ん、シューティングは一度ちょろっとしか作った事無いんですが、なかなか難しいですねぇ。
単純なホーミングミサイルの軌道計算なんかは簡単ですけど、見栄えのするような玉の軌道計算を考えようとすると
ドンドン難しくなってしまいます・・。
ゲームプログラムの本とか読んだ事ないんですけど、やはり人のプログラム見て勉強するって事は重要かもしれません。
一度初心に戻ってイチから勉強してみようかな?
自分が一番いいと思っているプログラムの書き方でも、専門書を読んだらもっといい書き方とか書いてあるかもしれないですもんね。
ただ私に必要なのは忍耐と継続力です。
一度も一つのゲームを作りきった事がありません・・。
絶対途中で飽きてしまう・・(´Д`;
一人でゲームを毎年発売してらっしゃる方を知っていますが、すごいな~と思います。
一つのゲームを完成させるってすごい事だと思います。
うんうん、見習いたい。

ダッシュ

Re:シューティングゲーム

#2

投稿記事 by ダッシュ » 17年前

そうなんですよねぇ。なかなか最後までやりきるのは難しいものです。僕も小説なんぞ書いておりますが、完成させたほうが少ないです(まあ、文章能力の問題もあるんですけど。)

やっぱりいつまでに作らないといけないという期限がないことが1番の原因のように思います。だって実際、プロの物書きの先生方でさえ、締め切りに追われてやっと完成させてるくらいですよ。やっぱりある程度の危機感は人間に必要なものなんでしょうね。

管理人

Re:シューティングゲーム

#3

投稿記事 by 管理人 » 17年前

夜食を食べに出かけていましたw
天下一品のラーメンは週に一度は食べたくなります(ノ^^)ノ

あ、私も小説書きかけたことありますよ。
例によって途中投げしてしまいましたがw
やり遂げる事の難しさ痛感しました。

ダッシュさん試験頑張ってくださいね~^^

Justy

Re:シューティングゲーム

#4

投稿記事 by Justy » 17年前

 こんばんわ。

>写真はその一部です
 おっ、結構弾出てますね。
 公開を楽しみにしています。
 ソースも公開されるんですか?


>単純なホーミングミサイルの軌道計算なんかは簡単ですけど、
>見栄えのするような玉の軌道計算を考えようとすると

 軌道計算ですか。
 この手のシューティングだと大抵直線か、ホーミング、スプラインで片がつくんじゃないかなぁと思ったりするのですが、どんな動きをさせようとしているのでしょうか。


>ゲームプログラムの本とか読んだ事ないんですけど、
>やはり人のプログラム見て勉強するって事は重要かもしれません。

 それはありますね。
 知り合いのコードとか、ネットにあったコードとか時には思いも寄らなかった方法で、問題を解決していたりしてとても為になります。

 本は本で体系的にまとまってるので、良書なら相当大幅にスキルアップできると私は思うのですが、ちゃんと内容と自分が求めるものを確認しないと結構な確率で失敗します・・。
 こないだも Tips集みたいなのを買ったはいいが、ネットで検索すれば結構出てくるような内容で、結局ほとんど開くことなく本棚に・・・・。


>ただ私に必要なのは忍耐と継続力です。
>一度も一つのゲームを作りきった事がありません・・。

 ゲームではないですが、家でやる趣味プログラミングは結構完成までもっていけますよ。
 他の人にも当てはまるかどうかはわかりませんが私の場合は、対象の最終形の具体的なものをイメージして、そうなるまでの課程を計画してその段階段階に達成感を感じられるものを設定すると結構うまくいきやすいです。
 実は土曜から日曜にかけて2本のツールを作ってましたが、先ほど無事完成しました。
(ミニツールなんで完成して当然、といえば当然なのですが・・・)

 ゲームの場合は多分にトライ&エラーの部分は結構あるものの、作るもの自体は最初に立てたコンセプトやおおまかな仕様から外れることはないでしょうし、見た目もよく動くでしょうから、製作過程の1つ1つに達成感を埋め込むのはそう難しくないんじゃないかな、と思ったりしますがどうなんでしょう?

管理人

Re:シューティングゲーム

#5

投稿記事 by 管理人 » 17年前

Justyさん、こんばんは^^


> ソースも公開されるんですか?


そうなんですよね、最初はHPのサンプルプログラムでシューティングのサンプルを作っていたんです。
で、ソースも公開する用に作っていました。
どうせならちょっと突っ込んだプログラムまで紹介してみようかなと力をいれて作り出しました。
そうこうしている間に自分でも面白くなってきて、作り始めて20時間位立った時、だんだんプログラムが複雑になってきました・・。
これは・・自分にしかわからないかも・・(汗)
きちんとキレイにプログラム書いていたんですけど、「あ、この処理足りなかった」ってとこあるじゃないですか、そういうときにめんどくさくて、書くべきじゃない場所に付け足したり。
それが続くとスパゲティプログラムに!

出来るだけきれいに書きなおして公開できるようにするつもりです。
Justyさんのような賢い人に見られるのはかなり恥ずかしいですけど(_ _|||)


> 知り合いのコードとか、ネットにあったコードとか時には思いも寄らなかった方法で、問題を解決していたりしてとても為になります。


ですよね、DXライブラリのリンク先のサイトにもソース公開されてるとこあるんですけど、さらっとしかみていませんが、見ていて勉強になった部分ありました。
しかし勉強が嫌いな私は常にガリュウなんで、そこを直したいと思います(_ _|||

> 実は土曜から日曜にかけて2本のツールを作ってましたが、先ほど無事完成しました。

おぉ!そんなツールなんですか??公開とかされていらっしゃらないんですか??もしよければ是非拝見したいです^^
私はプログラムが下手なんで、ものすごい時間かかるんですよ・・最初に作ったRPGなんて毎日書いてるのに2ヶ月かかりました。
そんな長い時間一つのものを作るって忍耐がいって・・(´`;

> ゲームの場合は多分にトライ&エラーの部分は結構あるものの、........達成感を埋め込むのはそう難しくないんじゃないかな、と思ったりしますがどうなんでしょう?

そうですよね、自分で作ったものが動く事の達成感、これがプログラミングの面白さなんでしょう。私もそれを活力に作っています。
しかしある程度のスキルまで達した人には無い事でしょうけど、私の場合こんな事があるんですよ。
作っている間に「あぁ、こういう作り方の方が作りやすいな」「こういうプログラムの書き方の方がよりスマートだな」。つまり作っているうちにプログラムをイチから書きなおしたくなるんですよ><;
もっとスマートな賢いプログラムに。
一番最初にゲーム作った時なんて
ゲームプログラミングの館の30節
30. 2つ同時に画像を動かす
で紹介している「悪い例」の方法でプログラム書いていましたからね・・。
途中から「これじゃ限界がある!根本的に間違ってる!」って思って作り直したくなったんです。
DXライブラリに作り方ちゃんと書いてあったんですが、ホントそういうの勉強しない人なんで・・。
そういう感じで、イチから作り直したくなったり、単純に違うジャンルのゲームが作りたくなったりして完成まで持っていけません:;
1つのゲーム作り上げるには最低2ヶ月はかかりますし・・。
「最後までやり遂げる力」はどこでも要求される能力ですから、今回は是非とも1ステージ位は形にしたいと思います。


> 軌道計算ですか。この手のシューティングだと大抵直線か、ホーミング、スプラインで片がつくんじゃないかなぁと思ったりするのですが、どんな動きをさせようとしているのでしょうか。


どんな動き・・口で説明するのは難しいんですね^^;
たいていそれで処理できますね。ご存知でしょうけど、スプライン曲線によくにた曲線でベジェ曲線っていうのがありますが、それもよく使います。
スプラインが2次であるのに比べてベジェ曲線は3次なんでより複雑な曲線が描けます。
私は目指しているシューティングゲームがあるんです。
東方ってご存知ですか?
私はこれよりすばらしいシューティングゲームは無いと思います。

http://www16.big.or.jp/~zun/html/game.html

こちらで体験版がダウンロードできるんで、是非興味あったらみてみてください。
(本当は是非体験版だけじゃなく製品版を買ってプレイしてもらいたいんですけど)

この中でも
東方妖々夢 ~ Perfect Cherry Blossom.
っていう作品が好きです。
私はコミケにいった事がないんですが、いって買ってきた友達にすすめられてプレイしたゲームです。
このゲームはコミケで販売しているもので、ZUNさんという人が一人で作ってらっしゃるもののようですけど(違ったらごめんなさい)とても完成度の高いゲームです。
とにかく軌道がきれいなんですよ玉の。
そして配色も美しい・・。
一番難しいレベル設定にして、ステージの後半にいくとすごい玉の量が出てきます。
しかし単純に玉の数を増やしてるんじゃないんですよ。
私が今作っているデザインも、もろ東方のデザインを意識しています。
あんなシューティングが作れたらいいな・・・と。
ホントにホーミング、スプラインさえ知っていたらこの通りの軌道が描けるんでしょうか・・。

管理人

Re:シューティングゲーム

#6

投稿記事 by 管理人 » 17年前

敵の撃ってくる弾の画像が1種類だけだと見栄えがしませんね。
キレイな弾幕を作ろうとすると計算式だけじゃなくてビジュアル的に画像もきれいに絵を書かないといけないから大変です。

Justy

Re:シューティングゲーム

#7

投稿記事 by Justy » 17年前

 こんばんわ。

>きちんとキレイにプログラム書いていたんですけど、「あ、この処理足りなかった」ってとこあるじゃないですか、そういうときにめんどくさくて、書くべきじゃない場所に付け足したり。
>それが続くとスパゲティプログラムに!

 あーうん、わかります。
 昔はあんまり考えずに無節操にフィーリングでプログラムしてたころは結構そうなってました。
 1ファイル7000行を越えたり、関数化が面倒だからといって、1000行を越える switch-caseがあったりとか。
 今から考えるとそれはもう恐ろしいプログラムで、あんなので飯食ってたかと思うと申し訳なく思ってしまうくらい。
 いや、むしろよくあれでメンテできていたな、と自分をほめてあげたい(w

 でも C++とか UMLとかを使うようになってからは不思議とあんまりないですね。
 名前空間とかクラスの中を汚したくない、って気持ちがあるから、でしょうかね。


>出来るだけきれいに書きなおして公開できるようにするつもりです。
>Justyさんのような賢い人に見られるのはかなり恥ずかしいですけど(_ _|||)

 いえいえとんでもない。
 私なんぞ、まだまだ素人に毛が生えた程度ですよ・・・。


>> 実は土曜から日曜にかけて2本のツールを作ってましたが、先ほど無事完成しました。
>おぉ!そんなツールなんですか??公開とかされていらっしゃらないんですか??
>もしよければ是非拝見したいです^^

 業務で使うツールばかりなので、基本的には公開してません。
(別の家で仕事してる訳じゃないんですが、仕事する上でこういうツールがあると楽になるな、と思ったらついつい家で作ってしまうんです)
 今回作っていたのはあるツールがログをはき出すんですが、ゴミメッセージも大量に吐くんで、必要なところだけをピックアップ・整理・グループ化して、整形したテキストで出力するってツールです。
 スタディも兼ねてるんで、 boost::spiritとか使って構文解析してみたりといろいろ普段やれないテスト的なこともしてたりします。


>私はプログラムが下手なんで、ものすごい時間かかるんですよ・・最初に作ったRPGなんて毎日書いてるのに2ヶ月かかりました。
 それだけの期間持続したこと自体凄いですよ。


>つまり作っているうちにプログラムをイチから書きなおしたくなるんですよ><;
 そういう欲求にかられる気持ちも分かります。
 システムの根幹でより良い方法(以後の開発効率が上がる)とかだったら、迷うことなく書き直してまっていいんじゃないでしょうか。
 ・・・仕事でやってるとスケジュールがあるのでよほどのことがないと出来ないですがw


>1つのゲーム作り上げるには最低2ヶ月はかかりますし・・。
 かかるんでしょうねぇ。
 特に最初のアイデアの段階から仕様に落とし込むまでが大変なんじゃないかと。
 最初のコンセプトを生かしつつ、現実的に可能な仕様にするだけでも2,3週間経ってしまいそうです。


>スプラインが2次であるのに比べてベジェ曲線は3次なんでより複雑な曲線が描けます。
 制御点を増やせば変わらない気もしますが、でもたしかにベジェのような1つの制御点の変化が全体に影響を与えることを利用した動きはゲームの弾の動きにはうってつけかもしれません。
 個人的には制御しやすいBスプラインとか、不均一(非一様)スプラインとかが敵の移動とかに使えるんじゃないかと思っています。

#スプラインって文献によっても違うのですが、「スプラインとベジェは同じ曲線でも別物」と扱っているものもあれば「スプラインはベジェとかBスプライン、Nurbs、Catmull-Romスプラインなどの総称」として扱っているものもあったりして、よくわかりません。


>私は目指しているシューティングゲームがあるんです。
>こちらで体験版がダウンロードできるんで、是非興味あったらみてみてください。

 遊んでみました。
 かなり凄いですね。3Dを使ってますし、何より半透明と動きの緩急の使い方が抜群にうまいです。一部数学的な美しい動きもさせてますね。
 ゲームの内容にしても技術面にしても、相当なノウハウがないと作れません。
 ここまで凄いのになると、多分弾の動きや演出を作る為の専用のエディタを作ってるはずです。
 一人で作ってるとしたら、驚異です。

管理人

Re:シューティングゲーム

#8

投稿記事 by 管理人 » 17年前

> 昔はあんまり考えずに無節操にフィーリングでプログラムしてたころは結構そうなってました。
> 1ファイル7000行を越えたり、関数化が面倒だからといって、1000行を越える switch-caseがあったりとか。

え、Justyさんでも最初そういうプログラムを書いてらっしゃったんですか。驚きました。
私が初めて作ったRPGも実は1万行以上のプログラムで、
マウスでガリガリスクロールするのが本当に大変だった思い出があります。
スクロールバーなんかちょっと動かすだけでガクっと行がかわったりして。

> システムの根幹でより良い方法(以後の開発効率が上がる)とかだったら、迷うことなく書き直してまっていいんじゃないでしょうか。

はじめて作った時のプログラムはかなりやばかったですからね;
2つのキャラが同時に動けないですよ^^;
キャラって息をしているようなモーションをさせないと(つねに2~3ピクセルくらい動かしていないと)壁にはりついたみたいな絵になって
いきている感じがしません。
ですから、1つのキャラしか動けないような作り方はまずかったのであれ以上進む事が出来ませんでした><

> #スプラインって文献によっても違うのですが、「スプラインとベジェは同じ曲線でも別物」と扱っているものもあれば「スプラインはベジェとかBスプライン、Nurbs、Catmull-Romスプラインなどの総称」として扱っているものもあったりして、よくわかりません。

たしかにかなり近い処理が出来ますよね。
私もつい最近知ったばかりなんです、この2つの曲線は。
なのであまり知ったげに物は言えません^^;

> 遊んでみました。
> かなり凄いですね。

おぉ、遊んでくださいましたか!プロフィールの尊敬する人の欄にZUNさんって書いてありますけどあれ東方の作者なんですよ^^
一人でよくあそこまで作れると思います。
1~6ステージにくわえて、エキストラステージ、それをクリアしたらテキストラステージ2が出現し、
めちゃやり込めるゲームです。

>3Dを使ってますし、何より半透明と動きの緩急の使い方が抜群にうまいです。一部数学的な美しい動きもさせてますね。

実は今私が作っているゲームも3D(もどき)で作ってるんですよ!(何もすごくないですね、はい)
Direct3Dとかよくわからないので、上の座標の絵は早く、下の座標の絵は遅く移動させて3Dっぽくしています。
バックの背景に木が書いてありますよね。私のプログラム。
あれ私が書いたんですけど、
3段階に画像を縮小して、移動計算してます。
こうバックの木が上から下へ縦断しますね。
画面のサイズが640x480だとします。
480がy座標で表される部分です。
木の葉っぱを表す3つの絵が

y座標 = 480 * (縦断し始めてからの時間/画面縦断にかかるトータル時間)

で表示すると自分の思うような時間で画面を横断してくれるんです。

y座標 = 480 * (縦断し始めてからの時間/(画面縦断にかかるトータル時間*0.9))

こんな風にすると上の計算より早く絵が移動します。
まぁそんな詳細どうでもいいですけど^^;

自分が大好きなゲームにどこまで近づけれるか、ちょっと挑戦中です☆

p.s.2点の座標を引数に渡すとその2点の向いてる方向がx軸に対する角度ラジアンで返ってくるような
関数ないんですかね~?
まぁないなら作ればいいんですけど。

標準関数って
http://cham.ne.jp/piro/p_stdfunc.html
ここにのっているもので全てですか?

Justy

Re:シューティングゲーム

#9

投稿記事 by Justy » 17年前

 今日もとても忙しかったです。かなり披露気味。
 明日はもっと忙しいと思われ。
 ふぅ。


>え、Justyさんでも最初そういうプログラムを書いてらっしゃったんですか。驚きました。
 そりゃもう当然ですよ。
 平気で hoge、とかいう関数が登場したりともうやりたい放題になっていたりして、
二度と見たくないソースになってるので、封印指定されています(w


>おぉ、遊んでくださいましたか!プロフィールの尊敬する人の欄にZUNさんって書いてありますけどあれ東方の作者なんですよ^^
 あーそういえば。


>こんな風にすると上の計算より早く絵が移動します。
 多重スクロールで擬似的に3Dに見せるんですね。
 でもいいカンジに見えるように調整するのって結構調大変じゃないですか?
 今ちょっと思ったんですけど、上から下に移動する速度を等速ではなく、ほんのわずかに加速気味にしてあげると流れていくカンジがでて、なんとなく雰囲気でません?
 想像でものを言ってるので間違っているかも知れませんが。


>自分が大好きなゲームにどこまで近づけれるか、ちょっと挑戦中です☆
 頑張ってください。
 出来上がったら必ずプレイしますので。


>p.s.2点の座標を引数に渡すとその2点の向いてる方向がx軸に対する
>角度ラジアンで返ってくるような関数ないんですかね~?

 標準にはないですね。
 そもそも座標を表す概念すら標準にはないですから。
 atanつかえばできますんで、探すより自作した方が早いかと思います。
 ところで、2次元・3次元ベクトルのクラスとかって自作されてるんですか?


>標準関数って
http://cham.ne.jp/piro/p_stdfunc.html
>ここにのっているもので全てですか?

 ほとんど載ってますね。
 載ってないのはマイナーな strxfrmとかくらいでしょうか。

 ご存じかもしれませんが、詳しい情報なら http://www.jisc.go.jp/ から 「JIS検索」のページで「JIS規格番号からJISを検索」のところに X3010と入力して検索するとC言語の規格書が閲覧できます。
 こちらで調べるといいかも(ちょっと使いづらいんですけどね、これ)

 リファレンスなら http://www.cppreference.com/とか。
 特に後者は chm版のお世話になっています。

管理人

Re:シューティングゲーム

#10

投稿記事 by 管理人 » 17年前

Justyさん、お疲れ様です^^

>でもいいカンジに見えるように調整するのって結構調大変じゃないですか?

実行しては調整、実行しては調整を繰り返したのでそう大変ではなかったです。
yの初期値とスクロールの速さを変えたらいいだけなんで。

>今ちょっと思ったんですけど、上から下に移動する速度を等速ではなく、ほんのわずかに加速気味にしてあげると流れていくカンジがでて、なんとなく雰囲気でません?

そういえばどういう風に見えてるんだろう・・。
あ~確かに近くに来た時のほうが速くスクロールしないといけないんだ。
思いつきませんでした><;
じゃ加速つけてやればよさそうですね^^
やってみます★

>出来上がったら必ずプレイしますので。

ありがとうございます^^
現在PS2のコントローラーで操作する用に作っているのでアナログスティック対応です。
スティックを倒した角度によって移動する早さがかわったりします^^
キーボードでも低速移動ボタンで移動できるようになってるんでもちろんキーボードでもできます。

>2次元・3次元ベクトルのクラスとかって自作されてるんですか?

そうです。ゲーム作ってると・・っていうかどこでもそうなのかもしれませんけど、自分のやりたい計算が複数回出てくるときは関数化しちゃいます。

>ご存じかもしれませんが、詳しい情報なら

ありがとうございます^^じっくり読んできます☆

Justyさんも、お仕事しすぎで体壊さないよう気をつけてくださいね~♪

閉鎖

“C言語何でも質問掲示板” へ戻る