|
※該当の記事タイトル一覧はリンク一覧から参照できます。
プチコン4でポリゴン描写の実験名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年12月13日 今まで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で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
BALLS AND PANELS 3D - プチコン4で三次元の物理演算(ボールの衝突処理)名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年12月5日 今までにプチコン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で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
焼肉食べ放題 - プチコン4でミニ・シミュレーションゲーム名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年11月8日 私がまだ小学生の頃、マイコンBASICマガジン(ベーマガ)'84年11月号に「歌舞伎町アドベンチャー」という投稿ゲームが掲載されていました。舞台はジンギスカン食べ放題の店で、時間内にできるだけ沢山食べて元を取るという内容でした。手持ちのPC-6001mkIIとは違う機種のBASICプログラムだったのですが、テキストのみのシンプルなゲームだったので、プログラムを一部を変えるだけでそのまま動作してくれました。
当時のベーマガは手元になく、ゲーム自体の記憶も薄れているのですが、「面白かった」という事だけはよく覚えていて、「これっぽいゲームをプチコン4で再現しよう」と思いつきました。さすがにプチコン4でテキストベースのゲームという訳には行かないので、グラフィックを添えた形になります。完成したゲームが「焼肉食べ放題」です。 タイトル: 焼肉食べ放題 公開キー: 4BKK482NV 今回のゲーム制作開始はプログラミングからではなく、「絵を描く」ことからでした。カルビ、ロース、タンなどの肉の絵に加えて、サラダ、キムチ、ごはんなどの絵も必要になります。私は中学、高校の美術の成績は5段階の2程度で、元々絵を描くのもあまり好きではありません。そんな中、ネット上に落ちている写真を参考にしながら、プチコン4のGAHAKUでコツコツと絵を描いていきました。基本画像として48x48ドットの絵を12個用意しましたが、これだけで軽く10時間程度費やしてしまいました。 プログラムの方は多少ややこしい所はあるものの、リアルタイムにキャラ等を動かす処理がほとんど無く、比較的シンプルと言えます。もちろんプログラムミスはゼロではありませんでしたが、全体としては大きなトラブルもなく順調に進みました。肉が焼けている場面(=配列変数を使って煙発生)の処理も、そこそこうまくできたかと思います。 続いてタイトルと背景画です。タイトルについては、Windowsで「FDバジョカ廉書体」というフォントを使って「焼肉食べ放題」と描き、それをプチコン4のGAHAKUで模倣するような形で作成していきました。この作業に2時間程度かかりました。背景画は400x240ドットの大きさで、これもネット上の焼肉店内の写真を参考にしながら描いていこうと思っていました。しかし、これだけの大きさになると、詳細まで全て描くのは至難の業で、どれだけの時間がかかのるか全く読めず、そもそも上手く描けるかどうかも分かりません。そのため、全体をシンプル化した形で、テーブル中央の網の部分だけやや細かく描写する形にしました。この作業にも約2時間費やしました。 最後にBGMです。これについては自分で作曲するかプチコン4のプリセットの曲で済ますかで迷いましたが、せっかくなので「自分で作ろう」ということにしました。ただ、今までやっていたMMLを直接記述する方式は疲れるので、今回はプチコン4上の「TINY MML SEQUENCER」(作者:Shinoさん 公開キー:4Q44DREF3)というツールを使いました。自分で曲を作ろうと決めてから、何故か 頭の中で「やーきーにーくーやきにくやきにく、やーきーにーく…」というフレーズが繰り返されたので、それをそのまま曲にして採用してしまいました。メロディ感のあまりない曲ですが、まあもともと凝った曲は作れないので、「これで十分かな」と思っています。 色々と手間がかかったものの、出来上がったゲームは「ミニ・シミュレーションゲーム」と言った感じで、プレイ時間も2~3分程度と短いです。それでも自分で絵を描いたり曲を作ったりと、今回はかなり充実感のあるゲーム制作となりました。 プログラムは以下の通りです。 まだ次回作は何で行くか決めていませんが、年末年始の休みまでに一つ仕上げられれば、と思っています。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
花火のデモと炎色反応クイズ - プチコン4で高校化学の学習?名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年10月11日 以前プチコン4で作成した「わくわくフルーツ農場」で30コンボを達成すると、花火が上がって馬が走るという演出を入れています。この花火の動きを取り入れつつ、高校化学で学ぶ「炎色反応」の要素を合わせたデモ&クイズゲームを作成しました。私自身、炎色反応は記憶からほとんど消えてしまっていましたが、これを作りながらだいぶ思い出してきました。
タイトル: 花火のデモと炎色反応クイズ 公開キー: 4NAE3SEQD 花火の上昇はサイン(SIN)カーブで揺らして、花火が開くのは空気抵抗と重力加速度の概念を入れています。ただ、他のゲームのような当たり判定はなく、見た目同様にプログラム自体は非常にシンプルな形になっています。クイズゲームのようなものを作るのは初めてだったので少し慣れない所もありましたが、配列をうまく使って出題処理を行いました。 プログラムは以下の通りです。 ここ最近は短めのプログラムで公開というのが続いています。プログラミングのモチベーションが低下しており、仕方ないところではありますが、時間を見てもう少しまとまったものも久しぶりに作りたい所です。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
KING'S MAGNETIC MAGIC - プチコン4で磁石的な動きのゲーム名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年10月3日 先日のバネの動作の自作デモやゲームをTwitterにアップした際、ある方から「磁石」の動きの話が出てきました。話の詳細は忘れてしまいましたが、その時に磁力について調べたところ、「磁極間に働く力は距離の2乗に反比例し、それぞれの磁極の磁力に比例する」というクーロンの法則で表すことができるとあり、この式をうまく使えばゲームになると思ったのがきっかけで制作したのが、今回公開した「KING'S MAGNETIC MAGIC」です。
タイトル: KING'S MAGNETIC MAGIC 公開キー: 4V4Q383NJ 今回も最初に具体的なゲームのアイデアがあったわけではなく、まずはAボタンで引張、Bボタンで反発というシンプルに磁石的な動きを再現する所からスタートしました。リアルな路線で行くなら、S極、N極の概念を入れる必要もあったと思いますが、とりあえずそれらしい動きだけが欲しかったので、キャラ一覧表を眺めていて何となく目についた王様のキャラを中心にして、ボールのようなキャラを引っ張ったり、反発させたりするような動作にしました。 その後、お城を置いて、ここに宝石を持ち込んだら得点、爆弾を持ち込んだらアウト、というようなルールが頭に浮かびました。この時点で「あまり大きなゲームには発展しなさそうかな」というのはありました。小規模のミニゲームであれば、以前なら3~4日もあれば完成させてしまうところでしたが、ここのところプログラミングを長時間続けられる集中力が落ちてしまっていて、週末に一日1時間程度プログラミングする程度で済ませていました。 ようやくゲームっぽくなってきたのは3週間後で、それからさらに1週間程度調整をしながらとりあえず完成しました。お城の位置を中央にして木で囲む形にしつつ、重めのBGM(プリセットのもの)に合わせて画面全体をやや暗くして、幽霊と霧も発生させるようにしました。 プログラムは以下の通りです。 ゲーム的には「デモから強引にゲームにしちゃった」感が出てしまっていますが、まあ何とかまとまったかなという所です。ここ最近はプログラミングのモチベーションが下がり気味なので、ゲーム制作を止めるまでは行かないにしても、ゆっくりと作っていこうと思っています。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示) 懐かし昭和の10円ゲーム2 おきディスコラボVer. - プチコン4でコラボ作品名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年10月3日 先日、プチコン4ユーザーでTwitter上で交流のあるこりんごさんとコラボ作品を制作、公開しました。私が今年の4月に公開した「懐かし昭和の10円ゲーム」に、こりんごさんのグラフィックノベルゲーム「おきつねディストレス」(昨年12月公開)のキャラクターが盤面画像として登場します。 タイトル: 懐かし昭和の10円ゲーム2 おきディスコラボVer. 公開キー: 4CAQYA34J こりんごさんの「おきつねディストレス」は、自分が主人公(妖狐)となって「三人の少女を全員呪うか自分が消されるか」という状況で、アイテムを駆使しながら話が展開していくというゲームです。精細な画像に愛らしいキャラ、心地よいBGM、マルチエンディングのストーリーなど完成度の高い作品で、プチコン4の代表的な人気作品の一角となっています。公開キーは4EKK34XXFです。 そのこりんごさんが「懐かし昭和の10円ゲーム」の背景画像を変えてTwitterにアップされたことがきっかけで、私の方も10円ゲームのスロープを一新する形でコラボ作品を作ろうということになりました。 「懐かし昭和の10円ゲーム2 おきディスコラボVer.」では、おきつねディストレスに登場する3人娘(みなと、なんば、くるめ)の画像に加えて、昔実際にあった10円ゲームのお城版(?)をモチーフにした墨絵風の画像も選択できます。 以下、プログラムです。画像選択を加えた以外、元祖の懐かし昭和の10円ゲームとほとんど変わりません。 私はまともに絵が描けないこともあって、こりんごさんの絵が挿入されることにより「作品に新しい風が吹く」ような感じがしました。コラボ作品はまた普段とは違った作る楽しみが出てきますね。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
コメント:懐かし昭和の10円ゲーム2 おきディスコラボVer. - プチコン4でコラボ作品 名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2021年7月25日 その後、アップデートで画面横のパネル部分のデザインに改良を加えました。
四角いボヨンボヨン - プチコン4でばね挙動ゲーム第2弾名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年8月20日 「ばね」の挙動を取り入れたゲームの第2弾「四角いボヨンボヨン」を公開しました。タイトルの通り、ボヨンボヨンした四角い物体が登場し、ロボットを操作しつつこの四角い物体をGOALまで運べばクリア、というゲームになります。全10面です。
タイトル: 四角いボヨンボヨン 公開キー: 4EKXKQ5EX 先日公開した「ROBOTS USING A NET TO COLLECT MONEY」では、同じばね強度、同じ重さの重りでの「ばね」の挙動をゲームに取り入れていますが、後日、ばねの強度の違い、重りの重さの違いに加えて、ばねの減衰も考慮に入れた関数を作成しました。この関数を利用して作ったデモが右の画像になります。 その後、重りの重さは同一で、4x4の合計16個の重りにばねを張り巡らせた物体のデモを作成してみました。この動きがゼリーのような感じで思いのほか面白かったので、これをベースにゲームを作ってみようということになりました。 もともとロボットを使ってこの物体を動かすというデモだったこともあり、ロボットがこの物体をゴールまで運ぶというルールにしてしてみました。昔あった「フラッピー」というゲームに近いイメージです。 全部で10ラウンド用意しましたが、他のゲーム制作でも使ったような「バンパー」や「動く床」を設置したり、岩や爆弾などの障害物を登場させたりして、ラウンド毎に変化を加えるようにしています。 プログラムは以下の通りです。 ここに来てゲームのアイデアが切れたこともありますが、ゲーム制作についてはちょっとの間お休みしようと思っています。また何か新しいアイデアが出るといいんですけどね。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
ROBOTS USING A NET TO COLLECT MONEY - プチコン4でばね挙動のゲーム名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年7月30日 先日、ふと「ばね」の挙動に興味を持ち始めて、プログラミングで再現してみようと思いました。基本的にはフックの法則に従って、元々のばねの長さからの変化量が大きいほど、物体に働く力(加速度)が増していくということになります。それを応用して作ったミニゲームが今回のROBOTS USING A NET TO COLLECT MONEYです。タイトルはゲームの内容をそのまま英文にしただけなので、ひねりがありませんね…。
タイトル: ROBOTS USING A NET TO COLLECT MONEY 公開キー: 4NA3DB32D このゲームを作る前に、まずはバネ(と言っても見た目は白の直線)の両端に物体を置き、それを三角形状につなげて「ぶよぶよ」とさせた動きのプログラムをつくってみました。プログラム上、バネ自体には重量はなく、両脇の物体をキャラ番号で管理しており、該当キャラの加速度に変化が出るような感じになっています。まずは、うまく動いてくれました。 続いて物体を数珠繋ぎにしつつ重力を加えてみました。電線のような曲線は懸垂線(けんすいせん)と呼ばれていて、これを式にすると結構複雑になったりするのですが、何だかそれらしい形になってくれました。 ここから以前作成した「わくわくフルーツ農場」のように、空から降ってくるアイテム(ドル袋)をうまく誘導して、画面下部にある桶のような容器に入れて得点する形のゲームにしてみました。 演出面ではグラデーションで簡易的に空と海を表現、雲に奥行きを持たせる形で左から右に動かすようにしました。敵キャラは炎で、直線的に上に向かうのみです。BGMは高校の時に作った曲を再アレンジしています(短調で少し暗いですが…)。 以下、プログラムです。 今回のゲームでは、ばねの強度は全て同様、両端の物体が同じ重さという限定された条件になっています。将来的には異なるばねの強度、両端の物体が違う重さでも対応できるようにするつもりです。うまく組み合わせればゼリー状の「もっとぶよぶよした物体」も再現できそうな気がしています。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
ティルト・ザ・ランド(TILT THE LAND) - プチコン4でキャメルトライ風ゲーム名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年7月23日 今から30年ほど前、ゲームセンターに「キャメルトライ」というゲームがありました。ボールをゴールまで誘導するというシンプルなルールなのですが、操作が一風変わっていて、ブロック崩し系のゲームに使われるようなダイヤルを使って背景を回し、重力で下に落ちていくボールをうまくコントールするというものでした。そのキャメルトライをモチーフにして作ったゲームが、今回公開した「ティルト・ザ・ランド(TILT THE LAND)」です。
タイトル: ティルト・ザ・ランド(TILT THE LAND) 公開キー: 4DKK322NV 制作のきっかけとなったのが、「普段使っている衝突演算のプログラムを使えば、キャメルトライ風の動きを出すのもそれほど難しくないのでは」と思いついた事でした。実際にサンプルプログラムを作ってみると、特に大きな問題もなく、ほぼ思ったような動きになってくれました。基本はボールの中心に合わせて「背景画像の中心」を常に移動させて(SPHOMEで指定)、この「背景画像の中心」を中心として画像を回転させるだけです(SPROTで回転)。重力のベクトルは回転角から三角関数で計算、当たり判定はボールが円形状なために、普段の衝突演算プログラムのまま特別な計算式を加えることなく動いています。 当初、操作はスティックを使う形だったのですが、これではダイヤルのような素早い動きには対応できません。これについては、Twitterのフォロワーさんからいただいたアイデアで、Joy-Conを傾ける形にしてみたところ、違和感のない操作ができたのでこれをそのまま採用しています。ただ、Switchの携帯モードでも遊べるように、スティック操作も可能なままにしています(ジャイロ機能オフも可能)。 背景画像はテキスト画面(BG)を使っているように見えますが、いつもの衝突演算のプログラムで当たり判定を行うため、グラフィック画面の方で描画しています。背景画像は基本的にプチコン4のプリセットのキャラを用いており、各面の構成はプチコン4標準の画像作成ソフトであるGAHAKUを使って行いました。ただ、GAHAKUでは画像を90度傾けるような機能がないため、そのままではキャラを横に倒した状態で配置するのに難がありましたが、予め特定の画像を90度傾けられるプログラムを作成して対処するようにしました。 唯一、4面だけはSmileBASICのグラフィック命令から円を多重に描いたものをベースにしています。丸、三角形、四角形、五角形、六角形のオブジェクトは、3月に作成した「BONRU」のプログラムの一部を使って描写したものです。これも細かいところはGAHAKUで編集して面を作成しています。 4面と6面では大きな黄色のボール(通称BONRU)を登場させてプレイヤーの邪魔をします。普段使っている衝突演算のプログラムでは、自分以外の動くキャラを設置することも難しくなく、「せっかくなので」ということで2キャラ分だけ登場させることにしました。 このゲームを作っていく中で難しかったのが、「壁抜け」が多数発生したことです。問題の根本は、衝突演算のグラフィック面の当たり判定が2ヵ所以上同時にあると、不正確な計算値が出てしまう可能性がある所です。この部分をそのままにしていたために、例えば障害物と地面が接しているところにボールが斜めに触れた場合に、ボールがのめり込んでしまう現象が発生することがありました。これについては、のめり込みが発生しそうな座標を特定して、そこにボールが入ったらボールの座標を強制的に元に戻すという処理をしています。この処理がゲーム全体で20ヵ所程度あって、プログラムがつぎはぎのようになってしまっています。 ちなみにこのゲームで使用している曲は、もともと高校時代にX68000で作成したものです。この曲のメロディ部をそのままピックアップして、それ以外のパートについて再度アレンジしています。シンプルで短い曲ではありますが、「たまにはプチコン4プリセットの以外の曲を使おう」ということで採用してみました。 全6面しかないこともあり、慣れると5~6分で全面クリアできてしまいますが、独特な雰囲気を最初から最後まで味わってもらえればということで、最終面クリアの難易度はやや低めに設定しています。最終面クリア時の残タイムでランクがS、A、B、Cの4段階に分かれるようにして、タイムトライアルの要素も追加しています。 プログラムは以下の通りです。 余談ではありますが、「~風ゲーム」を作る時には、著作権に対する配慮が必要です。私自身、法律にあまり詳しくないこともあり、今回作成したティルト・ザ・ランドについて、著作権の観点からネットで情報を調べたり、Twitter上でそのあたりに詳しい方から助言をいただいたりしました。まとめると…、 1. ゲームで著作権法に触れるのは、画像や音楽やプログラムソースをそのままの形で流用した場合など。 2. 一方、ゲームのルール自体は著作権で保護される対象ではない。 3. 今回作成したティルト・ザ・ランドについては、画像はプチコン4のプリセットまたは自作、音楽は自作のもので、いずれもキャメルトライとは全く異なる。また画面構成も異なり、細かい所でルールも異なり、多数オリジナル要素も加えられていて、プログラムも全く違うものなので、著作権については問題ないという判断。 ただ、一つ言えるのは、キャメルトライ無しではこのゲームは生まれていなかったということです。ティルト・ザ・ランドは「キャメルトライインスパイア」のゲームということでは間違いありません。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
内積によるボール衝突演算のいちごゲーム(プチコン4)名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2020年7月5日 プチコン4でボールの衝突演算を使用したゲームをいくつか作成してきましたが、この演算は三角関数を多段的に使用するものでした。そのため、この部分のプログラムは複雑で長くなってしまっていて、速度的な面でも少なからず影響がありました。この演算は関数化していて使いまわしは比較的容易にできるものの、「いつか簡素化しないと」とは思っていました。
先日、Twitterのあるユーザーさんとのやり取りの中で、この衝突演算の肝になる部分の計算が「内積」であるということと(私自身、これが内積であるという認識がありませんでした)、この内積が三角関数や角度を用いずにベクトル成分の掛け算のみでも実現できるということが分かりました。まずはこれを使用したサンプルプログラムを作ってみることにしたのですが、以下の動画の通りしっかりと動いてくれました。 プログラムは右の画像の通りです(クリックで拡大できます)。衝突演算の部分は今までの三角関数を使う方式に比べて半分以下の長さになっています。 せっかくサンプルプログラムを作ったので、これを利用したミニゲームを作成することにしました。ロボットがボールを避けながらイチゴをゲットするだけのシンプルゲームで、制作時間は2時間程度です。 タイトル: 内積によるボール衝突演算のいちごゲーム 公開キー: 4D4MY33QJ ミニゲームのプログラムは以下の通りです。 内積でのボール衝突演算ですが、まだ同じサイズ、同じ重量の衝突の場合のみの対応です。これから違うサイズ、違う重量の衝突にも対応できるようにしようと思っています。 プチコン4関連記事(リンク一覧): すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム / パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...(記事連続表示)
※該当の記事タイトル一覧はリンク一覧から参照できます。
■ ホームへ
|