プチコン4関連記事 - 連続表示

新規書き込み

※該当の記事タイトル一覧はリンク一覧から参照できます。

わなげ - プチコン4でシンプルな輪投げゲーム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年8月21日
わなげ - プチコン4でシンプルな輪投げゲーム現在、プチコン4の私設コンテスト「アイリス杯」が開かれています(8月31日締切)。このコンテストは「自由プログラミング部門(お題:おまつり)」と「プログラム改造部門」に分かれていて、そのうちのプログラム改造部門向けに「わなげ」を作りました。タイトルの通りシンプルな輪投げゲームになっています。

タイトル: わなげ
公開キー: 442EDXS3



プログラム改造部門のベースになるものは、プチコン4の他のユーザーさんによる作品で、右画像のような非常にシンプルな作りになっています。プログラムそのものもシンプルで、コメントが丁寧に書かれていることもあり、誰でも改造しやすいようになっています。ただ、改造とは言っても私自身シンプルなゲームが好きなので、改造前のルールをできるだけ活かす方向で行くことにしました。10個の景品を取れればクリア、というのはそのままにして、輪の本数を20本に限定することにしました。

まずは見た目の変更ということで、とりあえずタイトル用のロゴ、祭りの提灯、だるまのキャラをGAHAKUで描いてみました。フォントはパワポで書いたものを参考にして、GAHAKU上でJoy-Conを使って模写しています。

さらにタイトル画面に、以前別のゲームで作った花火を入れてみました。タイトルは夜っぽいのに、メインのゲームの方は昼間で一貫性が無いですが、細かいことは気にせずに「花火は綺麗で迫力があるのでこれで良し」ということにしました。

その他、以下のような変更を加えています。
・輪が景品と重なったら輪がズレる処理
・雲と鳥の演出
・景品ゲット時に迫ってくるような拡大表示
・ゲーム終了時の演出
・かんたん、ふつう、むずかしいの3つのモード(輪の大きさの違いのみ)
・英語対応

プログラムは以下の通りです。オリジナルのプログラムに自分のプログラムを追加、さらに他の自作ゲームからユーザー定義関数をコピペしたりして、見た目がぐちゃぐちゃになってしまっています(最初の元素名も他の自作ゲームからのコピペで、「わなげ」のメイン部分には使われてないです)。



私はプチコン4ではGOSUBをよく使うのですが、本作のメインプログラムがユーザー定義関数をループさせる形になっていて、DEF内ではGOSUBを使えない事から、久しぶりにGOSUBを使わないプログラムになりました。私がゲームプログラムでGOSUBを使わないのは、数年前にPythonでゲームを作って以来になりますが、よく考えてみるとプチコン4の前は何十年もGOSUBを使ってなかったんですよね(PC-6001mkIIまで遡ります)。





プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年6月27日
何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング私はゼビウス、スターフォースあたりの1980年代中盤位のシューティングゲームが好きで、この頃はゲームセンターでもファミコンでもシューティングゲームを好んでプレイしていました。しかし、その後はパワーアップのルールが複雑化したり、極端に連射を要求されたり、敵の攻撃パターンを丸暗記しないとクリアできなかったりしてどんどん難化していってしまい、私はついて行けずにシューティングゲームから離れるようになってしまいました。そんな過去がありましたが、「また昔のようなシンプルなシューティングゲームで遊んでみたい」と思い立って、今回制作したのが「何の変哲もないシューティング」です。

タイトル: 何の変哲もないシューティング
公開キー: 44JXDJ43D



作り始めは今年の2月で、まずは「自機が弾を連射、敵が多数の弾を自機にめがけて吐き出す」という、シューティングゲームの基本のようなプログラムを作ってみました。今までにこんな感じのオーソドックスなタイプのシューティングゲームは作ったことがなかったのですが、とりあえずこのプログラムは2時間程度で完成しました。配列変数とSPCOL(スプライトの衝突判定用の命令)を多用することで、想像通りスムーズに動いてくれました。

その後、個人的な用事などで間が空いてしましましたが、6月に入ってから制作再開。敵の種類を増やし、ボスキャラを追加するなどして、ゲームらしく仕上げていきました。最終ボスキャラでは誘導ミサイルを導入してみましたが、以下の式を思いついたことで、プログラムを短くまとめることができました。
RD1=RD1+SGN(SIN(RD2-RD1))*回転速度
・RD1:ミサイルの向き(ラジアン)
・RD2:ミサイルから自機への方向(ラジアン)

その後は過去の自作品から銀河の画像を転用したり、他のプチコン4ユーザーさんのフォント集からフォントを拝借したりして、最終的に完成させることができました。自機キャラと敵キャラは全てプチコン4のプリセットで時間がかからなかったこともあり、製作期間は全部で約3週間でした。

プログラムは以下の通りです。



プチコン4では多数の良作シューティングゲームが公開されていて、そんな中に自分が作ったシューティングを追加したところで、誰も遊んでくれないのではないかと思ったりもしました。でも、自分の「作りたい」という欲求が勝って、結局完成まで持って行くことができました。今回できあがった「何の変哲もないシューティング」を公開後も、プレイした複数の方から「楽しかった」という声を聞くことができて、本当に作って良かったと思っています。これに気を良くして、またメジャーなジャンルで「自分なりに作るとこうなる」というゲームを作ってみようかなと考えたりもしています。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4)

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年6月7日
迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4)先日作成した迷路自動生成プログラムですが、「せっかく作ったので、これをゲームに発展させよう」と思いました。しかし、普通にスタートからゴールに向かうだけのゲームでは当たり前すぎると思い、ふと「爆弾で迷路の壁を壊しまくることができたら爽快かも」という発想が浮かびました。「せっかく作った迷路を破壊するのでは、迷路であることの意味は…?」と問われかねないアイデアですが、とにもかくにも作り始めてしまい、最終的には完成するまでに至りました。

タイトル: 迷路を爆撃せよ
公開キー: 4D3JNN3C4



まずは単純に自動生成した迷路に爆弾を投げて、爆発したところが円形状に壁がなくなる、というプログラムを組んでみました。さらに、壊れた壁に何かが当たって跳ねたりしたら面白いかも、と思い、ボールのキャラを上から落とすようにしてみました。爆風でボールが吹っ飛ぶ処理も追加します。爆発の連続で「爽快さ」の片鱗のようなものは感じられましたが、この時点でゲームのルール自体は全然固まっていませんでした。

この動画をTwitterに上げたところ、複数のフォロワーさんから色々なアイデアをいただき、私もそこから新たな発想が浮かんだりもしました。その中でも「壊せない壁」「再生する壁」「(ロットロットっぽく)キャラを誘導して落とす」「(アレパチのように)下に並んだ数字にキャラを落としていく」というアイデアを実際に組み込んでみました。結果、よりゲームらしくなってきました。

その後、「(ドルアーガの塔のウィル・オー・ウィスプのような)お邪魔キャラを迷路上で動かす」というアイデアも追加。さらにキャラをミイラやガイコツなどのモンスターに統一して、「迷路とミイラと言えば、ピラミッドとかエジプトっぽい」というイメージで、背景もそれらしいものにしてみました(プチコン4のプリセット画像をそのまま使用。月の画像は自作)。ゲームのルールは「爆弾で迷路を爆破して、下の各穴それぞれにモンスターを4体落とせばクリア」という形にしました。クリアタイムによってランク(S、A、B、C、Dの5段階)が決まります。ということで、めでたく完成です。

プログラムは以下の通りです。



今回はTwitterのフォロワーさんのおかげもあって、楽しく爽快感のあるゲームを作ることができました。今までもゲームの作り始めに最終的なアイデアが固まっていなくて、後からルールを決めていくようなやり方は何度かありましたが、今回のように色々なアイデアを集結させていく方法は、作りながらも「果たして何ができていくのだろう」というワクワク感があって楽しいです。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック
コメント:迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4)
名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年7月25日
その後、迷路を爆破した後に半透明の「迷路の跡」が残るようにしてみました。


プチコン4で迷路自動生成プログラム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年5月16日
プチコン4で迷路自動生成プログラムTwitterのタイムラインを見ていると、時折自動生成された迷路の画像が出てくることがあります。以前から「これができるとゲーム作りの幅が広がる」とは思っていたのですが、あまり深く調べることはありませんでした。しかし先日、ふと頭の中に迷路生成のアルゴリズムのようなものが浮かびました。「せっかくなので形にしてみよう」ということで、プログラムにしてみたところ、うまく動いてくれました。

迷路生成のルールはこんな感じです。
1)1本目の通路を生成開始。基本は通路が行き止まりになるまで迷路の生成を続ける(ただしランダムで終了あり)。
2)座標をランダムに取って、既に通路があるところであれば、そこから分岐した通路を生成開始。基本は通路が行き止まりになるまで迷路の生成を続ける(ただしランダムで終了あり)。
3)画面上に新たに通路を生成できなくなるまで2)を繰り返す。

自分では「我流のアイデア」と思っていたこの迷路作成のアルゴリズムは、「穴掘り法」という名前で既に存在していました。いずれにしても、思った通りに迷路を自動生成するプログラムができて嬉しく思いました。

以下、穴掘り法のプログラムと迷路自動生成の動画です。



これをきっかけに、ネットで迷路の自動生成について調べていると、「棒倒し法」がより簡単に実装できて一般的であることがわかりました。せっかくなので、自分でも作ってみることにしました。

棒倒し法のルールはこんな感じです。
1)フィールド上に1マス置きに「棒(壁)」を設置する。ただし、画面の端のマスは上下左右とも空白であること。
2)一番上の棒からスタート、ランダムに上下左右のいずれかに倒す形で、倒した所のマスも壁として埋めていく。ただし、既に壁として埋まっているところには棒は倒せない。
3)上から2番目以降の棒も随時倒していくが、これ以降は下と左右のみ倒せる(上には倒せない)。既に壁として埋まっているところには棒は倒せない。

以下、棒倒し法のプログラムと迷路自動生成の動画です。



棒倒し法の方が圧倒的に短くシンプルなプログラムにはなりますが、迷路に短い分岐が多くなってしまうのと、スタートとゴールを設置した際に、解法が「一旦上に向かって、その後に下に降りていく」というワンパターンな感じになってしまいます。個人的には穴掘り法の方が好みです。

一方、穴掘り法については迷路の規模が大きくなると描画に時間がかかってしまうことと、「長くくねくね」とした感じの通路になりがちということがあります。

ついでに、「迷路を自動的に解く」プログラムも作ってみることにしました。以下のようなルールで迷路を解いていきます。
1)スタート地点から進行できる方向に行ける所まで進めていく。
2)行き止まりになったら、逆に戻るようにして分岐の手前までを塗りつぶして、次にここに辿り着かないようにする。
3)2)を繰り返しながら行き止まりをつぶしていくうちに、ゴールまでの道のりがあぶり出されていく。

以下、迷路を自動的に解くプログラム(一部)と動画です。この動画の迷路の生成は棒倒し法ですが、もちろん穴掘り法でもこのプログラムは適用できます。



穴掘り法、壁倒し法以外に、「壁伸ばし法」という方法もメジャーなようです。今のところ試してはないですが、また時間のある時にプログラムを作ってみようと思います。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


100 迷路 本 Mazes Book: 本 迷路 大人のための迷路パズルブック男の子と女の子大人のアクティビティブックゲーム迷路簡単に難しい迷路ブック大人
100 迷路 本 Mazes Book: 本 迷路 大人のための迷路パズルブック男の子と女の子大人のアクティビティブックゲーム迷路簡単に難しい迷路ブック大人 をAmazon.co.jpでチェック

令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年5月5日
令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム4月17日にYouTube上でプチコン4大喜利(作品コンテスト)の結果発表がありましたが、その際にプチコン4の新オフィシャルキャラの紹介がありました。「令野蘭子」という名前の女性キャラです。早速そのキャラを使って、何かミニゲームを作ろうということになり、思い浮かんだのがバスケにフリースローです。GW中に製作を開始して、実質丸2日で完成しました。

タイトル: 令野蘭子さんのフリースロー
公開キー: 4E3N5B1



まずはゲームのベースとなる部分を作成。Joy-Con(L)のスティックの傾きでボールを投げる角度と強さを決定、スティックを放すとボールを投げます。ボールと壁やリング(ゴール)の当たり判定は、いつもの物理演算のプログラムを適用します。リングは両端だけグラフィック(GCIRCLE+PAINT)にして、中央部分はスプライトにしてボールが通り抜けるようにします。ネットの部分はその範囲にボールが通過したら減速するようプログラムしています。

これができれば後は装飾や細かいルール付けです。背景の木、家、雲はいつものプリセットのキャラを使っています(見た目はすっかりマンネリです…)。当初はミス1回でゲームオーバーにする予定でしたが、プレイしてみると結構難しく、ミス5回まで許容することにしました。得点はシンプルに1ゴール100点としています。「連続ゴールでコンボ」などのルールも付けられなくはなかったですが、ここはあえてシンプルな形にしています。

プログラムは以下の通りです。



実はフリースローのゲームは高校時代に一度作った事があります。ただ、当時はX68000の熱血高校ドッジボールのキャラをそのまま使ったため、一般に公開することはありませんでした。今回は著作権に配慮して(?)オフィシャルのプリセットのキャラを使っており、久しぶりに同じようなルールのゲームが陽の目を見ることになった感じです。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事

プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

スマイルじいさんのポリゴン宇宙旅行 - プチコン4で3Dポリゴンの避けゲーム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年2月5日
スマイルじいさんのポリゴン宇宙旅行 - プチコン4で3Dポリゴンの避けゲーム12月に作成した3Dポリゴンのサンプルプログラムを応用して、シンプルなゲームを作ってみました。現在、「プチコン大喜利ワールドグランプリ」というスマイルブーム社(プチコン4のメーカー)主催のゲーム制作コンテストが開催されていて、そのお題が「スマイル」であることから、強引に「スマイル」を入れる形で浮かんだのが「スマイルじいさんのポリゴン宇宙旅行」というタイトルです。ゲームの基本アイデアは避けゲームですが、タイトルに合わせてキャラクターや演出を加えていきました。今月頭に完成して公開しています。

タイトル: スマイルじいさんのポリゴン宇宙旅行
公開キー: 4NKANEXPF



ゲームとしての製作開始は1月2日からで、まずはポリゴン単体のサンプルプログラムから、ポリゴンを複数同時に動かすように改良してみました。これは単純に「ポリゴン集合体」の配列変数を用意して、これに合わせて集合体各面の三角形を移動する形になっています。

ポリゴンの描写はグラフィックのGTRI命令を使うのですが、グラフィック面のみを使う形だと表現の幅が限られてしまいます。例えば普通にスプライトを表示する形だと、ポリゴンとポリゴンの間にスプライトを重ね合わせるということができません。そのため、「GTRI命令で描いたポリゴンをスプライト化」する処理を加えることにして、ポリゴンとプリセットキャラ(スプライト)との重ね合わせも実現しました。

ちなみにポリゴンの単位である三角形1つを「1ポリゴン」と言うそうですが、私の今回のゲームでは普通のグラフィックのみの描写で最大毎秒18000ポリゴン(1フレームあたり600ポリゴンx毎秒30フレーム)、グラフィックをスプライト化させた形で最大毎秒12000ポリゴン(1フレームあたり400ポリゴンx毎秒30フレーム)でも処理落ちなく動かせています。ただし、大きなポリゴンをいくつも描写すると、この最大数に関わらず処理落ちしてしまうので、そうならないような工夫もしています(ポリゴンの出現タイミングをバラしたり、立体の見えない背面部分を描画しないなど)。ゲーム上ではグラフィックのみ描写と、グラフィックをスプライト化させた形を、ステージで分けて実装しています。

ポリゴン以外のキャラクターは基本的にプリセットのものを使用していますが、おじいさんの顔を「スマイル」にしたり、タイトルのロゴを作ったり、月を描いたりなど、少しだけ手を加えています。ゲーム中のBGMもほぼプリセットのものですが、エンディングだけ高校時代に作ったゲームの曲を少しアレンジして転用しています。

プログラムは以下の通りです。



今回は普段作っているプログラムよりも計算が色々と複雑で、頭で整理するのが中々難しく、プログラム中のコメントもできるだけ丁寧に描きました(今回はちゃんと漢字を使いました)。今後ポリゴンのプログラムを作ることがあるのか分かりませんが、ベースの考え方だけは忘れずにいたいところです。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

ぱちぱちフルーツ農場 - プチコン4で羽根モノパチンコ風ゲーム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年1月2日
ぱちぱちフルーツ農場 - プチコン4で羽根モノパチンコ風ゲーム2021年最初の自作ゲームは、フルーツキャラを用いた羽根モノパチンコ風の「ぱちぱちフルーツ農場」です。登場するキャラが2019年に制作した「わくわくフルーツ農場」とほぼ同じということもあり、タイトルに「フルーツ農場」という名前を継承しました(ゲーム内容は全く異なります)。Vゾーン当たり時には馬や花火などのキャラも出てきます。

タイトル: ぱちぱちフルーツ農場
公開キー: 4EKS3Q5XF



羽根モノパチンコ風ゲームで肝となる部分が「羽根」になります。これを単純に動かすだけであれば、三角関数を用いて線を引くだけでいいのですが(太い線を引くのに多少手間がかかりますが)、これとフルーツが衝突した場合の反発を自然な見た目にするのに少し工夫が要ります。基本的には通常のグラフィック面との衝突と同じような判定を用いていますが、地面や壁は動きがゼロなのに対して、羽根の場合は「羽根の先端のベクトル(DX,DY)に対して、羽根の根元からどの位置かによって、ベクトルの大きさを比例させる(先端に近いほど早く、根元に近いほど遅い)」という動きも考慮に入れて衝突の演算を行っています。

最初は「仮」のキャラでボールを使っていましたが、途中からフルーツに変更しました。さらに、フルーツが入賞口に入ると画面右の「STORAGE(倉庫)」に移行して溜まっていく仕組みを取り入れました。この倉庫がフルーツでいっぱいになるとクリアというルールです。フルーツを積み上げていく際に、フルーツをスプライトのままにしておくと、当たり判定の数が膨大になり、処理落ちしてしまいます。そのため、動きが止まったフルーツについては、スプライトからグラフィックに遷移するようにしています。スプライトからグラフィックへの遷移は回転行列を使ってドットの色をコピペ(GPGET→GPSET)する形で行っていますが、この処理もやや重いこともあって、ゲーム開始前にフルーツ7キャラx回転90パターンの計算&描画を済ませて、ゲーム中は画像をコピペ(GCOPY)するだけの処理にしています。

画面右のスプライト→グラフィック化のタイミングの調整に色々と戸惑ったものの、これが済んでしまえばあとは装飾と演出のみです。背景に木や雲を入れて、Vゾーン当たり時に馬と花火の演出も加えてみました。

プログラムは以下の通りです。



パチンコ風のゲームは「一度は作ってみたい」と思っていたので、これでようやく欲求を満たすことができました。ちなみに、パチスロゲームは4年前にJavaScriptで作ったことがありますが(JavaScriptパチスロ)、プチコン4で作ることは多分ないかと思います。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

落ちるジョニー - プチコン4でレトロPCのBASIC風ゲーム

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年12月31日
落ちるジョニー - プチコン4でレトロPCのBASIC風ゲームいつもの年末年始の休暇であれば、実家で年末の大掃除と年始の集まりがあるのですが、今回の6連休はコロナの影響もあってずっと自宅にいることになってしまいました。そんな中、小6の頃にPC-6001mkII(NECが1983年に発売した入門用パソコン)で自作したシンプルなテキストベースのスクロールゲームを思い出して、「プチコン4でも作ってみよう」ということになりました。さすがにプチコン4でテキストベースのゲームという訳にもいかないので、それなりにアレンジは加えつつも、2時間程でメインの部分は完成しました。下の動画の最後にプログラムが表示されますが、1画面内でまとめました。

タイトル: 落ちるジョニー
公開キー: 4EKS3Q5XF



PC-6001mkIIに限らず、レトロPCと呼ばれる1980年代前半のパソコンを持っていた人で、BASICがそれなりにできる人であれば、ほぼ誰もが作ったと言えるようなゲームです。私がBASICを使い始めたのが小6の冬で、それから1~2ヶ月後位には、テキストベースではありますがこの程度のゲームが作れるようになったと記憶しています。

ところで、いつもの年末年始は「今年の個人的ニュース」のようなタイトルでブログを書くのですが、今年はコロナの影響で海外旅行のような大きなイベントは皆無で、良くも悪くもプチコン4のみに没頭した年でした。インドアの趣味があるので外出できないのも全く苦にはならなかったものの、やはり生活にメリハリをつけるには外出できる方が良いのは間違いないです。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事

プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

プチコン4でポリゴン描写の実験

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年12月13日
プチコン4でポリゴン描写の実験今までPython+Pygameやプチコン4で疑似3Dゲームをいくつか作りましたが、より三次元的とも言える「ポリゴン」は作ったことがありませんでした(ちなみに、プチコン4には3D関連の命令は備わっていません)。先日、ふと「立体の中心にX軸、Y軸、Z軸を通し、立体の各頂点をそれぞれの軸で回転させればポリゴンも実現できるのではないか?」と思い浮かび、早速プチコン4でポリゴンの実験プログラムを作ってみることにしました。3次元の座標を2次元に変換する手法は、いつもの関数(Z座標に比例した数で1を割り算したものを縮小率とする)、軸の回転は回転行列を使います。

まずは各面の表示の順番を考える必要のない「ワイヤーフレーム」の立方体から作ってみました。回転行列のところでちょっとした勘違いがあって、少し時間がかかってしまいましたが、それ以外はほぼ頭の中で思い描いた通りに作ることができました。
※このワイヤーフレームも以降の他のプログラムも、Joy-Conで回転や移動の操作が可能なものです。動画の最後の方でプログラムを確認できます。



続いて6面色違いの立方体を作ってみました。グラフィック面に三角形を描く「GTRI」という命令で、三角形を合計12個描写する形です。グラフィック面での描写になるので、各面(三角形x2枚)の描写の順番を「向こう側からこちら側(最前面を最後に描写)」に合わせる必要があります。これについては当初、頂点座標等の配列変数を各三角形の中心のZ座標を基準にRSORT(逆順)で並び替えたのですが、これだと時折向こう側の三角形の一部がこちら側に表示されてしまう不具合が発生してしまいました。そのため「面の中心から座標0,0,-200(カメラの位置)までの距離」を基準に配列変数を逆順に並び替えた所、今度はうまく表示されるようになりました。



ちなみに一般的なポリゴンは三角形を単位図形として、これを多数構成して描写することが多いようです。私は最初、「四角形のスプライトを自由に変形できれば、ポリゴンも楽に表現できるのに」と考えてしまいました。しかし、「一般的な手法」ということであれば、「三角形をいくつも構成する方法で慣れておくのも悪くないかな」と思うようになりました。

今度は「プチコン4では処理落ちせずに三角形をいくつまで描写できるのだろう?」ということで、球体に三角形をいくつも貼り付けた形のものを作ってみました。当初は300個位で画面にチラつきが発生するようになってしまったのですが、これはプチコン4のVSYNC命令がグラフィックの描画の完了を待たずに画面を更新してしまうからのようです。そのため、GTARGETとSPPAGEを用いて、フレーム毎に描画面と表示画面を切り替える形にしたところ、600個位までは問題なく表示できるようになりました(動画は三角形600個のものです)。この数を超えてもチラつきは発生しないのですが、今度は処理速度に遅延が発生するようになります。



最後に今回の一連の実験のおさらいとして、三角形24枚で構成した異形(6方向に尖ったもの)を作成してみました。さらに光源の概念も入れ込んでみました。面の光の強さは、「面の法線ベクトル(単位ベクトル)を外積で算出し、それを光源からのベクトル(単位ベクトル)で内積したもの」としています。本当なら尖った部分の影が異形の本体にも反映されないとリアルとは言えないですが、まあそこまではさすがにいいかなということで、これにてポリゴンの実験は一区切りということにします。



ここからゲームとして発展できればいいのですが、今のところは具体的なアイデアが無いので、また後日何かひらめいたら作ってみたいと思います。それにしても、三次元の回転行列、外積、内積などが出てきて、久しぶりに頭が数式でいっぱいになってしまいました。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

BALLS AND PANELS 3D - プチコン4で三次元の物理演算(ボールの衝突処理)

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年12月5日
BALLS AND PANELS 3D - プチコン4で三次元の物理演算(ボールの衝突処理)今までにプチコン4で二次元の簡易的な物理演算(重量の概念を伴うボールの衝突処理)を行ってきましたが、これを三次元で行うことができないかと思うようになりました。当初、この演算は三角関数を多段に使用した複雑な計算だったのですが、後に内積を使用したシンプルな計算でも動くようになったこともあり、この内積を使って三次元の計算を行ってみようということになりました。そこから発展して完成したゲームが、今回の"BALLS AND PANELS 3D"です。テレビ番組などでもお馴染みの「ストラックアウト」のように、ボールをパネルに当てていくというルールになっています。

タイトル: BALLS AND PANELS 3D
公開キー: 4JBN3K2AE



まず、今までに使用していたボール衝突の演算に使用していたユーザー関数(ベクトルXY成分の内積を使用したもの)に、新たにZ成分を加えた関数を作るところから始めました。プチコン4のプリセットのキャラであるサッカーボールを使って動かしてみます。すると大きな問題もなく、最初からそれらしく動いてくれました。

ただ、内積を使用したユーザー関数は、重量の概念を組み込んでいませんでした。ゲームとして幅を持たせるためには、重量の概念も組み込む必要があると考えていたのですが、以前二次元の方のユーザー関数にそれを組み込もうとして失敗したことがあり、今回は再チャレンジになります。改めて頭の中を整理、まずは重心速度を算出して、そこから各キャラの重心速度に対する相対速度を算出、それに2を掛けてさらに単位速度を掛けたものをもう一方のベクトルにそれぞれ加算…、という計算式を組み込みました。結果は成功。こちらの黒い背景の画像がその肝の部分になるユーザー関数です(クリックで拡大画像が表示されます)。

続いてゲーム性を持たせるため、「ストラックアウト」のような感じで、向こう正面にパネルを配置してみました。これにボールを当てて全て消去すれば面クリアという流れになります。

当初は解像度400x240で作っていたのですが、ボールをコントロールする上で自キャラの位置取りが重要なこともあり、奥の方でも位置が分かりやすくなるよう、途中から解像度を縦横倍の800x480に変更しました。そのため、プログラム中の画面表示に関わる色々な所に"*2"を追加して2倍に補正した形になっています。あと、左スティックを真上や真下に倒した場合(=方向ボタンの上下を押した場合)に、Z移動量を単純にプラスマイナスすると、見た目は斜めに移動するため、操作に違和感が出てしまいます。そのため、自キャラの動きに補正を入れて、スティックを真上、真下に倒した場合に、見た目もそれぞれ真上、真下に動くようにしてみました。

プログラムはこんな感じです。



プチコン4では今までに色々と技術的な事にチャレンジしてきました。個人的にプチコン4から初めて取り入れた技術はこんなものがあります。

・ボール同士の衝突計算(+重量の概念)
・ボールとグラフック面の衝突計算
・LMATRIXと回転行列で360度移動可能な擬似3D
・内積による衝突の力の計算
・ばねの動き
・磁力の概念
・三次元のボール同士の衝突計算(+重量の概念)

今回、三次元のボール衝突の演算がうまく行ったことから、技術的なことに関しては大凡「やり切った感」があります。これからは新しいアイデアとか作り込みの度合いを上げるとか、別の方向で伸ばせるところを伸ばしていければと思っています。



プチコン4関連記事(リンク一覧): わなげ - プチコン4でシンプルな輪投げゲーム / 何の変哲もないシューティング - プチコン4で1980年代風のシンプルシューティング / 迷路を爆撃せよ - 自動生成した迷路を破壊するゲーム(プチコン4) / プチコン4で迷路自動生成プログラム / 令野蘭子さんのフリースロー - プチコン4でバスケのフリースローゲーム / ...(記事連続表示)

関連カテゴリー: ニンテンドー関連記事, プチコン4関連記事


プチコン4 SmileBASIC 公式リファレンスブック
プチコン4 SmileBASIC 公式リファレンスブック をAmazon.co.jpでチェック

| 前ページ(新しい記事) |     | 次ページ(過去の記事) |

※該当の記事タイトル一覧はリンク一覧から参照できます。