ESP32を使ったゲーム機 "o-bako"
”o-bako” とは最近僕が作っているゲーム機です。
ESP32と128×128の液晶、アンプとスピーカ。十字ボタンとA,Bボタン、スタートボタンを搭載しています。
さらにPS/2キーボードが接続できるようになっています。
ESP32-DevKitC を利用しており、arduino-esp32を使うことで、Arduinoのようにプログラムを組むことができます。
3Dプリンタで簡易的なケースも作成しました。
構成としては最近話題のm5stackと似たようなものです。
また、Lua言語のインタプリタを動かせるようになっており、Luaで書いたプログラムを実行することができます。
さらにWiFi機能を使ってWebサーバとしても動作します。このWebサーバにアクセスすることで、Luaプログラムを閲覧したり、編集することができます。
o-bako Simulator
o-bakoはまだ開発中なのですが、o-bakoで動かすLuaで書かれたゲームはそれ以外の環境でも、理論的には動かすことができます。
パソコンでプログラムを書いて、o-bakoに転送し、動作を検証し、という作業を効率化するためにブラウザで動作するo-bakoのシミュレータを開発しました。
理論的にはこのシミュレータで動作するように書いたプログラムは、o-bakoでも同じように動作します。
いまのところo-bakoが定義している命令は下記の9個だけです。(まだ追加する予定ですが、それほど大きく増やすつもりはありません。)
tone(no, freq, vol) | 音を鳴らす(no: 0-2, vol: 0-255) |
spr(x,y,w,h,sx,sy[,sw,sh]) | (x,y)にspriteを(sx,sy)からサイズはw,hで描画する。sw,shを設定すると拡大、縮小できる。 |
pset(x,y) | (x,y)に1ピクセルのドットを描画 |
color(r,g,b) | ペンの色を[r,g,b]に設定。(r: 0-255, g: 0-255, b: 0-255) |
text(s,x,y) | (x,y)に文字列sを描画 |
drawrect(x,y,w,h) | (x,y)にサイズw,hの四角形の枠線を描画 |
fillrect(x,y,w,h) | (x,y)にサイズw,hの四角形を塗りつぶす |
fillcircle(x,y,r) | (x,y)を中心に半径rの円を塗りつぶす |
btn(n) | ボタンの入力を取得 ボタンを押してからのフレーム数が返る |
テキストエリアにプログラムを書き込んで「Execute」をクリックするとゲームが動作するので、試してみてください。
ゲームプラットフォームとしての"o-bako"
最近Arduboy, Gamebuino, Pokittoなど様々なゲームプラットフォームが出てきていますが、それぞれで作ったゲームはそのゲーム機専用になってしまい、ほかのプラットフォームでは動作しません。
Luaのようなもうすこし高レベルの層を定義し、それに向けたゲームを作るようにすることで、ほかのプラットフォームでも簡単に動作するものができるのではないか?と考えています。
LuaはC言語が動作する環境であれば、非常に簡単に移植することができます。(メモリ、CPUがそこそこ必要ですが・・)
とか書きましたが実際のところは僕が作ってみたいので作ってるだけです。生暖かく見守ってください。