diff options
Diffstat (limited to 'thirdparty/stb/docs/stb_voxel_render_interview.md')
| -rw-r--r-- | thirdparty/stb/docs/stb_voxel_render_interview.md | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/thirdparty/stb/docs/stb_voxel_render_interview.md b/thirdparty/stb/docs/stb_voxel_render_interview.md new file mode 100644 index 0000000..7071466 --- /dev/null +++ b/thirdparty/stb/docs/stb_voxel_render_interview.md @@ -0,0 +1,173 @@ +# An interview with STB about stb_voxel_render.h + +**Q:** +I suppose you really like Minecraft? + +**A:** +Not really. I mean, I do own it and play it some, and +I do watch YouTube videos of other people playing it +once in a while, but I'm not saying it's that great. + +But I do love voxels. I've been playing with voxel rendering +since the mid-late 90's when we were still doing software +rendering and thinking maybe polygons weren't the answer. +Once GPUs came along that kind of died off, at least until +Minecraft brought it back to attention. + +**Q:** +Do you expect people will make a lot of Minecraft clones +with this? + +**A:** +I hope not! + +For one thing, it's a terrible idea for the +developer. Remember before Minecraft was on the Xbox 360, +there were a ton of "indie" clones (some maybe making +decent money even), but then the real Minecraft came out +and just crushed them (as far as I know). It's just not +something you really want to compete with. + +The reason I made this library is because I'd like +to see more games with Minecraft's *art style*, not +necessary its *gameplay*. + +I can understand the urge to clone the gameplay. When +you have a world made of voxels/blocks, there are a +few things that become incredibly easy to do that would +otherwise be very hard (at least for an indie) to do in 3D. +One thing is that procedural generation becomes much easier. +Another is that destructible environments are easy. Another +is that you have a world where your average user can build +stuff that they find satisfactory. + +Minecraft is at a sort of local maximum, a sweet spot, where +it leverages all of those easy-to-dos. And so I'm sure it's +hard to look at the space of 'games using voxels' and move +away from that local maximum, to give up some of that. +But I think that's what people should do. + +**Q:** +So what else can people do with stb_voxel_render? + +**A:** +All of those benefits I mentioned above are still valid even +if you stay away from the sweet spot. You can make a 3D roguelike +without player-creation/destruction that uses procedural generation. +You could make a shooter with pre-designed maps but destructible +environments. + +And I'm sure there are other possible benefits to using voxels/blocks. +Hopefully this will make it easier for people to explore the space. + +The library has a pretty wide range of features to allow +people to come up with some distinctive looks. For example, +the art style of Continue?9876543210 was one of the inspirations +for trying to make the multitexturing capabilities flexible. +I'm terrible at art, so this isn't really something I can +come up with myself, but I tried to put in flexible +technology that could be used multiple ways. + +One thing I did intentionally was try to make it possible to +make nicer looking ground terrain, using the half-height +slopes and "weird slopes". There are Minecraft mods with +drivable cars and they just go up these blocky slopes and, +like, what? So I wanted you to be able to make smoother +terrain, either just for the look, or for vehicles etc. +Also, you can spatially cross-fade between two ground textures for +that classic bad dirt/grass transition that has shipped +in plenty of professional games. Of course, you could +just use a separate non-voxel ground renderer for all of +this. But this way, you can seamlessly integrate everything +else with it. E.g. in your authoring tool (or procedural +generation) you can make smooth ground and then cut a +sharp-edged hole in it for a building's basement or whatever. + +Another thing you can do is work at a very different scale. +In Minecraft, a person is just under 2 blocks tall. In +Ace of Spades, a person is just under 3 blocks tall. Why +not 4 or 6? Well, partly because you just need a lot more +voxels; if a meter is 2 voxels in Mineraft and 4 voxels in +your game, and you draw the same number of voxels due to +hardware limits, then your game has half the view distance +of Minecraft. Since stb_voxel_render is designed to keep +the meshes small and render efficiently, you can push the +view distance out further than Minecraft--or use a similar +view distance and a higher voxel resolution. You could also +stop making infinite worlds and work at entirely different +scales; where Minecraft is 1 voxel per meter, you could +have 20 voxels per meter and make a small arena that's +50 meters wide and 5 meters tall. + +Back when the voxel game Voxatron was announced, the weekend +after the trailer came out I wrote my own little GPU-accelerated +version of the engine and thought that was pretty cool. I've +been tempted many times to extract that and release it +as a library, but +I don't want to steal Voxatron's thunder so I've avoided +it. You could use this engine to do the same kind of thing, +although it won't be as efficient as an engine dedicated to +that style of thing would be. + +**Q:** +What one thing would you really like to see somebody do? + +**A:** +Before Unity, 3D has seemed deeply problematic in the indie +space. Software like GameMaker has tried to support 3D but +it seems like little of note has been done with it. + +Minecraft has shown that people can build worlds with the +Minecraft toolset far more easily than we've ever seen from those +other tools. Obviously people have done great things with +Unity, but those people are much closer to professional +developers; typically they still need real 3D modelling +and all of that stuff. + +So what I'd really like to see is someone build some kind +of voxel-game-construction-set. Start with stb_voxel_render, +maybe expose all the flexibility of stb_voxel_render (so +people can do different things). Thrown in lua or something +else for scripting, make some kind of editor that feels +at least as good as Minecraft and Infinifactory, and see +where that gets you. + +**Q:** +Why'd you make this library? + +**A:** +Mainly as a way of releasing this technology I've been working +on since 2011 and seemed unlikely to ever ship myself. In 2011 +I was playing the voxel shooter Ace of Spades. One of the maps +that we played on was a partial port of Broville (which is the +first Minecraft map in stb_voxel_render release trailer). I'd +made a bunch of procedural level generators for the game, and +I started trying to make a city generator inspired by Broville. + +But I realized it would be a lot of work, and of very little +value (most of my maps didn't get much play because people +preferred to play on maps where they could charge straight +at the enemies and shoot them as fast as possible). So I +wrote my own voxel engine and started working on a procedural +city game. But I got bogged down after I finally got the road +generator working and never got anywhere with building +generation or gameplay. + +stb_voxel_render is actually a complete rewrite from scratch, +but it's based a lot on what I learned from that previous work. + +**Q:** +About the release video... how long did that take to edit? + +**A:** +About seven or eight hours. I had the first version done in +maybe six or seven hours, but then I realized I'd left out +one clip, and when I went back to add it I also gussied up +a couple other moments in the video. But there was something +basically identical to it that was done in around six. + +**Q:** +Ok, that's it. Thanks, me. + +**A:** +Thanks *me!* |