As I continue to work in this prototype, I thought it would be good to document progress here.
I started this project by thinking in interesting ways to play with the crank and the idea was that it might be a good interface to use with a Zooming User Interface also known as ZUI. It's an idea that exists since decades but never really took off.
So the idea was to move around with the D-Pad and zoom in and out with the crank.
Vector graphics tend to work best for ZUI (and that fits my fascination with the Vectrex) so the first step for me was to create a loader for svg files
To implement the zoom the first thing I did was to map element on a Z-Axis and have a camera moving around. Not sure why I went this direction, probably because I didn't want to just have scale and have to implement some LOD system.
With the addition of fadind far elements with a dither pattern, I ended up having a proto with a nice depth effect (but far from the original ZUI idea).
To leverage vector graphics I also adeed the ability to animate the shapes with some tweening which is really cool. I also made the level loop itself to make it infinite so you could basically fly in any direction and always find your way back.
The last things I added (the visible one at least) is that we can rotate using the console accelerometer and also ... Portals!
I can render another level inside a vector shape, with the proper perspective and everything and you can go in to switch the level. I basically render the second level in an image and draw the vector shape in its mask. And the impact on performance is not significant (running at around 30fps on the playdate)
I am far from my original ZUI idea (I will probably still explore it) but I enjoy the result so far. Maybe that's a good base to make some racing/flying game inspired by Vectrex/Pseudo3D racer/Rez and so on...
I did a quick test with interacting with objects so that we can move them in the world.
I really like the feel of changing the size of object relative to each other that goes more toward the ZUI concept. But I also think that moving objects around is a bit cumbersome and I don't really picture a game only relying on that.
You could find items at one zoom level and use them somewhere else in the world at another zoom level.
Also would be cool if collision could work regardless of zoom level. So you can shrink an object to get it through a small gap and then grow it again to fit somewhere else.
After the Playdate Video Update excitement I got to work a bit on a new version of a prototype.
Never underestimate the fun of simply controlling a vehicule. This is just fun to move around.
Right now there is a jump that is prerecorded and not dynamic but using the elevation to have massive jumps could be really fun.
I still need to be conservative with the levels and what I display but it seems the bottleneck is not just the transforming and drawing of the shapes but also simply going through all the elements of a level. I don't want to think too much about optimizing stuff at the moment (maybe I will look a bit more into it with SDK1.1 and the more precise timing functions) but it seems I will have quite some headroom in the future.
In this version I use the crank to speed up or break. It's very rough and doesn't feel particularly good.
The big plus is that I wanted to change the field of view depending of the speed and realize my math behind it was absolutely wrong so I fixed everything. yay!
I have the idea to use the crank to do barrel roll instead. I just did a quick test and this is promising. That might be my next task.