The Riftbreaker cover
The Riftbreaker screenshot
PC PS4 XONE PS5 Series X Steam Gog Epic
Genre: Role-playing (RPG), Simulator, Strategy, Adventure, Indie

The Riftbreaker

DirectX 12 Bug Hunt

Riftbreakers! We need your help!

The December update for the Riftbreaker: Prologue was one of the major milestones for the project, as we added support for the DirectX 12 renderer. It allowed us to make use of cutting-edge effects and improved the way the game handles its operations on modern PCs.

Just like any other piece of software, this new solution had some bugs, but thanks to your bug reports we managed to hunt down and fix most of them. Most...

A couple of bugs still elude us (they happen about 1 time per 1000 game launches) and we can't seem to find the exact steps to reproduce them. We need your help to find them. That's why we are launching a worldwide bug hunt!



Here's what you need to do in order to take part:


  1. Make sure that your system is capable of running DirectX 12.
  2. Download The Riftbreaker: Prologue.
  3. Go to your Steam Library, find The Riftbreaker: Prologue and click 'play'. This is important - if you launch the game through a desktop shortcut you won't be able to complete the next step!
  4. Choose 'Launch Configuration Tool' from the box that appeared.
  5. Make sure that you've chosen the DirectX 12 renderer and launch the game. IMPORTANT: Do NOT turn on the DirectX 12 diagnostic mode!

If the game launches normally, you can't help us with this issue.

If the game crashes, you might be the person we are looking for. It might crash during loading or during regular gameplay. Try playing the game for some time.

When The Riftbreaker crashes we launch our Crash Reporter tool. It looks like this:



We need you to click the 'Stacktrace' button and make sure you got one of the following results:





If you got one of these two crashes you are on the right track. If they happen regularly, to the point where the game becomes hard to play normally, please contact us! You can send us an email to piotr.bomak[at]exorstudios.com, write a message to bug-reports channel on our Discord (www.discord.gg/exorstudios) or contact us through Facebook or Twitter. One of our programmers will work closely with you to find out what causes the issue and how we can fix it.



We will reward the people who help us find these bugs with Alpha access keys!

Naturally, if you encounter any other bugs, please send us reports and descriptions through the crash reporter.

We count on you!
EXOR Studios

Help us decide the best time to stream

Hello everyone!

The Riftbreaker has always meant to be a great game for live streaming. Randomized content and the open-ended nature of gameplay mean that no two sessions are ever really the same and the game has the potential to remain fresh and replayable for a long time. Interactive streaming events make the experience even more interesting, giving the viewers an opportunity to make events happen in the game world through the chat-operated voting system.



Ever since we announced The Riftbreaker we have been streaming the latest development build twice a week, giving you the chance to check in on our progress and meet other members of the community. Streaming is also the most direct contact form with you. By going live we can chat about our plans, gather ideas, brainstorm, and get immediate feedback. However, not all of you have been able to join us live just yet because of the time zone differences. We would like to do something about that.



Starting next week, we are going to move the Thursday stream. The exact starting time will be determined by the results of this poll:

https://www.strawpoll.me/42466881

Please share this information with your friends and ask them to vote as well. The Tuesday streaming time will remain unchanged at 3 PM CET.



We realize that it is impossible to please everyone and set up a convenient stream time slot for all time zones, but perhaps shifting the show a couple of hours forwards or backwards will help you catch it more easily.



This is an experiment, of course. If it turns out to be successful, we can negotiate to shift the Tuesday stream as well. If we realize that things were better earlier we can always come back to the old schedule. It’s up to you, so click the link, cast your vote, and make your voice heard. If you have any additional comments or ideas, feel free to post them in the comments.

See you in the chat!
EXOR Studios

Patch notes for January 15th

Hello!

It is time to roll out the first patch for The Riftbreaker Alpha and The Riftbreaker: Prologue in 2021. This update is a rather small one, not bringing any new game content, but it has a couple of important fixes and changes.



Here’s what’s new in this update:




  • The Arachnoid Boss behavior has been rewritten entirely. It should no longer get stuck in certain poses and it should be able to fight the player more effectively.
  • The UI scaling for extreme aspect ratios (such as 32:9) has been fixed.
  • Users will now get notified when they are trying to connect to Twitch, but the service is unavailable.
  • New memory management system for DirectX 12. The game will default to the DX11 renderer on GPUs with less than 2GB VRAM to improve performance and stability. Systems with more or equal to 2GB VRAM will default to DX12.
  • The EXOR Crash Reporter will now feature additional information about modified or corrupted content.
  • A lot of crash and bug fixes.


And for those looking for even more info on the update, here are the unedited, uncensored, and sometimes illegible change commit messages:

  • Fix building radius staying forever on the map
  • fix crash in building system
  • fix crash in EquipmentSlotScreen
  • fix crash in CustomizeControlsMenuScreen
  • moved section 'RemoveBlockedUnits' after the BroadPhase is finished
  • Twitch : fixed crash on getaddrinfo failed
  • added GameStreamingError::GSE_PLATFORM_CONNECTION_ERROR
  • fixed render system resource cleanup
  • deleted microsoft d3dx12residency manager
  • new simple residency manager
  • batched execution of command lists
  • D3D11: implement multi _executeContext
  • AudioLoader: fixed crash on corrupted audio file
  • Added ConsoleService:Write(txt)
  • added popup "gui/menu/streaming/connecting_error" on ExorGameStreamingGSE_PLATFORM_CONNECTION_ERROR error
  • fixed SpawnEarthquake and SpawnAcidFissures methods
  • Extended ZipArchive and AudioFileOgg logs
  • Increased VfsZipArchive DecoderPool count
  • AudioFiles: fixed code format
  • VfsZipArchive: added debug log messages
  • VfsZipArchive: fixed small buffer 'SEEKING_DECODING'
  • RenderSystemCapabilities: log available display outputs
  • Config: do not log commented out lines
  • LogService: fix mismatched quotes
  • DebugSystem: fix crash in `r_show_collisions` when passing invalid physics group
  • MapGenerator: harden PrepareTiles
  • CrashHandler: forward content modified flag to CrashReporter
  • CrashReporter: add content corruption warning
  • CrashReporter: update wording
  • WaveSystem: temp add IsAlive check
  • D3D12: add support for stretched-scaling modes in GetSupportedVideoDisplayList
  • added NSight Aftermath crashdump library support
  • Fixed crash in SynchronizeBindings/AugmentButton (90ab94d3-4a35-4732-af00-87c4b2e6a6ae)
  • VfsZipArchive: testing support of local header extra fields
  • arachnoid boss state machine upodated to the new animation graph
  • TimeOfDaySystem: fix SetTimeOfDay/IncreaseTime/DecreaseTime
  • Gui: added GuiScaleMode::STRETCH_OPTIMAL
  • Gui: fixed horizontal viewport aspect scaling with GuiScaleMode::STRETCH_OPTIMAL
  • GuiUtils: added ScaleToSqueezedAxis helper function
  • Gui: fixed GuiSystem scalling
  • Gui: scalling HudDialogs with GuiScaleMode::STRETCH_OPTIMAL
  • HUD: fixed scale/size on ultra wide displays (action menu, augments menu)


Good luck deciphering what the programmers meant!
EXOR Studios

We're back!

Hi everyone!

Well-rested and pumped up for what’s to come, we are back from our holiday break! We hope you also had a chance to get some much-needed rest amidst all the chaos of the past year. Even though we spoke about our plans for 2021 already, we would like to bring you up to speed with what’s happening in the studio at the moment and what our short-term goals are.



First of all, the work on the campaign mode for The Riftbreaker is going really well. We keep improving on our initial design and introduce new ways to interact with the game world. It is an iterative process. It means that we prepare a prototype of a mission or a mechanic, play the game with that prototype enabled, take note of what is working and what isn’t, and then make changes. We even came up with some cool ideas on how to improve the campaign experience over the holiday break, but they have to remain a secret for now.



We are also expanding some of the game mechanics. Those of you who follow our Discord and the daily changelogs (www.discord.gg/exorstudios) already know about the new types of defensive towers that we added. The Riftbreaker arsenal now allows Ashley to make use of Minigun Towers, Laser Towers, Heavy Artillery… These new toys will most likely get their own spotlight article in a couple of weeks, but if you can’t wait to find out about them you should join our streams at www.twitch.tv/exorstudios.



That is actually the next thing we want to talk about - streams. Starting this week, we will stream twice a week - that doesn’t change. However, we received some signals that our usual time schedule - Tuesdays and Thursdays at 3 PM CET - could be improved. We are aware that we won’t be able to suit everyone, given how many people in various timezones follow us, but we could try to change the date of at least one stream per week. We’re waiting for your suggestions in the comments and on the Discord!



Our regular development updates are also coming back this week, so you can expect articles about the latest improvements we made to The Riftbreaker at least twice a week. One of the articles coming in the next couple of days is a deep dive into the raytraced ambient occlusion technique that we introduced with our DirectX 12 patch. There are a lot of interesting details in that one, so stay tuned! If you have some ideas or suggestions on article topics, please let us know.



There we go - we’re all up to speed with what’s going on. If you have any additional questions, suggestions, or requests, post them in the comments or on our Discord. We will make sure you get your answers as soon as possible.

Happy New Year folks, it’s the final stretch!
EXOR Studios

Holiday break

Greetings!

Christmas and the new year are just around the corner. Just like every year, the whole EXOR team is going on a holiday break. This means a pause in new content and streams, as we focus a bit more on Christmas preparations and spending time with our families. That does not mean we will be unreachable, we will still check out the forums, messages and our Discord at www.discord.gg/exorstudios. Bear in mind you might have to wait a bit for an answer, though. We should get back on track with streams and articles in the second week of 2021.



Whether you celebrate Christmas or not, we wish you all the best in the coming year, especially when it comes to health and family. We hope that you can safely join your loved ones to celebrate the festivities, and if that is not the case, we wish you loads of video games to fill your time with. Fingers crossed that 2021 will be so good that it will make up for 2020.

Merry Christmas and a Happy New Year!
EXOR Studios

EXOR Studios 2020 Summary

Hello!

The end of 2020 is coming closer and closer. While it was not easy to maintain a high level of efficiency through all the chaos and unexpected events we made some good progress on The Riftbreaker - even if we had to slow down a little bit. Let’s take a look at what happened throughout this year and talk a little bit about our goals and wishes for the future.

The most important thing has been the start of Alpha testing.



We opened the portal to Galatea 37 to the first testers in March, beginning the never-ending process of hunting bugs, improving the player experience, and polishing content. This has been a deviation from our standard workflow. Before we would iterate only on the feedback from internal playtests and invite a limited number of testers to try the game out in a controlled environment. Closed Alpha is somewhat similar to that but several orders of magnitude bigger. You have been tirelessly reporting all issues you’ve been encountering and suggesting us better solutions to the ones we had at the time. This allowed us to get rid of many issues that would come up in late development. We’re very grateful for your support and help. While the Alpha will stay ‘invite-only’ rest assured - we’re going to give away more and more keys as the weeks go by.

We took part in the Steam Games Festival: Summer Edition



This event was a huge stepping stone for us. After starting our period of Alpha testing we decided to prepare a short demo that covered the main aspects of the game especially for this event. We counted for some additional feedback and a little bit of growth in our community. What happened next blew us away completely. The demo proved to be very popular, getting more than 50.000 downloads over the course of the festival. This resulted in a lot of valuable feedback, bug reports, and new faces in our community.

We also released The Riftbreaker: Prologue.



https://store.steampowered.com/app/1293860/The_Riftbreaker_Prologue/

After the Festival we knew that we had to make the demo widely available somehow. We spent the next two months polishing the content from the demo. The story was expanded, the mission flow improved, bugs squished - all thanks to our testers and the players who downloaded the demo. We would like to thank our Alpha crew here again - by testing the Prologue on various hardware configurations and trying to break things all the time they helped us immensely. The Prologue managed to catch the attention of a lot of players who later joined our community on Discord (www.discord.gg/exorstudios). Many of them became Alpha testers, too. Something, something, the circle of life?

We added DirectX 12 support and raytracing effects



[previewyoutube="HRDLDBo6sk0;full"]

This is a pretty fresh thing so we’re not going to talk too much about it AGAIN ;) By teaming up with AMD we have had the unique opportunity to work on some cutting-edge visual tech for The Riftbreaker, including raytraced shadows, raytraced ambient occlusion and variable rate shading. The future is now!

We released two completely new trailers.



[previewyoutube="d1p6N44UwvI;full"]

The Gameplay Trailer accompanied the beginning of the Alpha period and shows the basic aspects of The Riftbreaker gameplay. If you want to introduce someone to the game quickly - this is the best way to do so.

[previewyoutube="rJsu_ty5DnY;full"]

The second trailer we released focuses a bit more on building and biome exploration. It shows off more complex structures and technologies that will accompany you throughout your adventure on Galatea 37. It also shows you the scope of the bases you are going to end up with in the Campaign Mode of the game. Definitely worth checking out!

We didn’t go to any conventions, unfortunately, but they came to us online.



Organizers of various gaming events around the world had a tough nut to crack this year. Luckily, many of them decided to hold online versions of their events in various forms, ranging from live streams to entire virtual show floors with individual booths for developers. This gave us an opportunity to introduce even more players to our game and our studio. This does not make up for all the chances we lost to talk with you directly, but we have to wait for that until it’s safe again :( On the plus side, we managed to snag a couple of prizes at those shows, as well!


Our trophy wall, one case for each game.

2021



Our focus is to release the game in a fully playable 1.0 version. There are a couple of things we need to complete before that happens. In no particular order:


  • Campaign mode - we currently have this module in a “feature complete” state which we read as - it can be played from start to finish. However, it is still quite far from being finished as we still lack a lot of content. Most of the missions are still undergoing deep gameplay changes. We’re implementing additional mechanics for unique plants and creatures that are going to change the way you play in the various biomes that you will be exploring. The game’s story-line is non-linear and you will be able to visit most areas of Galatea 37 in any order that you like. This design choice brings a lot of freedom and replayability to this procedurally generated world. It is also very demanding in terms of the work that needs to be done to make all of this work well together. We hope that you will all appreciate the extra work that we are pouring into this.

  • Biomes - we’ve already shown you some snippets of the biomes that are going to be available in The Riftbreaker. We are still working on them both in terms of their look & feel as well as the unique gameplay mechanics that are going to be present in all of them. We want you to really feel that you need to adapt to a different environment each time you go out to explore a new region of Galatea 37.

  • New Creatures - the Prologue and the closed Alpha included three different hostile creature species each with three strains and a single boss creature. We’re planning to have about twenty different hostile creature species in the finished game (each with three strains) that are going to challenge your skills. Some of them will appear only in certain biomes while some of them will come out only if certain conditions are met. We’re already more than half-way through with this task and the work is speeding up as we expand our engine and our toolset. We will be revealing new species of creatures as we go by, so stay tuned for future announcements.

  • New Weapons - the weapons arsenal that is currently available in the closed Alpha is already quite extensive, but we aren’t there yet ;) We are working on both additional ranged guns as well as new melee weapons. Would you like to see Mr. Riggs with a power axe or a mighty shock hammer - we got you covered. We have most of the weapons modeled and textured (close to twenty, with four rarity levels each). We’re still working on the unique animations that are required by each melee weapon type as well as dual-wielding different melee weapon types! (?). There’s also a couple of “unique” weapons in our plans. Lots of really cool toys to make your life on Galatea 37 that much more survivable :)

  • New Buildings - the arsenal of towers that are available in the Closed Alpha at the moment is quite timid. As we are adding new weapons for Mr. Riggs we are also introducing their automated counterparts in the form of new towers. We are also going beyond that by adding more advanced and larger tower types.

  • Alien Research - Downloading new invention blueprints from Earth you will only allow you to develop the base level of technology that’s available in the game. If you want to go further you will have to gather research specimens and study them in locally operated Alien Research Labs. These are an advanced building that requires a lot of power and a cooling liquid to operate. Things will get more interesting both in terms of how you plan out the structure of your base and your economy. The need to gather research specimens will also power one of the game’s pillars - exploration.

  • Extended modding for weapons and buildings - the modding implementation and balancing that you can currently experience in the Closed Alpha is a very early vision of how we see this system being implemented. We are currently finishing work on adding modding capabilities to most building types which will expand the range of possibilities even further.


Quite a lot, isn’t it? We hope that 2021 will be a bit more considerate towards our plans and that we can deliver a truly unique game to you. We will, of course, still regularly inform you about our progress in articles, on our Discord - www.discord.com/exorstudios, and during our streams.

Astronomical events in The Riftbreaker

Hi!

Ashley and Mr. Riggs have to be ready for a lot of surprises during their mission on Galatea 37. Apart from the fact that they are exploring uncharted territories inhabited by numerous alien creatures, they also have to face the risks posed by natural threats. The Galatean weather is often violent and not all biomes are welcoming, but those are things you can prepare for - you won’t jump into a portal leading to a magma biome without proper equipment. However, there are some threats you can’t prepare for - and they come from space!


Sometimes the best tactic to avoid something is to simply stand still…

Galatea 37 is located in a rather turbulent portion of the Milky Way galaxy. The conditions on the planet have been just right for long enough to allow the ecosystems to come to life, but it’s not exactly safe. There are many rogue objects flying around the planet and meteor showers are a common occurrence. However, they are much more intense than the ones we can observe on Earth - small chunks of rock reach the planet’s surface and explode with devastating force. Smaller buildings in your base might get destroyed when that happens, so you’d better invest in shielding technology for your precious equipment! There is a plus side to this: if a meteor shower misses your base, you will have plenty of biomass and other resources to collect.


You don’t want to be caught in the middle of nowhere, running out of ammo and with no way to teleport back home.

Not all astronomical events are so physically violent. The Ion Storm is a more subtle one. It’s just like an aurora on Earth, but with its intensity meter turned all the way up. The Ion Storm happens when the solar wind from Galatea’s sun reaches the planet and reacts with its magnetic field. The result is a beautiful display of lights and electric discharges. Normally, such a storm would instantly kill all electronics, but the Riftbreaker technology is well-shielded and prepared for such an event. The only things that stop working during the storm are radars and the Rift technology itself. No big deal, right? Well, if you get caught in an Ion Storm several minutes away from your base and an attack wave comes at that moment, you might rethink that! On the other hand, your power generators will happily convert all the ionized particles into MORE POWER!


Look! A shooting star! Make a wish!

The last ‘threat from outer space’ is the most spectacular one and also has the least potential to harm you or your base. Once in a while, a larger comet enters the Galatea’s atmosphere. If it flies over your head, you are in for a spectacle of light and shadows caused by the comet burning bright. Once it hits the ground, you will be able to harvest all the minerals that were inside of it. That is if you are lucky. If you’re more like me, your base might get blown up in the process.

https://clips.twitch.tv/AmorphousGlutenFreeRavenPanicBasket <= click for a Twitch clip!
I wish that shooting star didn’t destroy my base…

All of these events may happen at random during your time in The Riftbreaker, either in the Survival Mode or the Campaign Mode. They may also be voted in by your audience to take place during your streaming session if you enable our interactive streaming mode. Once you do that, be sure to be on the good side of your chat, you don’t want to make them angry. If you would like to see what the system looks like, check out our streams - every Tuesday and Thursday, 3 PM CET at www.twitch.tv/exorstudios. Join our Discord for daily chats with the devs: www.discord.gg/exorstudios

See you later!

Prologue‌ ‌Update‌ ‌-‌ ‌DX12‌ ‌&‌ ‌Raytracing‌ ‌

Attention‌ ‌Riftbreakers!‌ ‌

A‌ ‌couple‌ ‌of‌ ‌weeks‌ ‌ago‌ ‌we‌ ‌unveiled‌ ‌the‌ ‌results‌ ‌of‌ ‌our‌ ‌cooperation‌ ‌with‌ ‌AMD‌ ‌that‌ ‌allowed‌ ‌us‌ ‌
to‌ ‌bring‌ ‌the‌ ‌awesome‌ ‌DirectX‌ ‌12‌ ‌Ultimate‌ ‌features‌ ‌into‌ ‌the‌ ‌world‌ ‌of‌ ‌The‌ ‌Riftbreaker.‌ ‌If‌ ‌you‌ ‌
haven’t‌ ‌seen‌ ‌the‌ ‌presentation‌ ‌of‌ ‌our‌ ‌shiny‌ ‌new‌ ‌tech‌ ‌(or‌ ‌if‌ ‌you’d‌ ‌like‌ ‌to‌ ‌watch‌ ‌it‌ ‌again,‌ ‌I‌ ‌know‌ ‌
I‌ ‌did)‌ ‌here‌ ‌you‌ ‌are:‌ ‌

[previewyoutube="notjVDiZgn8;full"]‌ ‌

Today‌ ‌The‌ ‌Riftbreaker:‌ ‌Prologue‌ ‌has‌ ‌received‌ ‌an‌ ‌update‌ ‌making‌ ‌all‌ ‌those‌ ‌features‌ ‌
available‌ ‌to‌ ‌you.
‌‌ ‌As‌ ‌soon‌ ‌as‌ ‌you‌ ‌download‌ ‌the‌ ‌update‌ ‌you‌ ‌will‌ ‌be‌ ‌able‌ ‌to‌ ‌experience‌ ‌all‌ ‌the‌ ‌
next-gen‌ ‌features‌ ‌that‌ ‌we‌ ‌talk‌ ‌about‌ ‌in‌ ‌the‌ ‌video:‌ ‌raytraced‌ ‌shadows,‌ ‌raytraced‌ ‌ambient‌ ‌
occlusion‌ ‌and‌ ‌AMD‌ ‌FidelityFX‌ ‌Variable‌ ‌Shading.‌ ‌These‌ ‌options‌ ‌are‌ ‌available‌ ‌to‌ ‌all‌ ‌
raytracing-capable‌ ‌graphics‌ ‌cards,‌ ‌regardless‌ ‌of‌ ‌the‌ ‌manufacturer‌ ‌(it‌ ‌works‌ ‌on‌ ‌AMD‌ ‌and‌ ‌
NVIDIA‌ ‌GPUs).‌ ‌ ‌



We‌ ‌are‌ ‌aware‌ ‌that‌ ‌these‌ ‌features‌ ‌are‌ ‌not‌ ‌that‌ ‌common‌ ‌in‌ ‌games‌ ‌yet‌ ‌and‌ ‌that‌ ‌not‌ ‌everyone‌ ‌
has‌ ‌the‌ ‌hardware‌ ‌required‌ ‌to‌ ‌enable‌ ‌them.‌ ‌We‌ ‌have‌ ‌not‌ ‌forgotten‌ ‌about‌ ‌you.‌ ‌‌The‌ ‌Prologue‌ ‌
mission‌ ‌has‌ ‌received‌ ‌some‌ ‌gameplay‌ ‌updates‌ ‌as‌ ‌well.‌
‌‌While‌ ‌the‌ ‌flow‌ ‌of‌ ‌the‌ ‌mission‌ ‌
remained‌ ‌largely‌ ‌the‌ ‌same,‌ ‌we‌ ‌have‌ ‌added‌ ‌some‌ ‌major‌ ‌quality‌ ‌of‌ ‌life‌ ‌upgrades‌ ‌that‌ ‌you‌ ‌
have‌ ‌been‌ ‌asking‌ ‌us‌ ‌for.‌ ‌The‌ ‌map‌ ‌itself‌ ‌has‌ ‌been‌ ‌slightly‌ ‌altered‌ ‌as‌ ‌well,‌ ‌so‌ ‌even‌ ‌if‌ ‌you‌ ‌have‌ ‌
already‌ ‌completed‌ ‌the‌ ‌mission,‌ ‌you‌ ‌have‌ ‌a‌ ‌great‌ ‌reason‌ ‌to‌ ‌come‌ ‌back.‌ ‌



There‌ ‌have‌ ‌been‌ ‌numerous‌ ‌optimizations‌ ‌done‌ ‌to‌ ‌the‌ ‌game‌ ‌engine.‌ ‌You‌ ‌should‌ ‌expect‌ ‌the‌ ‌
game‌ ‌to‌ ‌run‌ ‌much‌ ‌smoother‌ ‌now.‌ ‌If‌ ‌you‌ ‌would‌ ‌like‌ ‌to‌ ‌check‌ ‌how‌ ‌the‌ ‌game‌ ‌behaves‌ ‌in‌ ‌the‌ ‌
most‌ ‌difficult‌ ‌scenarios‌ ‌you‌ ‌can‌ ‌also‌ ‌try‌ ‌out‌ ‌our‌ ‌new‌ ‌benchmarks,‌ ‌available‌ ‌in‌ ‌the‌ ‌Steam‌ ‌
Library‌ ‌(select‌ ‌The‌ ‌Riftbreaker:‌ ‌Prologue‌ ‌and‌ ‌press‌ ‌‘PLAY’‌ ‌to‌ ‌bring‌ ‌the‌ ‌launch‌ ‌options‌ ‌up).‌ ‌
New‌ ‌benchmarks‌ ‌provide‌ ‌the‌ ‌results‌ ‌in‌ ‌the‌ ‌form‌ ‌of‌ ‌an‌ ‌easy-to-read‌ ‌table.‌ ‌Show‌ ‌us‌ ‌your‌ ‌best‌ ‌
scores!‌ ‌ ‌



We‌ ‌would‌ ‌also‌ ‌like‌ ‌to‌ ‌invite‌ ‌you‌ ‌to‌ ‌our‌ ‌Discord‌ ‌server,‌ ‌where‌ ‌you‌ ‌can‌ ‌download‌ ‌
community-created‌ ‌mods.‌ ‌‌They‌ ‌range‌ ‌from‌ ‌simple‌ ‌UI‌ ‌changes‌ ‌to‌ ‌custom‌ ‌versions‌ ‌of‌ ‌the‌ ‌
Prologue‌ ‌mission‌ ‌in‌ ‌the‌ ‌form‌ ‌of‌ ‌a‌ ‌survival‌ ‌map.‌ ‌They‌ ‌are‌ ‌definitely‌ ‌worth‌ ‌checking‌ ‌out‌ ‌and‌ ‌
can‌ ‌scratch‌ ‌the‌ ‌itch‌ ‌while‌ ‌you‌ ‌wait‌ ‌for‌ ‌the‌ ‌full‌ ‌version‌ ‌to‌ ‌be‌ ‌released.‌ ‌You‌ ‌can‌ ‌also‌ ‌apply‌ ‌for‌ ‌
Alpha‌ ‌testing‌ ‌there!‌ ‌Join‌ ‌us‌ ‌at‌ ‌‌www.discord.gg/exorstudios‌ ‌ ‌



Full changelog for December 8th, 2020 Prologue Update:



Features:‌ ‌



  • ‌DX12‌ ‌is‌ ‌now‌ ‌the‌ ‌default‌ ‌render‌ ‌system.‌ ‌If‌ ‌your‌ ‌PC‌ ‌does‌ ‌not‌ ‌support‌ ‌DX12,‌ ‌the‌ ‌game‌ ‌will‌ ‌
  • automatically‌ ‌detect‌ ‌it‌ ‌and‌ ‌fall‌ ‌back‌ ‌to‌ ‌the‌ ‌DX11‌ ‌renderer.‌ ‌
  • ‌Added‌ ‌new‌ ‌graphics‌ ‌options:‌ ‌Raytraced‌ ‌Soft‌ ‌Shadows,‌ ‌Raytraced‌ ‌Ambient‌ ‌Occlusion,‌ ‌
  • FidelityFX‌ ‌Variable‌ ‌Shading.‌ ‌Each‌ ‌of‌ ‌these‌ ‌will‌ ‌get‌ ‌its‌ ‌own,‌ ‌in-depth‌ ‌article‌ ‌in‌ ‌the‌ ‌coming‌ ‌
  • weeks.‌ ‌These‌ ‌options‌ ‌are‌ ‌available‌ ‌only‌ ‌on‌ ‌DirectX‌ ‌12‌ ‌and‌ ‌when‌ ‌using‌ ‌a‌ ‌Raytracing‌ ‌
  • capable‌ ‌GPU‌ ‌(regardless‌ ‌of‌ ‌the‌ ‌manufacturer).‌ ‌
  • ‌Shadow‌ ‌penumbra‌ ‌set‌ ‌in‌ ‌all‌ ‌time‌ ‌of‌ ‌day‌ ‌events‌ ‌and‌ ‌biomes.‌ ‌
  • A dedicated benchmark for the GPU has been added, now with results readable by humans.
  • We added support for changing Mr. Riggs' appearance. Right now, you can choose from a couple of predefined skins. We will make more in the future, we also count on your creativity and hope you'll get painting soon!
  • Localizations were added to all research items. If a string in a given language is missing, it will default to English.
  • We added a stagger state for the player. Mr. Riggs will become staggered if it uses a melee attack on an entity that is resistant to physical damage. This is still very much work in progress, animations and effects are far from final.
  • Planetary Scanner screen was changed to feature an actual 3D model of Galatea 37. It also displays your actual geographical position on the surface of the planet and indicates where the bases in other biomes are located. This screen will be your mission hub.
  • New damage types were added, along with resistances. If an entity is immune to a given type of damage, you will see a highlight and a 'resisted' popup.
  • We added tooltips! Hovering the mouse cursor over an icon or any other menu item will now open a popup box with a description of the item.
  • We have completely reworked all the weapon models. Our goal was to make them immediately recognizable, without the need to look at the inventory screen or the HUD. The new models come with varying skins for each rarity level. They're also animated!
  • Oh, we also changed models for other equipment pieces - the Detector and mines of all flavors.
  • Missions now start with a fade from black. It gives a nice cinematic feeling (and hides the Matrix from you).
  • We have tweaked effect attachment points for weapons, so that the muzzle flash actually comes from the muzzle.
  • The settings menu screen has been slightly reworked to include a description box. Highlighting any option in the menu will display a short message describing what is affected by the highlighted option. This should help you choose the perfect settings for your setup.
  • There's much more wildlife in the prologue mission now, including birds!
  • Our super-cute drones are now even more cute, because they are animated!
  • New options have been added to the settings screen, as well as the Launcher.
  • Extended HQ upgrade level 1 attack timeout. Take a breath.
  • All weapons now have an icon based on the actual physical model you can see in the game.
  • CrashReporter: include configuration + version number in titlebar. Sometimes you send us screenshots of the crash reports. This will help us identify the version of the game you have problems with.
  • Loot items are now pushed away from the dying creatures with more force.
  • Last but not the least important - ENERGY CONNECTORS AND WALLS ARE NOW BUILDABLE THROUGH CLICKING AND DRAGGING. Praise Starbugs!


Changes:



  • The Prologue map has been changed a bit, but since the affected area was a secret, we won't tell you what we changed.
  • New mech model and textures - Mr. Riggs is richer in polygons and more hi-tech now.
  • New Mech Destruction System. There is no need for creating destruction level maps for each skin - they will be automatically generated.
  • New wall models, that change on each upgrade level
  • New Sentinel Tower models, that change on each upgrade level
  • Mods are now more robust and should no longer disappear from your weapons and towers.
  • Our creatures now use a completely new state machine, designed to be faster and much easier to use.
  • If you minimize the game while loading, the icon on the Windows Taskbar will now flash once the loading is completed.
  • Updated fonts - we added some missing symbols and modified illegible letters.
  • HQ on higher levels does not consume power. It was a trap that turned many promising bases into piles of ash.
  • Wind turbines give more energy - changed from 6/s to 8/s.
  • Fixed the wrong value in Health Regeneration module level 1. It now restores 1hp/s.
  • Piles of loot now scale according to the amount of resources they contain.
  • New Resource Comet effect.
  • Tweaked drop rates for loot from all props. Smaller props give less loot, while bigger ones drop quite a bit more.
  • NodeCullerDesc deleted from all small props and some medium props. You can now move freely through small props.
  • Big cleanup in effects for enemies - Canoptrix, Arachnoid, and Hammeroceros. We removed redundant entries and optimized many little things.
  • Added render system to hud revision/TC info.
  • RenderingState: add `r_max_fps` - thanks to this variable you can now limit the maximum number of frames per second without turning on v-sync. No more whining condensers!
  • Decals, such as blood splats or scorch marks disappear gradually instead of just disappearing at an instant.
  • The mouse cursor will now react to changes in the mouse sensitivity setting immediately.


Fixes:



  • Some missing lights were added to buildings.
  • All props now have the correct materials assigned to them and should behave as expected when destroyed.
  • Fixed crash in OnUnequipItemRequest.
  • Fix crash in building base while building floors.
  • Fix crashes from crash raporter.
  • Added hardcore description setup.
  • Fixed icons on interacitve screen.
  • Fixed localizations and offsets.
  • Possible fix for pause on steam overlay bug
  • Fix lock on energy connector creation.
  • Fix header display after loading game with streaming.
  • Fixed sword attack timers.
  • Fixed sword post attack glitch.
  • Fix materials on building modified.
  • Fixed dying after falling beneath the floor - now you will teleport over surface instead.
  • EntityModSystem: listen for equip/unequip events
  • Fixed research available when the HQ is destroyed.
  • Fix dissolving buildings on destruction.
  • Minimap: merge radar size fix, remove unused IsReady.
  • Fix player and skin icon in inventory screen.
  • Fix items after coming back to the main mission.
  • Fixed missing icons on buildings.
  • Fix vein missing effects.
  • Fix crash in OnBuildingSellEvent.
  • Fix reattaching bounds to building.
  • Fix crash in CustomizeControlsMenuScreen.
  • Fix crash in AugmentsMenuScreen.
  • Fix crash in EnvironmentService if id passed is invalid.
  • Fix crash in GuiControlsUtils if mech is dead.
  • Fix resetting cooldown on shields.
  • Fix crash in CustomizeControlsMenuScreen.
  • Fixed TimeDamage initial interval timer.
  • MinimapSystem: fix vertex sorting, fix for minimap markers randomly disappearing.
  • GameplayResourceDef: fix crash when overlaying ent files with `CostDesc`.
  • GameplayResourcePlugin: remove duplicated craft table loading code ( now only CostDescLoadPostprocessListener does it ).
  • LevelEditor: support for removing % of entities from selection.
  • RiftbreakerEditor: add EntityEditor & EntityModEditor modules.
  • TreasureSpawner: optimize SpawnTreasure ( should not extend loading time anymore ).
  • RiftbreakerApp: unregister crash handler OnShutdown.
  • DirectoryWatcher: fix possible deadlock when exiting an application.
  • Sound: fixed "enemies/canoptrix_move" gain and playback freqency, moved to "enemy_steps" group.
  • Keyboard: reset special keys state on focus lost, update on focus gain.
  • Fixed borderless problems.
  • Fixed multi monitors problems on DX12.
  • Fixed minimap after load.
  • Fixed hammeroceros 'run' sound effects.
  • Fixed animation graph freeze.
  • Fixed resource icons display overlapping.
  • Tweaked overrides in towers to fix bugs with multiple towers.
  • Fixed cheat_god_mode - now it works every time.
  • DestroySystem: fix empty frame between object removal and parts spawn.
  • Fixed minigun projectiles (position), also made them cheaper performance-wise.
  • SettingsMenuScreen: fixed 'reset to defaults' functionality.
  • Fixed planet_surface shader for the Planetary Scanner menu screen.
  • Tweaks for the grass (proper materials, more subsurface light). Gives it a more natural look.
  • Prevent crash in RiftTeleportStates
  • Fixed entering campaign if campaign is disabled. This one's mostly for those of you who like to change things around in the game files or use mods.
  • Fix mining not decreasing resources from the vein. Happened from time to time.
  • Fix crash when the mech dies while melee attacking.
  • Fix crash when floor is being built.
  • Fixed Exit Game crashes.
  • Insert english localization variable if other language is empty - no more empty strings!
  • Energy connectors are still all over the place.


Audio:



  • We have started grouping sounds into clusters to achieve a better 'herd stampede' effect and to override the instance limits. Massive hordes of enemy creatures will sound terrifying now.
  • Lots of creature noise samples have been changed to give them individual identity and make them instantly recognizable.
  • The sound system has also been optimized to have as little impact on the performance as possible.
  • Our Granular Synth is finally working properly, which means we will be able to add dynamically changing sounds into the game, such as a Geiger counter.

New Creature Reveal - Krocoon

Hello!

As you probably know already, we are currently designing, developing and testing the Campaign Mode for The Riftbreaker. It’s a very exciting time for us, because a lot of the changes we introduce make a big, visible impact on the way the game is played. The best example of a ‘big impact’ change is adding a completely new Galatean creature into the mix. Today we would like to present to you a creature that could easily be described as the Gnerot’s weird cousin - meet the Krocoon.


It seems like biology works in a different way on this planet...

This monstrosity can easily hide among rocks and you wouldn’t even bat an eye - of course, until its giant maw opens and lets out a terrifying roar, and then proceed to smash you into pieces using its massive hands and the leg. That is one of the more bizarre things about Krocoon - it only has one hind leg and moves around using its front legs/arms, utilizing the back one only as a support for the rest of the body. That probably means the arms are pretty muscular (if this thing even has muscles underneath) and it wouldn’t be the best idea to fight the creature in close-quarters.


You wouldn't want to disturb anyone when they're eating, right? That's why Mr. Riggs' invisibility module works wonders.

Just looking at this creature is enough to tell it is unlike anything you could see on Earth. The Krocoon’s body looks as if it was made of metal or crystals. Such a strong body armor guarantees protection from most natural hazards, such as predators or weather events. The downside is that the creature is very heavy and is not the most agile. Luckily, it doesn’t have to chase its food - just like the Gnerot, Krocoon is able to sustain itself by consuming raw minerals from various deposits on the surface of Galatea 37. It’s not a picky eater, either - Carbonium, Ironium, Cobalt - anything will do, and you will encounter these creatures while looking for extra resources to expand your base.


Bringing a bullet-based weapon to a fight with these guys is a bad idea.

In the later stages of The Riftbreaker campaign, you will encounter Krocoons both as regular inhabitants of the Galatean wilderness, as well as base attackers. The thick armor formed by their skin gives them protection from many forms of physical attacks. You will need to work out what kinds of attacks work best by studying Krocoon samples in the Laboratory. How to get those samples if the creatures are resistant to attacks, though? Well, they may be resistant, but they are not invincible, and you will be able to pick single Krocoons off with conventional weapons to gather specimen samples. You can also try the stealth approach, scanning them while using the invisibility module (more on that in a separate article, stay tuned!).


Kill 1000 of them to unlock the golden skin! (not really)

How do you like our three-legged monstrosity? Do you have any ideas for new creatures that you would like to see in The Riftbreaker? Make sure to tell us in the comments and on our Discord at www.discord.gg/exorstudios, where you can also apply for Alpha testing. You can also see all the newest additions to the game during our streams - every Tuesday and Thursday at 3 PM CET, www.twitch.tv/exorstudios.

See you later!

Raytraced shadows implementation in The Riftbreaker

The Riftbreaker is an isometric strategy game combined with elements of survival, exploration, and hack’n’slash. Powered by our own technology, The Schmetterling Engine 2.0, The Riftbreaker allows us to make use of the newest available developments in the gaming world, one of which is real-time raytracing. In this article, we will describe our implementation of raytracing in the game, as well as explain what kind of problems we faced and how we solved them.


Dynamically changing time of day, a variety of weather effects and multiple biomes to be explored make real-time raytracing a great choice for a game like The Riftbreaker.

A brief technology introduction


The Riftbreaker’s world is fully dynamic and destructible. Practically all of the objects that are present in the environment can be modified by the player. Vegetation can be bent, burnt, and dissolved. Thousands of creatures can swarm the player and completely fill up the screen. This kind of gameplay premise calls for a specialized approach to rendering fully dynamic shadows.

Before we added raytracing features to The Schmetterling 2.0 engine we utilized real-time shadow mapping (no precomputed shadow maps) for generating shadows. This solution was the most optimal for us because of our fully dynamic scene geometry. We could not make use of any precomputed lightmaps, as they would not match the geometry of the scene. Therefore, before real-time raytracing was possible, dynamic shadow mapping was our only real choice. While shadow mapping has been a widely utilized method in the entire industry, it has a range of limitations. 


A short fragment of a boss fight. The boss creature has a shadow casting point light attached, adding a lot of visual fidelity to the scene.

The latest generations of GPUs are powerful enough to carry out raytracing calculations in real-time. The new hardware allowed us to finally introduce real-time raytraced shadows which provide superior results when compared to traditional shadow mapping techniques. 

The basic principle of raytracing shadows is that instead of looking at the scene from the point of view of the light source and looking for all the possible shadow casters, as it is done in shadow mapping, we could simply shoot rays at the light source. If the ray hits an obstacle, it means it is not directly lit. If the ray reaches the light source - there is no shadow to be added. In principle, it is a much simpler algorithm that produces great results and offers solutions to typical shadow-mapping problems. However, it is very demanding when it comes to GPU performance.


Each element of the dynamic scene geometry has the potential to cast a shadow. Our job was to make sure it’s all as accurate as possible while maintaining performance.

Adding a completely new rendering technique to a proprietary game engine is not an easy task. In our case, it has been made possible thanks to our cooperation with AMD. They have provided us with their own GPUOpen RT Shadows library. It contained the raycasting solution, along with a denoiser that allows us to clean up the results of a raytracing pass. However, before we could use the library, we had to develop a DirectX 12 renderer for our engine. The reason for that is the DirectX Raytracing API (also known as DXR), introduced with the DirectX 12 Ultimate standard. It is a new API that allows us to make use of new shaders and utilize the hardware raytracing capabilities of modern GPUs. 


The scale of encounters in The Riftbreaker range from small skirmishes to drawn-out battles against enemy hordes. Coming up with the right optimizations was key.

Another benefit of joining our forces with AMD is the open-source nature of their solutions. This enables us to introduce technologies that will be compatible with the latest gaming platforms on the market, including the next-generation consoles. It is also worth mentioning that platform compatibility has also influenced our choice of the rendering API. The two options we had to consider were Vulkan and DirectX 12. While Vulkan does offer raytracing, the API is not available on Xbox or PlayStation, also at the time of writing this article, still only Nvidia hardware supports it on the PC. By going with DirectX 12 we received native raytracing support on Xbox and Windows PC and we’re able to utilize hardware from all manufacturers.


As the weather conditions change, so does the shadow penumbra. In this example you can see the shadows becoming softer during rain and sharpening as the sunlight intensifies.

The benefits of implementing raytraced shadows can differ based on the implementation scenario. In The Riftbreaker’s case, the most important features include:
- “infinite” shadow resolution  - the quality of the rendered shadow doesn’t depend on the distance of an object from the camera like in traditional shadow mapping. Each pixel on the screen has individually computed shadowing, which results in much more precise and much more stable shadows without flickering artifacts.
- variable shadow penumbra - Raytraced shadows allow us to dynamically simulate situations like the transition from a clouded sky during rain to a sharply lit noon.
- relatively lower cost of calculating additional shadow casting lights - In our current raytraced shadows implementation we can calculate up to 4 shadow casting lights at the same time without a big performance hit. The cost of adding additional shadow casting lights in traditional shadow mapping is relatively much higher.

[previewyoutube="notjVDiZgn8;full"]
We presented the technological benefits of our cooperation with AMD in this recent The Riftbreaker RDNA 2 features presentation.

All of these benefits come at a significant performance cost. Even while using the latest GPUs that support hardware raytracing acceleration, the FPS values with all raytracing effects enabled can be halved when comparing the same scene without raytracing.

Raytraced shadows implementation


Adding raytraced shadows to a scene in The Riftbreaker is a complex process that results in a very detailed map of lit and unlit pixels. During the first raytracing pass, we need to reconstruct the world space positions of all pixels on the visible screen area and cast rays from those pixels towards all the light sources that affect them. We obtain that world space position from the depth buffer. If the ray reaches the light source, it means the surface is lit directly. If the ray is obstructed along the way we are dealing with a shaded surface. Additionally, in order to optimize the process, we discard all raycasts from surfaces with normal maps facing the direction opposite to the light source. The next pass determines the type of shader that is going to be applied at the intersection of the ray with the surface. The DXR API handles that, using a proper shader based on the result of a raytrace and checking it against our shader table.


An example of a typical gameplay scene with all raytraced effects enabled - soft shadows and ambient occlusion.

The Radeon RX 6000 Series cards that we used to develop our raytracing implementation are incredibly powerful, capable of casting millions of rays per second. However, in order to achieve an exact representation of what light would behave like in the real world, you need even more information. In the case of offline rendering, it usually means casting thousands of rays in all directions per each pixel. No present-day hardware is capable of carrying out these calculations in real-time, let alone doing it 60 times a second. It means we have to somehow create an accurate shadow map using incomplete data.


This is the resulting image of the raytracing pass before denoising. Note the fuzzy shadows, as well as the edges of sharp objects - nothing is really clear here.

Not having accurate data is problematic and could result in the degradation of the visual quality of a scene. While we would have most of the information necessary to render the objects and apply their properties, details such as contours, edges, and soft shadows would become blurry and blend into each other. The limited amount of rays that we can cast per frame results in a noisy shadow image. This is where the other GPU Open library comes into play - the AMD FidelityFX Denoiser. Denoising is a complex process made possible by extensive use of temporal techniques that analyze past frames and combine them into a new frame. The AMD denoiser allows us to quickly determine the average values of the available data and determine what kind of properties we should apply to any given pixel, resulting in a sharp image without any visible compromises. 


Here’s the same scene after the denoising step. Everything looks much better without the need for additional rays to be cast.


The denoiser utilizes a white noise pattern animated by the means of the golden ratio in the denoising pattern. This visualisation has been provided by Alan Wolfe and it has also been featured in his blog post on noise patterns: https://blog.demofox.org/2017/10/31/animating-noise-for-integration-over-time/ 

Raytracing a dynamically changing scene


Naturally, the implementation of raytraced shadows was not as simple as enabling a couple of ready-to-use libraries. The Riftbreaker presents its own, unique challenges that required creating specific solutions. 

The first such issue was the massive amount of dynamic objects present in our game world. The premise of The Riftbreaker is that you are a scientist exploring an exoplanet inhabited by numerous alien species of flora and fauna. The player is often attacked by hordes of alien creatures with numbers going into thousands. Each of those creatures has to cast an individual shadow, which is problematic. Coupled with a dynamic vegetation system reacting to wind, shockwaves, and bending forces applied by other entities it was a real optimization issue. 


Thousands of entities interact with each other in real-time.

The main problem was caused by the way that the top-level acceleration structure for raytracing processes data. It is a structure that stores information about entities in the scene for further use during the raycasting pass. This structure can only take in data in the form of a pre-baked bottom-level acceleration structure that contains object vertex information. It is not an issue if we are talking about rocks or buildings, however, all units with skeletal, dynamically blended animation, as well as dynamic vegetation do not fit the assumption of ‘pre-baked’ data at all.


All entities ‘bake’ their current state every frame. Since most objects are animated, we need to have the exact information about their vertex all the time. Here you can see the slight differences in rotation between the buildings - if we didn’t take those into account, the results of the raytracing pass would be inaccurate.

In order to provide the acceleration structure with all the data it needs we had to take drastic measures. Every dynamic object on the scene is individually baked into a completely new, static model that can be processed during the raytracing pass. This process needs to be repeated every frame to maintain accuracy. What adds difficulty to this task is the fact that The Riftbreaker features a dynamic weather system. Because of that, a situation where the light source is at an angle that makes an entity cast shadow into a frame without it being directly visible is entirely possible. This means that during the baking process we need to take into account not only the entities on the visible part of the screen but also from outside of it. 


The image of an entire acceleration structure prepared for just one frame of rendering.

The process of preparing the acceleration structures is very computationally heavy for the CPU and could easily bottleneck the entire renderer. The Schmetterling Engine 2.0 reduces the CPU bottleneck thanks to heavy parallelization of all of the processes that are required to prepare a scene for raytracing. By sharing the operations between the CPU and the GPU we have been able to find the computational power necessary to carry out all of these operations every frame. In the case of our intense benchmarking scenario, which includes about six thousand creatures attacking the player’s base, we managed to reduce the rendering time from 60ms to 17ms thanks to parallelizing the CPU dependent tasks (using an AMD Ryzen 9 3900X CPU and a pre-release version of the Radeon 6800XT).


A snapshot of a single frame from The Riftbreaker. All the processes necessary for raytracing are marked with colored frames, with the legend in the bottom-right. Click the picture to view the full resolution version.

Alpha testing support for raytracing


Another unique challenge our engineers had to solve while implementing raytracing techniques into The Riftbreaker was also connected to the vegetation system, albeit in a slightly different way. Textures used by foliage are mostly alpha-tested and it is not uncommon for a texture in our game to have large areas that are fully transparent. That does not make a difference to a ray, though. Once a ray that we cast encounters a transparent pixel on a texture, it returns a regular ‘hit’. This doesn’t necessarily mean that the pixel from which we are raycasting should be covered by shadow because if the texel that we’ve hit is transparent, then the ray should continue tracing its path towards the light source. We make extensive use of such textures, so it was necessary for us to find a solution to this and add support for alpha-testing in our AnyHit shader.


We make heavy use of the alpha channel to introduce jagged edges and complex shapes on our vegetation textures. Unfortunately, that introduced problems with raytracing hit recognition. 

Our approach was to essentially reintroduce the solution used in traditional rendering techniques. Upon hitting a surface, we retrieve the barycentric coordinates of a triangle at the point of intersection. These coordinates are not sufficient to determine which pixel of the texture was hit, but only the position of the intersection point within a triangle. However, at this point, we can determine which vertices we should take into consideration. Every vertex of a triangle has a set of UVW coordinates that were assigned to it by the graphics designer during the texturing process. By knowing which triangle we hit, what part of the texture should be covering it, and knowing the intersection coordinates within that triangle we can now carry out an alpha test.


Polygons lying underneath the vegetation textures are not transparent to rays. We had to give our rays a method to check if they hit the spot on the texture that was actually opaque.

Before all of the above happens, however, we need to provide our acceleration structure with information about textures and their positions. This is why we have prepared a shader table which is a data bank for the GPU. It lists the textures assigned to scene instances, as well as the values assigned to them in the index and vertex buffers. Thanks to the shader table we can quickly retrieve all the data about the model and texture that are necessary to carry out the next steps of the shading operation. It’s quite an interesting process.


Since The Riftbreaker is set on an uninhabited, alien world, there is a lot of wildlife to be seen (and alpha-tested).

If the result of this operation is ‘opaque’ we apply the shading data and the process is over for this particular ray. In the case of non-opaque hits, we carry out an alpha test. As mentioned before, when the ray intersects with the surface we can get the barycentric coordinates of the point in a triangle that it collided with. All we have is a location within a triangle that was hit. Next, we turn to the index buffer to let us know the indices of the vertices of the said triangle. From that, we can extract the UVW coordinates. With the data provided by the index buffer, we can now dive into the vertex buffer for the data on where these vertices fall on the texture. Only after all these steps do we get a result - a hit with an opaque or transparent surface. If the alpha value at the point of the intersection is lower than the transparency threshold, the ray continues traversing the scene.


All the effort finally pays off when we get an accurate result every frame. Click the image for a full-res version.

What we learned in this process is that alpha-tested materials are much more computationally expensive for raytraced shadows than for traditional shadow mapping and they are best avoided if possible. In our jungle scenario, the dispatch ray cost of a ray that hits an alpha-tested object is about 20% higher than, that of a ray that hits an opaque object.  We optimize our content by limiting the surface area of all transparent objects to reduce the number of ray hits on transparent surfaces. The Riftbreaker’s camera view is isometric, so the number of polygons visible at once is naturally limited and we can easily increase the polycount of most objects without affecting GPU performance. In some cases, it is actually more efficient for us to increase the polycount of an object if we can transform its material from alpha-tested to a fully opaque one. 

Conclusion


We feel that The Riftbreaker improved a lot thanks to the implementation of the techniques mentioned above. The world presented in the game is much more believable now, increasing player immersion. The details we add through raytracing are not always big, but they definitely improve the experience. Seeing a comet flying across the sky that shines a shadow-casting light on the dynamic objects on the ground is a great sight. On the other hand, cloudy days greet the player with soft shadows and a more toned-down color palette. We are confident that The Riftbreaker earned its place among all the productions intended for the next generation of gaming hardware.


The Riftbreaker, coming to PC and consoles in 2021.

In hindsight, implementing raytracing techniques into The Schmetterling Engine 2.0 was an incredibly valuable lesson for us. Working alongside talented engineers from AMD allowed us to share, compare, and verify our findings, as well as learn much about the cutting-edge rendering techniques and solutions. We believe that The Riftbreaker will greatly benefit from the addition of raytracing shadows, as well as other DirectX 12 techniques. We encourage you to come back in the coming weeks, as we are going to describe the process of implementing Raytraced Ambient Occlusion in The Riftbreaker.

P.S. You can try out all of this cool new tech on December 8th - we're updating our Prologue with all the sweet DirectX 12 features!