したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

おちゃめくらぶ掲示板

1047御茶目菜子:2012/05/27(日) 16:22:29
プチコンオリンピック イン ロンドン
プチコン1画面プログラムの新作を作ったにょ。
タイトルは「プチコン100m走 mkII」にょ。
http://ww5.tiki.ne.jp/~ochame/petitcom/petit_olympic.htm#100m

すでにプチコン100m走は半年前に作っているのでまた100m走というのも何だけど半年前に
作った時は不慣れなスプライト、BG画面ということでプログラムにすごく無駄があるし
この半年間の間に身につけたリスト短縮テクニックやmkIIの専用命令によるテクニックを
使えば大幅にリスト短縮が可能だからね。
それが、どの程度のものなのかは同じゲームで試すのが一番にょ。
しかし、24行のプログラムリストが仮に3分の2の16行になったとしてもそれのすごさは
1画面プログラムを作り慣れている人にしか分からないにょ。
ということで、リスト短縮によって得られた余裕を誰でもすぐに分かる見た目に費やす
ことにしたにょ。

問題はどのように見た目で分かるようにするかだけどこれは前作の見た目があまりに
チープだからこれを越えることは余裕で可能にょ。
何せ当時はBG画面で横幅512ドット(64キャラ)を越えるスクロールの仕方がよく分から
なかったわけだし、GCLSで背景色を設定できるということさえ知らなかったからね。
やはり、スクロールならばリスト短縮に有用なGCOPYを使用するとしてそのGCOPYを使って
2重スクロールを考えたにょ。
ということで、どのように変わったかは動画で比較して見れば一目瞭然にょ。

◎プチコン100m走
 http://www.youtube.com/watch?v=LtUrtuonBJQ
◎プチコン100m走mkII
 http://www.youtube.com/watch?v=p0E8grjA6gk

この無駄に2重スクロールしている背景だけどこれは仕組みは実に簡単にょ。
このようなデータを予め用意しておいてそれを左右でつなげることで無限スクロールを
可能にしているにょ。
http://ww5.tiki.ne.jp/~ochame/petitcom/image/100m_data.png
問題はこのデータをどうやって作るかだけどこれは行数制限がなければ誰でも簡単に
行うことができるにょ。
BG画面をBGPUTでキャラを並べるのとは異なり見た目で簡単に分かるわけだからね。
しかし、いくらリスト短縮が可能といっても普通に作ったらこのデータ作成だけで12行
(もちろんマルチステートメントで記述して)かかってしまったにょ。
別途GCOPYだけで最低4行かかるということを考えるとこれでは1画面(29文字x24行)に
抑えることはできないにょ。(これでもBG画面で同じデータを用意するのと比べたら
確実に行数を短縮できているわけだけど)

ここでリスト短縮に役立ったのが前作のJUMPING ISLAND(1画面版)でも使った1組の
FOR〜NEXTで設定をすべてまかなうということにょ。
普通に考えたらコースにランダムなドットを打つのに1組、スタジアムの観客を描画
するのに2〜3組、フェンスのスポンサー名(OCHAME)を表示するのに1組で計4〜5組の
FOR〜NEXTを使うことになるのが1つで収まっているにょ。
スタジアムの観客はGPUTCHRを使ってスプライトキャラをグラフィック面に表示している
のだけどキャラは8x8ドットであり、16x16ドットのスプライトキャラを表示するためには
縦横2キャラ分並べないといけないにょ。

 12 ← 16x16ドットのスプライトは8x8ドット単位でこのような配置で表示する
 34   必要があるため普通に作れば1体表示するのに1〜2組のFOR〜NEXTが必要になる

実際はそんなことをする必要はなく斜めに8x8ドットのキャラを8ドットずつずらしながら
順番に置いているにょ。(PNLTYPE "OFF"にしてGPUTCHRの描画部分にWAIT 3くらい
のウェイトを入れれば一目瞭然)
これでトータルで見れば16x16ドットのキャラが8ドットずつずれた状態で並ぶことに
なるにょ。
あとOCHAMEの文字もMID$を使えばGPUTCHRで簡単に描画できるのだけどここでもリスト
短縮のため剰余を使っているにょ。
28912%(J+13)+!J*14

このデータができたらあとは簡単にょ。
スクロールは上記のようにこのデータを左右つなげた状態で使用するだけにょ。
X座標部分で切って左右を逆にしてGCOPYで転送すればこの無限スクロールは完了するにょ。
遠景はスクロール速度を半分にすればそれっぽくなるにょ。
具体的な方法は近いうちにGCOPYを使ったスクロール方法をまとめるのでそちらの方に
詳しく描くことにするにょ。
本当にここまで楽にスクロールができるのはGCOPYのお陰にょ。

肝心のゲーム内容は前作とほぼ同じにょ。(1秒が正確な1秒ではなく「なんちゃって1秒」
となっている部分も変えてない)
実際はスクロール量が変わっているため速度計算式を変えたのだけどその程度の変更に
すぎないからね。(あとはリスト短縮できる部分は短縮している)
とはいえ、この速度計算式も前作で10秒が簡単に切れるため少々難易度を高めているにょ。
難易度はこのmkIIのCランク(11秒台)のタイムが前作のBランク(10秒台)のタイム
くらいに相当するにょ。

さて、このゲームは「プチコンオリンピック イン ロンドン」のシリーズ第1弾として
作ったにょ。
実はポケコンではこのようなオリンピックに合わせたゲーム(オリンピック開催前、
開催後に作ったゲーム)は多くあるにょ。
まぁ100m走だけでもたくさんのバリエーションがあるわけだけどそれ以外にも陸上競技は
短距離からマラソンまで作ったし、投擲競技は砲丸投げ、やり投げ、ハンマー投げを
作ったり、走り幅跳び、高跳び、三段跳びなども作ったにょ。
冬季オリンピックではスピードスケートやカーリングなどを作ったにょ。

ただし、今回のプチコン版はすべて1画面の予定なので結構厳しそうにょ。(ただ作るだけ
ならば簡単にできてしまう)
それを考えると作れる競技には限界があるし、競技内容もかなりの簡略化が迫られる場合も
あるにょ。(簡単に組んだ状態で1KBを越えるようだと1画面化はかなり難しい)
それが1画面プログラムの醍醐味であり、1画面だからこそ多少見た目が寂しくても妥協が
可能になるからね。
これは別に手を抜くという意味ではなく1画面にすることで完成までにかかる時間は何倍も
かかってしまう場合も多いにょ。(リスト短縮も最後の数バイトの短縮で数日かかって
しまうこともあるし実際JUMPING ISLANDの1画面版はなかなか1画面に収まらず非常に
苦労した)
しかし、その苦労の過程を含めて楽しめるのが1画面プログラムにょ。(このパズル的な
プログラミングが楽しいかどうかで1画面プログラムにハマれるかどうかが決まると思う)
自作のキャラに拘る人、フォントに拘る人、音楽に拘る人、それらすべてどれもが良くて
どれかが駄目というわけではなくみんながみんな違うから面白いにょ。




掲示板管理者へ連絡 無料レンタル掲示板