ESP32を使ったゲーム機"o-bako"のシミュレータを開発した

ESP32を使ったゲーム機 "o-bako"

”o-bako” とは最近僕が作っているゲーム機です。

ESP32と128×128の液晶、アンプとスピーカ。十字ボタンとA,Bボタン、スタートボタンを搭載しています。

さらにPS/2キーボードが接続できるようになっています。

f:id:inajob:20180527165238p:plain

ESP32-DevKitC を利用しており、arduino-esp32を使うことで、Arduinoのようにプログラムを組むことができます。

f:id:inajob:20180527175931p:plain f:id:inajob:20180527175958p:plain

3Dプリンタで簡易的なケースも作成しました。

f:id:inajob:20180527180919p:plain

構成としては最近話題のm5stackと似たようなものです。

また、Lua言語のインタプリタを動かせるようになっており、Luaで書いたプログラムを実行することができます。

さらにWiFi機能を使ってWebサーバとしても動作します。このWebサーバにアクセスすることで、Luaプログラムを閲覧したり、編集することができます。

 

f:id:inajob:20180527174542p:plain

o-bako Simulator

 o-bakoはまだ開発中なのですが、o-bakoで動かすLuaで書かれたゲームはそれ以外の環境でも、理論的には動かすことができます。

パソコンでプログラムを書いて、o-bakoに転送し、動作を検証し、という作業を効率化するためにブラウザで動作するo-bakoのシミュレータを開発しました。

inajob.github.io

 

f:id:inajob:20180527171658p:plain

理論的にはこのシミュレータで動作するように書いたプログラムは、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のようなもうすこし高レベルの層を定義し、それに向けたゲームを作るようにすることで、ほかのプラットフォームでも簡単に動作するものができるのではないか?と考えています。

LuaC言語が動作する環境であれば、非常に簡単に移植することができます。(メモリ、CPUがそこそこ必要ですが・・)

 

とか書きましたが実際のところは僕が作ってみたいので作ってるだけです。生暖かく見守ってください。