M5Stack でゲームを作る 001

11837 ワード

注意

開発環境整備やライブラリ導入方法などはここでは触れません。ご容赦ください。

記事概要

M5Stack で動作するゲームを goblib、goblib_m5s で構築していきます。
ある程度のプログラム知識、M5Stack に関しての知見が必要です。

M5Stack とは?

M5Stack は M5Stack社による小型マイコンモジュールで、様々なタイプのものが発売されています。
ここでは最も基本的な M5Stack BASIC/Gray + Faces Bottom + Gamepad Panel の構成下でゲームを作っていきます。

Gamepad Panel は十字キーとA/Bボタン、SELECT/STARTボタンがあり、ゲームボーイ相当の操作が可能です。

M5Stack 性能概略

16bitRGBカラーLCD(解像度 320 x 240)、スピーカ搭載、SDカードからの読み書きが可能という事で、ゲーム作成においては必要な機能を満たしています。
ただしハードウェアによるBGやスプライト等の描画や、3D関連機能等ゲーム専用機に搭載されているような機能は一切持っていません。サウンド系他も同様で基本的には自分で全てなんとかしなくてはいけない、そういうハードです。
古の8bitパソコンやPC-9801シリーズでのゲーム開発に似た感じと思ってよいでしょう。(なお筆者はその時代での開発経験がある年寄りでございます(´・ω・`) )

開発言語

開発環境て添付のコンパイラ類を使用し C++11 以降を前提とします。

採用ライブラリ、コード

ゲーム用フレームワークはたぶん存在しないと思われます。
のでいくつかのライブラリと自作ライブラリを組み合わせていきます。

基本

M5Stack の諸々を制御するための基本ライブラリ M5Stack があり、こちらを使用していきます。

描画

さて当初は昔のように基本的な描画ライブラリを作ろうと考えていたわけですが、M5Stack 界隈では様々な方が様々なライブラリを発表されています。その中でも白眉といえるのが LovyanGFX です。
私が欲しいと思っていた機能を満たし、性能的にも素晴らしいライブラリで、諸々実験してみた結果いけそうな手応えを得て、描画はこちらを採用としました。(なお LovyanGFX は 二条項BSDライセンスです)

サウンド

こちらも M5UnifiedSpeaker Class があり、サウンド再生時のノイズ軽減他、機能性能ともに十分なものです。
ただ M5Unified を採用すると先述の M5Stack との競合が発生するのと、SDカードからのストリーミング再生と絡ませる為、該当部分のコードを自作ライブラリに取り込んで改造して使用しています。(なお M5Unified は MITライセンスです)

SDカード

M5Stack のライブラリでもSDカードアクセスは可能ですが、いくつかのバージョンで不具合があった為、SdFat を採用しました。(なお SdFat は MITライセンスです)

自作ライブラリ

MITライセンスで公開しております。

goblib

古の時代の自作ライブラリとコード群を掘り出して、整備改良追加したものです。
こちらはハードウェア非依存。

goblib_m5s

M5Stack 依存部分の自作ライブラリです。

アプリケーションクラスによるメインループ

LovyanGFX のサンプルにある MovingIcons を移植してみます。