ゲームや日記を公開中。 --- a blog about games, life. my handle is 'd_of_i'.
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
前回と前々回のエントリは、実は自分自身のことです。

再利用性、汎用性を無限に求め続け、
将来あるかも知れない拡張に備え、無意味に複雑にしていき、
段々気に入らなくなって破棄、1から作り直し。
そんなことを繰り返し、一向に作品が出来ない日々が1年以上ありました。

そして、そんな入念に考えたはずの設計なのに、
実際に組んでみると、予測してなかった要求で再設計が必要となり、
事前に備えていた複雑な機構は埃を被る。

事前に全てを見通すなんて、自分の頭では不可能だと気づきました。




というか、段々何が言いたいのか良くわかんなくなってきました。
こういうのって当然の如く他の頭いい人が悟って本にしてるので
それを読むのが一番いいですね。

アジャイルソフトウェア開発の奥義
スポンサーサイト
趣味のゲーム開発でプログラマが陥り安い罠。
「設計せずに作り始める」
ある程度まで開発が進むと、
行き当たりばったりの増築に耐え切れなくなり、
ソースは破綻し、ゲーム開発は頓挫します。


これを反省し、設計やオブジェクト指向を勉強し始めると、
今度は次のような状態になりがちです。

「完璧な設計が出来てから、ゲーム開発をするぞ!」

…残念なお知らせですが、その完璧な設計はまず完成しません。

前のエントリの完璧なライブラリ作成と組み合わさって、
汎用性があるゲーム用フレームワークの設計を延々としてませんか?

こんな仕様や、あんな要求がきても耐えられるようにしよう…と、
趣味のゲーム開発には期限がないことをいいことに、
延々と設計を続け、無限の拡張性、汎用性を求めて、
肝心のゲーム製作は一向に進まない。


私は趣味のゲーム製作では、設計をしなかったから頓挫した、という人よりも、
設計をしすぎたから頓挫した、という人の方が多いのではないかと思ってます。


私は趣味のソフトウェア開発でそれほど入念な設計はしないようになりました。
どんなに設計したところで、予測できなかった仕様は出てくるんですよね。
最悪破綻しても、どうせ1人でプログラミングしてるんで、
一からリストラクチャリング(再構築)しても問題ないですし。


設計から前に進まない方は、
もっと気楽にプログラミングをしてみてはいかがでしょうか。


おススメは期限を設けることです。
期限があれば、設計を早めに切り上げざるを得ません。
例えば、今から一番近い期限のゲームコンテストに応募するんだ、と目標を定めるとか。
窓の杜から沢山人が来るのでなんかもっともらしいことを書きたくなりました。



趣味のゲーム開発でプログラマが陥り安い罠。
「Myライブラリを作ってから、ゲーム製作を始めるぞ!」


…ここで残念なお知らせですが、あなたのライブラリはまず完成しません。
よってゲーム製作はいつになっても開始できません。


趣味プログラムには期限が無いため、いつまでもライブラリを作っていられます。
機能が多くて、汎用的で、なのにハード固有の細かい要求にも応えられて、速度も速い。
そんな理想を何時までも追いつづけてしまいます。

作ってるうちに気に入らなくなって破棄、
作り直しているうちに気に入らなくなって破棄
と、繰り返してませんか?


自分で作ることが出来るスキルを持つことは確かに大切ですが
それ以上に、他人のライブラリを使うことが出来る、というのも大切なスキルです。

他人のライブラリを使いこなすには、
その作成者の考えを理解しなければなりません。
いかに早く理解でき、そして利用し尽くせるか。
これは慣れていないと意外と難しいことです。


一つの作品も無く、
ライブラリの残骸があるのみという方は
考え直してみましょう。

あなたが作りたいのはライブラリ?ゲーム?

----
追記
Myライブラリより、Myフレームワーク、の方が合ってたかな。
----
追記2
具体的な例では、DirectXラッパーかな。
他の環境に移植しやすいように、抽象的で汎用的にラップしつつ、
かといって最大公約数的な制限は無く、DirectXで出来ることは
全て出来ちゃう万能ライブラリ、を目指してみたり。
無理ですよ。
CANNON CATが窓の杜に掲載されました。

大砲を撃つ反動でネコが宙を舞うマウス操作の2Dシューティング「CANNON CAT」
http://www.forest.impress.co.jp/article/2005/07/28/cannoncat.html

わー。
ほっぺたの中には 口内炎がひとつ

ほっぺたの内側を噛むと 口内炎がふたつ

も、ひとつ噛むと 口内炎はみっつ

噛んでみるたび 口内炎はふえる
口内炎が出来てしまいました。

口内炎の発生要因はストレスですが、
最近特にストレスは無いはずで謎めいてます。

これまでの経験上、一度口内炎が出来ると、
それがストレスとなり、また口内炎を作るという、
口内炎が口内炎を呼ぶ口内炎スパイラルに陥ります。

酷いときは一ヶ月も苦しんできたので、
それを思うと憂鬱でストレスが…。
テクスチャにレンダリングがしたくなったので、
パラパラーと方法を探す。

DirectXでは結構簡単なので、
OpenGLでもまぁそれほど難しくは無いだろう、
とか思ってましたが、方法がなかなか見つからない。

glCopyTexSubImage2Dでフレームバッファからテクスチャに
コピー出来ると書かれてるので、これを試してみると、
死ぬほど遅くて泣きそうになりました。


これは他に方法あるだろうと、
次に見つけたのは、WGL_ARG_render_textureという拡張。

これかー、と早速試してみようと
wglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC)wglGetProcAddress("wglBindTexImageARB");
と書く。

すると、wglBindTexImageARBにはNULLが入っていた。
未対応のようだ。

だめだこのビデオカード…はやくなんとかしないと…


テクスチャーにレンダリングするサンプルも発見。
http://www.codesampler.com/oglsrc/oglsrc_7.htm#ogl_offscreen_rendering
Pbufferの作成には成功するので、1,2番目のは実行できたが、
自分の環境じゃやっぱ死ぬほど遅い。もういい。
昨日の夜にメールにて、
一般審査の方のコメントがきてました。

40人の方からコメントが頂けて、
多くが好意的なコメントだったのでとても嬉しいです。
こんなに大量にコメント貰ったのは初めてですよ。
ありがとうございました。


攻撃の反動で移動するってのは
やはり先駆者の方がおられたようで、
コメントなどでそれに触れてたモノがありました。

アストロロボササLethal Application

アストロロボササ発売は1985年。
もう20年も前に通過済みの道のようです。

いくつかのコメントで、
アイデアが斬新とありましたが、斬新では無いですね。
CANNON CAT 1.1.0

大砲を担いだねこが洞窟内で暴れまわる
お手軽アクションシューティング。





変更点
・フルスクリーンのバグ修正
・ちょっとエフェクトなど変更
CANNON CAT 1.0.3

浮動小数点数の0による除算が起きるバグを修正しました。

おそらくコレで玉三郎さんの環境でも落ちなくなるはずです。


これでも落ちるという方は、NekoCannon.exeと同じフォルダの
「log.txt」の内容をこのエントリのコメントに貼り付けていただけますでしょうか。

CANNON CAT 1.0.2

フルスクリーンの修正と、エラー処理を若干強化しました。

起動しない方、途中で終了してしまう方、
NekoCannon.exeと同じフォルダ内に出来る「log.txt」の内容を
このエントリのコメント欄に貼り付けていただけるよう、
ご協力をお願いします。

OSのバージョン、ビデオカードの情報なども付けて頂けると嬉しいです。
修正しました。

CANNON CAT


変更点は次の通りです。

・フルスクリーン対応(タイトルの「スクリーンきりかえ」をクリックするか、Alt+Enterで切り替えられます。)
・体力が0になるとタイムも0になってたバグ修正。
・デバッグログを出力するように修正。

起動しないという方は、NekoCannon.exeと同じフォルダ内に出来る、「log.txt」の内容を
このエントリのコメント欄に貼り付けていただけると、
ひょっとしたらバグの原因究明になるやもしれません。

また、OSのバージョン。
ビデオカードのメモリ量。
ビデオドライバのバージョンもお知らせいただけると嬉しいです。
三分ゲーコンテスト結果でました。

優勝!
皆様、投票ありがとうございました。

賞なんてコレまでの人生で、
がんばりましたで賞くらいなので、とても嬉しいです。


ただ、今回は3分というテーマ重視ではなく、
一般受けを考慮しすぎたと、ちょっと後悔してます。

次の回はもっと3分というテーマを生かしたいモノを作りたいですね。
それが一般受けしないとしても構わない方向で。

最近弾幕シューティングというものに興味が出てきたので、
いろいろとシューティングのことを考えてます。

自分のシューティング暦は、
最後にやった市販モノがファミコンのグラディウスかツインビーで
あとはフリーのモノをちょろちょろっとやってる程度の浅いものなので
言ってることがおかしかったりするかもしれませんがご容赦ください。


今日は「簡単弾幕生成」のお話。

綺麗な幾何学模様を描く弾幕が流行りらしいです。

弾幕シューティングには多彩な弾幕が必要です。
その動きを一つ一つを手でプログラミングしてたら日が暮れます。

で、これが使えるのではないかと閃きました。
FumuFumu-Q:Supershapes
一つの方程式で色々な形を作ることが出来る、このSuperShape。
これで出来る形をそのまま初速度としてやればOK。
4つのパラメータを色々変えるだけで、無限のパターンの弾幕生成が可能となります。
方程式が元なので、なかなか幾何学的に美しい弾幕が生成されます。


という訳で、これのサンプルをproce55ingで作ってみました。
proce55ingは試作にも便利です。


ソースも公開してるので、使いたい方ご自由にどうぞ。

塊魂購入。

今日は遅くに帰ったのでプレイはせず、
とりあえず説明書を軽く読むことに。

なんじゃこれ。面白っ。
説明書が全体的に独自のセンスで満ち溢れてる。
特に31ページがわけわかんなくてオモロイよ。


ところでみんな大好きでは王子のイトコが大量に出るのもウリらしい。
説明書ではイラストで色々なイトコが描かれている。

ファンの自分も、新イトコを考えてみることにした。
pri.png

ドラいとこもん。

31ページが許されるなら、コレも許されると思う。
ニューラルネットワークと遺伝的アルゴリズム。

数年前、マッチ箱のAIを読んで
これらはきっとゲームに使える!と
目をキラキラさせて勉強した日々がありました。

しかし、コレまでまったくゲームに役立ててません。


NNやGAの実装は自体はそう難しくは無いです。
以前のエントリでも
NNによる画像認識っぽいものを
proce55ingで組んだモノをソース付きで公開しています。
GAはNNよりさらに簡単に実装できます。


だけど、これをどうゲームに使うかが
(少なくとも自分には)難しい。


ゲームの何を遺伝子にするのか?
それの採点はどうやってするのか?


他のゲームではどう使われるのか研究しようかと思ったのですが、
実際のゲームで、NNやGAが使われた例って
アストロノーカーやがんばれ森川君2号以外であまり聞かないんですよね。
これらはほとんどそのまんまな形で使ってますし。


なにか良い活用方法は無いか思案中の日々…。


思案してばかりで手が止まってる言い訳のエントリ。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。