レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
おちゃめくらぶ掲示板
-
新作プチコンゲームができたにょ
ここ最近書GCOPYを使ったスクロールゲーム、自作疑似乱数ルーチンなどを書いてきたけど
それらを使った「JUMPING ISLAND」ができたにょ。
http://www.youtube.com/watch?v=QlpOX2vrg1Y
http://ww5.tiki.ne.jp/~ochame/petitcom/jumping.htm
このゲームは、残念ながら1画面ではないものの私のリスト短縮テクニックを駆使している
ために2KB以内(1.9KB、56行)に収まっているにょ。
リストの長さの割には時間がかかったけどこれは実際は逆でリストを短くした分だけ制作に
時間がかかっているにょ。(実際リスト短縮前の基本部分のプログラムは数時間でできた
わけだし)
このゲームを作るまでに至った経緯をまとめると下記のような感じにょ。
GCOPYでスクロールゲームを作ってみよう
↓
酔っぱらい系ゲーム「CAVE」ができた
↓
CAVEは1/2画面に収まったのでもう少し見た目やゲーム性に優れたものを
1画面で作ってみよう
↓
ゲーム性を考えると再現性のないRND関数は厳しい
かといって、ステージデータを別途用意する余裕はない
↓
それならば疑似乱数を作ればいい
↓
コンパクトサイズで周期が長い疑似乱数ルーチンができた
↓
これを使ったスクロールゲームを作ってみよう
↓
疑似乱数を使った横スクロールジャンプアクションゲーム(コードネームA35)ができた
↓
ステージクリア制にしないと疑似乱数の意味はあまり感じられないし
現状のゲーム内容だと戦略性が乏しい
↓
横スクロールではなく縦スクロールならばZ座標を新たに用意することでキャラの動きの
自由度が高まり戦略性も高くなる
↓
今回の「JUMPING ISLAND」が完成!
ただし、このゲームは当初は1画面で作る予定だったけど基本部分だけで1KBを越えてしまい
1画面化はかなり厳しくなってしまったにょ。
リスト短縮をどれだけ頑張っても(元のプログラムによほど無駄がない限りは)リストを
半減するというのは無理だからね。
確かに部分的に見れば半分くらいになることはあるけど全体で見ればせいぜい2〜3割削減が
やっとにょ。
つまり29x24行(696バイト)に収めるためには7〜900バイト程度に元のプログラムが収まって
ないと無理ということにょ。(1画面で作る場合には1行29文字制限によって元の部分よりも
長く書かざるを得ない部分があるため1KBのプログラムを1画面にするのは単純に何か機能を
削らない限りはほぼ不可能)
というわけで途中から1画面化はあきらめて「1画面レベルのリスト短縮」を行ったものに
路線変更をしたにょ。
1画面でないならばmkIIのホームメニューから遊べるようにするのは不可欠だし、せっかく
スコア争いが熱いゲームなのだからハイスコアのセーブ機能も欲しいところにょ。
それとせっかくなので少しだけグラフィックもマシにしようという欲も出てしまうにょ。
しかし、あまり長くなってしまってはせっかく事実上ステージデータが不要というこの
アイデアそのものがスポイルされてしまうため2KB未満になるように死守したにょ。
その範囲内では最高のものができたと思うにょ。
このゲームは2KB以内ではなく20KB以内で同じものを作れと言われたらそんなに難しくは
ないにょ。
ステージデータがキャラ単位ではなくドット単位で構成されているというのがこのゲームの
ウリであり、BG画面では簡単にはマネができないもののそれでもドット単位でずらした
キャラをたくさん定義しておけばいくらでも実現可能であるためリストが長くてもいいの
ならば作るのは簡単にょ。
このゲームのステージグラフィックはGFILL2つとGPSET3つで描かれているし、キャラの影も
グリーンスライム(スプライト番号200)のパレット1の灰色版を使って高速に切り替える
ことで影っぽくしているため実際は1つもキャラやスプライト定義をしておらずそれも
プログラムリスト短縮に繋がっているにょ。
もしも、ステージデータも1ステージあたり960バイト分(9ステージなので実際はその9倍)
用意すれば疑似乱数を使わなくても同じものを作れるし、自由に変更が可能になるけど
疑似乱数によってそれが不要になっているというのは大きなリスト短縮に繋がっているにょ。
もっとも、このゲームのステージデータは疑似乱数によるものといっても決して馬鹿には
ならないにょ。
というのもこの乱数の周期は1677万あるため1677万パターンの中から最適なものを選べば
それなりに良いものは見つかるだろうからね。
仮になくてもステージデータ生成の計算式を少し変更すればさらにパターン数は増える
ためにパターン数は事実上無制限にょ。
ただし、その中から最適なものを選び出す作業が問題となるにょ。
そのためには例えば「ステージ1に求めるものは何か?」ということを把握しておく必要が
あるにょ。
ステージ1ならば「簡単」であると同時にチュートリアル的な意味も込められている必要が
あるにょ。
簡単とは何かというと足場が多いことと島と島の距離があまり離れておらず大ジャンプを
行わなくてもクリアできることが重要にょ。(実際このゲームのステージ1は上方向移動を
限界まで使った大ジャンプを使用せずにすむどころか左右移動だけでクリアできるほど
うまい具合に構成されている)
あとは、狭い隙間はジャンプ無しに移動できるということもこの1面でユーザーに知って
もらうためにわずかに離れた島が連続するということも必要となってくるにょ。
私はステージ1だけで100種類くらい試してみたけどその中でもトップレベルに良いでき
だったのがこのゲームに採用しているX=K/11という式にょ。
ステージ1が優れていても他のステージに事実上クリアできないステージがあったらそれで
終わりであるため実際私がクリアしたステージ数は数100ステージにのぼるにょ。
これは基本プログラムを作ることと比べると遙かに大変でだけど大幅なリスト短縮効果に
よってこの大変さの甲斐は十分にあったと思われるにょ。
まぁGWをほぼすべて費やしてしまったけどね(笑)
|
|
|
掲示板管理者へ連絡
無料レンタル掲示板