My wife and I recently submitted to a mobile game jam on Newgrounds (yes, it's still around). What started as a question of whether we could do it somehow morphed into whether we could do without so many of the seemingly needless complications rampant in our respective industries. My wife thus did all the art as traditional frame-by-frame animation (no puppets or tweening) and I preceded without a game engine. I did use a pre-processor that gives JS a Lisp syntax (Parenscript), because C-syntax is gross. We hope the end result, while definitely of small scope, will serve to inspire some thought as to what is and isn't needed in your next project.
A few people have asked via Discord why I chose to use `DeviceOrientationEvent`. As far as I can tell, it's the most supported accelerometer API. A cursory [Can I Use](<a href="https://caniuse.com/?search=DeviceOrientation" rel="nofollow">https://caniuse.com/?search=DeviceOrientation</a>) search is misleading because a few search entries combine `DeviceOrientation` and `DeviceMotion` APIs and because earlier versions of the API also have entries. If you search for [DeviceOrientationEvent](<a href="https://caniuse.com/?search=DeviceOrientationEvent" rel="nofollow">https://caniuse.com/?search=DeviceOrientationEvent</a>) itself, you will see it's quite well supported. Mobile Firefox doesn't work, but I haven't been able to get <i>any</i> accelerometer API working on Firefox. The only issues I've really run into is that many Androids you'd expect to have accelerometers don't and that there isn't a canonical "up" for Android landscape like there is on iPhone (lock button is up). I was able to get the top negative reviewer up and running after realizing that he just had to turn his phone the other way around.