Monday, 21 July 2014

A Day Of Mostly Talking

Amazingly, I clocked about 4-5 hours of talking today!  Shows how many major decisions had to be made in light of our demo release last week. The decision is one that I hope will please everyone reading my blog. We have decided NOT to pull the demo, and instead spend some weeks improving it based directly on the feedback from the community.  Our objective was to show the great results you can get from using our game maker, and we did not make the grade, so we're going to continue working on the engine until it does. Remember the marathon we went through to get performance great on low-end hardware, well now we're looking at the visual and game play feedback with the same venom.


The first tweak to go in the demo is the brightness and contrast adjustment, and when you put the old and new renders side by side you can see how much nicer the new one is. I don't think we have any debate here, and we have also added F2 and F3 controls so you can adjust these settings to suit your own project levels.


I achieved the new setting values by taking a screenshot and putting into PSP and tweaked it until I was happy with the balance. I then migrated that know-how into a post process shader to achieve the same graphical modifications, but this time in real-time.


My next assault on the dated visuals is to make our entities blend much more naturally into the scene.  As almost every game has some form of baking step, I figured I would research my own for inclusion into the standalone export part of the engine's tool set.


I only had a few hours over the weekend but started a quick prototype which applies something called Ambient Occlusion mapping to the brick stack and to the inside of one of the buildings.  Here you can see ambient occlusion around the creases of every polygon and also a point light which is casting the shadow. The scene does not get have it's normal mapping, specular, diffuse coloring and other small touches but you can clearly appreciate how these baked shadows will contribute to the final scene.

My plan is to create a system which can take a game export, extract the static geometry, batch them by locality and texture groups, apply the baking process, then insert the pre-baked geometry back into the level. I still need to find a solution for baking shadows on the terrain (which is a woefully stretched mega texture right now) and somehow keep the memory footprint for a whole level worth of light-map textures down.

I am also going to add the UZI and SHOTGUN characters into the demo as well to really mix things up, and I am sure some engine features will come from implementing those and getting the AI just right.

At the same time as making these engine improvements, I will also be recruiting a top artist to help me blend in the demo scenery for a more pleasing layout. For example the left wall in the first screen shot is a sharp line intersecting the grassy floor which is much too clean. Adding some floor textures to blend with the wall, maybe small grasses or fallen rock pieces will blend it better into the scene.

While I work on the engine and visual elements, my Ravey and Simon team will be working on the remaining editor and engine elements relating to the main list to ensure development of the strictly editor based features proceed at pace as well.

Our hope is that we can put out another demo at the end of this enhancement work that will not only improve the perception of the product, but provide additional features for the next major build. It will also mean you will get extra assets, more in-game features and a much nicer end result when you have finished your masterpiece and ready for the pre-bake.  Don't worry though we are not inserting the pre-bake into the test game process, and your real-time shadows will still work in the improved engine, only in the standalone game export phase (at this point). There might be calls to have the pre-bake as a button in the IDE so you can see what it looks like on the fly, but bear in mind industrial quality pre-bakes can take hours :)

Final bit of good news. I got a good slot and cool interview via N4G site over the weekend, which was nice: http://n4g.com/news/1549410/fps-creator-reloaded-gets-free-gameplay-tech-demo

18 comments:

  1. Sounds like a good weekend's work. Some nice looking screenshots.

    In terms of the occlusion baker, I'm not sure baking on build is really going to work. As we've said (and you seem to have implicitly agreed), lighting is integral to any game, and therefore might need a lot of tweaking to get right.

    Of course it depends on what exactly you're pre-baking, but when you consider that global illumination algorithms such as Enlighten calculate radiosity in real-time across a variety of platforms all the way down to phones, it feels like baking ambient occlusion shouldn't take so long it couldn't be done as part of the test game.

    I remember from a while back your prototype with a cannon where shadows were being baked instantly - is there any reason why the baking of the ambient occlusion couldn't be done iteratively, or only remapping new or moved objects?

    What I'm getting at is that from an artist's perspective, getting the feel and look of a scene right isn't an afterthought, so it seems like baking lightmaps shouldn't be tacked onto the end of the build either.

    Having said that I like the look of your prototype, although perhaps the ambient occlusion is a little overdone where the wall meets the floor. Tad more blur, but that will be sorted in time, I have no doubt.

    ReplyDelete
    Replies
    1. This blog (and in particular this post: http://molecularmusings.wordpress.com/2012/05/04/real-time-radiosity/ ) are very interesting reads, and it seems like an incredibly cheap way of getting very pretty lighting.

      Might be worth looking into.

      Delete
    2. Maybe it actually would be a good idea to try out something like Enlighten. TGC wouldn't necessarily have to use it, but it would be useful to try to emulate.
      If someone felt like splashing a bit of cash on it, it might even be a big investment. If it's good enough for Unity and the Frostbite engine, it's good enough for FPSCR lol

      Delete
  2. You may want to take a look at what Evolved has done with shaders for DBPro.
    He just released a new version today. He is using screen space ambient occlusion.
    His Terrain Demo is awesome. Here is the link.

    http://www.evolved-software.com/advancedlighting/advancedlighting

    ReplyDelete
  3. I always thought this video was a wonderful benchmark for FPSC graphics. The textures are overdone in some places but its generally very nice despite being built on the Classic engine.

    http://www.youtube.com/watch?v=mbCqJrhVdj8

    Alternatively here is some nice lighting using Evolved's advanced lighting system.

    http://www.youtube.com/watch?v=dqh3ef_urqU

    I think the ambient occlusion baking step is actually a nice idea but it definately needs to be included as an option in the editor for test games so artists can get everything looking just so before starting a bake that will take 10+ hours.

    Regardless of online or offline lighting processes, its clear there is still a lot that can be done to improve Reloaded lighting. It looks too generic and flat at the moment.

    ReplyDelete
  4. A real-time ambient occlusion shader would be a significant performance hit. That said, I invite anyone to send me a demo demonstrating real-time AO across an entire level that I can run on my benchmark HD 4000 integrated graphics ;) I understand the molecular guy took 3 months to get his real-time AO system up and running, compared to about a week using a baked approach. The idea of baking as part of the test (so level designers and artists can get a feel for what their game will look like) is a valid point and given more time I could resurrect the 'run-time pre-baker' but again it would be significantly more than a week. Believe me I am not a fan of adding several hours of baking to the system of making games, but it's the only way to get nice looking visuals on an old low-end graphics system at a decent FPS. As much as the theory sounds good that you can get real-time ambient occlusion running on a mobile phone, there's a good chance the game has been HIGHLY optimized to use the fewest possible polygons and a very specific implementation tailored to a very specific result. Reloaded needs a general system that can act on any result across a huge landscape of interior and exterior geometry, whilst retaining all the other shader benefits you would not want to see removed in place of Real-time AO. It's always about compromise with game engines, and more so for Reloaded which is attempting to delivery its visuals for low-end hardware. Also many techniques rely on a deferred renderer in order to combine the lighting renders, and Reloaded presently uses a forward renderer. My vote is to get the present engine functionally complete with the best visual improvements we have within the timeline, and then when we're cooking good games, I can sneak off for 6 months and write a full DX12 deferred renderer and return with every real-time trick you've ever seen :) Thanks for the various links too, always great to get a sense of the expectations out there, and it all sinks in (even if does take 3 weeks for it to turn into my idea) ;)

    ReplyDelete
    Replies
    1. Ask and you will recieve ;)

      http://codeflow.org/webgl/ssao/

      If you want to see realtime radiosity, just whack in a copy of Battlefield 3 ;)

      But you're right. Better to get the core working first.

      Delete
  5. Does anyone else recommend Battlefield 3 as a good demonstration of real-time ambient occlusion on low-end hardware? I checked the min.spec at it advertises a requirement of just 308 GPU score on passmark (HD 4000 has a GPU score of over 400). I am 'very' curious to learn how they managed real-time ambient occlusion on Battlefield 3 - do you know of any links (and how did you know about this)?

    ReplyDelete
    Replies
    1. Hi Lee

      It's easy to get carried away with graphics and I think its just a case of reaching a point where the graphics in Reloaded are acceptable to the average gamer that plays other FPS games.

      Clearly we can't just go all out graphics geek as that would just kill performance but if we can blend some baked methods with some real time methods we should be able to end up with something nice.

      If you get a few core lighting paths in there it will just be down to the designer / artist to make things look amazing but we are missing some fundamental things here at the moment which is holding the visual quality of Reloaded back.

      Its one of those slightly unfortunate situations where FPS games tend to push the envelope and are usually the games which showcase the very latest in graphics and other technologies. I think Reloaded is now off to a good start but the lighting is going to need an overall before you can expect any "OOH's and AAH's" from the general public.

      As early adopters and long term supporters most of us can look at this and say wow FPSC has really come along since classic but since you are looking to start getting content on Steam now its better you get the feedback here than on public forums where people might not appreciate the journey!

      Delete
    2. Battlefield 3 actually uses real-time radios it software called Enlighten, developed by a Cambridge based company called Geomerics (that has recently been bought by ARM).

      Enlighten features battlefield 3 on their site as projects that have used it. It's also scheduled for inclusion in unity 5.

      Delete
    3. *radiosity - phone no like human.

      But like Dino said it would probably be very expensive to use the actual system. Your time and money might be better spent examining the system and coming up with a way of pre-baking the radiosity as fast as possible. Enlighten might be a starting point as it is clearly capable of calculating it very quickly.

      Delete
    4. Hi Lee,

      Battlefield 3 has graphics settings options, one of the options is ambient occlusion. You can choose from three different ambient occlusion options HBAO,SSAO, or no AO. So a computer with the minimum specs would probably have its graphics settings automatically set to the lowest settings with ambient occlusion turned off.

      Here's a link to a Reddit page with some images that compare the different ambient occlusion settings and also the difference in frame rate: http://www.reddit.com/r/gaming/comments/kwjtw/my_battlefield_3_screenshot_comparison_ssao_vs/


      Hope this helps.



      Sean

      Delete
    5. Thanks for the extra info, explains a lot. If BF3 is only using screen space post process ambient occlusion for it's 'real-time' radiosity, then it's not what we need. True radiosity needs to calculate indirect lighting from the effect of bouncing light, not a quick hack to increase visibility of depth based greases. Does BF3 use any pre-baked lighting (i.e. texture based lighting)?

      Delete
    6. I'm not 100% sure if it uses any pre-baked lighting or not but the Frostbite 2 engine (which is what Battlefield 3 was made with) boasts about its full dynamic lighting. Also in the graphics settings, there is a setting to change the shadow quality. I'd imagine that if they were using some baked shadows you might see a real difference in quality between objects that are using dynamic shadows and those that use baked lighting when messing with that quality setting (unless they swapped out the pre-baked textures too).

      Here's an image of Battlefield 3's graphics settings: http://img85.imageshack.us/img85/8263/videopanel.jpg

      It might also be worth mentioning that Battlefield 3 uses Direct X11.


      Sean

      Delete
    7. Also, it might be worth checking out Evolved's advanced lighting library for DBPro, he rewrote it and just released a new version 2 days ago that seems to be running a lot faster.

      Here's a link: http://www.evolved-software.com/advancedlighting/advancedlighting

      And here's a video showing it off a bit: https://www.youtube.com/watch?v=wZXRSmWzoBo


      Sean

      Delete
  6. http://madebyevan.com/webgl-path-tracing/
    http://madebyevan.com/webgl-path-tracing/webgl-path-tracing.js

    There's an interesting little demo.

    ReplyDelete
  7. I have dropped my HD4000 test machine in favour of a NVidia 770 based solution. The 15FPS I was getting simply made it unplayable. So, if my vote was the tipping point, please flip it over to the other side. I really like the blocks in the room as it somehow seems to add depth, even though there is obviously so much more to add.

    I admit that I don't understand the graphics methods you describe by name, but that's my problem not yours. I like the update and direction you are talking up.

    ReplyDelete
  8. My suggestion is to add a real-time SSAO (screen-space ambient occlusion) shader which can be disabled by end-users of our games. This is commonplace in modern games of all kinds; real-time "AO" is normal nowadays. Sure, SSAO has minor artefacts and tends to be overused, but it adds immense depth to a 3D scene.

    Just remember, it's also normal to be able to turn it off because it's a fairly big performance hit on older cards.

    Additionally, it should be entirely possible to calculate full-scene AO in minutes, if not seconds. I don't see why it takes hours.

    ReplyDelete