FAQ, Question Thread

edited January 2015 in Announcements
Gavan and the rest of the community have been heavily promoting VQ in all sorts of places: Facebook, Hacker News, Reddit, Twitch, these forums...the list goes on. We're getting a lot of great questions from people who'd like to learn a little more about VQ. I'm going to post some of the most commonly asked questions in this thread description (ongoing process, could take a bit). If you have any more questions, please comment!


How many voxels are we talking about here?
Billions and billions. The engine calculates and stores the positions of all of them, but only the top layer is kept for display. (Edit by Gavan: in isometric mode, only top layer is kept. In perspective mode, only surface voxels are kept)

How does lighting work?
Some lighting is baked in, while spotlights and other light sources are dynamic. For a good example of dynamic lighting, check out this picture. (Edit by Gavan: all lighting is in fact dynamic)

Is this really called "Voxel Quest'?
It is for now, because Gavan needed a domain name that was free. The name may change as development progresses.

Terrain seems to take a long time to load in the videos. What can we expect in terms of optimization?
Right now (Nov 2014), VQ isn't configured to load the correct chunks of voxels, so loading is a bit choppy. That will improve drastically as the algorithm is tweaked. There are a ton of other possible optimizations that haven't been included in the code yet, like loading front-to-back and volumetric mip-mapping.

Can my computer run this?
Short answer - yes.
Long answer - yes, but you might have to turn down the quality on lower-end machines or laptops. Don't worry, it will look great either way! (Edit by Gavan: early builds may not boot up on some computers. We will have to work out these issues over time as I test on more and more machine types)

Will there be physics effects like gravity?
It's a definite possibility, but there are a ton of other features to add to the world first. Like people. :)

I've heard voxels are hard to animate. What's the plan for characters in VQ?
Yep, that is one of the more challenging aspects of working with a voxel-based engine. Gavan has achieved real-time character animations at a high frame rate (but like gravity, animations will be deferred to later on in the development process). For now, characters are poseable figures (see around the 1:00 mark of the kickstarter video for an example, and animation will be added as the project progresses. Particle effects like spell-casting and sparks will be animated.

I want to create VQ mods. What do I need to know?
First, you don't have to be a world-renowned C++ programmer to customize VQ. Many aspects of the engine (especially visual effects and additional items) can be added without modifying the engine itself. Lots of nformation is stored in JSON files.
If you want to get your hands dirty, the VQ engine is written in C++, OpenGL, and GLSL. Gavan compiles it with Visual Studio (there's a free version!) and edits text with Sublime Text.

What sort of camera perspectives does VQ support?
While VQ was originally conceived as an isometric engine, Gavan added a first-person camera during the final week of the Kickstarter campaign. That means that VQ can be modified to support Oculus Rift, castAR, and other viewing modes!

I have more questions about what VQ will be like, and I'd like to contribute my ideas!
Feel free to post general questions here, and we'll try to get them answered right away. For more information about specific topics, definitely check out other forum threads.

Gavan has been great so far about taking into consideration community input. If you have an idea for the VQ engine or game, start talking to people in the forums. When he has time, Gavan reads and often responds to discussion. Also, f you were a part of the Kickstarter campaign, your rewards package may include some tokens that you'll be able to use to vote for specific features. We'll keep you posted on when that is.

Who are you, and why are you writing this?
I'm @PreacherJayne‌, a computer engineering student who really, really likes what Gavan is doing with Voxel Quest. @Talvieno‌ and I are volunteer community managers; we're basically here to serve you and to act as liaisons between Gavan and the community.
Gavan has also appointed a number of great moderators. They know a ton about VQ and games in general. I'd list them all here, but I don't want to miss any. They can add themselves to this post if they so choose. :)


Thanks for being here!
«1

Comments

  • What sort of role does the player have in the game? Are we an individual, a party, or more of a generic force that moves the NPCs around?

    Thematically, how closely are we sticking to Ultima games? What are some changes?
  • PTTG said:

    What sort of role does the player have in the game? Are we an individual, a party, or more of a generic force that moves the NPCs around?

    Thematically, how closely are we sticking to Ultima games? What are some changes?

    There are three game modes currently planned
    1) the standard CRPG (like Ultima, Fallout, etc), a
    2) roguelike mode: short playthroughs and permadeath!
    3) sandbox mode: you have all the power. Control the characters, mess with the terrain like Gavan has showed in the videos, organize a tabletop RPG-like campaign, etc.

    In the first two game modes, the player controls an individual. In the third, you're free to direct the NPCs. (Of course, people might make mods to support parties).

    Gavan has cited Ultima as a rather large influence, so I think we can expect some similar things from VQ -- fully interactable and open world, long-term character progression, lots of details that make the environment seem lifelike. I don't know the specifics of potential story-telling themes yet, but I'll make a note and make sure to find out. :)

    I haven't played much Ultima, so I don't know how linear (or non-linear!) its story is. I do know that VQ will take a Dwarf-Fortress-like approach to story generation.

    Another thing to note: combat will be turn-based, though possibly real-time in the future.

    Does that help?
  • That's really helpful. Looking at the lighting example, are there sub-voxel details (i.e., bump mapping or textures)? I can't tell. Either one will be interesting.

    Hmmm... I'm verging on naivete here, but is it possible to use external data in the procedural generation? I ask because feeding real-earth elevation and climate data into the game and having it fill in procedural detail could be a fascinating experiment. (See Outerra).

    I suppose what I'm really asking is, is that sort of request reasonable enough to pay kickstarter suggestion bucks for?
  • edited November 2014
    @PTTG - I believe Gavan is using Nasa data as seeds for the procedural generation. I'm guessing that could be altered by a modder to more directly represent visually the data being input.

    We'll have to ask Gavan how much time it would take for him to make that change and if its a quick enough change that he could consider making it.
  • edited November 2014
    PTTG said:

    That's really helpful. Looking at the lighting example, are there sub-voxel details (i.e., bump mapping or textures)? I can't tell. Either one will be interesting.

    Hmmm... I'm verging on naivete here, but is it possible to use external data in the procedural generation? I ask because feeding real-earth elevation and climate data into the game and having it fill in procedural detail could be a fascinating experiment. (See Outerra).

    I suppose what I'm really asking is, is that sort of request reasonable enough to pay kickstarter suggestion bucks for?

    I haven't seen the source yet, but as I understand it, VQ doesn't use textures in the normal sense. There are 512 voxels to a meter (edit by Gavan: up to 512, 128 by default, and supersampled down to 32 by default in perspective mode), and they each have a color. The camera uses ray-mapping to convert the visible voxels to your monitor display (I'm sure I'm using the wrong terminology here, but you get the gist).

    As for the external data part, you might want to talk to @Japa‌. He's been considering using the VQ engine as a Dwarf Fortress visualizer. Even if the vanilla version of VQ doesn't include support for using external assets for procedural generation, you can of course look at the source and add what you need to.
  • edited November 2014
    Voxel Quest did at one point use NASA heightmaps for its procedural generation. Whether it still does is a question for Gavan. (which I'll go trundle off to check right now.) Edit: Nope, he's offline.

    Preacher, PTTG is a friend of mine from Bay12, so he already knows about that last bit. Japa is extremely excited about using it. :) He and I were discussing it over Gavan's Twitch stream earlier.

    (Heyaa, PTTG!! :D Nice to see you here! And a warm welcome to Borkyborkbork, too. :) )
  • edited November 2014
    PTTG said:

    What sort of role does the player have in the game? Are we an individual, a party, or more of a generic force that moves the NPCs around?

    Thematically, how closely are we sticking to Ultima games? What are some changes?

    With the new (community-inspired) emphasis on the non-roguelike aspect, there will be full parties. You will start as an individual and recruit whatever party members you want (you also won't be penalized for flying solo - maybe going solo gets you experience faster?). Edit: you can manually control your additional party members or have AI control them, whatever you prefer.

    In roguelike mode, probably no parties although perhaps you can recruit AI controlled NPCs. Again, this is just to make low resistance to starting a new game, and low investment in your current game.

    As for the Ultima games, we are keeping all that I thought was good in Ultima - non linear exploration, a feeling of a world that is alive, lots of interactivity, great sense of atmosphere, and more. The one improvement (IMHO) over games in the series like Ultima 7 is that there will be better stat, skill, and combat gameplay features. In these regards, the game will be unique but play a bit closer to something like Fallout 1/2.
  • PTTG said:

    That's really helpful. Looking at the lighting example, are there sub-voxel details (i.e., bump mapping or textures)? I can't tell. Either one will be interesting.

    Hmmm... I'm verging on naivete here, but is it possible to use external data in the procedural generation? I ask because feeding real-earth elevation and climate data into the game and having it fill in procedural detail could be a fascinating experiment. (See Outerra).

    I suppose what I'm really asking is, is that sort of request reasonable enough to pay kickstarter suggestion bucks for?

    You definitely could - right now its pulling public data from Nasa or the US Navy (I forget which one is the true source of the heightmap data). It takes these heightmaps as source input and patches them together randomly (like using a clone stamp tool in Photoshop). Totally fake, but looks ok.

    As for sub-voxel details - yes in a way. There are no bump maps, but each voxel has its own normal for lighting. There are no textures thought - the voxels themselves ARE the texture - i.e. the voxels function as pixels in a giant, 3D texture. Voxels are super-sampled - typically around 64 sampled voxels per rendered voxel (4x4x4 voxels are sampled to produce one visible voxel).

  • Two or maybe three questions:

    One: Boats?

    One and a Half: Specifically, can boats be built from voxels in the same way as terrain, get bits blasted away, etc, and yet move smoothly over water? Could damage conceivably be modeled in a reasonable way?

    Two: Can multiple "dimensions" exist within a single save? Such as a Plane of Fire or a Shadow World which appears similar to the baseline world?
  • @PTTG‌ I can't answer the "will this be included" questions, but I can definitely answer the "is this possible" ones!

    1) Definitely possible, maybe even physics-able.

    1.5) They certainly could and should be voxel-base, and a damage model of that sort seems doable. From what I've seen of the current fluid dynamics, water would behave realistically and could flood in through hull holes; you could measure how much water is inside and calculate its effect on boat mobility as well.

    2) Also definitely possible, since you're taking the same terrain, perhaps changing the colors other voxel properties, and applying a different ruleset to that world. I believe you could even switch between planes in realtime based on how Gavan has "textures" loading at the moment. Modelling simultaneous NPC movement on multiple planes would add to CPU load, and I reckon you'd have to establish some sort of hierarchy for how events in one plane affect another plane. Is this what you were thinking of?
  • @PTTG‌ I can't answer the "will this be included" questions, but I can definitely answer the "is this possible" ones!

    1) Definitely possible, maybe even physics-able.

    1.5) They certainly could and should be voxel-base, and a damage model of that sort seems doable. From what I've seen of the current fluid dynamics, water would behave realistically and could flood in through hull holes; you could measure how much water is inside and calculate its effect on boat mobility as well.

    2) Also definitely possible, since you're taking the same terrain, perhaps changing the colors other voxel properties, and applying a different ruleset to that world. I believe you could even switch between planes in realtime based on how Gavan has "textures" loading at the moment. Modelling simultaneous NPC movement on multiple planes would add to CPU load, and I reckon you'd have to establish some sort of hierarchy for how events in one plane affect another plane. Is this what you were thinking of?

    Actually, going to have to be the naysayer here.

    1. Boats are possible, yes. Ingame? We've heard nothing to that effect. To my knowledge, vanilla VQ is going to be land-based only - but a simple mod could be made to make boat travel possible. Would you be able to walk around on a moving boat? Almost definitely not, at least without significant modding of the source code. Still possible, though.

    1.5., specifically what I have highlighted in your quote above above - That's not going to happen in vanilla, and may also be impossible or mods as well. Fluid physics are a bit more involved than I think you realize... Right now, they aren't true "physics" - waves are generated artificially. There's probably a reason Gavan hasn't shown us rivers, too, and I expect those to be generated artificially as well, moving on a z-level basis. Gavan has said that there will be "levels" that a tile can be full of water - and that water flows from tile to tile, not dynamically on the microvoxel level. Fluid physics have a HUGE negative impact on framerate - there's a very real reason you never see realistic fluid physics in games.

    From Gavan:
    Yes, at the macro level mostly (beyond trivial screenspace particle fx). Macro chunks are currently 8x8x4 meters large, meaning you can reroute rivers and stuff easily. Going much smaller than this is not entirely realistic from a computation and memory standpoint, unless you do really simple/fake fluid dynamics like Minecraft.
    2. It's feasible. I agree with you on this one.
  • @Talvieno
    You're right, boats haven't been mentioned at all thus far. However, I don't think that walking around on a moving boat (assuming it's a simple moving platform without physics) is too unreasonable in terms of code difficulty. Sure, it'd require a good deal of modification to the source, but it's not computationally challenging.

    Now, as for water flowing into boats. In the kickstarter video, around the 7:30 mark, you can see waves flowing above housing struts. Like you mentioned, calculating the motion of several million fluid particles is a tad unreasonable for VQ, haha. In order to fake it, there must be some sort of calculation that takes into account the overlap of water particles and "normal" voxels and displays whatever is currently on top in screenspace. So there already exists a way to fake it.

    While it wouldn't be entirely realistic, I see little wrong with starting with Minecraft's simplistic, "chunky" dynamics and applying a slightly more sophisticated-looking model to VQ. You're already keeping track of the height of the boat's edges relative to the water for screenspace calculations. Say that the boat travels at a constant height relative to the water. If the edge of the boat decreases relative to the water past a certain threshold, then the water level inside the boat should increase at a slight rate. Add an animation if you like, but that's just the visual effect. If the edge of the boat is lower than the water's surface for a longer duration, keep increasing the water level in the boat.

    You could take these calculations and apply small movement modifiers: for example, you could slow the boat's turn rate or acceleration speed. If the boat has animations for rocking, you could have several levels of animations that represent how much the boat rocks for different interior water levels. It wouldn't be continuous, but discrete is fine for what we're doing here.
  • edited November 2014

    @Talvieno
    You're right, boats haven't been mentioned at all thus far. However, I don't think that walking around on a moving boat (assuming it's a simple moving platform without physics) is too unreasonable in terms of code difficulty. Sure, it'd require a good deal of modification to the source, but it's not computationally challenging.

    Aye, more or less what I was saying. However, keep in mind that for every object within the boat, you have to do additional calculations to make sure everything moves along with the boat... these calculations can get become difficult when coupled with collision detection, and even worse if you want the boat to rock back and forth - that's where it becomes computationally challenging. Not to mention, everything currently exists as voxels, and to have a large chunked area moving through this plane, you would need to "shift it" between tiles - making a vehicle is a huge undertaking for this sort of game, which is exactly why Minecraft's boats are so simplistic.

    Now, as for water flowing into boats. In the kickstarter video, around the 7:30 mark, you can see waves flowing above housing struts. Like you mentioned, calculating the motion of several million fluid particles is a tad unreasonable for VQ, haha. In order to fake it, there must be some sort of calculation that takes into account the overlap of water particles and "normal" voxels and displays whatever is currently on top in screenspace. So there already exists a way to fake it.

    If you look closer, you'll notice that there is actually no fluid water. The surface waves are actually clipping through the struts - water exists as an animated surface shaded beneath to appear solid. In addition, water currently exists at macro level only - if you want to fill a boat with water, you're going to have to build a boat that's as big as a house - at least the way things stand right now.

    Right now, water would already automatically clip through the bottom of the boat - nothing exists to keep the water out, and there's no method of cutting shapes out of the animated surface... there might be eventually, of course... but what you're asking is for Gavan to completely rewrite the current fluid system.

    While it wouldn't be entirely realistic, I see little wrong with starting with Minecraft's simplistic, "chunky" dynamics and applying a slightly more sophisticated-looking model to VQ. You're already keeping track of the height of the boat's edges relative to the water for screenspace calculations. Say that the boat travels at a constant height relative to the water. If the edge of the boat decreases relative to the water past a certain threshold, then the water level inside the boat should increase at a slight rate. Add an animation if you like, but that's just the visual effect. If the edge of the boat is lower than the water's surface for a longer duration, keep increasing the water level in the boat.

    Gavan has stated that he plans to go for a simpler version of Dwarf Fortress's fluid model, which is far more dynamic:
    gavanw said:

    Water is evaluated at the macro level, all fluid dynamics apply properly at this level since it is not expensive to simulate (8x8x4 meter chunks). Also, each chunk can "fill up" gradually from empty to full, and is sampled with bilinear filtering so when the water fills up it looks smooth overall, not blocky.

    Also... most boats float when the water level rises... I may be misunderstanding what you're saying, though. I can see houses flooding, and roadways, but a boat ought to be able to float.

    Not saying it's impossible, though - just that it would be difficult.

    You could take these calculations and apply small movement modifiers: for example, you could slow the boat's turn rate or acceleration speed. If the boat has animations for rocking, you could have several levels of animations that represent how much the boat rocks for different interior water levels. It wouldn't be continuous, but discrete is fine for what we're doing here.

    Turn rate and rocking are entirely different cans of worms... You're dealing with very large quantities of vectors at this point if you're trying for any form of physics simulation - this stuff would get buggy and complex very quickly - again, total rewrite of code, implementation of several entirely new, large-scale systems. Not impossible, but difficult as all hell. :P




    (Take all of this with a grain of salt - I am not Gavan. lol)
  • edited November 2014
    PTTG said:

    Two or maybe three questions:

    One: Boats?

    One and a Half: Specifically, can boats be built from voxels in the same way as terrain, get bits blasted away, etc, and yet move smoothly over water? Could damage conceivably be modeled in a reasonable way?

    Two: Can multiple "dimensions" exist within a single save? Such as a Plane of Fire or a Shadow World which appears similar to the baseline world?

    1(.5): Yes, it is possible but not something that will be implemented early on. Objects can be rendered in their own voxel subspace, and moved around without much cost. See this for example:

    image

    They can have localized destruction as well.

    2) Theoretically, but again something that would be far back on the queue or up to modders.
  • It took me a second to parse "voxel subspace" because Voyager was playing in the background. I am super hyped, it sounds like ships and subspaces aren't as impossible as they seemed.

    Thanks again for the info. I hope I didn't start a war...
  • @PTTG
    PTTG said:

    Thanks again for the info. I hope I didn't start a war...

    No worries - I had not mentioned it prior, so it was safe to assume :)

  • I might have to remake my "High Noon" badge for PreacherJayne and myself. image
  • That gif brings up something else.

    Did manage to get shadows working yet?
  • edited November 2014
    @Talvieno
    I would have responded sooner, but my girlfriend's apartment had a fire drill and we had to evacuate :)

    That's what I was trying to say--water clips through the struts. I definitely see what you're saying with the calculations bit; just because you can have water clip through struts doesn't mean that you can choose where to have the boat clip through water. I just assumed that to simulate the visual effect of water at the bottom of the boat, we would allow water to clip through the boat bottom at a lower level. Like you said, we'd have to cut out shapes in the water surface.

    Sorry for the confusion with the boat floating. When I said that the edge of the boat might be lower than the water level, I meant that some damage to the hull might open up a crack or take out a chunk of the boat's side. In real life, that would let water flow into the boat. In VQ, it would be hard to simulate naturally, which is where I applied the idea that the water would clip higher and higher through the bottom of the boat (and add an animation where the water is spurting through the side). Realistic? Not especially. But it would provide a little bit of consequence for boat damage.

    As for boat rocking, animating it while having a character move around would be a pain in the butt. But animating boat motion and modifying it for different levels of interior water isn't too big a deal: boats with more water would rock less, so define 3-4 "levels" of rocking animations that depend on interior water. I wouldn't consider this too physics-y because it happens independently of water around you, but the current lack of character model animation does complicate things a bit. :)

    I totally agree with what you've said about implementing physics being extremely painful! I just wonder if there are ways to fake it better than Minecraft does. :P
    Talvieno said:

    I might have to remake my "High Noon" badge for PreacherJayne and myself. image

    Haha, I don't see anything wrong with butting heads occasionally as long as it's ultimately constructive!
  • edited November 2014
    Japa said:

    That gif brings up something else.

    Did manage to get shadows working yet?

    Shadows now work! There are some other artifacts going on here I have to fix (like missing voxels) but you get the idea:
    image

    Also, greatly increased draw distance, working on getting it performant at even further (still no mip mapping yet, but increased draw dis and chunk generation speed just by increasing chunk size and lowering super sampling -- thus, far less draw calls)

    Also, @Japa‌ -- you were one person I forgot to mention in the thank you video :( But you definitely have my thanks as well for being so active in here and on twitch :)
  • edited November 2014
    Oh my goodness, that's a really pretty screenshot!
  • edited November 2014
    gavanw said:


    Shadows now work! There are some other artifacts going on here I have to fix (like missing voxels) but you get the idea:

    Wow, what a difference. Looking good.
  • edited November 2014
    Another one, just rendering voxels/points as single pixels:
    image

    The interesting thing about rendering as points is that there are far fewer vertex transforms to do (and you also can ignore the triangle shader stage, although from what I gather on some hardware it is actually slower to not use triangles). Also, becomes far more efficient when voxels are smaller than a pixel in the rendered image. I have an idea of how to fill the gaps using just points, will see if it works at some point. Really....I should not be posting these in the FAQ, lol. Will move them when I get a chance.
  • It is extremely cool to see these! I like the way the houses look from a distance in the semi-fog.

    @gavanw Right now everything has that pixelly vibe, and edges that aren't vertical or horizontal with the respect to the screen are a little jagged (as demonstrated on the road in the first screenshot). Are the jagged edges a consequence of sampling at 32 voxels per meter, or are there other anti-aliasing-like effects present in isometric mode that aren't present when you're using the perspective camera?

    Glad to hear performance is up!
  • @PreacherJayne‌ jagged edges are a result partially of running at 1/4 to 1/2 normal screen resolution (forget which this image is). Also, lower voxel resolution has some impact as well.
  • Seeing the VQ world in this mode reminds me of the quest "A Brush With Death" in The Elder Scrolls IV: Oblivion.

    I hope I'm not spoiling it for anyone to say that this quest takes you to a place where the world is rendered in a different visual style than the regular Oblivion -- it's called the Painted World:

    image

    I suspect this was actually a test mode for the developers that someone thought might be fun to retain as a part of the game...

    ...which leads me to wonder whether a pixelated mode (or something like it) could be retained in the full Voxel Quest as a brief but memorable event.
  • I've never played Oblivion myself, but as I understand it, it's mostly scripted, is it not? A free world to roam with scripted quests... Voxel Quest isn't going to be much like that, and I'm not entirely sure how you would be able to fit something like this in as a "brief but memorable event", but... maybe eventually there could be something like multiple planes of existence. Just a thought.

    And we really need that "split" functionality. lol
  • "Sort of" scripted, I'd say. There are NPCs with defined quests, where each new stage opens up the next set of dialog lines and player character objectives, and which may ask the PC to go to different locations (such as the Painted World).

    But the Bethesda open-world games since Oblivion also have "Radiant quests," which are dialog/objective frameworks into different targets are pasted. Not quite truly emergent play, but not purely scripted stuff, either.

    But my point was just that it might be fun to find a way to use that pointillistic rendering style somewhere in this game.

  • But my point was just that it might be fun to find a way to use that pointillistic rendering style somewhere in this game.

    Interesting that you ask - as a recent optimization, I've been working with points instead of polygons. By default, points look ugly if you go with the standard method, which uses screen-aligned squares to fill the points. Now, you can use anything to render the points, including simulating a "painterly" mode if you wanted. Don't know that such things will be in game, but of course easy to mod. :)

Sign In or Register to comment.