In the coming Newgarden build, we will change the way the game renders graphics when the “low” quality setting is selected. The picture below pretty much sums it up, but read on for the details!
As an extension to the matchmaking work required by ‘Play with Friends‘ and as part of the general effort in making the game easier to understand for new players we are working on adding tiers to matchmaking as has been requested by the community for a LONG time. So without wasting further keystrokes, take it away Reto.Hal9K (tier 3) – Reto.Robotron3000
To help avoid the situation where first-time players are being completely overrun by more experienced players, we are working on adding tiers into the action game matchmaking. This is also a benefit for the veterans, as they won’t be as frustrated with people new to the game who might not yet understand what “NMY pz3 at B2 app. B3” means. :-)
In the first iteration we will stick with two tiers, cleverly named: Tier 1 & Tier 2
To penetrate and dissipate these (ingame) clouds of darkness, the general mind must be strengthened by education. – Thomas Jefferson
This time I’ll write a bit about our upcoming real-time volumetric cloud system. Unless something goes horribly wrong and the sky is falling down the new clouds should make an appearance in the Jefferson build.
About a year ago I wrote the code and shaders for the current cloud system, that uses sprites to render the clouds seen in the action game. At that point I was already pursuing various options for rendering clouds in a different way, that I wasn’t satisfied with the quality and performance I could achieve using sprites, but due to lack of time I had to let go of the research and use the sprite system.
When seeing the game from the outside it’s really hard to get an idea of just how many machines and services that is actually involved to run our game Heroes & Generals. So, I just wanted to give you a brief overview of the setup. While Reto.Hansg has already blogged about the actual server-hardware and physical locations, I’ll describe the various components.
Below is a diagram describing the setup and the communication channels involved.
We’ve been running with Cascaded Shadow Maps (CSM) for quite some time now, with a user adjustable cascade count ranging from 1 to 3 cascades. The last cascade (number 4) has been a one time calculated shadow map for the entire scene, to avoid shadows missing in the distance. The last has been an important addition to standard CSM as we have airplanes in the game, and the landscape just looks flat if we omit it. Initially we talked about precalculated shadows/lighting, but we wanted a more dynamic solution to allow weather changes, and didn’t want to increase the download size of the game.
Even though CSM solves a lot of issues with the quality when covering a large area, they have some really heavy performance requirements. Especially when running with 3 cascades, the number of objects visited and revisited during drawing can become very high. In certain scenarios the CPU time for setting up the objects to be rendered would climb up to 16-20 ms on high-end machines, effectively dropping the framerate from 60 fps to 30 fps.
So I started looking around for alternatives to the CSM and fell across an article written in GPU Pro 2 by Pavlo Turchyn about the game Age of Conan. They were fighting the same issues as I was, but had solved the problem by switching to Adaptive Shadow Maps instead.A debug view of the Adaptive Shadow Map Tiles. The red lines shows the active tiles, and the white lines shows the current camera frustum as seen from the light.
In short, ASM works by dividing the world seen from the light source into tiles, as compared to CSM where it’s the camera frustum that is divided. Each tile is then given an index into a tile map and a shadow map for that tile is calculated and stored in this tile map. For those familar with virtual texturing/mega textures etc.. the algorithm is very much the same. To avoid rendering many small tiles in the distance, the tiles are combined into progressively larger tiles in a quad tree hierachy using the distance from the camera as a guide to the depth of the quad tree. This quad tree is evaluated each frame, and if a new tile has entered the visible range or if the quad tree detail level has changed somewhere, the new tiles are calculated. Typically a single tile every several frames has to be recalculated, giving a huge performance burst compared to CSM.
ASM has one short coming. It doesn’t do dynamic shadows from vehicles or characters. To overcome this problem I maintain a separate shadow map for dynamic objects and combine the ASM with the dynamic during drawing.
The next major release of the game (internally called Avery) will contain the new shadow map system.
In my ‘sparetime’ I’ve worked a bit on a system similar to the glow effect seen in some other games (eg. Left4Dead), where it’s possible to ‘see’ certain mission objectives through walls in order to aid the player on the way through the game. I know even from myself that it sometimes can be really hard to find certain key points in our game, as the in-game map isn’t that detailed. Below is a screenshot from my current experiment.
Let us know what you think! Whether you like it or not…
Initially we wanted vegetation to play a role in the gameplay, eg. we wanted players to be able to crouch and hide in the vegetation. In most other games (at least in those I’ve played) the vegetation is clipped away in the distance leaving the ground completely uncovered. The effect would be that the player would crouch down thinking he would hide in the high grass, but in reality all other players would be seeing him crouching on a bare piece of ground.
We already had a vegetation system similar to what exists in other games, but performance got really bad as soon as we moved the clip plane further away from the camera, so I started to look into other solutions. I had some ideas that I needed an algorithm that would work somewhat like our terrain drawing, where the terrain would get coarser in the distance.
We are currently looking for experienced programmers to join the team.
Text in Danish:
RetoMoto ApS søger dygtige og erfarne programmører. Primært stærke i enten c++, C# eller actionscript.
Vi er et spilfirma bestående af nogle af grundlæggerne af IO Interactive A/S og hovedpersonerne bag bl.a. Hitman-serien.
Vi arbejder på spillet “Heroes & Generals”, som er et nyt og spændende online spilprojekt og har brug for erfarne programmører der kan bidrage positivt til projektet, fagligt som personligt.
Opgaverne kan være indenfor bl.a. c++ spil setup, C# server framework, C# server spil logik, Flash actionscript, python build & deploy.
Henvendelse kan ske ved email til: [email protected]