My Isometric Voxel Engine: One Year Later
voxelquest.com
voxelquest.com
It's good to see that the engine is near completion and that (hopefully) we'll be seeing some custom characters running around the screen soon.
Are you building it in such a way that this will make networked multiplayer feasible in the future? If not, what reasons do you have for letting that fall on the wayside?
I consider myself a gamer, but I don't have a lot of time so I only spend my time on games that I think will give me a really high quality experience. This game is the one I am looking forward to the most.
Yeah I myself can't waste much time on games, obviously. I only pick up ones that I feel are good "research."
Btw. what's with the Swiss mug? I'm Swiss, so that made me curious :).
Procedural approach does make it much easier to generate content. I've already got everything in place to generate entire seamless maps with logical road, street, city, and house placement among other things, and it is pretty easy to extend for things like caves and dungeons.
http://massively.joystiq.com/2014/08/21/soe-live-2014-the-re...
So, assuming that's what's happening, why not pre-render/pre-generate a larger area than the visible area so that this faulting in process isn't as visible for a typical viewport pan.
Also, if you were to reduce the resolution, would that make the faulting/rendering faster? Seems like that would be a good compromise, as many of the demos now feel like the terrain isn't generated fast enough to make a playable game.
Oh, can you also demo destructibility in a future video?
You can make it go a lot faster by lowering the resolution, as I point out a bit down the page in the article. Every reduction of 2 in resolution ups performance and memory usage by 4-8 times, based on if the process is 2D (post process) or 3D related (chunk rendering). I'm continuing to add more optimizations to make things faster as I go along.
I am also going to add in better support for caching and prerendering - right now it all happens exclusively in GPU memory - I can easily expand the view even further with system memory and hard disk usage.
With voxels, positions are inherently stored, and guaranteed to have some cache locality if they are uncompressed. Thus, GPUs are really good a chugging through large amounts of bitmaps, which is what I am doing (only rendering to bitmaps). With teraflops of compute power now, you can do trillions of flops every second, and in my case I can render about 1-2 billion voxels per second.
Additionally, doing procedural generation with polygonal surfaces is much more complex (I've done it, I know). Implementing stuff like voronoi patterns (used for the rocks) is trivial with voxels. Not the case with polygons, unless you are just wrapping voxelized data. Its the difference between evaluating a graph at every point, and calculating the graph at only the needed points. Voxels are implicit, polygons are explicit.
Really, you can think of VQ like a really fancy graphing calculator (in fact, all of the structures are just an extension of superellipsoids) (http://en.wikipedia.org/wiki/Superellipsoid)
My best recommendation - dive in and start coding. You are your own best teacher. :)
As a tech person, I'm amazed at the tech. As somebody whose greatest design skill is a straight line in Gimp, I find the graphics terrific and different from anything I've seen before in a game. However, as an RPG fan, the blurb on the Kickstarter page didn't resonate with me (apologies if you say more in the video, I had the sound off). There isn't anything about worldbuilding/characterization, or what the gameplay is about (considering that "RPG"s range from DCSS to Planescape Torment). You may also want to reveal some character models (even if they are just concept art).
I would definitely suggest stretch goals (for instance, you speak about supporting additional platforms, this could be one).
Oh, and hopefully you're reaching out to the usual suspects like Rock, Paper, Shotgun to get some coverage.
Yeah, to be honest I am really bad at putting together marketing materials and videos. I tend to talk about the stuff I'm comfortable with, which is mostly technobabble. I have gone into further details in one of the updates on the page, and posting a few more now.
You can make a GPL version so you create a community of users with dual license for commercial developers-artists so you get much more money than the ridiculously cheap 30Ks.
You can make great engines, but probably for creating amazing content for your engine you need artists.
It's just that a fine-grained modifiable world would be super-amazing. It seems to me that your rendering tech could do that just as well... if the edits only occurred on-screen, they are manageable (and all the rest can be rendered off-screen to bit-maps and cached, as you do now).
Of course, what I'd really love is a living world, which also changes off-screen. e.g. erosion. But I think that may be asking too much of present-day hardware...?
marketing advice: copy notch. Do little updates as often as you can, for every small thing you do. It gives you energy, engages long-term followers and - most important - is advertising, so more people know about it.
Erosion: doable, but not something I'm going to tackle right now. I originally built errosion in from the start to try and create realistic maps, but it turned out to be way simpler and faster to just pull in real world heightmaps and mix them together in patches, even if not realistic.
Marketing advice: taken. :) I'll be updating more frequently now, especially with the KS campaign going, which is pretty much a full time job right now.
I'm totally sold, just backed for the Platinum badge.
You mention a few games as inspiring traits of Voxel Quest -- most of which are quite obvious -- including Hearthstone. In what ways was Hearthstone an influence? Art style, or something beyond that?
Edit: Just finished watching the entire video, it really does look fantastic. I will say, the one off-putting part of your game design philosophy for me was the whole "no long-term progression" thing. I find the way Rogue Legacy handles this a beautifully rewarding mashup of the roguelike quick permadeath and the feeling of making overall progress in the game world.
Funny comment about the permadeath - Rogue Legacy was exactly what made me realize I did not like unlocking. Nonetheless I'm aware of the drawbacks of permadeath, and I will do what I can to address the communities wishes (there may be various game modes for people who hate permadeath and want a progressive, traditional RPG). Spelunky is, and has been, my goto design influence for years (not the sidescrolling and platformer mechanics, but just the pacing of the game, how it handles various design choices, etc), I still consider it one of the best designed games of all time.
Do you utilize any kind of project management software or methodology as a solo developer?
There is a section of code where I adjust some important constants frequently (for chunk, buffer sizes, and other vars that are constrained at compile time for now). In this section I have a commented area for quick todos and reminders, for when they are too trivial to add to Trello or I dont want to forget them.
For other details on my work environment:
I have 4 monitors - 3 primary ones to code on, and a forth to run the game on, fullscreen if needed (i.e. for recording). I use Sublime Text by habit, even though I compile in Visual Studio. I also have a bunch of batch scripts to automate C++ stuff I don't want to deal with (LZZ for automatic header generation is crucial for my sanity).
I also have several apps running in windows to reconfigure how the desktop works, allowing desktop switching and other stuff (I'm on Windows 7 right now). I used to program on a Mac, so I actually changed my keyboard to be more mac-like (switched the control and alt keys on my keyboard and reprogrammed them in the registry - hehe).
LZZ link: http://www.lazycplusplus.com/
No royalties or fees are charged.
I also consider any licensing deal offered to me with pretty loose restrictions (and I have had two bigger requests in this regard so far).
If/when I get to the point of opensourcing, it will be a very permissive license - like ZLib or MIT.
And what will the actual game be about? From the video I'm not sure if there is an actual plan yet.
As usual, video editing and marketing are my two worst skills, so I'm not very good at putting together all this stuff. :)
There is one aspect in which you do show a definite perspective, and that is in the use of a simulationist philosophy: Everything done in deterministic, procedural, emergent ways. Now, one of the ways in which this philosophy gets challenged is the issue of "you don't know what you don't know" - if your simulation is built upon bad premises, then it's garbage in, garbage out.
So then, if you want to find the same kind of successes with the approach as something like Dwarf Fortress, Spelunky or Minecraft, you have to actively acknowledge where your simulation becomes intentionalized by the assumptions you make about how the world works. At that point you are in the business of making critical arguments through your game and the workings of its systems: Things like how the economy is tuned, frequency of combat, or average NPC reactions to violence, all send unavoidable messages about the totality of the world you make.
You can literally pick just _one_ thing that characterizes the world, consider it in depth and tailor every other system's features around it, and have a fine game. Even Dwarf Fortress, which is extremely deep, shows intentionality in that the details it focuses on are descriptive and categorical(types of rocks, individual organs) vs., for example, being spatially accurate like the physics simulation of a racing game. What makes DF's detail cool - and what makes it a big, complex game instead of a tiny one - isn't that it attains atomic precision, but that everything adds up to a specific, detailed, believable narrative about fantasy characters doing the "everyday things" we expect to see in a fantasy world.
To put it another way: Eliminating things from the game makes it impossible to criticize those things, and every game eliminates something! But the things a game does show should have a ton of care put into them.
If you're doing all of this right, you'll be up at night with some fear over the internal struggle of the design decisions, instead of the actual production or marketing; you are already demonstrating the necessary skill to do those two - you have very nice graphics to show off in your trailers, which is a great entry point.
The only reason why the marketing looks hard is because there's a lack of design intent, and thus nothing but bullet point features after you show the graphics. But the design can act as a master plan for the marketing, as it allows you to go on at length about the things being conveyed through the systems, vs. what the systems are, where your effort on details is going to go, and how you want the overall play experience to expand over the coming months.
> VQUI can be hotloaded
What else can be hotloaded? Do you use entity-component-system type of architecture? Any scriptable parts?
Great question about hotloading - everything is data-driven, no realtime scripting yet, unless you count the GLSL as scripting, which can be hotloaded. And really, the GLSL is a huge part of the scripting process - it is simply awesome to use for scripting, especially so in the context of voxels. It has blazing fast compile time (I hit refresh, refresh over 40 shaders faster than I can notice a delay) - and shaders obviously compile to be very fast. I have intentionally avoided other scripting - for the same reason Unreal went to a pure C++ engine.
Did not know about Blueprint :)
Anyhow - AI is defintely ambitious, but less so once you see how simple I am keeping everything (it is going to be quite crude - really :) )
I'd be curious to know if you're something something like run-length encoding (RLE) or something hierarchical such as a B-Tree?
Which resources can you recommend if I want to learn more about voxels?
Really impressive update since last year. :D