“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

155.HSPでゲームを作ろう:培養臼Ex その2

データベースの準備が出来たので、ランキングの表示処理から作成に取り掛かった。
トップ10のランキングの取得は、データベースの有無確認と一緒の処理で行った。
これも、ほぼテストしたときと同じ処理。

;ハイスコア上位10位までを取得して配列に保存
sql_q "SELECT *,substr(strftime('%Y/%m/%d',rec_date),3) as r_date FROM scorelist ORDER BY score DESC ,rec_date LIMIT 10"
count = stat
sdim score_l,20,count
sdim score_name_l,3,count
sdim stage_l,10,count
sdim rec_date_l,8,count

repeat count
  score_l(cnt)=sql_v("score")
  score_name_l(cnt)=sql_v("score_name")
  stage_l(cnt)=sql_v("stage")
  rec_date_l(cnt)=sql_v("r_date")
  sql_next
loop

ランキングの表示は、score_lなどの配列変数に格納した値を使う。
このあたり、変数を適当に増やせるのはHSPの良いところでもあり、悪い、というより困るところだよなぁ。
せめて構造体は使いたいところ。
閑話休題

ランキングの表示は、ストーリー表示と同じく、タイトル画面で一定時間経過したら、表示ルーチンに飛ばすようにした。
ランキングとストーリーが交互に表示されるよう、フラグを付けて分岐させた。

表示自体は、単純にrepeat~loop命令で、順番にpicmesすればいいのだが、多少凝ってみた。
まずは、ストーリー表示と同じく、下からスクロールして出てくるように。pos命令で調整。
トップ3を目立たせようと、1、2、3位と4位以下で表示色を変更した。
なんかそれっぽいw



表示には満足したので、次はランクインしたときのネームエントリー処理を作る。

思い出のゲーム達:38.R360(セガ)

今回の思い出のゲームは、アーケードゲームの「R360」。

www.youtube.com

バブル当時のセガ。ほんとに頭おかしかった(誉め言葉)。

体感ゲーム機はいろいろあったけど、「体感」の部分がより過激になっていっていた。

アフターバーナーIIのダブルクレイドル筐体は、かなりグリングリン動いていた。
ギャラクシーフォースでは、水平方向だが、360度回転するというDX(デラックス)筐体があり、危ないわデカいわで、なかなか町中のゲーセンに置くのは無理が出てきた。

余談だが、遊んでいると、反対方向まで回転するせいで、プレイ待ちやギャラリーと目を合わせる羽目になるw
閑話休題

そして、最終ボス。R360が登場した。
二軸の回転機構で、ジャイロと同じように360度回転する筐体を作り出した!
もうこれはゲーム機じゃなくて、遊園地のアトラクションレベル。

あながち間違っておらず、地元のゲーセンに入ってくるわけもなく、遊べるのは、今は閉園してしまった某テーマパーク内のゲームコーナーだけだった。
これをプレイするためだけに、わざわざ入場料を払ってまでというより、そんなにお金もなかったのでw、どこかのゲーセンに入らないかなと思っていたら、学校の近くにある大型ゲーセンに、遂に導入された。

周りにロープが張り巡らされ、アルバイトが1人、ずっと傍らに立ってた。
どうやらプレイするには監視が必要らしい。やっぱりアトラクションだ。

今までのように、特定ゲーム専用の筐体ではなく、変更できることが前提だったようで、はじめに見たのはG-LOGという、アフターバーナーに比べて、ゆる~い、スピード感があまりない戦闘機のゲームだった。

1プレイ500円。高いのか安いのかわからないままプレイ。手荷物は置いて、ポケットの中身も出していざ乗り込む。
シートベルトをロックして、緊急停止ボタンの位置を確認してプレイ。

この手のゲームでローリングさせてはならないんだけど、せっかくなのでローリング&背面飛行をやってみた…やめればよかったw
昼飯を食べた後にやるもんじゃなかった。
リバースは免れたけど、かなり気持ち悪くなったw

その後、プレイすることもなく、あっという間に撤去されたことしか記憶にない。
ただ、こんなゲーム筐体を生み出せるのは、日本だけ、いやセガだけだろうな。

154.HSPでゲームを作ろう:培養臼Ex その1

データベースを使用する目途も付いたので、培養臼 エクストラバージョン(培養臼Ex)の作成に取り掛かることにした。
まずは、ハイスコアランキングの作成からスタート。

データベース周りは、SQLiteのテストのエントリーで書いた通り。
coro3.hatenablog.jp
coro3.hatenablog.jp

少し変更したのは、デフォルトのランキングをInsertする部分。
たった10レコードをInsertするだけなので、トランザクション処理は不要と思っていたが、異様に遅いw
ということで、トランザクション処理することにした。

トランザクションとは、データベースに変更を加える命令、Insert、Update、Deleteをまとめて実行して、確定(もしくは破棄)する処理のこと。
本来は、複数テーブルのレコードの整合性を保つためだったり、処理をキャンセルしたときに、不要なデータを登録しないようにするためのもの。

データベース、プログラム言語によって、書き方や実行の仕方が違うが、スクレレでは、Insert文をループで実行する前後に、おまじないのSQLsql_q命令で実行するだけ。
こんな感じ。

;初期ランキングデータ作成
sql_q "BEGIN TRANSACTION"
repeat 10
  sqlstr="INSERT INTO scorelist (score,score_name,stage,rec_date) VALUES ("+str(10000*(cnt+1))+",'CR3','"+str(cnt+1)+"',datetime('now','localtime'))"
  sql_q sqlstr
loop
;コンフィグ初期値
sql_q "INSERT INTO config (clearstage,fullscr,bgmvol,sevol) VALUES (0,0,50,50)"
sql_q "COMMIT TRANSACTION"

BEGIN TRANSACTIONは、ここからひとまとまりの処理が始まるよという宣言。
Insert文などを実行したら、最後に、COMMIT TRANSACTIONを実行する。
COMMIT(コミット)が、データベースに行った処理を、確定させること。問題があったり、キャンセルしたければ、ロールバックという命令があり、実行するとそれまでのデータベースへの変更をなかったことにできる。

このコミット処理が時間かかるのね。トランザクションをやらなければ、1つのSQL文を実行するたびに自動的にコミットされている。
だから、処理するレコード数が多くなると、いちいちコミットしているから遅くなる。
ただ、自分の過去の経験では、10レコードぐらいの連続Insertぐらいでは、そんなに差がなかったので要らないと思っていたけど、そんなに処理が速くないということが分かったのも収穫かな。

初期設定は以上。次は、実際のランキング作成に移る。

思い出のゲーム達:37.イース/イースII MSX2版(日本ファルコム)

今回の思い出のゲームは、MSX2の「イース」と「イースII」。

www.youtube.com

解説不要といってもよい、日本ファルコムアクションRPGのレジェンド。
主人公のアドルとの冒険はここから始まった。
アクションRPGは、イース以前にも、同じファルコムでドラスレこと、「ドランゴンスレイヤー」シリーズ、T&Eソフトの「ハイドライド」があった。
どちらも遊んだことはあるけど、いわゆる経験値稼ぎがかったるくて、すぐにやめた(今でも経験値を稼がないと進まないRPGは苦手w)

その点イースは「優しいRPG」と呼ばれていた。経験値稼ぎはゼロではないけど、ごく自然に進められる。
「半キャラずらし」というテクニックがあったのもよかった。敵を倒すには体当たりを繰り返すのだが、真正面から当たれば、こちらもダメージを食らう。
半身(半キャラ)分ずらして体当たりすると、相手にはダメージを与えられるが、こちらはほぼノーダメージで倒せる。
自分のレベルが低いと、敵の体力が減らないので、あ、まずい、経験値上げなきゃというのが分かりやすいのもいい。

ボスもそれぞれ巨大で、攻撃方法も多彩ながら、練習すれば何とかなるレベルなのがよい。
イースIIは、アドルが魔法を使えるようになり、よりアクションの幅が広がった。

そしてなんといってもBGM。こちらもレジェンドの古代祐三氏が、ファルコム所属時代に担当したもの。

特にイースIIのオープニングテーマは、一度聞いたら忘れられないぐらいの名曲。当時PCショップのPC88では、必ずイースIIのデモが動いていた。このデモを見て(聞いて)鳥肌が立ったのを今でも覚えている。
MSX版は残念ながらPSGだったのだが、それでもBGMは秀逸。

イースはもともと地上にあって、空中に浮かぶ古代国家。このあたり、ラピュタのパ…影響を受けてるって言われたけど、単純に空に浮かんでる以外は全く違う話なのでご安心を。
のちにWindows版としてリメイクされた「イースII エターナル」もプレイしたなぁ。