10 ms·
Show HN: My Isometric Voxel Engine 6 Months Later
- donutdan4114 13y agoThis looks amazing. Very impressive. I hope this is successful, because you deserve it.
- gavanwoolery 13y agoThanks so much! I don't know if I deserve anything, but it definitely has been buckets of blood, sweat, and tears. :)
- TTPrograms 13y agoReally great work! A few quick questions - is the engine restricted to rendering from a fixed viewpoint as in your demo, or is that just a facet of the game you want to build with it? Also, would it be possible to speed up rendering by identifying occlusion from the viewpoint and not rendering those voxels as opposed to the "building up" demoed in the video? Really great stuff!
- gavanwoolery 13y agoThank you! Yes, no occlusion culling yet, that could speed it up quite a bit (but additionally the user can cut away at any predefined layer interval, so maybe everything needs to be rendered?). Rendering does not have to be fixed point, I've thought up ways to do first person view, but it would require projecting each chunk onto a sphere and wouldnt work well for non convex chunks. Anyhow for now I have to pick my battles so only isometric at the moment :)
- bane 13y agoDoes it support rotating around the main viewpoint at 90 degrees? I can imagine some really cool tactical battle sims, since the buildings have interiors, but things getting hidden by buildings might make it a bit fussy. Being able to quickly rotate around a building, even at fixed angles (a la sim city) would solve that. Come to think of it, a simcity + simtower combo game would be great. Zone out an area, then choose what goes in each building and slice away sections of buildings to watch the ants go about their business.
- gavanwoolery 13y agoCould do 90 deg rotations fairly easily, but it would require a rerender (or rendering several views simultaneously). Right now you can cutaway at several levels so I guess it kind of works for seeing behind buildings.
- bane 13y agoI was expecting more minecrafty looking, totally unexpected and awesome. I thought it was all bitmaps at first until you started sectioning through the buildings. Really awesome stuff. The world sizes are amazing.
- gavanwoolery 13y agoThanks! Minecraft has kind of defined the new voxel, but I like the old-school Nova Logic look. :)
- k__ 13y agoI like this retro look too. It enables you to make the players feel like "back in the days", but also to surprise them with state of the art concepts. Games that are made like this create the feeling most people hope they get, when they play old games. They think about the times they had, play it again but often isn't as good as in the past, because over time they got used to much more stuff, which is missing in the old games.
- comatose_kid 13y agoVery nice work, really great to see how it's improved as a result of your sustained effort. Also - I remember that Nova Logic game (Commanche?).
- gavanwoolery 13y agoYes, Commanche was my first experience with voxels...I was never huge into flight sims but I played it just for the graphics. :)
- dragonwriter 13y agoReally, many of the NovaLogic games (Comanche, the Delta Force series, and there were jet simulators and tank simulators as well.) I think they all used the same (or at least, a related family) of voxel + polygon engine(s).
- frik 13y ago
- javanix 13y agoVery very pretty graphics. I love that it doesn't look like voxels. I wonder if you could use this to import and export meshes from a physics sim? If you could turn the brick wall, for instance, into a Havok mesh, simulate knocking it down, and then convert the results back into voxel land you could do some really neat turn-based persistent-world destruction stuff.
- gavanwoolery 13y agoThat would be cool...there is some 3D Studio Max Pluggin IIRC that does a lot of pretty cool voxel destruction stuff...don't remember the name. I have thought of doing more interesting fractures though, could be a cool effect (i.e. use a voronoi point cloud to fracture a wall into several sharper pieces).
- AsakiIssa 13y agoTo nudge a brain cell or two, the plugin is RayFire ( http://rayfirestudios.com/ http://rayfirestudios.com/ ) and is a really awesome tool for destruction!
- gavanwoolery 13y agoYes that's the one!
- bhouston 13y agoMy company sells a destruction plugin as well - http://exocortex.com/momentum http://exocortex.com/momentum Similar to ray fire.
- gavanwoolery 13y agoWow, that looks awesome! :)
- deleted 13y ago[deleted]
- ebbv 13y agoI started watching your video and what you have so far looks neat but you lost me when you started talking about how proud you were of the emergent AI when you haven't even started coding it yet. Yeah, you might have some good ideas about how you want the emergent AI to work but that's very different from having it working. Execution is the hard part. My point is, talk about what you've done more than what you intend to do. Everybody can talk about what they intend to do, almost nobody does it. What you've done so far is interesting enough, talk about that for now.
- gavanwoolery 13y agoYou are actually probably right. I was tired so did not plan this video too well. :) I kind of just wanted to hint at what I had planned for AI but I got carried away. I agree that talk is not worth much. :/
- wowtip 13y agoYou are very humble. No, usually talk is not worth much, but seeing what you have achieved so far without help increase the value of your talk, even if awesome talent for coding gfx not automagically = awesome talent for coding AI.
- gavanwoolery 13y agoThanks! Sometimes I'm not humble, and it usually produces a negative reaction so I usually have to actively remind myself to try to be humble. :)
- aswanson 13y agoGavan, this is amazing. Im trying to learn game development and graphics myself. Could you give me pointers on how to get started (tools, books, online tutorials, etc)? I want to get to this level of skill one day.
- gavanwoolery 13y agoHi - my advice is probably cliche but you are your own best teacher. That, and Google. I did not really have Google when I started game dev (resources were very poor 20 years ago, at least). Build things yourself if you are interested in how they work, otherwise I advise prebuilt engines like Unity or GameMaker. I used to be very poor at math in school but gamedev helped me learn it. I started out on the DirectX tutorials that came packaged with the DirectX SDK (I had done other stuff prior, but DirectX was where I really got into 3D programming). There are plenty of good OpenGL tutorial sites out there but Google will know the links to everything better then me. :) If you want to really learn 3D programming, write a software renderer, you will learn a lot and its not as difficult as it might seem (although it is quite hard).
- wonderyak 13y agoThis looks wonderful. The map generation looks particularly great.
- gavanwoolery 13y agoThanks! Map generation was actually far more complex than I thought it would be (in particular, generating meaningful networks of roads that don't criss-cross too much).
- bas 13y agoLooks great! I love the lighting on the inn/house.
- gavanwoolery 13y agoThanks - the night lighting was only implemented a few days ago. :)
- richardwhiuk 13y agoSounds awesome. "The entire program is only" - I think you left off halfway through?
- gavanwoolery 13y agoOops...thank you, fixed that.
- sawyer 13y agoYou forgot to include the pre-order form!
- gavanwoolery 13y agoYes sorry! There is a kickstarter signup page though (hint hint) :)
- jmduke 13y agoHonestly, the only incredibly disappointing part of this project is that there currently doesn't exist a way for me to throw my money at you through the internet. In case you missed it, a link to be notified for the Kickstarter: http://ci4v8ia31.launchrock.co/ http://ci4v8ia31.launchrock.co/
- gavanwoolery 13y agoThanks, I currently take pigeon delivery though. :) Yeah, I am holding off on preorders until Kickstarter so that people are fully aware of the terms, conditions, risks, etc. Also, I sincerely promise not to pull an Oculus.
- ctdonath 13y agoIf somebody offers you two billion dollars, yeah you will. People just need be clear on what Kickstarter is: a way of raising enough money to achieve a startup target goal by selling trinkets/products/services/recognition/facetime. Reaching that goal isn't necessarily the totality of fundraising, and sure doesn't mean the company/product won't be way more valuable at that point. If your Kickstarter campaign nets you enough money to complete development, nobody should feel betrayed if someone else decides your product is very valuable and gives you a giant pile of cash for it.
- gavanwoolery 13y agoYep, I don't really blame the Oculus guys per se (if there were any blame that could be placed). I blame Andreesen Horowitz, which put $75 million in. It was basically an old fashioned pump and dump; when you put in that kind of money, you know where a company is headed: acquisitionville. :) I do question if I would take $2 billion, because I'm not really in this for the money, so long as I have enough to survive. I actually passed up an opportunity for acquisition not that long ago (with another company) because I did not want the golden handcuffs, which would have been 3-5 more years of work I hate. Basically, I see this as almost my last chance to do something interesting with my life (its very tiring and I am getting "older"), I don't know if I could put a price on that. That said I'm not trying to act like I'm above money or something, I'd enjoy a billion dollars just as much as the next guy. :)
- everyone 13y agoHoly sh*t!! That is very very impressive!! This guy is obviously an amazing game programmer.. I hope one day to be that skilled!
- gavanwoolery 13y agoTh*nks!
- hetid 13y agoThis is really cool, but I fully expect you to fail. Something simple to say like emergent AI can be ridiculously complex in practice. I bet you really have all the experience you claim to have, but I still don't expect you to get very far. You have quite a few descriptions of how the game will end up, but saying things like "it will be fun and all these other things" dismisses how you're going to make it that way. I think the coolest promise was that the game would be deterministic. I'm not sure if you have lots of experience making games, but in my experience games written from the ground up never really become complete games. If you're not already, you may want to consider hiring a team or getting help developing this so that you can focus on the things you think you can do most effectively or that are most crucial to the final gameplay. Anyway, I really hope this is going to be all you say it will be. Good luck. :)
- RyanZAG 13y agoYou're definitely right. A lot of people don't fully understand how difficult what he's trying to do here is - and there have been many, many teams trying to do what he's talking about and have failed. Not to say he won't succeed, just that if he does succeed it's a bigger deal than it sounds and would probably propel him into the league of the few programming giants. Here's hoping!
- gavanwoolery 13y agoThis is true, but I have also shot myself in the foot by perhaps making it seem like I'm taking on a bigger task than I actually am. Hopefully soon I can show more in detail what I have planned for AI, it is relatively simple overall. (In shorter words, I am building a very crude AI that just does a bit of deduction combined with score maximization, not something that can comprehend english sentences). :)
- RyanZAG 13y agoSounds good. Sometimes a simple solution works much better than a complex one simply because it interacts with everything else really well and creates the impression that it's smart. Looking forward to seeing it. :)
- SixSigma 13y agoBah, my comment on your site went to an error page on submit. It was: any plans to give an opening for player written AI to function in game - writing your own group companions sounds fun too, could even use a similar codepath as multiplayer
- gavanwoolery 13y agoYes actually; I had not thought of that directly, but any AI rule can be modified, in addition to entity property sheets.
- dllthomas 13y agoVery pretty.
- ljak 13y agoIt looks a lot like Little Big Adventure.
- VikingCoder 13y agoNeat! I do think the grass looks like those old cartoons where the character is wearing a plaid outfit, and as they move, the plaid pattern stays still...
- gavanwoolery 13y agoYes this is a screen-space artifact - there are ways around it, just have not implemented a fix yet. :)
- Scaevolus 13y agoThe memory requirements make it sound like you're not using hierarchical decompositions (sparse voxel octrees, etc), is there a reason for that? How well-supported are dynamic features like animated characters or destruction? (Voxatron-style) I'd hold off on your claims on AWESOME EMERGENT AI before you actually have it up and running. The capabilities are simple to describe, but actually implementing them in a way that's performant and not horribly buggy has stumped well-funded teams of experienced developers.
- gavanwoolery 13y agoYes, no SVOs, but in a way sparse trees are used to store higher level information, only they are not octant-based. Dynamic stuff is not up to the level of Voxatron, partly because it is just a lot more data to deal with, but you can have objects that move dynamically (as seen with windows and doors). That said, I may use old fashioned polygons for somethings like character animation, TBD. I agree on the AI, I only want to discuss that I have plans to do some stuff with AI, and like I say on the site please be skeptical until you see anything. :)
- Guvante 13y agoOne easy optimization I saw was that your fill order was rather arbitrary. Ideally you want to fill away from the camera, since the closer you are to the camera the more of the screen you are impacting. Might want to look into a sparse system since storing 100% of the detail is great for demos like this but will result in huge amounts of wasted performance in most real applications, especially when working with mostly filled objects. Overall a very impressive demo though.
- GhotiFish 13y agoyah, my eyes rolled on the AI as well. Toady has being trying to develop exactly this for years and years and years with dwarf fortress, and he's by no means a dumb individual.
- NoodleIncident 13y ago
- 3rd3 13y agoIs central perspective possible or is the isometric view hardcoded into the shaders?
- gavanwoolery 13y agoOther perspectives are possible. Some work would need to be done to change the perspective, but it is doable. For now, only isometric because it is ideal for tactical games and board games (I think?), and I need to limit what implement.
- OmarIsmail 13y agoThe more I read the more skeptical I became, but at the same time, you acknowledged all of the criticisms I was building up in my head. You have a realistic timeframe (years, but public access this year), and you acknowledge building a game, not an engine. Your writing is clear and easy to follow, and your intelligence definitely shines through. I never thought I'd say this, but you may actually have a shot at pulling this off. I mean the next Minecraft, Angry Birds, etc is going to come from somewhere/someone, why not you? Keep it up! And looking forward to the next update.
- gavanwoolery 13y agoThank you! The odds really are stacked against me, but on the other hand I don't like to fight easy battles. :)
- beachstartup 13y agoalways remember, long odds = long payoff. and if you're not starving, the odds are still good. good luck!
- gavanwoolery 13y agoThanks! I could benefit from a little starvation actually; sitting in a chair 80 hours a week is not losing me any weight.
- jhuckestein 13y agoOne afternoon at Ikea and 40 bucks will buy you a nice standing desk. I know it's become a cliche, but if you really do sit 80 hours a week, it may be worth the initial inconvenience. If you're interested I'll send you links to the components on Ikea
- NhanH 13y agoI'm not the OP, but do you mind sharing the components list?
- mindstab 13y agoWhat is the music? is it an original creation? or a remix? because it reminds me very heavily of star control 2
- gavanwoolery 13y agoGood ear! The music is inspired by Star Control 2, and I composed it in a old fashioned tracker similar to what might have been used to produce the SC music. It is the first song I have made, mostly because I had an impulse to learn at least a little bit about music.
- wowtip 13y agoGot a Rob Hubbard / Populous I vibe to it. Not bad for a beginner. :)
- gavanwoolery 13y agoThanks!
- efnx 13y ago@gavinwoolery - How did you get started working with voxels, graphics, etc? What are some good resources for learning about this stuff? Awesome demo.
- gavanwoolery 13y agoThanks - I started in QBasic when I was maybe 15 and made a solid volume in Mode 13H. It ran at about about 1 frame per minute. I am mostly self taught, which is good and bad. Bad, because it takes way longer, good because you learn how to derive solutions yourself and learn why things work the way they do. My recommendation is to either start with a set of OpenGL/DirectX tutorials or just get some pixels on the screen any way possible, and build a software renderer from there -- that is if you want to learn. If you want to make a game, your best bet is to use an existing engine, although I'm hardly a shining example of that.
- efnx 13y agoGreat advice, thanks. Are there any good resources specifically for volumetric, cube or voxel rendering? Is it completely different than polygons?
- MzHN 13y agoThis may not be exactly what you're looking for, but it made some of the concepts "click" for me. https://youtu.be/gNZtx3ijjpo https://youtu.be/gNZtx3ijjpo (three parts).
- Marcus316 13y agoThis is quite impressive! Have you set fire to any of the materials in your generated world yet? It would be interesting to see a fire spread through one of your houses ... fire is usually one of the things either done well or done horribly in a game (in my opinion, anyways) ...
- gavanwoolery 13y agoThat's an interesting idea (are you a pyromaniac ;)? Right now I have so many things prioritized above types of destruction, but if I ever have time or other employees I will think about that.
- billrobertson42 13y agoIs it a case of "Source (will be) Available to Licensees?" If so, I think trying to call it, "open source," puts you in the position where you might be perceived as being disingenuous. I also think it's less clear that way.
- gavanwoolery 13y agoYes, you are actually right, I'm correcting it now.
- billrobertson42 13y agoGood. I think you're saving yourself a potential headache. BTW, Good stuff! Looks like a fun project. Pardon me if I missed it while skimming, but what is your development platform?
- pygy_ 13y agoWhile we're picking nits, OS X is a UNIX, but not a Linux flavor. You also mention dice roles in the third bullet of the "The Game" section. Great project, I wish you the best of luck.
- gavanwoolery 13y agoThanks, I will correct this (I was tired) :)
- ErikBjare 13y agoIn my days of playing with voxels in Blender I never thought something like this was even remotely a valid usecase. Incredible work Sir, I'm speechless!
- gavanwoolery 13y agoThanks! :)
- makmanalp 13y agoWow, great work, this reminds me of a lot of demoscene stuff where, when faced with space limitations, programmers aggressively used procedural generation combined with prerendering and caching. The most iconic example I can think of is .kkrieger, the 96kb first person shooter that has (relatively) amazing graphics: https://en.wikipedia.org/wiki/.kkrieger https://en.wikipedia.org/wiki/.kkrieger Video here: https://www.youtube.com/watch?v=2NBG-sKFaB0 https://www.youtube.com/watch?v=2NBG-sKFaB0 There might be valuable lessons to be had in that domain that might save you some time.
- gavanwoolery 13y agoYep I remember reading about .kkrieger several years back. :)
- baggers 13y agoIf you are into this kind of stuff do check out the following if you haven't already: http://procworld.blogspot.no/ http://procworld.blogspot.no/ http://www.atomontage.com/ http://www.atomontage.com/
- gavanwoolery 13y agoI have kept in contact with both of them a tiny bit (through twitter, blogging, etc); both Bran and Miguel are very talented people and I consider them some of the top in the field of voxel engines -- Ken Silverman as well.
- whage 13y agoAll this done by one man? How much time in total? This is awe-inspiring
- gavanwoolery 13y agoYes, just me so far - about 7 or 8 months total at this point.
- GhotiFish 13y agoThe lighting in this engine looks amazing. I'd love to see more detail on it. If you stuck a light source in your glass house, would you see convincing shadows?
- gavanwoolery 13y agoThanks! The lighting is actually quite inaccurate, but to the average player it looks "ok" I think. There is a kind of faked scattering effect on the windows -- if a light is behind a window, it lights it up a bit. If you stuck a light in the glass house, you would see shadows but they would likely be cutoff by the screen space errors.
- cyphax 13y agoOoooh this is absolutely gorgeous, it's like a moving painting! I love the style, I was very impressed by the video so now I'm going to read all about it because this is the first time I hear about it. ;)
- tbastos 13y agoSeems like the perfect engine for a remake of Ultima Online... the best MMORPG ever nostalgia
- gavanwoolery 13y agoYep never played UO but I appreciate everything it stood for in the early days. I did play the rest of the Ultimas though, and really loved 6 and 7.
- forgottenpaswrd 13y agoCongrats!, great work. This has lots of useful applications. E.g Do you know those graphics about a submarine of the WW2, or a Spanish galleon in which you could see what is inside, like in the book "incredible cross sections"? With your tech you could make this but dynamic and alive!! peering what you are interested in. While most of the scene is static, you could move some things a little and make it alive. You should contact one of those amazing artist and show them what you have. There is no way they would resist an offer of working on something like this.
- gavanwoolery 13y agoI have a copy of Stephen Biesty's castle cross-section book sitting on my desk. He provides great reference material. :)
- hnha 13y agoThat is "just a choice of style" and you can do it without voxels just fine (with some boolean subtraction if you are lazy). I love that style too!
- eigenvalue 13y agoI love these stories of lone (perhaps obsessive) developers laboring in seclusion for months, only to emerge with some awesome new thing that we can all get excited about. Must be a great sense of accomplishment, and a strong incentive to keep grinding away.
- gavanwoolery 13y agoThere are actually a lot of people that doubted me, some very close to me, and above all, myself. I have had positive reactions in the past, but you never know when people might be "over" your work. There is no feeling quite like seeing people light up when you reveal something that you have poured your life into, and that feeling is multiplied by the inverse of your confidence. joy = timeSpent * positiveReaction * (1.0-selfConfidence) :)
- diziet 13y ago@gavanwoolery -- what kind of Hardware is the demo running on?
- gavanwoolery 13y agoA single GTX 780, which is...I know, very yikes. It runs on far less, but you have to sacrifice visual detail. That said, if current patterns are an indication, a GTX 780 or equivalent will cost about $200-$250 or less (right now about $500 on Amazon, $700+ when it came out), in a few years when the game is released.
- diziet 13y agoAh, so it's GPU bound. So we'll have to wait quite a while for the tech to appear on mobile devices -- the smaller viewport might help, though given the current device resolution soon overtaking monitors... How low level is the rendering/generation, is there potential for 5x optimization if you get closer to hardware?
- gavanwoolery 13y agoRight now its just OpenGL, glsl, C++ - most of the generation occurs in GLSL, and the rest is basically rendering fullscreen quads. There is a potential for improvement with something like Mantle because there are so many requests sent to the GPU.
- htk 13y agoJust say the game is to create walls and poke holes in them and call it a day! I would buy it!
- gavanwoolery 13y agoMinecraft already did that. I have to raise the bar. :) But yeah, alpha access will be probably not a whole lot more than that. :)
- hnriot 13y agoMaybe this appeals to the younger gamer community, but having been involved back in the 90s with Renderware (which got eaten up by EA), a competitor to Rendermorphics that became (sort of) DirectX I would expect graphics engines to be much further along. This still looks like things we were playing with in the 90s. I'm sure its not, and I'm sure these voxels are clever, but when will rendering engines stop looking like Sonic The Hedgehog. Having switched to other areas of software development I haven't paid any attention to these engines.
- gavanwoolery 13y agoThanks - 90s games were the basis for most of the inspiration. It has niche appeal, so I understand if it turns some people off. :)
- hnriot 13y agoI had no idea that was your intention and I get the volumetric pixel thing, since I moved into working on other areas I haven't stayed current. Texture mapping on low poly count models was where I left things, back then the hardware didn't have the horsepower for anything much. Best of luck with the project. The irony is that back then we thought if we could just get more than 50 polygons per second we'd be in with a chance of making something good and now flappy bird with 80's style sprites captures the whole world's attention. I got out of that world when MSFT was ruining sw dev by turning the nice simple apis into COM.
- math0ne 13y agoI was like what's so special about another vocal engine. after watching the video I see now that if you can have a super super detailed voxel engine all other engines corps be rendered irrelevant.
- gavanwoolery 13y agoThanks! I have a niche corner that does not satisfy all requirements, so I think there is still a ton of room for other types of engines.
- kyberias 13y agoIt looks great. It bothers me a bit that the game is named after the rendering technology. It's fun to create a game engine that renders stuff but it takes way more than that to design a game.
- gavanwoolery 13y agoYeah, originally VQ was just a placeholder name - it is not a great name in my opinion.
- e12e 13y agoIt's looks like an interesting project. I wonder if there are technical similarities with Project Spark? http://projectspark.com/ http://projectspark.com/
- albertzeyer 13y agoMaybe I missed that. But why is the view always from 45° angle? Is that fixed?