[This is a series of posts on the development of Voxatron. The game is available in alpha form and buying a copy entitles you to all future updates. There's also a development plan and a FAQ]
Voxatron Team Size Doubles
Until the first alpha release of Voxatron I had been working mostly solo. Usually I like making games this way -- keeping every aspect of the game in mind and letting ideas from different departments interact with each other directly without the pesky need for inter-human communication.
The scope of the project grew somewhat from the original design however, rendering this approach impractical due to the volume of work. Especially in the area of modelling and level design; the planned game world of 1.0 spans a number of environments that all require attention to detail. What Voxatron needed was someone whose aesthetic sensibilities were aligned such that I could treat them as a bionic brain implant. And who could turn out great stuff like a freaky wizard.
With these things in mind, I'm very pleased to welcome Anthony Flack to the project, who is probably best known for his clay-animated games. Mr. Flack will be helping out with level and model design along with additional demo worlds that will ship with major alpha releases. He has already been pushing some serious voxels (pictured) for a sci-fi themed level designed to show off the new features of 0.2.0.
0.2.0 Engine Features & Monster Designer
I was planning on rolling out engine features gradually as they become operational, but as it turns out many of them can (and should) be implemented as one unified system. So the good news is, I'll be bumping the Monster Designer up to the 0.2.0 release (instead of 0.3), and it will be super-flexible for designing levels and characters. The bad news is, it will take a little longer.The scheme for designing objects in 0.2.0 looks something like this:
In the current version you can design one type of object: a static prop. In 0.2, you'll be able to choose between 5 types: MONSTER, DOOR, PICKUP, PLAYER and ANIMATION. These additional types all come with a similar set of properties:
-
Generic physical properties. Hitbox-size (no more tiny doors), density and interaction mode (e.g holograms don't affect other objects and can be walked through)
-
A list of states. Each state has a little animation attached to it and can be used to represent things like a monster shooting, a door opening, or a segment of an animation.
- A list of events. Each event has a condition (IF bump into wall) and an action (THEN jump). They can be used to define (among other things) monster behaviour and the transition between different states under different circumstances.
This set of properties should allow for a fairly broad range of possibilities: NPCs, speech bubbles, rideable creatures/vehicles and jumping boots spring to mind. After seeing what the BBS community was able to squeeze out of 0.1.*, I have high hopes for 0.2!
Apart from customisable objects, there are a couple of other things that should make it in: persistent worlds (go back to the previous room and all the objects and wall destruction are still there), special voxel properties (indestructible, crumbly) and per-room light effects like moonlight, dusk or ground fog:
Voxatron in a Browser
After discovering that Adobe's experimental C->SWF compiler Alchemy will be officially supported later this year, I was inspired to revisit the possibility of extending my in-house framework to support flash as a target. I'd already done this (kind of) with Zen Puzzle Garden and Chocolate Castle BBS puzzles, which can be played directly in the browser. But now I can compile any of my projects to flash without modifying a single line of code. This also goes for Voxatron, and as horrendous as the idea of running a software renderer in actionscript byte code may seem, the results aren't that terrible.Unfortunately it only manages around 14-20 fps depending on the room complexity, but that's enough to be playable. Also the standard renderer is way too slow running on a virtual machine, so I had to use an orthogonal view (no perspective) as you can see. It needs some work to make it usable, but I don't see it ever replacing the whole Voxatron experience. Rather, it might be useful as a way to preview BBS levels right from the BBS post, and to share levels with people who don't own the game.
GDC & Volumetric Displays
Last week I got back from a trip to San Francisco for another round of GDC and then across to Boston & New York to meet up with other developers and stay with old friends. As usual, the highlights of the trip were unplanned small moments. Last year it was running into the Humble Bundle crew at a party and drunkenly explaining my ingenious idea for a Lexaloffle bundle to launch Voxatron (it honestly didn't occur to me they might want to collaborate on that). This year it was an impromptu tutorial by a Russian lady selling cosmetics on how to covertly stratify prices, Stephen Lavelle showing me a version of Neko Puzzle he'd hacked together running with weird (but equivalent) geometric axioms, and borrowing Evan Balster's accordion for just long enough to be mistaken for a hobo.Just before returning I had one last meeting with some people working on a Volumetric Display. Voxatron is designed from the ground up to run on such displays -- in fact, what you're seeing when you play the game is a simulated volumetric display reading from a voxel video memory buffer. The idea is that once a display is available, I can send the memory buffer to the display rather than projecting it onto a 2d surface (your screen). After seeing a demo of an actual physical prototype, and talking with the engineer about how to hook it up with (say) a computer game, I'm more excited than ever about the prospect of seeing Voxatron running in its natural environment within the next year or two. I'll post here as soon as I can talk about anything!
New Lexaloffice
Lexaloffle is now located in the heart of Kichijyouji (on the West side of Tokyo) on the top floor of this skinny building. Right now there's a storm going on and the whole thing is shaking around and leaking like a boat. But for the most part it has been a great place to work in so far.Later this year, we're going to get experimental and open the space up to the general public 3-4 days a week. If you will, imagine the combination of a showroom, game jam venue, art space, shared office and a hackerspace all mushed together. Now, scrunch it down into a little ball, and that's roughly what Pico Pico Cafe will look like. I hope some of you who are in Tokyo or stopping by will have the chance to drop by to say hi once it's open.
0.1.9 Coming Soon!
I've had my sights on the medium term goal of finishing the Voxatron engine for a while now, and while I think this strategy is more efficient and will produce a better game in the long term, it doesn't produce a much Shiny New Stuff (tm) in the short term. The new plan for 0.2.0 doesn't help this situation, as it has become an all or nothing monster of an update. The sci-fi level I'm making with Anthony for the 0.2.0 release is potentially fairly hefty too -- by some standards it would weigh in as an entire game.For these reasons, I've decided to take a detour for the next couple of weeks and hack some code and content into the game willy-nilly! There are a few new monsters I've been itching to add, and always put them off until the new object designing system to reduce mess. I'm aware now of the risk that Voxatron development now is too tidy -- an opaque chrysalis that is all promise and no butterfly. I say, let's slice that thing open a bit and wrench some half-developed butterfly out.
Here's what I'm planning to add for an update that will be out at the end of next week:
- new weapons: grenade, sword of enternity (replaces _dojo), no_weapon
- new monsters: doom-like exploding barrel, speedy gremlins, bullet hell boss, spikey weed
- indestructible voxels
- 2-way doors
- controllable camera angle
- screenshot button
What about Emscripten to compile the game in JavaScript, so that it can be played in a HTML5 capable browser (with canvas and/or WebGL support) instead of Flash?
https://github.com/kripken/emscripten
I want to try that sometime, but I suspect it will be too slow. Voxatron (and my other games) rely heavily on memory access without range checking, which actionscript bytecode seems to be reasonably good at. e.g.
void blit_1d(unsigned char *src, unsigned char *dest, int len){ for (x = len; x; x--) if (*src) *dest = *src; src++; dest++; } |
I think the restrict keyword can give you a performance boost ( at least in native ) :
http://en.wikipedia.org/wiki/Restrict
I'm wondering if it would be better to do that ( I think the compiler might optimize that, but hey, you never know ) :
unsigned char srcval = *src++; if (srcval) *dest = srcval; dest++; |
Anyway I love your project :)
I can see you have been busy, looking very nice.
Looking forward to the update!
Nice to see some activity. I wish that I could come to Japan right now, though wouldn't understand any symbol/letter.
Very excited for 0.2!
Begin volumetric display research.... NOW!
Zep, have you actually tried marketing your game to people who are researching volumetric displays ? They might want to show your game at a trade show or something. As far as I know Voxatron is the only 100% voxel game so far. They could use Voxatron as a demo for their device. I know you contacted one team, but more may be interested.
Quake 3 is a common choice for researchers, including raytracing engines etc.
@tom.K
It's ok, everyone here understands international mime language
@b0rsuk
Interesting how iD games have become a kind of benchmark for new platforms, because they're open source and familiar. But in this case, not so meaningful to display the game world as a cropped section (which of course Voxatron is designed for). I am trying to reach more researchers and manufacturers with the ultimate goal of getting my hands on a prototype.
I'm contemplating also trying my hand at a spinning mirror system, but I don't have much experience with hardware:
http://en.wikipedia.org/wiki/Spinning_mirror_system
Heh, I knew I shouldn't break my no-ETA policy. I have a couple of monsters and 2-way doors to go -- new ETA is Monday night (Monday morning US time).
I also added speed and jump height parameters to custom-made characters. It's another temporary hack that will be made redundant in 0.2, but quite fun to play around with.
random thought, but a voxal text editor thing would be useful for dialog.
Eventually scripting will take care of things like dialogs that need text, using commands like:
speech_bubble(old_man, "Take this lantern with you. It will be dark soon.").
But there is a quick hack that might be worthwhile in the meantime: typing lines of text into the console that are drawn using a voxel font (like this one). There are a couple more things I want to squeeze in to 0.1.9 tomorrow, so I'll try this too.
Here's a preview of 4 new monsters for any of you patiently waiting:
A hound that leaps towards you when it gets close, a spiky weed that multiplies until it fills the whole room, 3-eyed monsters that shoot laser-ish things, and cockroaches that can climb up walls.
Is the spiky weed inspired by DROD: Journey To Rooted Hold ? Or just kudzu ? Will 1.9 still contain the doom barrel ? The explosion should probably be smaller. I can't wait to make a room where player has to deflect missiles with a sword or one of them will hit a barrel and trigger a chain reaction.
I love the idea of cockroaches. Should be tricky to fight in rooms with lots of obstacles.
I had to look kudzu up on wikipedia. That stuff is amazing!
The weed is more inspired by Spheres of Chaos, which has a type of flower that multiplies. In SOC it creates interesting dynamics because you sometimes need to keep a couple of shooting enemies around to keep the flower population down.
Speaking of DROD though, the cockroaches are quite similar. They move at roughly the same speed as the player so you can't simply outrun them. You need to either funnel them into a manageable stream or find something to hide behind.
0.1.9 also has the doom barrel. I look forward to playing room-full-of-mousetraps style levels.
Oh zep, you and your ETA's. Can we just use the term "Soon." to save time and effort.
Sidenote: Did your avatar just blink at me?
Oh, I do own Spheres of Chaos (not the modernized version, though). When I paid for full version I was mildly disappointed to find out the game is ... repetitive. Unfortunately, new enemies are always introduced in the same order. It would be much more fun if they were introduced randomly, and I mailed the author. Not that it helped, I'm afraid.
Your description of cockroaches sounds like they don't slow down when climbing walls. Hmm... So they can basically scale walls instantly ? Don't spend any time on the wall ? I thought it would be possible to see them going vertically.
There's strange elegance to roaches in DROD. If advancing column of roaches is...
= 1 roach wide: you can advance and kill them all
= 2 roaches wide: you can hold your ground and kill them all
= 3 roaches wide: you can kill some but you need to yield ground
I'm uncomfortable to admit I'm like zep when it comes to giving estimates. Programming usually takes me longer than expected. The devil is in details.
Alright, change of plan! It's 11am, and I've just finished 0.1.9 after a 20 hour hacking spree. I'd better get some sleep before I test and package it. The most exciting feature that I really wasn't planning on tackling until around 12 hours ago, is use-once doors. There are now 3 types of doors:
- pink: as in 0.1.8 and earlier
- green: 2-way doors that allow you to move back and forth between rooms
- blue: use-once. Once the player enters a blue door it disappears and this change is stored in the save game data
This means it's now possible to have map-like worlds where you can complete areas in any order, or areas that have health/pickups that you can only collect once. It also means you can change the target room of a door the second time it is entered by putting a use-once infront of a regular door.
To complement this, it's now also possible to include multiple starting position actors in a single room. For each one, there is an extra field to specify which room the player is coming FROM in order to apply that starting position.
It seems to be working beautifully so far -- you can drop out of a game after any combination of coming and going to rooms through different doors, and the persistent door state maintains integrity.
ok, so I'm mostly excited about these doors, but the new monsters turned out quite nice too. I spent a while tuning the exploding barrels so that they work in a few important scenarios, including the one b0rsuk described. Here's a few screenshots showing a red grunt ruining everyone's day:
I had the roaches climbing walls vertically at the same speed, but I couldn't get it to look and feel right. Maybe something I can revisit later. For now they start flying to follow you up to high places. It has similar gameplay implications and is still pretty creepy.
Finding a narrow walkway to lead them into works out in a roughly similar way to 3 drod cases, just because of limiting the required rate of extermination. It's maybe as close to an analogue DROD as you can get! But without all of the beautiful emergent properties.
I had exactly the same experience with SOC. I really enjoyed the demo as it had some structure just by being short, and so the focus was on score optimisation -- knocking the pickups around to get ridiculous compound multipliers. That's what created the novel situations to deal with that I enjoyed, even though the monster introductions were the same each time. But after buying the whole game I felt it dragged on and felt somewhat inconsequential. The arcade mode in Voxatron suffers from the same problem currently, I think. I need to rework it so that each session leads you into a more varied range of circumstances.
This is fun, this is a fun time. It's always during mid-spring when this part happens, everything I follow starts predicting updates, so its a waiting game. From there to E3, its all cool. But after E3? It's an even BIGGER waiting fest because someone thought it was cool to tease us with cool games coming out in 5-6 months.
On topic, I like those barrels. Its kind of funny, throughout the day today, I was trying to remember DooM E1M1's song, costantly singing the one that goes "Duh DUUH duh, duh DUUH DAH DUUH DUH duh" I think which was E1M5's song, but I got it around 10AM and was all happy, kept shredding the notes with my mouth guitar, but then I forgot it again 'til 7PM and have been singing it since. I was also in a heated debate about Doomguy vs the Imperium of Man. Obv, Doomguy would win, right? RIGHT?
Wait, I got off topic again.
Alright, the new builds are finished and in the tube. I'll make a usual update post when they're live.
I added some more stuff today which I think finished it off nicely: indestructible voxels can support floating areas, a trigger for use-once doors (e.g. finish 5 areas and then a door to a boss level opens), a base weapon system (you can have no weapon or a sword instead of the peagun), and the voxel text drawing thing.
[Please log in to post a comment]