Regular update #70.Wed, 13 July 2022
Hello everyone!
In this update, I would like to take a moment to cover what we have been working on as of late and to explain why we have made the choices we made along the way. I hope you find this an interesting and informative progress update.
To recap, our goal is to deliver the most realistic U-Boat simulator possible; we have set the bar incredibly high for ourselves in order to achieve this goal and our approach is aligned to deliver on our vision.
Almost everything we are creating for this project is derived from original construction drawings or other contemporary information. This information must be acquired, researched, reverse engineered, well understood, and transposed to requirements, models, code, etc… Acquiring this information is not trivial nor is it cheap!
Along the way, we must also combat misinformation and competing information (even from authoritative sources). With our rigorous process, we’ve been able to help contribute by correcting inaccuracies that up until recently were widely published and claimed to be accurate. To point out one of the most eye-catching and ubiquitous misconceptions: red lights were generally not used on a U-Boat at all, except for a few bulbs near the hatch in the control room (with some exceptions in rare, individual cases).
Apart from that, our team has uncovered information that has not been touched for years, detailing the functionality of systems in their true complexity. One of the things we are currently working on is the implementation of the rather elaborate firing system of the U-Boat, which is far more complicated than you’ll find anywhere to date. We’ve also started preliminary work on the flood-drain-system of the U-Boat, with special thanks to our contributors Stosstrupp and TheEngineeringGuy for the groundbreaking work they have done researching these subjects.
This means that our project is not only working towards the most authentic digital recreating of a type VII U-Boat ever, but we’ve also been materially contributing to the broader corpus of U-Boat knowledge along the way.
I won’t revisit all of the progress we’ve made (if you are interested you can view all of our updates on our Discord or Steam page. Should you wish to have a look yourself, you can also download our free demo and support our project by either purchasing the tech-demo or considering becoming a patron of the project through Patreon.
What I want to focus on in this update are the three major challenges we are currently working through:
I) The game engine.Out of the box, the Unity game engine does not supply us with the architectural underpinnings we need to be able to see this project achieve the lofty goals we have. To try and correct this, almost a year ago we investigated moving over Unreal Engine 5 by Epic Games. We went as far as developing a full proof of concept clone in UE 5 and had the engine communicating, side by side, with our back end MMO server topology. We were so sure of the game engine shift, we publicly announced our move 🤦 Hindsight being 20/20, we now know that it was a mistake.
Here is why!
While Unreal Engine 5 is superior to Unity in many ways (graphics fidelity, performance), it lags behind in several key areas that, as a team, we knew we had to address in order for the move to make sense. Why trade one set of problems for another?
Unity uses C#, a beloved and widely used language developed by Microsoft in the early 2000’s. It is widely accessible, offers incredible developer productivity supports, and is easy to use. UE on the other had relies on C++. We won’t go into detail why our developers, and legions of devs around the world, hate C++ but it should suffice to know that using C++ as our core dev language was a non-starter.
In order to fix this glaring drawback with UE, we created a tool we call Code Orchestra. This tool allows us to write C# and have it run inside of UE. Even better, it allows us to write Java, Rust, and almost and other OO language and have it run side by side with extremely interoperability between runtimes. This was a big deal not only for Crush Depth, but for millions of game developers and game studios; suddenly you can use one of the most beloved languages in one of the most technically advanced video game engines with almost no performance penalty!
Here are some videos which prove how well and how powerful Code Orchestra is inside of UE.
After our successful technical proof of concept of moving over to CD to UE was complete, and we announced the move officially, we quickly hit a wall we did not anticipate. Upon moving to release, we were met with Epic’s Draconian and unusual EULA. The EULA explicitly forces any dev creating tooling similar to Code Orchestra to open source their invention 🤨 (yes, free labor for the benefit of Epic Games).
We had calls with Epic Games where their tech staff signed off on our tooling, Miguel de Icaza who faced this exact issue years ago, and lawyers. Our goal was to get approval from Epic Games to move forward with Code Orchestra without being bound to a decade-old clause which is doing nothing but harming UE’s developer opportunities (why prevent your dev’s from using Rust, C#, and other tech in UE?).
After many calls, demos, and lots of $ invested on our end in lawyers pouring over every option we had available at our disposal, attempts at conveying our position to Tim Sweeney, CEO of Epic Games, and having him reconsider his posture on the matter via a petition ultimately failed. We accepted that we were backed into a corner and that our significant time and monetary investment in attempting to use UE to make Crush Depth the best it could be was being shot down by Tim and our only viable option was to move back to Unity.
So back to Unity, an inadequate game engine, it was! This meant we had to revisit the issues we had in the first place which prompted our move. First item on the list, addressing the slow HDRP rendering pipeline and the lack of support for modern features.
To address this, we have been working on a fully custom rendering pipeline we call CRP (cinematic rendering pipeline). CRP is written in the Rust programming language and makes use of DX12 API’s directly by foregoing Unity’s slow, outdated, and limited API catalog. CRP features ray tracing, a custom nanite like virtual geometry mesh format which allows us to dynamically, at runtime, swap out LOD clusters in complex meshes to optimize for performance with no visual fidelity loss (it goes one step further than UE nanite and supports runtime generated meshes), custom shader support, and much more. Essentially it replaces the entirety of the Unity rendering codebase with a custom modern and performant implementation targeted at modern DX12 API’s. We will eventually have lumen like global illumination support that will allow us to scale our visual fidelity significantly further than what HDRP would allow us to achieve.
II) The U-Boat interior.Over the last couple of months, we’ve created a ton of new assets for inside the U-Boat itself. You can see some examples of those in our previous updates. Special thanks there to Kriegsmarinesammler who has recreated many of these models based on the real items themselves. Many of these items are for sale as well, so if you should be interested, make sure to have a look.
The main challenge we are facing in implementing these is that the model we currently have in place for the interior of the u-boat itself (walls, floors, etc…) was built with limited information. With our recent acquisition of plans and blueprints, we are rebuilding the interior to optimize accuracy and geometry. We have created a modeling pipeline that will allow us to implement a bare-bones version of the interior that will allow us to start implementing the firing system and other control of the U-Boat, while we keep working on the rest of the interior in parallel.
III) The U-Boat exterior.The same goes for the U-Boat exterior. While we are not unhappy with the model we have in place, it is not quite up to the standard we want for this project. For this, we have partnered with Carlo Cestra who specializes in reconstructions and animations for archeological, historical, technical, and scientific topics and is currently working on recreating the exterior at the same level of detail and accuracy that we want for every item in our project. As you can see from the renders below, we’re making good progress there as well.
That’s it for now!
Thank you for tuning in once more and for your ongoing support. Should you have any questions, feedback, or if you just want to have a chat, always feel free to contact us.