4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TinyGoAdvent Calendar 2024

Day 11

Koebiten: TinyGoで楽しむ小さなゲームエンジン

Last updated at Posted at 2024-12-10

はじめに

この記事では、@sago35 さんが作成した Miniten から影響されたゲームエンジン「Koebiten」について紹介します。
まずKoebitenは、Ebitengine という、2Dゲームエンジンをベースにしたもので、こちらは商用利用もされています。
今回はTinyGo Keebの活動に参加し、得た知見とともにご紹介できればと思います。

Koebitenとは?

Koebitenという名前は、keeb初回の打ち上げの席で @sago35さんが考えておられた「小海老天」から来ています。「簡単に作れるなら作ってみるか」という気持ちで開発したのが、今回の「Jampin Gopher」です。

cb958d1d3cff13f7a5c94e439e1c6de9.png
※画像は何も関係ありません。

初期には「FlappyGopher」というゲームがあり、その絶妙な難しさが面白かったですが、
私たちレトロファミコン世代には が必要だと感じ、床を設置しました。
さらに、壁を避ける要素を雲に変えることで、小さい子どもでも楽しめるようにしました。
※要は難易度を下げただけ

ゲーム画面

実際のゲーム画面
jumpingopher.jpg
右から左へ雲が飛んでくるので、ジャンプで避けるだけのゲームです。

床の実装

Gopherくんの下限に当たり判定をつけることで、自由落下状態を解消しました。

for _, platform := range platforms {
    if hitPlatformRect(int(y), int(x), int(y)+22, int(x)+22, platform.pY, 0, platform.pY+22, 128) {
        isOnPlatform = true
    }
}

これによって、画面内で落下せずに進むゲームが完成しました。

障害物の工夫

障害物は夢のある雲にし、ジャンプで避けることで遊びやすくしました。クラウド(雲)を描画するコードはシンプルです。

func drawCloud(c *cloud) {
    koebiten.DrawImageFS(nil, fsys, "cloud.png", c.cloudX, c.holeY-cloudHeight)
}

これだけでゲームが完成し、雲を避けるたびにスコアがカウントされます。まさに王道ですね!

どうやったら遊べるの?

ここで、Getできます。

まとめ

今回の記事では、TinyGoとKoebitenを使って簡単にゲームを作る方法をご紹介しました。小学生の頃、無限に時間を費やしたクソゲーとは違い、現代ではこれほど簡単にゲームが作れるようになりました。

TinyGo Keebでは全国ツアーを行っています。
来年もまだまだ、各地を巡る予定です。

TinyGo Keeb Tour 2025

来年も多くの方々と出会えることを楽しみにしています。
また、TinyGo Confが開催できれば素晴らしいですね。

以上、QiitaのTinyGoアドベントカレンダー11日目の記事でした。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?