Voxel Quest
  • Home
  • News
  • Videos
  • Gallery
  • Contact or Subscribe
  • downloads and source

Preliminary peek at the (unoptimized performance) in the new rendering methods

6/26/2015

6 Comments

 
This is not a full update, just a recent peek at some improvements and performance.  In my next full update I will release a video.  If you are curious to know more about the planned development timeline, see the bottom of this post.

A constant question I get is something along the lines of "what is performance like?"  The truthful answer was - I did not know! It looked like it was getting at least 60 FPS.  Accurately measuring FPS can be tricky in OpenGL without profiling software, and I have not yet gotten to the point where I am using that (I don't want to get sucked into tweaking the heck out of things to profile this early on).  If you think it is as simple as doing a timer between frames, that is not true.  See here for further details on why getting the FPS can be tricky.

In order to perform these frame tests, I did it the old fashioned way - render a large amount of frames without any sort of timer constraints, and measure the amount of time it takes (in this case, I am measuring how long it takes to render 10,000 frames).

Some VERY important notes :D
  1. These performance figures are still largely unoptimized. I suspect in the long run I can get at least 2x performance.
  2. These performance figures are largely IRRELEVANT for isometric mode (which the game will still support) - in isometric mode, it need only render the scene once every so often as the camera moves larger distances, or when an environmental object is changed/destroyed.  You could quite easily render an isometric scene at 1080p without much lag.
  3. I have made a conscious decision to favor scene complexity over resolution (in fact, I think it is a bit ridiculous to play a game at 4k resolution these days when it only magnifies the inefficiencies in texture resolution and polygon count).  I am intentionally trying to make the game look good at old resolutions similar to Mode 13h (or equivalent for widescreen).  I loved the look of Doom, Hexen/Heretic, Ultima Underworld, and so forth.
  4. Although these shots are untextured, the texturing is not a very expensive operation (I'll explain more about this trick soon!).
  5. The date at which I targeted "going gold" is still 3 years away (although preliminary releases will be much sooner than that.  During this time hardware will become faster and cheaper.  The GTX 980 which I am rendering on now should cost $100-$200 if not less by then and about 50 percent of the users on Steam should have some as fast or faster than that, extrapolating from current hardware surveys.  I am targeting to get it running well on a GTX 960 or equivalent, which should already be feasible but I need to test.
  6. The interesting thing is that the object count makes little difference.  In some cases, rendering 10,000 objects is faster than rendering 1,000 objects (due to occlusion).  There is no limit on how many objects you can render - you can render a million objects with little change in performance.  By the way these objects (which are an extension of superellipsoids) can render any classic piece of geometry like cones, spheres, diamonds, triangular prisms or ramps, and more - all using one instruction set.  Below this I have included a couple further updates from the Voxel Quest twitter account regarding improvements and further tests with this rendering.
  7. (Edit) Also note that the point here is not so much to compete pixel for pixel with a polygon engine.  I can do things that could simply never be done with polygon engines, and that realistically requires a sacrifice to both resolution and performance.  These are SOLID objects that can be updated with completely different geometry, volumetric textures, and whatever in realtime.  While rendering one object might be slower in my engine, you must account for the fact that I can render millions of objects faster than a polygon engine could.  In other words, my engine is resolution-dependent, not polygon-dependent.


Picture
The new rendering methods now support any amount of overlapping geometry (previously, each piece of geometry was constrained to one instance within its own cell.  There is still more work to do before I do a full writeup, as the process is still changing slightly and there are more steps to finish.  I am also doing a huge amount of work just to manage dynamically placing objects in the scene, saving your creations, and a lot of stuff along those lines, which I will also talk about in the next update.

Detail pass is working properly + even better perf and less bugs. No limit on detail == huge potential :D #gamedev pic.twitter.com/PMFNzLnZYn

— Gavan Woolery (@gavanw) June 15, 2015

Of course does not need to be symmetrical. You can slice these puppies any which way. #gamedev pic.twitter.com/CSQk6gHY0S

— Gavan Woolery (@gavanw) June 16, 2015

Almost have all tests complete for arbitrary geometry. This scene contains 2 polygons. :) #gamedev pic.twitter.com/oUCAsQGjHi

— Gavan Woolery (@gavanw) June 18, 2015

Now you are thinking with portals. #gamedev pic.twitter.com/rCQOf86SqV

— Gavan Woolery (@gavanw) June 19, 2015
I'm not going to type a ton about the development status of the game - I've already done that in the forums if you are curious (check recent threads).  But let me just provide a brief summary of recent issues:
  • I am finishing the tech side of things this month, and all focus will be on gameplay once that is done (FOR REAL).
  • I am shipping a minimally viable prototype game ASAP that will be a slight deviation from the long term goals of VQ.  I am still planning to achieve my long term goals, but that will be down the road.  The first goal is to get something fun into the hands of backers and ensure that I don't get stuck on hard problems in the short run.
  • I am in the middle of raising funds to complete the game.  I am currently considering money from acquaintances I know and angels. I have enough funds in place to carry me for a good while longer, it is mostly a matter of choosing who to take money from at this point (and fingers crossed that at least one or more of these deals actually goes through, as getting the signed check is not always the same as getting the "ok").  My primary goal is to not compromise my vision or freedom in this process, which seems viable based on who has offered so far.
  • There have been many reasons for the delays thus far, largely involving tech revisions, and being adamant about shipping a "fun" game.  I have intentionally not given a hard release date because I realistically don't know when that will be, but I am striving to both get a tech demo out in the short term, get the source ready to distribute, and to get a minimally viable and fun game out.
6 Comments
Anton
6/26/2015 06:19:22 pm

Neat, thank you for update and good luck! :3

Reply
Gavan Woolery
6/26/2015 09:49:29 pm

:)

Reply
Borkyborkbork
6/26/2015 11:22:51 pm

Gavan, you're awesome. Hope you are still enjoying the creation process. What you are building looks to be both amazing and unique.

Reply
Gavan Woolery
6/27/2015 09:02:45 pm

Thank you! Yes, the majority of stuff is still "fun" to work on, in spite of me moaning about things from time to time. :)

Reply
Andrew
11/2/2015 08:33:13 pm

What do you think about making the resolution dynamically adjustable?

Let's say you have a target frame rate of 60fps or 16ms per frame.

If it takes <8ms to render a frame, you add a row/column of pixels to the resolution.

If it takes >12ms to render a frame, you remove a row/column of pixels to the resolution.

This would make it fluid on virtually any system without needing to be configured, and it would automatically look nicer on beefier systems.

Reply
celeb networth link
11/11/2020 01:26:30 am

I hope to see more updates from you, thank you so much!

Reply



Leave a Reply.

    RSS Feed

Legal Information