はじめに
この記事では、@sago35 さんが作成した Miniten
から影響されたゲームエンジン「Koebiten」について紹介します。
まずKoebitenは、Ebitengine という、2Dゲームエンジンをベースにしたもので、こちらは商用利用もされています。
今回はTinyGo Keebの活動に参加し、得た知見とともにご紹介できればと思います。
Koebitenとは?
Koebitenという名前は、keeb初回の打ち上げの席で @sago35さんが考えておられた「小海老天」から来ています。「簡単に作れるなら作ってみるか」という気持ちで開発したのが、今回の「Jampin Gopher」です。
初期には「FlappyGopher」というゲームがあり、その絶妙な難しさが面白かったですが、
私たちレトロファミコン世代には 床
が必要だと感じ、床を設置しました。
さらに、壁を避ける要素を雲に変えることで、小さい子どもでも楽しめるようにしました。
※要は難易度を下げただけ
ゲーム画面
実際のゲーム画面
右から左へ雲が飛んでくるので、ジャンプで避けるだけのゲームです。
床の実装
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 Confが開催できれば素晴らしいですね。
以上、QiitaのTinyGoアドベントカレンダー11日目の記事でした。