ページ 1 / 1
ミニゲームを作ってみました
Posted: 2010年8月11日(水) 12:42
by へろりくしょん
DXライブラリとC++でゲームの話題が多いようなので、勉強も兼ねて便乗して作ってみました。
すごいですね、DXライブラリ。 初めて使ってみましたがこれほどまでに簡単だとは思いませんでした。
C++も、聞きかじり程度には理解してはいるつもりですが、実際にプログラムを書くのはこれが初めてになります。
ソリューション・プロジェクトファイル・ソースファイルも丸ごとアップしてますので、何かいけないところや、改善した方がいいところなどありましたら、教えていただけると幸いです。
ゲームを作るのも初めてなのですが、時間の管理? が死ぬほど面倒ですね。
ちょっと泥臭いスパゲッティーになっているようで、なんだか気持ち悪いです。
私のやり方が悪いのでしょうけども、できればそういうところも教えていただけるとうれしいです。
内容はただのぷよぷよです。 敵側の思考ルーチンが弱いのはご愛敬です。
一部絵がアレなのは仕様です。 力尽きました。
開発には3日ほどかかってますが、絵を描くのに丸2日かかりました。
想像はしてましたが、ゲームって意外に画像を必要とするのですね。
最後の方はぐだぐだです。 許してください。
何日か前のスレッドで、CPU同士のバトルロワイヤルみたいな話があったので、思考ルーチンはDLLに放り出しています。
この掲示板で頂上決戦なんてやれたら楽しそうですね。
操作方法は readme.txt に。
下記のURLからダウンロード出来ますので、よろしくお願いします。
http://firestorage.jp/download/503d71da ... b689c020a5
追記です。
私の環境ではコンスタントに60FPSは出してくれるのですが、他の方の環境ではどうなのでしょう。
結構力任せに書いているもので、ちょっと心配です。

Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 12:57
by バグ
よくできてますね。
ただ、絵やキャラの名前がほぼそのままなのは大丈夫なのかな…と心配になってしまいます?(^_^;)
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 12:57
by シエル
遊ばせていただきました!おもしろかったです!
これを三日で開発ですか!?すごすぎです。
ただCPUがすぐ負けてしまうのがちょっと残念ですけど;
へろりさんってゲームは今までに何回か作成されたことあるんですか?
三日でこれだけ作れるとは本当に参りました。
あぁ…自分に自信無くなって来た。。。
追記:
あ、初めて作ったって書いてますね。
初めてでこのレベルって、すごすぎる・・・

Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 12:58
by シエル
あ、FPSは常時62ぐらい出てました。
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 13:09
by yu
少しですが遊ばせて頂きました。
私の環境では大体 62FPS で安定しました。
エフェクトとか丁寧に作ってあるなーと感じましたし、
ぷよを落とすと下のぷよが潰れるのも再現できてて驚きました!
後、ソースコードを見させていただきました。
2日間は絵に使ったとありますので、この量のソースコードを一日で書いたんですか?
そうだとしたら、自分とは 10倍 ぐらいのスピードで書いてることに。 orz
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 13:57
by へろりくしょん
プレイして頂いた方々本当にありがとうございます。
バグさん
>ただ、絵やキャラの名前がほぼそのままなのは大丈夫なのかな…と心配になってしまいます?(^_^;)
私もちょっとどうかなとは思いましたが、私にはデザインセンスが無い物で、動画サイトでプレイ動画を参考に作りました。
広く一般に配布する訳ではないので、まぁ、いいかな。 と。 甘いのかなやっぱり。。。
シエルさん
>ただCPUがすぐ負けてしまうのがちょっと残念ですけど;
私も非常に残念です。 このルーチンは同じ色のぷよのつながりの個数を重要視してるはずですが、変な置き方をします。 どこかにバグがあるのでしょうが、とりあえず動いているのでよしとしました。
#なぜかブレークポイントを置くと、ステップ実行がすごく重いのですよね。 1秒間にン十回と呼ばれる関数の中でフレーム毎にブレークさせるのが非常に面倒で:-)
>初めてでこのレベルって、すごすぎる・・・
実は初めてという初めてではありません。 高専時代にはポケコンという関数電卓の親分みたいな計算機があるのですが、これでポーカーを作ったことがあります。 言語はBASICです。 Windowsではマインスイーパを作ったことがあります。 一時期はまってまして、巨大な盤面でやってみたかったのです。
私が言いたかったのは、こういうゲームゲームしいゲーム、なんて言ったらいいのでしょうね。 ちゃんとしたゲーム? というのが作ったことが無いのです。
yuさん
>エフェクトとか丁寧に作ってあるなーと感じましたし、
>ぷよを落とすと下のぷよが潰れるのも再現できてて驚きました!
DXライブラリの描画関数ってすごく高機能なんですね。 拡大・縮小・回転にいたるまで引数でにょろっと指定するだけの楽ちん設計です。
>2日間は絵に使ったとありますので、この量のソースコードを一日で書いたんですか?
コードは全部で3000行ほどだと思いますが、だいぶ助長的な部分が多いです。
構造としては、メインループ -> シーン -> セクション と流してるだけで、エフェクトなんかは再生させたら後は放置という非常に大雑把な構造になってますので、骨組み自体は非常にシンプルです。
エフェクトなんかも何マイクロ秒後にどう動かす。 というのを書いてるだけですので、そんなに難しいものではありません。
みなさんの環境でも60FPSは出せているようで、安心しました。
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 14:21
by パコネコ
やってみました
皆さんの言っている弱いがよくわかりました。
せめて置くスピードふつうにしたら…と思いますが、時間稼ぎにしかなりませんね…
こちらが邪魔プよ一つも落すことできずに、相手は自爆なせれていきました…
やっぱり思考ルーチンって難しいんですね…
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 15:18
by シエル
一日で3000行・・・!
根気とやる気とスキルがないと無理ですね。
ソースコード非常に参考になります!
C++も現在勉強中なので、助かります!
皆さん絵描くの上手いですね~。私は絵がヘタクソなのでフリー素材で済ますか、簡単な絵しか描きません。
Re:ミニゲームを作ってみました
Posted: 2010年8月11日(水) 16:05
by へろりくしょん
パコネコさん
>皆さんの言っている弱いがよくわかりました。
>こちらが邪魔プよ一つも落すことできずに、相手は自爆なせれていきました…
プレイありがとうございます。 彼女にはもっとご自愛なされて欲しいものです。
シエルさん
>一日で3000行・・・!
>根気とやる気とスキルがないと無理ですね。
確かに多い量ですが、思いついた処理をそのまま何も考えずにコードに落とし込んだだけですから。
むしろ、これを2000行・1000行で書けと言われた方が、より多くの時間を必要とするでしょう。
思考ルーチンの数百行など、コピペな部分も結構ありますし。
>ソースコード非常に参考になります!
>C++も現在勉強中なので、助かります!
ソースはあまり参考にしない方がよいかと思います。 私自身C++は今回が初めてですし、つっこみどころ満載なソースのような気がします。
たとえば CField クラスですが、ちょっと大きいです。
クラスのメンバ変数ってそのクラスから利用する限りなんら制限なんて無いんですね。
肥大化したクラス内から見ると、メンバ変数はあたかもグローバル変数のように感じるんです。 だって関数スコープでもないのに、自由に扱えるわけでしょう?
私はこれが気持ち悪くて、とりあえずほとんどのメンバ関数に const を指定しました。
しかし、これはこれで不便です。 でもキャストしたら何故か const メンバ関数から変数の値を書き換えれたので、それでよしとするというかなり乱暴なコードだったりします。
本来はいけないと思うんですよね。 こういう場合の定石って何かしらあると思います。
グーグル先生に聞いても分からなかったので放置してますが。
という部分も、誰か教えてくださるととてもうれしいです。
Re:ミニゲームを作ってみました
Posted: 2010年8月12日(木) 21:09
by ひよこ
遊んでみました。
よくできてますね。ぷよを置いたときの動きとか良くできてます。
ソース付きなんで読んでみたいと思います。
みなさんにCPUが弱いとは言われていたけど、私には強かったです。(ぷよぷよに弱くて不慣れなパソコンでの操作での戦いだったからかな。
FPSは60以上出ていました。
制作お疲れ様でした。楽しかったです。
Re:ミニゲームを作ってみました
Posted: 2010年8月13日(金) 21:28
by へろりくしょん
>みなさんにCPUが弱いとは言われていたけど、私には強かったです。(ぷよぷよに弱くて不慣れなパソコンでの操作での戦いだったからかな。
プレイありがとうございます。 私はコントローラ? とか持ってませんので確認はしてませんが、一応対応は出来ているはずです。 よろしかったらチャレンジしてみてください。
それでもどうしても勝てない場合は、一切の操作をしないでみてください。 時々勝てます。 :-)