Chip Off The Old Blocks: Voxel Quest

By Adam Smith on March 31st, 2014 at 6:00 pm.

I’ve spent half an hour of my afternoon watching the Voxel Quest March update. It’s only fifteen minutes long but I went back in for a second viewing as soon as it finished because I realised I must have nodded off during the most important bit. The video shows a delicious voxel engine, capable of showing fantastically splishy-splashy water as well as lovely, warm cottages and trees which display their age rings when they’re bisected. It’s extraordinary to look at and developer Gavan Woolery talks about Dwarf Fortress, roguelikes and narrative elements in a soothing, world-weary tone. But when I got to the end, I didn’t know who I would be in the game or what I would be doing. I felt like I’d been on quick tour around a world that I might have no place in.

Embarrassingly, my second viewing didn’t clarify very much. I ended up being lulled into a state of inactive calm by the changing scenery and mustn’t have been listening when Gavan was describing what it’s all about. It’s an RPG – I think I heard that at one point and the word ‘Quest’ is a strong clue – but I don’t know if I’ll have a party, or if I’ll be running around biffing orcs rather than performing quiet acts of dendrochronological research.

To the official Voxel Quest website, then, so we can find out more.

Like most roguelikes, the game is designed for relatively quick playthroughs: level fast, die fast, no grinding. I was inspired by many card games (similar to Magic the Gathering or Hearthstone) and a few nontraditional roguelikes such as Spelunky and Desktop Dungeons. Seemingly, the best games change your circumstances and push you out of your comfort zone via different permutations of a familiar set of rules (Chess, for example, has very few rules, but each board arrangement is kind of its own mini puzzle, and there are countless permutations for any given game).

Every single game mechanic is deterministic – there are no dice rolls or random chance (which makes my company name a bit ironic I guess). I made this choice because I wanted a game in which any scenario was based purely on skill, rather than depending on chance rolls like critical hits. It also makes the AI a bit easier to implement as there is less need for fuzzy logic or probability calculations. The one area that is ruled by random chance is world creation – you might get a world that is generated in your favor or not, but either way there is a deterministic path to cope with whatever you are up against.

YES. This sounds good. A lot of the discussion about AI and its importance to the game is covered in the video but you should read these next paragraphs anyway because they might just make you dance with delight.

To be clear, I am not building an “ultimate” AI that can comprehend English and so forth – the AI will actually be very crude.

These include such things as score maximization (used for pathfinding, planning, and traversing action trees), reconnaissance/knowledge gathering, deduction (propositional logic, queries, backwards chaining), and collaboration. The AI operates under a unified mechanism that basically attempts to maximize the NPCs “score” on any given turn by maximizing their comfort, wealth, social standing, and so forth – directly or indirectly, using some combination of their skills and existing knowledge.

The AI can and will do everything you can do, including pursuing artifacts, conversing with other NPCs to attain knowledge, and even lie, steal, or kill. This is by no means a perfect AI, in fact, it is very crude. The key is abstraction – a minimal set of rules are abstracted, and the AI makes new and surprising deductions based on this rule set (if you are familiar with languages like Prolog, you already know how this works — if not, Google it). Since the entire world is procedurally generated, it is ideal for the AI – it understands that a room is part of a house is part of a city block which is part of a city. If a model were imported from an external program, it likely would have very few properties that describe the characteristics of the object beyond the placement of vertices, normals, and texture coordinates.

Going beyond this, I have something that I think will make VQ truly stand out: I have come up with a method of abstracting traditional storytelling mechanisms into gameplay mechanics, which is actually mostly a result of the way the AI is setup.

I’ll leave you to check out the rest for yourself.

Super exciting. One last snippet.

VQ is 100 percent procedurally-generated at this point – the only trivial exception are some heightmaps from NASA, but even those are fed into a procedural generation algorithm to produce new and unique terrain. In the future, many entities will likely be manually generated in external programs, such as items and possibly characters. The entire program is only a few megabytes in size, which is mostly libraries that it uses.

Dropping the NASA bomb.

, , .

34 Comments »

  1. grimdanfango says:

    Very interesting demo. The aesthetic reminds me strongly of the first Little Big Adventure game… it has the same chunky isometric feel to it… except this is using some damned clever tech rather than a static 2D tileset. Oh, how wonderful it would be to see a new LBA game built using this engine :-)

    The waving grass effect is rather strange though. It appears to be defined in voxel-coordinate space rather than world-space, so it stays the same scale when they zoom in and out. Wouldn’t matter for a fixed zoom level, but looks bizarre otherwise.

    • Premium User Badge

      gavanw says:

      grimdanfango: yeah grass is still a bit buggy, it renders in screen space with polygons. It can be fixed, just has not yet been tended to. :) Anyhow, another person brought up LBA – I’d be thrilled to see what people do with the engine – I’m guessing everybody will make much more interesting stuff than I can.

      • grimdanfango says:

        Hehe, I get the feeling the Little Big Adventure boat has well and truly sailed these days (although I suppose with Kickstarter around, nothing’s impossible :-P). There was just something deeply satisfying about the feel of that game, and I really got a sense of it looking at your demo video.

        How do you plan to work animated characters into the engine? Would you be converting those from a deforming polygon mesh on the fly? I presume animating voxels directly is somewhat of a no-go area.

        Fantastic work anyway, really love the dynamic lighting, and great to see you explaining the workings to people on here. I very much look forward to seeing what you build with this!

        • Premium User Badge

          gavanw says:

          grimdanfango: Thank you for the praise! Not everything will necessarily be procedurally generated and/or made of voxels in the future, I have to weigh things out and see what makes sense. In the early (placeholder) stage, I will probably use stock models and a traditional character animation pipeline, although I have to say there may even be no character animation initially (think of it like moving around board game miniatures, its a feature, not a bug! :D). I really have to prioritize features and get a game in there first, and then I can polish it up more. :)

        • Premium User Badge

          Ninja Dodo says:

          Not the only one reminded of LBA, then. Please keep this art-style. Impressive work.

          @grimfandango: Maybe not. The first game was just re-released for Android and iOS. If it does well maybe they’ll do a new one.

  2. BTAxis says:

    Despite my aversion to roguelikes, I’m quite interested in how this is going to work out. Looks like it still has a long way to go before it’s an actual game though.

    • Premium User Badge

      gavanw says:

      Yes, still early stage — 8 months in, 3 years to go from here on my current timeline, but this also depends on whether or not I can eventually be in a position to hire other people (its just me working on it right now). Anyhow, thanks for your interest!!

      • Premium User Badge

        gavanw says:

        Also, I should add, in the spirit of many modern indie games, alpha access will occur long before the game “goes gold” – right now public alpha access is slated for this coming September.

  3. zer0sum says:

    My thought is that this looks like an incredible game engine that is very unlikely to become any sort of actual game. The video doesn’t show anything even remotely resembling gameplay, likely because there isn’t any! But who knows, we’ll see!

    • Premium User Badge

      caff says:

      Hopefully there’s someone out there who’s looking for something that does exactly what this engine offers.

    • Premium User Badge

      gavanw says:

      zer0sum — You are absolutely right, it is little more than an engine at this point (on my site, I cover the “make games, not engines” thing a little bit). Basically, I agree; I only built an engine because I really want to give people something good to mod without having to worry about getting their own license to an existing engine. That, and I couldnt find an engine that did what I wanted it to very well. From here out I am focusing on gameplay primarily. :)

    • zbeeblebrox says:

      Hey, not having a game worked out alright for the guy who made Voxel Farm. That’s the engine behind EverQuest Next and Landmark! :D

  4. Muzman says:

    Frankly, finding the voxels looks piss easy.

  5. Premium User Badge

    gavanw says:

    Developer here. Thanks so much RPS for covering my game, you are my goto news site for gaming (and I’m not just saying this, I really read your site every day). And thank you for covering it well, this was a great summary!

    • RanDomino says:

      All of your words match the profile that OKCupid suggests for me as an ideal life partner, except for the bit about determinism. Random elements both create interesting stories when something unlikely happens, and allow people the option of going for broke by trying a plan that’s inconsistent and has a lower average but has a slim chance of success over a stratagem that’s more consistent and has a higher average but no chance of success.

  6. guidom says:

    when i see those beautiful trees, i can only imagine them being blown into voxelised chunks by an RPG. explosives demo please!

    • Premium User Badge

      gavanw says:

      guidom: my todo list has a new item:

      - Implement rocket-propelled grenades and tree explosions.

  7. DarkFarmer says:

    great work, this technology looks incredible. will you be able to script instructions on how to proc gen things like your town houses there?

    • Premium User Badge

      gavanw says:

      DarkFarmer: Thanks! there are multiple ways to mod. Currently, you can modify various data structures in the program via a websocket connection through the included editor (editor has a early preview on gavanw.com but I really should show it as it currently stands in a new video, I forgot to demo that part). You could even write your own javascript program to make procedurally-generated changes, which is pretty much like procedrually generated Inception I guess. In the future, I am strongly considering built-in Lua support. Additionally, you can mod the GLSL files which determine the look of any resulting shape including materials, structural properties etc (the house segments are single primitives with advanced textures that specify where to place brick, wood, etc). Lastly, there will be direct access to full source code if you have a game key, and you are free to distribute your program to others with game keys without additional royalties (kind of like the Valve model, as mentioned).

      • DarkFarmer says:

        awesome, some things id love to be in the engine that I wouldn’t want to write myself(hint hint :) is 3D perlin-noise TYPE (need not be true perlin blah blah) generation for terrain blocks such as caves or flying islands, and 3d pathfinding. everything else i think I could deal with. very cool, I will be watching you like so much Sting.

  8. valrus says:

    I really like that there is one source of randomness — world generation — and the rest follows from that. I’ve been thinking of that as the “ZAGA principle” (after Michael Brough’s ZAGA-33): If X is a source of randomness and Y can follow from X, you don’t need to randomize Y. I always thought the idea could be taken much further, so I’m excited to see where your ideas lead.

  9. valrus says:

    On a side note, I don’t think it’s cheating at the procedural generation game to use NASA heightmaps. That’s as much a source of functional randomness as an RNG. Taken all the way it’d be a neat press hook: “Oh, yeah, everything’s procedurally generated, but our RNG is the real world.”

    An even sider note: So if a game’s functional random seed is a geospatial point, one crazy thing to do would be to ONLY use the location of the device. So if you want a new world, you literally have to go somewhere else. (Well, or manipulate your location, but still.) So in hardcore mode: “Sorry, you already died in that world. Go somewhere else and try again.”

  10. racccoon says:

    An extreme amount of detailed work and dedication here, incredible, Respect!. :)

  11. Doganpc says:

    I always wanted voxels to make a stand. I remember when they were first put out there (hello 90′s!) and stuff like this was cruder because we didn’t have the horsepower to process that quintillion voxel map… Yay Voxelution!

    • Premium User Badge

      gavanw says:

      Yeah, I played Nova Logic’s Commanche as a kid and I was blown away by THE POWER OF VOXELS (echo, echo, echo) (TM). Never thought that I would be working with them though. :)

  12. Premium User Badge

    DantronLesotho says:

    This looks like it has a lot of promise. I really hope the engine can stand up to full on animations; from what I’ve read, voxel engines can’t do that with any sort of quality. The water and grass look fantastic though!

    • Premium User Badge

      gavanw says:

      Thanks! I think most animations will be done with more traditional methods (the grass is done with polygons but the water is ray marched in screenspace with its underlying volume being voxel based). Almost definitely, particle effects will be billboarded or done in screen space as well. Initially, there might not even be character animation as I already have much to do to get a game in there.