Hey look, it's a Voxatron update!
Builds are live on lexaloffle and Humble. If you have trouble accessing your account, see this page. If you own only PICO-8, you can now update to the Voxatron + PICO-8 bundle for the difference of $5 here.
This update folds in a lot of fantasy console work, and is the first time you can see Voxatron in something similar to its final form. It has the usual trappings of a fantasy console: carts with labels (and matching .vx.png file format), a boot sequence, a SPLORE-like interface, virtual cpu limitations, and most notably, a Lua scripting API. The API is a superset of PICO-8's one and can be used to write PICO-8 style programs from scratch, or mixed with built-in engine features.
[A note for returning Voxatron users, including "Humble Voxatron Debut" customers: you can also download PICO-8 with the key that you originally purchased with. And if you don't know what PICO-8 is -- have a quick look here because it is very relevant for this update! PICO-8 started as a playground for Voxatron's scripting system, but grew into the fantasy console concept that this update is based on.]
Here's an example script to get you started. From the main menu, press escape and then select DESIGNER to start editing a new cartridge. To add a script that runs in the default room, select the "New Object" pull-down menu inside one of the Objects tabs and click "New Script". Paste the following:
function draw() for i=0,48,0.5 do local x = 64 + cos(i/16+t()/4)*40 local y = 64 + sin(i/16+t()/4)*40 local z = 10+i + cos(i/7+t())*3 sphere(x,y,z, 3, 8+i%8) end end
You can now jump back to the room (the button at bottom left with the arrow on it), select the new script, and then place it in the room. Hit CTRL-R to run and then ESCAPE to get back to the editor.
You can build whole games from scratch in Lua (PICO-8 style), or add scripts as actor components to customize their behaviour or appearance (see Molly in the default Players folder).
Future versions of Voxatron will load and run earlier carts the best they can, but you should consider scripted carts made with this update to be experimental. In particular: the virtual cpu costs, sphere(), and the palette are going to change over the next few updates.
Also, there's currently no limit on allocating Lua RAM while I sort out stability issues with forcing garbage collection when the limit is reached. But this will likely end up being 4MB or 8MB, depending on what kind of carts show up. Use stat(0) to check memory usage, and feel free to ping me if you're working on a cart that needs a lot of memory so that I can take care not to break it :) (joseph @ lexaloffle)
There is currently no way to manually store data (like dset / dget), but this will arrive during 0.3.* updates along with directly managing the savegame states. In 0.3.5, data created in Lua is automatically stored with a savegame by walking the global table and writing values and tables that aren't prefixed with a single underscore. References to functions are also stored if they existed at boot.
There's also no binary exporter yet. Exporting stand-alone carts is planned for future updates, but I don't have an eta yet.
PICO-8 Cart Support
In one of the Objects tabs, you can import .p8 files using the "Load Item Into Folder" button, and it becomes an object you can place in the room. Because the API, palette and display dimensions are all super-sets of PICO-8's, most cartridges will run with little or no modification. You can use set_draw_slice(z) to indicate which 128x128 slice should be drawn to. By drawing layers multiple times, and using the PICO-8 camera mode (in the room properties top right), you can make thick 2D games. Here's a quick test with Celeste:
Even though Voxatron and PICO-8 now share a lot more in common, I don't expect them to compete with each other. Voxatron is much more complex, and better suited to different kinds of projects. But it is still fun to fool around with PICO-8 adaptations and view old code in a new light.
Cartridges are now called .vx.png and encode data in the low 4 bits of each RGBA channel. They are stored in a staggered order to reduce visible artifacts.
The size limits are lot more relaxed than PICO-8. It is possible to have cartridges up to 1MB compressed, which is around twice the size of the current largest carts. Carts under 256k compressed appear in the png as a single cartridge like the one below, and then extra data >256k is added underneath if needed. The empty label space at the bottom will be for Title and Author in future.
Note that Voxatron cartridges have two labels -- there's the preview screenshot that shows up in the BBS player that you can grab with F7. But also an optional (but recommended!) 60x32 image that shows up in splore that can be edited in the Metadata tab. Perhaps in future we should just let anyone jump in and draw missing labels for any cartridges.
Looking Glass Support
Voxatron now runs on the Looking Glass: a real holographic display! Each frame, the virtual Voxatron display is rendered from 64 different angles, and then weaved into special format that, when viewed on the Looking Glass, gives the appearance of a solid object floating in space. You'll notice that footage of the display often has the camera moving left and right so that you can see the parallax, but in person you can keep your head still and get perfect binocular agreement without any glasses or head tracking.
The Looking Glass is now available and comes with a Voxatron license key, along with an Application Browser that includes a special edition of the new SPLORE for easy access to your favourite carts. For more videos and information, have a look at the Looking Glass website.
I'm also working on support for the Voxon VX1, but more on that later!
Microscripting and Actor Properties
The microscripting and actor editing tools have been completely reworked to be cleaner and more consistent. Microscripting events are also more predictable. For example, there is always exactly one frame that many event conditions are true in order for scripts to react to them via a single update() call: being killed, collected or entering or exiting room. This works regardless of the order that actors are defined, spawned, or are processed.
The Manual is still a little sparse on details, but I'll be rolling out some more demo carts and documentation in January.
Here's a changelist:
Added: gif saving
Added: button states via player object: pl:button(n)
Changed: Player 1 responds to keyboard controls even when control is set to gamepad
Changed: ESC immediate exits when running a cartridge from designer
Fixed: set_world_camera was only taking effect at the end of the frame
Fixed: t() // component time (in seconds) or room time if not inside a callback
Fixed: box() not drawing and kills cpu
Fixed: resource reference sometimes fails when in string form
Fixed: STATE:EXITING microscripting event not shown correctly in menu
Fixed: Removed unused config.txt variables
Fixed: (Windows) missing DLL
Added: Lua scripting
Added: PICO-8 cart support
Added: Splore // replaces BBS CARTS naviagator
Added: Custom labels (with new cart format)
Added: Boot sequence
Added: Extended palette
Added: Alpha demo carts: Hug Arena, Gallery of Curiosities
Added: New object editor with new attributes and behaviours
Added: New microscripting events and activation controller
Added: Looking Glass support
Added: Deep snow and trails
Improved: RAM usage
Improved: Rendering speed
Fixed: Collecting an item with external ammo does not apply collected quantity
Fixed: Patrolling monsters turn when blocked on sides (should only be when blocked in front)
Fixed: Crash when loading very old cartridges using a 64-bit build
Fixed: Jitter when scrolling single player even width / length
Fixed: [many bugs]
Have fun, and I hope you have a great new year!
Is or will there be a feature to rotate the camera while running a Voxatron cart? I know the pause menu automatically does it, but I feel like having manual control over it would open it up to more varied types of games, and would allow other platforms to emulate the view changing you could do with things like the Voxon VX1 by just moving around to view it from a different angle.
I have mixed feelings about Voxatron.
I think I first bought the game years ago at version 0.2.x and I've been waiting for a complete campaign ever since. I actually purchased it twice, the second time with a Humble Bundle, since I misplaced the serial key.
Eventually, I got busy with other stuff and forgot about Lexaloffle games at all. At some point, I started to see news about pico-8 all over the place.
I'm really happy about the success of pico-8! And I feel a bit sad "Voxatron, The Game" (or is it "Robot and the Snow Dragon" now?) won't ever get a full campaign, or so it looks like.
[Please log in to post a comment]