• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Ben Bowen

Don't start yet another voxel project

22 posts in this topic

Unless you have theorized something to add to whatever has been done before (I doubt), I recommend you don't start yet another voxel project so vaguely and senselessly.

Discuss:[list]
[*]Why do you want to, anyway? Do you even know how to render anything decently credible, using traditional methods?
[*]Unless at an extremely fine and consuming resolution, aren't voxels too homogenous to bear much arbitrary definition? Do you concretely understand how much memory voxel data might consume, given theoretical circumstances? If you are experienced with voxels, how much memory consumption have you been able to mitigate (not theoretically!), and by which techniques?
[*]If you plan to work with voxels, or already have (preferably), in which kind of way?
[list]
[*]Direct Rendering
[list]
[*]Raycasting
[*]Other
[/list][*]Polygonal Construction
[list]
[*]Perfect Cubes (Minecraft-like)
[*]Marching Cubes
[*]Other
[/list][*]Simulative Application
[list]
[*]Electrodynamic Propagation
[*]Fluid
[*]Other
[/list][*]Other
[/list][*]Please elaborate.
[/list]
Thank you. Edited by Reflexus
-3

Share this post


Link to post
Share on other sites
I dont know, i agree with Nick, we started one and honestly we have been able to learn a lot about how the game design works. ( not say we wouldn’t if we had static terrain ).... but the idea of having infinite blocks and chunk spawning actually really helped us to define a very robust and capable engine. Right now we are 6 months in and can have over 10,000,000 blocks with no lag on a medium machine. This is using DX10/DX11 shaders and tools. Our lighting system is dynamic and the generation of randomized terrain really helps us to better understand how things work.

Secondly, its not like minecraft did it all. In fact, minecraft is still missing a lot of core functions that make a game, a game. With those elements still left untouched a person could very much make another good voxel based game. Wolly and his project is a prime example. Think of minecraft not as a game and any voxel game after that a clone; rather think of voxel based games as a genre and we are simply coding games within that realm.

Ultimately, i think voxel based gaming is just the start. I like to imagine it like...8 bit art back in the day. They were pixel by pixel, and eventually we learned how to render thousands of pixels at once. When further development and pushing of the edges we could turn voxels into atoms, and from there we could make a world very similar to our own. Call me a dreamer, but it is a foreseeable future. Edited by riuthamus
2

Share this post


Link to post
Share on other sites
I dont think voxels should be used unless you want to represent a volume, meshes are just better for surfaces.
-2

Share this post


Link to post
Share on other sites
For any of us non artists voxels/cubes are nice in that they are sort of the equivalent to pixel art in 2D which means you can create something kinda consistent looking in 3D without being a 3D artists...
0

Share this post


Link to post
Share on other sites
@Bacterius
[quote]I think the main attraction with voxels (setting the Minecraft hype apart for now) is the simplicity of generating procedural content with them rather than with triangles[/quote]

No. There's always simplicity in procedurally affecting content, where the nature of its containment always has particular advantages. Both triangle mesh and voxel based substances have exclusive advantages. Skeletal animation is an equivalent for triangle meshes, just as the simplicity you've noted in voxels. But with voxels, the basis of content has always (in practice) been generated by atomic functions (random noise functions etc). Later in the pipeline, after the basis of content is generated, reiterated operations can be applied to enhance the existing content (which certainly is a procedural process, but not procedural generation). Voxels only have a single, static basis of content (the homogeneous volume), which manifests them to be problematic for the purposes of procedural generation, contrasted to polygons. "Procedural generation" isn't generic for "generation," and neither is "generation" generic for "procedural."

[quote]Obviously it's difficult to generate a highly structured object procedurally, like a sculpture or something[/quote]

Yes it would be difficult. I can imagine using triangles to make something such as a seashell, a pillar, a simple water fountain, a pot, or a rock that doesn't look like a blob (like with voxels [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img]). But if you actually wanted to craft a procedure for generating a human statue (I'm assuming a human statue), you could either go by a roughly user defined procedure (i.e. replicating the steps an artist uses to model a human), or you would require an insanely sophisticated mechanism for encapsulating the nature of a human's shape, to an extent. We can begin to imagine how this would work, and how it might determine the final surface's triangulation (if using triangles), but its not worth discussing here (lets stay on topic).

[quote]This means programmers from all over the world no longer have to painstakingly hire artists to design high quality terrain meshes and textures[/quote]

The original Marching Cubes algorithm had a [url="http://www.google.com/patents?vid=4710876"]patent[/url] (but it has expired), and there's an ever growing crap load of new patents regarding voxel techniques. Users still need high quality textures, unless they generate them (But voxels aren't for that anyway). I don't think very many (non-voxel) algorithms which can apply to generating terrain meshes (e.g. height-map) have been patented. And since when was voxel terrain higher quality than any other generative technique? I've marked "low-resolution" in bold:

[quote]Obviously if you are going to render raw voxels, no level of resolution will fix the blocky look. But if you interpolate voxels (e.g. marching cubes) you can get away with a surprisingly [b]low-resolution[/b] mesh thanks to normal/parallax mapping.[/quote]

As far as I can tell, normal/parallax mapping hardly relates to interpolating voxels. This interpolation can often, also, be too blobby.

[quote]You can't do that with precomputed terrain.[/quote]

Plenty of games don't use either "precomputed" terrain or voxel terrain. Take BF3 for example. Edited by Reflexus
2

Share this post


Link to post
Share on other sites
[quote name='Reflexus' timestamp='1340563942' post='4952393']
As far as I can tell, normal/parallax mapping hardly relates to interpolating voxels. This interpolation can often, also, be too blobby.
[/quote]
No but the idea is that interpolation dramatically increases the topological richness of the generated terrain compared to simply using cubes. Sure it will be still be blobby to some extent, as all interpolations are, but that's what normal mapping is there to hide by introducing additional, cheap detail. This means you can use a very coarse voxel grid, and still make it look good. The terrain vertex density for current games is absurdly low thanks to the ability of normal/parallax mapping to make a planar surface have depth.

[quote]Plenty of games don't use either "precomputed" terrain or voxel terrain. Take BF3 for example.[/quote]
Clearly the terrain is precomputed to some extent, to fit the requirements of the game (e.g. a flat space here and there to place a building). Obviously the finer details can be procedurally generated via any method to simplify the artist's work but ultimately there is still an artist behind each map. Of course games can use both, or neither techniques to generate and render their terrain, there is no law stating the opposite.
0

Share this post


Link to post
Share on other sites
First you do hello world when you enter programming as a beginner, and then you do a chess program when you transition to intermediate level programming. This is how it was for me in college and voxel projects are analogous to chess programs in my eyes. It's probably the easiest project that you can take on that covers such a broad range of topics while also having a decent amount of complexity. I also firmly believe that everyone interested in game programming should do one when they get the basics of 3D down. If I were teaching a game programming class there definitely would be a voxel project in the syllabus.
1

Share this post


Link to post
Share on other sites
[url="http://publications.dice.se/attachments/GDC12_Terrain_in_Battlefield3.pdf"]http://publications....attlefield3.pdf[/url]

[quote]Clearly the terrain is precomputed to some extent, to fit the requirements of the game (e.g. a flat space here and there to place a building). Obviously the finer details can be procedurally generated via any method to simplify the artist's work but ultimately there is still an artist behind each map.[/quote]

Is it just me, or are you . . .

[quote]First you do hello world when you enter programming as a beginner, and then you do a chess program when you transition to intermediate level programming. This is how it was for me in college and voxel projects are analogous to chess programs in my eyes. It's probably the easiest project that you can take on that covers such a broad range of topics while also having a decent amount of complexity. I also firmly believe that everyone interested in game programming should do one when they get the basics of 3D down. If I were teaching a game programming class there definitely would be a voxel project in the syllabus.[/quote]

A decent game programmer should know how to import/export a variety of assets, including common formats, and custom/specialized data (maps, saving the game's state etc). A voxel project seems like a good reason to avoid that, and other essentials. Perhaps they can do that "to get the basics of 3d down," because I don't know how it could be considered much more. I mean, as a student project... like what you've made: [url="http://blog.neumont.edu/aveldhousen/infinecraft/"]http://blog.neumont....en/infinecraft/[/url]

That essentially is the bare "basics of 3D." I can't see much learning value in such a project. If the students were constructing much more sophisticated voxel projects, well, that would be a little too specific. It would be a good reason to neglect many other common skills used in real game programming. Even if dynamic/interpolated voxel terrain systems make a strong debut in a few future titles (I wouldn't doubt it), its likely they would remain too limiting, by a number of aspects, to be adopted by much of the full industry. It would be like a "parallax mapping" project. There are a few cases where it works well and adds some value, but in the most common implementations, it looks like shit.
0

Share this post


Link to post
Share on other sites
Voxels are nice since their a bit like the 2d tiles of old and can help you create a 3d environment without having to get into 3d art.
0

Share this post


Link to post
Share on other sites
[quote]Voxels are nice since their a bit like the 2d tiles of old and can help you create a 3d environment without having to get into 3d art.[/quote]
[quote]For any of us non artists voxels/cubes are nice in that they are sort of the equivalent to pixel art in 2D which means you can create something kinda consistent looking in 3D without being a 3D artists...[/quote]

At the cost of being blamed for cloning Minecraft by arrogant critics. Yes, they're very easy, and too easy, at that. Could somebody respond, in depth, to this: "Why do [b][size=4]you[/size][/b] want to, anyway?" Do you want to use them for a game? Of course, I'm not suggesting that its a waste of your time if you don't use them for a game, but could someone give me any more reason besides "Although the programming can be equally challenging, depending on my ambitions, I don't have to deal with traditional game development. I can just develop an easy pet project."

I would appreciate much more elaboration regarding your personal reasons. What do you plan to with your voxel project? What will it be like?
-1

Share this post


Link to post
Share on other sites
Thank you M6dEEp! [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
0

Share this post


Link to post
Share on other sites
[quote name='Reflexus' timestamp='1340651854' post='4952762']
[url="http://publications.dice.se/attachments/GDC12_Terrain_in_Battlefield3.pdf"]http://publications....attlefield3.pdf[/url]

[quote]Clearly the terrain is precomputed to some extent, to fit the requirements of the game (e.g. a flat space here and there to place a building). Obviously the finer details can be procedurally generated via any method to simplify the artist's work but ultimately there is still an artist behind each map.[/quote]

Is it just me, or are you . . .
[/quote]
What are you saying? Do I need to specifically state that in this context when I said "precomputed", I meant "not purely procedurally generated" a.k.a. "authored by an artist to some extent" (ref. FrostEd)? [img]http://public.gamedev.net//public/style_emoticons/default/sleep.png[/img] Edited by Bacterius
0

Share this post


Link to post
Share on other sites
[quote name='Reflexus' timestamp='1340657432' post='4952789']
I would appreciate much more elaboration regarding your personal reasons. What do you plan to with your voxel project? What will it be like?
[/quote]
See M6dEEps post [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. My "job" is in scientific computing and I just like to toy with game related stuff. With that background I don't really have problems with the complexity of 3d itself, but to make anything 3d you generally need some sort of "content". And since I'm not really interested in learning 3d modeling I need other means to create that "content" as a result anything I do in 3d tends to have a fairly abstract look to it. So it will only be spheres, splines, cubes etc.
I think there is nothing worse than writing a "3d engine" and then showing it off with a bunch of free assets collected around the internet. Even if the assets are high quality by themselves it will look inconsistent and patched together and totally distracts from the technical merit the project might have. So I prefer to use something like [url="http://t.co/alKs4yud"]cubes[/url] or [url="http://t.co/GNUGNFMd"]splines[/url]. Also depending on what you do exactly something as "simple" as a minecraftesque engine can be pretty challenging... you have to stream data to the gpu, generate chunks asynchronously etc. you are potentially constantly moving hundreds of MB of data and have to do so in a way that doesn't make it stutter or requires to display a loading screen. So for someone like me it's just a nice technical playground with kinda visible results.

I don't specifically write a game with the voxel/cube experiments I have done so far. But even if I did, it would not be minecraft (I actually don't find the "gameplay" of digging and building random stuff without real purpose that interesting [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img] ). Edited by japro
1

Share this post


Link to post
Share on other sites
I have been doing 3D graphics programming as a hobby for around 10 years, though I haven't done anything with voxels. My work involves electromagnetic theory and modeling and I have used also finite-difference schemes to model propagation of optical electromagnetic waves. This "voxel" approach is useful, because the fixed cell size, depending on material properties, can lead to implicit time stepping, where only a diagonal matrix needs to be "inverted" at each step. In more geometrically general finite-element methods, matrices are not diagonal (even though they may be sparse) and this has significant computational cost. Although it is possible to locally refine the spatial representation of the fields in finite-difference schemes, it becomes really cumbersome. The same goes for attempting to represent curved material interfaces by either refining the starcasing or somehow "bending" the cells. So although the voxel approach seems at first glance simple and fast, it gets really tedious and ugly when you try to improve it to a level that would really cover the cases that you are interested in. The content creation approach works similarly here as in 3D graphics: it's really easy, in principle, to define a shape by just marking some cells as dielectric, metal, vacuum etc. Creating corresponding shapes with a 3D modeling software by using some n-simplices is more involved.
1

Share this post


Link to post
Share on other sites
So a while ago I saw a video for a 4D puzzle game ([url="http://marctenbosch.com/miegakure/"]Miegakure[/url]). I thought it was really neat, but it got me thinking... What would an actual 4D renderer look like? What's the best way to represent the fourth dimension? I thought about using 4D tetrahedral models, rendered with a shader to select the current 3D "slice", but that seemed too unwieldy. The most straight forward way, in my mind, was to take the "ray-casting 3D voxels" concept and just add a fourth dimension.

My program uses a 4D sparse voxel octree (I call it a hypertree) which acts exactly the way you'd expect: each dimension splits into two, which means that a node has up to 16 four dimension children volumes. I copied the ray casting algorithm from the [url="http://www.tml.tkk.fi/~samuli/publications/laine2010tr1_paper.pdf"]Laine and Karras SVO paper[/url] (minus the contours), and added in an extra dimension to everything. To visualize the fourth dimension (W), I leave Z as up and down, but rotate the viewer's other three dimensions so that W replaces X or Y. Mathematically it works quite nicely, and doesn't look too bad.

One of the biggest issues that I had with it is that a 4D hypertree can get very big very quickly. Since every node can have 16 children, if I were to store all the leaf nodes I'd only be able to work with relatively shallow trees (e.g. at 4 bytes per node, seven levels is 1 GB). Since it's a sparse tree I don't store all this, but the potential is there. I also came up with two other solutions to this size problem. The first is to have portal nodes, which store a transformation matrix to teleport viewing rays, or object positions, from that node to some other node (and orientation). So even if the entire world is only 128 leaf nodes on a side, you can make larger environments by hijacking other (unused) dimensions seamlessly. The portal transformation does incur a performance hit though for every ray-portal intersection.

My second solution to the size problem is to not store unique geometry at the bottom of the tree. Using a palette of premade leaf node "tiles", you can give the environment more detail without having to store it all uniquely. Or at least that's how it would work... I haven't actually implemented this yet. I got the idea from watching that [url="http://www.youtube.com/watch?v=00gAbgBu8R4"]Unlimited Detail[/url] video, which looks like it uses a similar idea with 3D tiles nodes.

My other issue with a 4D renderer is that generating interesting content is difficult to do without an editor. I stopped working on it about the time I realized that I'd need to make an editor to get the full potential out of it as a concept. I'll probably pick it up again one of these days though.

So that's my experience with "voxels". If anyone wants me to go into more detail about anything I can, but I don't want to post the program right now.
1

Share this post


Link to post
Share on other sites
[quote name='japro' timestamp='1340710187' post='4952979']
I don't specifically write a game with the voxel/cube experiments I have done so far. But even if I did, it would not be minecraft (I actually don't find the "gameplay" of digging and building random stuff without real purpose that interesting ).
[/quote]

I personally have trouble calling it a game. It is more of a tech demo with various game play mechanics that people thought would be cool and then cobbled them together. A game is supposed to have a goal, which one can argue is the whole "survival and exploration" aspect, but in reality boredom ensues and you realize the game is only fun when you are really drunk and are playing with all of your really drunk friends.

I think that further validates my reasoning behind why people make these just to explore technical boundaries etc. That is almost what Minecraft seems like when you think about it. Edited by M6dEEp
0

Share this post


Link to post
Share on other sites
I kinda already answerd what you asked. You can make a game from it, assuming you interject some game elements. Im not going to go into what we are doing with our project specifcally ( just yet ) but I think there is potential. What makes minecraft so enjoyable? Mining for blocks? NO!!!

What does make it enjoyable is the concept of being able to create whatever you like with a very basic process to do so. Look at the thousands of mods that have been created for the game, expanding its purpose and its enjoyable factor. Without these mods ( much like many games today ) people would have lost interest several weeks after they first started the game. So, you want an expansive list of what has yet to be touched?

- Questing
- Expanded Combat
- Skills and character+character interaction
- Story ( there really is none... )
- Expanding tools for creation

Those are just to name a few. As previously stated, Minecraft was more or less a guy mucking around with code until he made something unique. When released the people saw this and ate it up like crazy. From there the people made the game and that is the real reason for its success today. Are there better ways to code a game? Sure, but that doesnt mean that you should discount the concept of voxel based games because they are easier to code. I am remined of an episode from "The COmmunity" s3e20. The characters in the show play a 16 bit retro game that has so many rich features it would put many of the games today to shame. The game looked fun as hell too but it was only 16 bit and a platformer. ( i realize it was all dun of for show, but in reality, with enough time you could do alot of what they had )

[b]TL:DR?[/b] You can make a quality game out of anything, so long as you put forth the effort and add something of value to the playerbase.
1

Share this post


Link to post
Share on other sites
Voxel based games have some interesting possibilities. What I find especially interesting is how it makes it easier to automatically create infinite worlds and how it can support dynamic changes from other players. Take World Of Warcraft, and allow players to add their own instances and adventures. With MMO, you could get an infinitely expanding world. That would be exciting! There are lots of people with ideas you would never dream of. Though it can be tricky to restrict the creativity to some kind of boundaries.

When I, with the help of some friends, created a text based game 20+ years ago (LPMUD) we didn't have enough ideas for the adventure part of it. Instead, we tried to create a game that was maximally flexible and would allow others to add content. It didn't take long for the most astounding creations to be built. Maybe the voxel technology can play an important role in the future. I believe that progress will be very quick, allowing for more natural looking landscapes while still being based on voxels. There are already examples available.

I am doing some experiments also, and have something up and running now. A MMO game based on client/server and voxels, with the extreme design goal to support 10000+ simultaneous active players. But the programmatic interface to control objects from LPMUD can't be used. Instead, a visual interface is required.
0

Share this post


Link to post
Share on other sites
Listing the potential of voxels is almost like listing the potential for games which use 8-bit indexed color graphics, tilesets, and extremely small display resolutions. From the aspect of game mechanics, this field of possibilities is nearly identical to voxels' -- even more congruent than to traditional 3D graphics ('polygons') -- yet bounded by 2-dimensional space (and crappy colors). I certainly do have the imagination necessary to understand the potential of voxels when applied to games! Personally, I think the way we've figured to utilize voxels is somewhat idiotic, so far. They still have their place in computer graphics, although I don't think anyone currently understands, comprehensively, where they belong. Neither do I have the interest now to correctly elaborate how voxels might appropriately become useful in the future. Edited by Reflexus
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0