まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ついにプチコン3号が配信開始されました!
とりあえず動作の限界が知りたくて簡単な弾幕STGプログラムを作ってみました。
自機1
自機弾60
敵1
敵弾400
BG4枚
を使って自機と敵、自機と敵弾、自機弾と敵の当たり判定を行っているのですが
殆ど処理落ちなく動いてしまって驚愕。
普通に弾幕STG作れてしまうスペックですw
ちなみにプチコンmkIIの時はこんな感じ↓だったので、いかにプチコン3号が進化してるかわかりますね。
しかもこの動画はFPS30ですしね。
で、今回も悩んだSPHITの使い方
基本的な考え方はコチラのエントリで書いていますが、プチコン3号では
SPHITSP(スプライト同士の判定)とSPHITRC(スプライトと矩形の判定)に変更
されています。
SPHITSPの当たり判定範囲はSPCOLで指定するのですが、説明には
「SPCOL 管理番号, Xオフセット, Yオフセット, 幅, 高さ, [スケール対応] , マスク」
となっていますが、ここで大事なのは最後のマスク
0000 0000 0000 0000 0000 0000 0000 0000
となります。
つまり、この0とFFFFFFFFを縦に並べてみて同じ場所に1があれば当たってると判定する
って事になります。
例えば自機を0000 0000 0000 0000 0000 0000 1111 1111
敵を0000 0000 0000 0000 0000 0000 1111 0000
敵弾を0000 0000 0000 0000 0000 0000 0000 1111
に設定したとすると…
0000 0000 0000 0000 0000 0000 1111 1111:自機=&H000000FF
0000 0000 0000 0000 0000 0000 1111 0000:敵=&H000000F0
0000 0000 0000 0000 0000 0000 0000 1111:敵弾=&H0000000F
となり、自機と敵、自機と敵弾は当たり判定を行いますが、敵と敵弾は当たり判定を行わない
設定となります。
プチコン3号では0が32個(32ビット)あるので32種類の別々の当たり判定を
行う事が出来るってことになりますが、普通は数種類もあれば充分。
2進数と16進数の変換が面倒くさいって時は16進数で考えて
0とFしか使わないようにすると解りやすいです。
&H000000FF
&H000000F0
&H0000000F
みたいに考えるとFがある場所でグループを判断出来るので便利です。
そして今回は画像のサイズを取得出来る命令があるのが凄く便利
それがSPDEF命令なのですがWebの説明書には
「SPDEF 定義番号 OUT U,V,幅,高さ,原点X,原点Y [,アトリビュート]」
(プチコン3号の説明書にはなぜか載ってない)
この命令で画像の幅と高さがわかるので
SPCOLの前にSPDEFで画像サイズを取得しておけばSPCOLの範囲指定も楽です。
SPDEF 定義番号 OUT U,V,W,H
SPHOME 管理番号,W/2,H/2
SPCOL 管理番号,-W/2,-H/2,W,H,TRUE,&H000000FF
みたいに書けるので、いちいち画像サイズを考えなくて良いですね。
あとはSPHITSPで判定したいスプライトの管理番号を指定すればOK
HIT=SPHIT (管理番号)
とすれば変数HITに当たったスプライトの管理番号が代入されます。
(当たっていない時は-1となる)
HIT=SPHIT (自分の管理番号、相手の管理番号)
とすれば個別に当たり判定を指定することも可能です。
って事でだいたいのスペックはわかってきたので、第三回プチコン大喜利に向けて
何か作ろうかと思っているのですがお題は「飛び出す」なんですよねー。
上の動画のような上下繋がった画面(XSCREEN4)は3D表示が使えないので
どうしようかなーと考え中です。
とりあえず動作の限界が知りたくて簡単な弾幕STGプログラムを作ってみました。
自機1
自機弾60
敵1
敵弾400
BG4枚
を使って自機と敵、自機と敵弾、自機弾と敵の当たり判定を行っているのですが
殆ど処理落ちなく動いてしまって驚愕。
普通に弾幕STG作れてしまうスペックですw
ちなみにプチコンmkIIの時はこんな感じ↓だったので、いかにプチコン3号が進化してるかわかりますね。
しかもこの動画はFPS30ですしね。
で、今回も悩んだSPHITの使い方
基本的な考え方はコチラのエントリで書いていますが、プチコン3号では
SPHITSP(スプライト同士の判定)とSPHITRC(スプライトと矩形の判定)に変更
されています。
SPHITSPの当たり判定範囲はSPCOLで指定するのですが、説明には
「SPCOL 管理番号, Xオフセット, Yオフセット, 幅, 高さ, [スケール対応] , マスク」
となっていますが、ここで大事なのは最後のマスク
「0〜&HFFFFFFFF(ビット単位でグループ属性を管理)
SPHIT系命令で、対象との判定時に互いのビットANDをとり、0であれば衝突していないとみなす。」
このマスクで同じグループにあるもの同士のスプライトの当たり判定を行うって事になります。
0〜&HFFFFFFFFと書いていますが&Hってのは16進数って意味です。
16進数だとややこしいので2進数に変換してみます。
変換はWindows標準の関数電卓(表示の所で選択出来ます)が便利です^^
今だとスマホのアプリとかでもありますね。
FFFFFFFFは2進数だと
1111 1111 1111 1111 1111 1111 1111 1111
16進数の0は2進数でも0ですがわかりやすく書くとこのマスクで同じグループにあるもの同士のスプライトの当たり判定を行うって事になります。
0〜&HFFFFFFFFと書いていますが&Hってのは16進数って意味です。
16進数だとややこしいので2進数に変換してみます。
変換はWindows標準の関数電卓(表示の所で選択出来ます)が便利です^^
今だとスマホのアプリとかでもありますね。
FFFFFFFFは2進数だと
1111 1111 1111 1111 1111 1111 1111 1111
0000 0000 0000 0000 0000 0000 0000 0000
となります。
つまり、この0とFFFFFFFFを縦に並べてみて同じ場所に1があれば当たってると判定する
って事になります。
例えば自機を0000 0000 0000 0000 0000 0000 1111 1111
敵を0000 0000 0000 0000 0000 0000 1111 0000
敵弾を0000 0000 0000 0000 0000 0000 0000 1111
に設定したとすると…
0000 0000 0000 0000 0000 0000 1111 1111:自機=&H000000FF
0000 0000 0000 0000 0000 0000 1111 0000:敵=&H000000F0
0000 0000 0000 0000 0000 0000 0000 1111:敵弾=&H0000000F
となり、自機と敵、自機と敵弾は当たり判定を行いますが、敵と敵弾は当たり判定を行わない
設定となります。
プチコン3号では0が32個(32ビット)あるので32種類の別々の当たり判定を
行う事が出来るってことになりますが、普通は数種類もあれば充分。
2進数と16進数の変換が面倒くさいって時は16進数で考えて
0とFしか使わないようにすると解りやすいです。
&H000000FF
&H000000F0
&H0000000F
みたいに考えるとFがある場所でグループを判断出来るので便利です。
そして今回は画像のサイズを取得出来る命令があるのが凄く便利
それがSPDEF命令なのですがWebの説明書には
「SPDEF 定義番号 OUT U,V,幅,高さ,原点X,原点Y [,アトリビュート]」
(プチコン3号の説明書にはなぜか載ってない)
この命令で画像の幅と高さがわかるので
SPCOLの前にSPDEFで画像サイズを取得しておけばSPCOLの範囲指定も楽です。
SPDEF 定義番号 OUT U,V,W,H
SPHOME 管理番号,W/2,H/2
SPCOL 管理番号,-W/2,-H/2,W,H,TRUE,&H000000FF
みたいに書けるので、いちいち画像サイズを考えなくて良いですね。
あとはSPHITSPで判定したいスプライトの管理番号を指定すればOK
HIT=SPHIT (管理番号)
とすれば変数HITに当たったスプライトの管理番号が代入されます。
(当たっていない時は-1となる)
HIT=SPHIT (自分の管理番号、相手の管理番号)
とすれば個別に当たり判定を指定することも可能です。
って事でだいたいのスペックはわかってきたので、第三回プチコン大喜利に向けて
何か作ろうかと思っているのですがお題は「飛び出す」なんですよねー。
上の動画のような上下繋がった画面(XSCREEN4)は3D表示が使えないので
どうしようかなーと考え中です。
PR
第二回プチコン大喜利の結果が発表されました。
結果は大喜利大賞受賞!
何か賞に選ばれたら良いなーとは思っていたのですが、まさか大賞とは思って
なかったので、とても嬉しいです^^
そして、動画の中で出てくる「次のプチコン」が気になりまくりますねーw
やはり次があるなら、3DSで立体視対応とかでしょうか。
現状のプチコンだと弾幕STG作るにはちょっと処理速度的に辛いかなーって感じ
なので、もうちょっと速くなってくれると良いなーなどと思っております。
結果は大喜利大賞受賞!
何か賞に選ばれたら良いなーとは思っていたのですが、まさか大賞とは思って
なかったので、とても嬉しいです^^
そして、動画の中で出てくる「次のプチコン」が気になりまくりますねーw
やはり次があるなら、3DSで立体視対応とかでしょうか。
現状のプチコンだと弾幕STG作るにはちょっと処理速度的に辛いかなーって感じ
なので、もうちょっと速くなってくれると良いなーなどと思っております。
応募していた第二回プチコン大喜利にノミネートされていました^^
ソフトのタイトルは「GMEISTER」
一分間で遊べるタッチペンを使ったSTGです。
こんな感じのゲームです↓
前回は芸術賞でのノミネートだったのですが、今回は技術賞でのノミネート。
何か賞を貰えたら良いなーと思いつつ、実は締め切りの関係もあって完成形では
ないんですよね。
ホントはステージもいっぱい作って分岐させて、ボスももっと追加したかったし
音楽もオリジナルで作りたかったので、一段落したら完成形として作って行こうかなー
と思っているのですが、現時点でQRコード160枚くらいあるのに、さらに追加したら
何枚になるんだ・・・と思うと、このままでも良いのかなーと思ったり。
まぁ、気が向いたら追加しようかなー程度には考えてますw
他の方たちの作品も個性的で面白そうな作品が多いので、ノミネート作品もダウンロード
出来るようにしてくれないかなーと思ってます。
ソフトのタイトルは「GMEISTER」
一分間で遊べるタッチペンを使ったSTGです。
こんな感じのゲームです↓
前回は芸術賞でのノミネートだったのですが、今回は技術賞でのノミネート。
何か賞を貰えたら良いなーと思いつつ、実は締め切りの関係もあって完成形では
ないんですよね。
ホントはステージもいっぱい作って分岐させて、ボスももっと追加したかったし
音楽もオリジナルで作りたかったので、一段落したら完成形として作って行こうかなー
と思っているのですが、現時点でQRコード160枚くらいあるのに、さらに追加したら
何枚になるんだ・・・と思うと、このままでも良いのかなーと思ったり。
まぁ、気が向いたら追加しようかなー程度には考えてますw
他の方たちの作品も個性的で面白そうな作品が多いので、ノミネート作品もダウンロード
出来るようにしてくれないかなーと思ってます。
第二回プチコン大喜利投稿作品「GMEISTER」の動画をアップしました^^
ニコニコ動画
youtube
QRコードも公開しようとは思っているのですが全部で161枚もあるので
なかなか公開用ページを作るのが大変です^^;
後半の多関節キャラとラスタースクロール風処理は見て欲しいポイント。
ラスタースクロール風処理についてはTiny Yarouさんの↓コチラの動画を
参考に作ってみました。
動画を見る限りだと小さいスプライトを上手く動かしているように感じたので
自分の場合は32x16のスプライトを上手く並べて表現してみました。
しかし、このファンタジーゾーンの完成度凄いですよねー。
といった感じで、何か賞を貰えたら良いなーと思いつつバグが無い事を祈っていますw
ニコニコ動画
youtube
QRコードも公開しようとは思っているのですが全部で161枚もあるので
なかなか公開用ページを作るのが大変です^^;
後半の多関節キャラとラスタースクロール風処理は見て欲しいポイント。
ラスタースクロール風処理についてはTiny Yarouさんの↓コチラの動画を
参考に作ってみました。
動画を見る限りだと小さいスプライトを上手く動かしているように感じたので
自分の場合は32x16のスプライトを上手く並べて表現してみました。
しかし、このファンタジーゾーンの完成度凄いですよねー。
といった感じで、何か賞を貰えたら良いなーと思いつつバグが無い事を祈っていますw
第二回プチコン大喜利になんとか投稿できました^^
ゲームのタイトル画面はこんな感じ↓
ゲームタイトルはGMEISTER(ジーマイスター)
フォントはいつも使わせて貰ってるゲバサイトさんのEVACから作成。
今回は難易度調整と右利き用と左利き用の設定も追加しました。
しかし左利き用の設定にするとABXYで自機移動、左手でタッチペンになるのですが
自分は右利きなのですんごい動かしにくかったですw
ゲームとしては
全ステージ5
1~4ステージは10秒以内にクリアしないとゲームオーバー
1~4ステージでクリアした時の残り秒数がステージ5に加算される。
なるべく早くに敵を倒してステージ5の秒数をふやすのがポイント
自機の攻撃は通常弾と波動砲。
通常弾は画面タッチで任意の方向に連射。
波動砲はLボタンを押してチャージで離すと発射。
波動砲を使って敵を連続で倒すと倒した敵が多いほど2倍4倍8倍16倍と
スコアが加算される
自機のオプションは小さい敵弾のみ防げる。
大きい敵弾と敵自身は防げない。
と言った感じで小さい敵は通常弾で、大きい敵は波動砲で狙って撃つ・・・
みたいな感じのSTGを目指して作ってみました。
色んな人に楽しんでもらえたら良いなーと思いつつ、とりあえず積んでいる
カラドリウスとシュタインズゲートをプレイしようかと思っています^^
ゲームのタイトル画面はこんな感じ↓
ゲームタイトルはGMEISTER(ジーマイスター)
フォントはいつも使わせて貰ってるゲバサイトさんのEVACから作成。
今回は難易度調整と右利き用と左利き用の設定も追加しました。
しかし左利き用の設定にするとABXYで自機移動、左手でタッチペンになるのですが
自分は右利きなのですんごい動かしにくかったですw
ゲームとしては
全ステージ5
1~4ステージは10秒以内にクリアしないとゲームオーバー
1~4ステージでクリアした時の残り秒数がステージ5に加算される。
なるべく早くに敵を倒してステージ5の秒数をふやすのがポイント
自機の攻撃は通常弾と波動砲。
通常弾は画面タッチで任意の方向に連射。
波動砲はLボタンを押してチャージで離すと発射。
波動砲を使って敵を連続で倒すと倒した敵が多いほど2倍4倍8倍16倍と
スコアが加算される
自機のオプションは小さい敵弾のみ防げる。
大きい敵弾と敵自身は防げない。
と言った感じで小さい敵は通常弾で、大きい敵は波動砲で狙って撃つ・・・
みたいな感じのSTGを目指して作ってみました。
色んな人に楽しんでもらえたら良いなーと思いつつ、とりあえず積んでいる
カラドリウスとシュタインズゲートをプレイしようかと思っています^^
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事