Log In  

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.]

Lua Scripting


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)

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).

Warning: Experimental!

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.

Cartridge Format

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)
Added: set_room()
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!

P#60448 2018-12-31 06:00 ( Edited 2018-12-31 06:11)


So glad to see voxatron getting such a major update :) Lua API is ice, so fun to work with!

P#60449 2018-12-31 06:46

Looks amazing!

P#60450 2018-12-31 08:56

Aaah, thanks for the global changelog. I look forward more updates on the scripting part.

Are you already hiding secrets in Vox's API like Pico had or are you planning to change undocumented functions?

P#60451 2018-12-31 09:47

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.

P#60466 2018-12-31 18:31

Fullscreen doesn't seem to work on Ubuntu 18.04 (GNOME + x.org + Intel graphics), it displays as an off-center window without borders. Windowed mode works fine.

P#60467 2018-12-31 18:43

This looks great. I don't own Voxatron myself, but still really cool.

P#60468 2018-12-31 20:01

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.

P#60554 2019-01-04 01:33
/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found

on Debian stretch, which has glibc 2.24.

P#60802 2019-01-13 22:42

wow... and update!

Maybe I'll look it up, It's been a while.

P#61207 2019-01-25 17:50

welcome back Kling :)

P#61235 2019-01-26 20:31

I'm glad to see this finally get an update, and one that might bring in many of the Pico-8 fans into Voxatron as well. I've taken a look around the new menu and have found that, while confusing at first, I do enjoy it's format.

@zep What exactly is the factor that decides what games get put on the featured list? I am greatly appreciative that three of my games are on that list, but the new updates have made them fundamentally broken. If it's possible I'd like to request their removal from the featured list, as the state that they are in is not really representative of my actual work.

I might get back into this, probably just so I can update my old games to be playable in the new version.

P#61316 2019-01-29 01:52

Hi Jauq long time no see :)
look forward seen more of your work :)

P#61319 2019-01-29 03:40

Wowza! A new update! :)

Didn't really expect to see one again. Nice job! I might try and make something again but I'm starting to get busy with developing my own game. :)

P#61446 2019-02-01 20:28

Please add support for raspberry and arm in general! :)

P#63252 2019-04-05 04:19

I've tried importing p8-files into Voxatron, but it crashes for me on OSX. Can I help you debug that somehow?

P#63926 2019-04-24 11:08

would love to help get the bugs fixed.

scripting crashes, lighting crashes, pico-8 import crashes... :(

P#64534 2019-05-18 01:43

good work! Glad to see voxatron is one step closer to completion.

P#64539 2019-05-18 05:16 ( Edited 2019-08-16 01:00)

I've just tried Voxatron with The Looking Glass under Linux (current Mint). Either the Linux version doesn't support the display or the 3d effect is next to non-existent :D the game appears as a flat surface at the back of the display. Also it says the resolution is 1920x1080, so not the native resolution of the display.

P#66056 2019-07-23 19:57

I've tried the Windows version under Wine with the exact same results. The game itself runs fine, but I'm stuck with 1920x1080 and no 3D effect.. ;(

P#66057 2019-07-23 20:05

Debian Stretch getting snubbed? Still get the error reported back in January. Seems like not much support for any of these projects in quite some time...

P#66688 2019-08-15 01:52 ( Edited 2019-08-15 01:58)

Hello! I’m coming from pico-8 and couldn’t find how to run local carts. I saved a few from the forum, tried "vox -run game.vx.png" which didn’t work, then moved the carts to ~/.lexaloffle/Voxatron/carts but nothing shows up in the voxatron cart explorer. Is it required to be online to play carts in this version of the program?

P#72307 2020-01-27 20:37

To load carts from the forum;
to play and modify, you need to: load carts in designer.
Hope that helps.

P#72557 2020-02-01 03:15

My question was only about directly playing a cart saved as a local PNG file, without modification (a console mode ignoring the editor/designer parts, like pico8 -run or emulators).

P#72633 2020-02-02 22:26

Hi @merwok
There isn't currently a way to access local carts from inside Voxatron's splore, but this is arriving in 0.3.6 (no eta yet though, sorry!). It is currently possible to play BBS carts while offline though, after downloading them once they should stay available (either in any cached cart listing or in your favourites list).

P#72789 2020-02-05 19:07

That will work for now! Thanks for replying.

P#72810 2020-02-06 04:31

@joelekstrom and @Firebird
I'm getting that problem too. I really want to play the game I made, CandyColt Classic ( https://www.lexaloffle.com/bbs/?pid=74100#p ), on Voxatron. PLEASE tell me how to fix this.

P#74759 2020-04-15 01:34

@zep I can't load .p8 carts (Celeste in particular) into the editor.

My Voxatron game also does not save progress, even after adding a 0 folder to the saves on version 0.3.5b

P#78730 2020-06-30 22:54 ( Edited 2020-07-06 03:59)

How come updates on Voxatron are so slow?

P#81368 2020-08-30 13:57

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-04-19 09:35:57 | 0.051s | Q:62