Git Product home page Git Product logo

o-bako-esp32's Introduction

o-bako esp32

o-bakoのESP32バージョンです。

o-bakoはLuaで記述するゲーム開発プラットフォームです。 ブラウザでゲームを開発し、そのままのソースコードがゲーム機上でも動作するのが特徴です。

o-bako-esp32 はo-bakoのESP32実装です。

ターゲットボード

自作基板

ESP32-DevKitCを使った自作基板です。 詳細は後日公開予定です。

M5Stack

M5Stack Basicで動作確認しています。 facesには未対応ですが、対応予定です。

本来o-bakoは十字キー + Start,1,2ボタンを想定していますが、M5Stack Basicには3つしかボタンがないため 下,Start,右ボタンのみが有効です。

ビルド環境

platformioを利用しています

ビルド+アップロード方法

リポジトリのクローンとサブモジュールの更新

$ git clone [email protected]:inajob/o-bako-esp32.git
$ git submodule update --init --recursive

ビルドとm5stackへのアップロード

$ platformio -e m5stack --target=upload

M5Stack-SD-Updaterを使った実行

M5Stackの場合はM5Stack-SD-Updaterが利用できます。 その際はo-bako.binをダウンロードしてSDカードに入れてください。

初期起動時の作業

SPIFFSの /init/main.lua /init/sprite.bmp を読み込もうとしますが、初期起動時には存在しないためエラー画面になります。

o-bako通信モード

o-bakoは3つの通信モードがあります

  • 通信なしモード
    • 接続が不要の場合は通信なしモードで十分です
    • 起動時はこのモードです
  • APモード
    • o-bako自身が無線LANのアクセスポイントになるモードです
    • PCはo-bakoに接続できますが、インターネットには接続できません
    • WiFiの設定や、初期スクリプトの導入で利用するのが良いです
  • STAモード
    • o-bakoとPCを同じWiFiネットワークに参加させます
    • 事前にSSIDとパスワードの設定が必要です(後述)
    • 通常はこちらのモードを使うのが良いです

APモードに切り替え

M5Stackの場合、**のボタンをしばらく押して、メニューを出してください。 WiFi APを選択し右ボタンを押すと、APモードになります。

下記のような表示が出ます。

Starting WiFi...

o-bako-XXXXXX
ZZZZZZZ
192.168.0.1

o-bako-XXXXXXはWiFiのSSIDです。(XXXXXXは実行の度に変わります。)ZZZZZZZはWiFiのパスワードです。 192.168.0.1はo-bakoのIPアドレスです。

手元のパソコンを上記WiFiに繋げます。

ブラウザから http://192.168.0.1/list/ にアクセスし、o-bako-file listが表示されれば準備OKです。

ランチャーの書き込み

example/upload.sh を実行します。

$ example/upload.sh init
upload /init/sprite.bmp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 51941    0     4  100 51937      0   7225  0:00:07  0:00:07 --:--:--     0OK

upload /init/main.lua
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   664    0     4  100   660      3    503  0:00:01  0:00:01 --:--:--   509OK
$

実行が終わると、転送したプログラムが実行されます。 以降は電源を入れると、/init/main.luaが実行されます。

ダウンローダーの書き込み

このタイミングで入れておくと便利なので、ゲームダウンローダーも入れておきます。

example/upload.sh downloader を実行します。

ランチャーの使い方

/init/main.lua は上記でランチャーアプリが書き込まれます。

  • タブの移動
    • 右のキー
  • カーソルの下移動
    • 左のキー
  • 決定
    • **のキー

で操作できます。

fileタブでは、Luaのファイルを選んで実行ができます。Lua以外のファイルを選ぶと実行時エラーとなります。

utilタブでは下記が実行できます

  • reload
    • /init/main.luaを再読み込みします
  • wifi on
    • STAモードでWiFiを有効にします。事前にSSIDとパスワードの設定が必要です
  • self wifi on
    • APモードでWiFiを有効にします
  • reboot
    • マシンをリブートします。
  • tone on
    • 音のテストです。音が鳴り始めます
  • tone off
    • 音のテストです。音が止まります。

ゲームの編集

WiFiの有効化

ゲーム起動中に真ん中のボタンを長押しするとメニューが出ます。 右ボタンで項目の切り替え、**ボタンで項目を決定します。

(ゲームによってはこの機能は動かないことがあります)

  • WiFi AP
    • APモードでWiFiを起動します
  • WiFi STA
    • STAモードでWiFiを起動します。事前にAPモードでWiFiを起動し、SSIDとパスワードを設定しておく必要があります。(後述)
  • load /init/main.lua
    • /init/main.luaを再読み込みします。

既存のゲームの編集

http://<o-bako-ip-address>/list/ にアクセスするとファイル一覧を見ることができます。

  • view
    • そのファイルをテキストとして表示します
  • edit
    • そのファイルを編集します
  • html
    • そのファイルをHTMLとして表示します
  • DELETE
    • そのファイルを消します

ゲームの新規作成

ゲームを新規に作る場合は

http://<o-bako-ip-address>/edit/<gamename>/<scriptname>.lua にアクセスすることでファイルを作成することができます。

<gamename>, <scriptname>は好きな名前を決めてください。

またゲームに使うビットマップ画像をアップロードする必要があります。 WebUIからはまだアップロードできないので例えばcurlを使って次のようにしてアップロードします。 ビットマップ画像は256色(8bitパレット)で128x128のもののみ利用できます。

$ curl --data-urlencode "body@<filename>.bmp" http://<o-bako-ip-address>/file/<gamename>/sprite.bmp

このリポジトリのexample/にm5stackでも動作するゲームの例があります。参考にしてみてください。

WiFi STAモードのための設定

まずはAPモードでWiFiを起動します。ランチャーのutilタブからself wifi onを選択してください。

その後ブラウザからhttp://192.168.0.1/setting/にアクセスします。

STAモードで接続したいWiFiのSSIDとパスワードを入力して、送信してください。

設定は/setting/wifi.confに保存されます。

o-bakoでのプログラミング方法

基本的にはLua言語で記述します。 https://inajob.github.io/o-bako-simulator/index.html の下のほうにo-bakoで利用できる関数の説明があります。

依存ライブラリ

o-bako-esp32's People

Contributors

inajob avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.