Optimization, Gleb and something extra Vox Vivat #2 - Dev diary

We chose to go a bit more in depth in regards to the update this time around to offer you more insight into the technical goings-on. The full list of new features, fixes and adjustments awaits you further down below. We hope you will enjoy this look behind the scenes.
In this second developer post, we will have a peek into the work in progress of team Vivat. As the title suggests, we are mainly working on game optimization, but we've also found time to introduce a few new pleasant details that will liven up the in-game environment of Bratislava. Let's get to it then! 💪
[h2]Mostly positive reviews on Steam[/h2]
After the first patch, which fixed the most serious bugs like rotating NPCs (sorry FiFqo), the reviews on the Steam page for Vivat Slovakia have settled on Mostly Positive.
We are very pleased and motivated to fix what annoys players and us the most – game optimization. If you own the game and haven't posted a positive review yet, we kindly ask you to help us 🥺. On one side, having a negative review saying "Mataro Minete can't retract its pop-up headlights" is hilarious, however on the other side, it causes us issues on the Steam platform. So please leave us a positive review, in return, we’ll keep bringing free content. Deal? 🤝
Sure, it's early access, but if the developers put in the effort, this could become one of the "gems" of the Slovak Game industry… On top of that, I really enjoy the voice acting, it is truly epic! - GreyWolfSvK, positive review on Steam
[h2]History of Vivat in a Vidadu Mini-Documentary[/h2]
The platform Vidadu, among other things, regularly prepares mini-documentaries from behind the scenes of Slovak and Czech creators. The scruffy smile of our producer Roman has thus joined the list of these faces among others are also Andy Kraus's and the legend "I'm magical." In the video, Roman discusses the history of modding in the GTA franchise through gta.cz and SA:MP Net0peer servers. He particularly didn't shy away from questions about the expanses of Vivat Slovakia.
[previewyoutube][/previewyoutube]
[h2]Speak of the devil, and Gleb will appear[/h2]
- ✅ In the game
Gleb, the Bratislava’s local and Ružinov’s junglist, is also now featured on the LFO game radio. The new patch will include the song "Načo som tam chodil?" from Gleb's latest album, "Dlhá cesta domov ".
Just like the album cover, which appears painted on one of the apartment buildings in his Ružinov neighbourhood, we've too included this CD art that covers the building in Vivat Slovakia. If you're a fan of Big Boy Gleb and appreciate this free update, try, and find the apartment block in the game and post its photo on your story tagging @vivatslovakia and @glebzoo 😉.

[h2]Airport outside the game boundaries and retouching the game map with props[/h2]
- 🛠️ WIP - Work in progress
Is the elevator ride to the UFO working for you in Vivat Slovakia? 🤩 It offers a stunning scenic view of the entire digital Bratislava, which we are busily polishing. This means that we refine areas with terrain blemishes and previously forgotten streets are given a more definitive look. Don't forget to pinpoint these places for us through the "Feedback" option in the Pause menu.

[h2]Smola Fortuna in Vivat Slovakia[/h2]
- ✅ In the game
Ivan doesn't slack, and you can hear a constant ruckus from his workshop at night. His latest addition is the economical car Smola Fortuna, which even at first glance, reeks of its typical cheap plastic aroma. Gradually, free patches for Vivat Slovakia will add a whole new array of different Fortunas. Cranking up the new Gleb on a Fortuna will be the ultimate Slavic experience.


[h2]Motor locomotive - Okuliarnik[/h2]
- 🛠️ WIP - Work in progress
In Vivat Slovakia, you’ll find active trams, but trains have been endlessly delayed so far. One reason might be that we have multiple versions of carriages in the game, however no locomotive. That’s about to change as the legendary Okuliarnik is making its way to the digital tracks. We have further plans for trains, but we’ll have to wait on those for a while since, as our train conductors always say: The delay times might change. 😂

[h2]Fully animated cutscene... or maybe even cutscenes?![/h2]
- 🧪 Experiment
In addition to criticism of the optimization, we've listened to you and read your feedback about our comic-style cutscenes. Before we dive into the interesting news, let's address the unspoken. Creating well-looking animated movies is incredibly challenging. An especially demanding challenge is character movement, and it is a tough nut to crack. Many large games struggle with this, opting for various alternatives. Thanks to a tip from Jaro Miko, the Hitman 2 remake cutscenes inspired us to create something similar. The reason is simple – time.
Creating a well-executed cutscene with natural character movement is identical to making a mini-animated film. But a little detail missing here, we were also developing a huge open-world game 😅. In larger game studios, cutscenes have separate departments. In our case, it's the opposite, one person occupies multiple positions. Within the time constraints, Mirka did an excellent job. We thank everyone for understanding the bigger picture. Which is a phrase we keep repeating – the challenging development of the Vivat Slovakia project.
Nevertheless, it wouldn't be us, Team Vivat, if we didn't listen to feedback and brainstorm a good compromise. These days, Mirka is already dressing up in the Rokoko Smart Suit Pro 2 for recording animations. In cooperation with our old-new animator Michaela, they are trying to create the final and fully animated cutscene for the game. So far since we've made the previous cutscenes in-game rather than outside the engine, we can enhance these animations too. We’ll see how the ladies progress. Let's support them together, and if you can, leave them a positive comment on one of our official channels. With your encouragement, the time-consuming work will become a bit more pleasant. We're doing this for you 🤗.

[h2]The most difficult building models are now being redone with our new current experience[/h2]
- 🛠️ WIP - Work in progress
We're finally getting to the thrilling word - optimization. It's a broad term since boosting performance can be approached in many ways. It requires a lot of trial and testing. Some tweaks help with the game's performance, while others don't. It all costs time and money. Since we've prioritized optimization over adding new content for the B side of Vivat Slovakia, our modellers are also rolling up their sleeves. Damian is tackling the most non-optimized building models and reducing their geometry. Here's a little Vivat educational snippet: Every 3D model has a certain number of triangles, and vertices, determined by its complexity and the experience level of a modeller. These triangles form the polygons that make up the model. The more triangles a 3D model contains, the more demanding it is to render on the computer. Game modellers use various techniques to reduce the number of vertices while maintaining the model's visual quality.
Our Damian faced this issue head-on. For example, The Hotel Minsk together with the A priori shopping centre on Kamenné námestie, was from around 80,000 tris reduced to just over 11,000 triangles. In the pursuit of optimization, the geometry of the buildings also improved. Another reduced-down building was the Ružinov Library, which went from an incredible 63,945 triangles to 41,468, including its new look. The remade outfit even beautified the building, so let's take a moment to applaud Damian! 👏 👏. Completing the trio of this star company is the Statistical Office building near Trnavské mýto, which originally reached around 100,000 triangles. Since it's not a crucial building for the storyline, after some discussions, we decided to reduce it to 8,000 tris.

[h2]Sneak peak of the Gerlach 725 vehicle[/h2]
- ✅ In the game
Cars in Vivat Slovakia are striking, aren't they? Exclusive news from Ivan. After the Smola Fortuna, another gem from Czechoslovak car manufacturers is coming to the game - the Gerlach 725. The model isn't drivable yet, lacks an interior, and has wheels from DBW, but until the optimization patch arrives, it will undergo some tweaking in Ivan's garage. With this car we can let you on a little secret, we're planning a racetrack in Petržalka for the future. It's going to be monstrous!

[h2]Even in early access Vivat Slovakia is transitioning to Unity 6 🎉[/h2]
- ✅ In the game
Back to optimization! The most action is currently happening behind the scenes in the secret dungeons of programmers, where Kubo and Samo are engaging in a merciless onslaught for the FPS. During Early Access we have the game currently divided into two separate branches. The first is live on Steam, where we're delivering more fixes, optimization, and new minor content. The second branch runs on the latest Unity 6 version, where the biggest optimization magic happens. Our goal is, of course, to merge these two branches as soon as possible.
What does this mean for you and the game? It means that the main optimization patch will be released a bit later. We can't say exactly when yet, but rest assured, we're doing our utmost to improve the framerate of Vivat Slovakia for you.

[h3]HLODs are currently rendered double-sided because some of them have flipped normals. These get flipped when an object has a negative scale. Once we resolve all these models, HLODs will be rendered single-sided, which improve on performance.
- Samuel Potisk - FadedDante, Team Vivat[/h3]
[h2]A bit of programming slang, introducing optimized HLODs[/h2]
- ✅ In the game
Long, long ago, we asked ourselves what LODs are. Every building in Vivat Slovakia has different versions of these LODs, and you see them depending on your distance from the model. But we also have so-called HLODs. This acronym stands for Hierarchical Level of Detail, meaning it involves multiple buildings simultaneously. The entirety of Bratislava is divided into pieces (chunks), which are continually loaded according to movement around the map. In these chunks are HLODs, which are also continually loaded. You can see them well, for example, when you stand on the UFO lookout and see the whole of Bratislava.
Our technical designer Samo nearly pulled out all his hair and survived only on spaghetti for two weeks, but he reduced the texture memory usage for the furthest buildings by half. So, HLODs will occupy half the memory. And that's remarkable. As if that wasn't enough yet, Dominik's 3D models kept him awake at night, so he came up with an idea to make buildings not cast shadows themselves. Now instead of them, the HLODs do. This reduces the number of shadow casters by a significant amount. Samuel turned this idea into reality and added HLODs translucency support. Your computer will thank them 🙏.

Now you know what chunks are, these make up the entirety of Bratislava in Vivat Slovakia. When you walked or drove in between them, they had to load, creating a noticeable stutter. Let's learn a new term - Game object. It's any game object placed in Unity. It could be a visible object like a bench or a car, it could be a visual effect of light or smoke, and it could even be a group of points, like waypoints that guide traffic in the game. Between chunk transitions, all these game objects must load, whether they are visible to the player or not. Kubo managed to remove more than 55,000 of them from the game. He figured out a way to convert waypoints (the basic element of all navigation in the game) and spawn points (places where city life should appear) from game objects to basic data. Imagine your computer having to load 55K fewer game objects during movement or loading in Vivat Slovakia. With the optimization patch, notice while you walk on the map, the increased FPS and significant decrease in stutters.
[h3]Added shader pre-compilation at the start of the game. During the game, they don't have to be sent to the GPU, reducing stuttering when loading chunks. Easy fix.
[/h3]- Jakub Molitor - macicka, Team Vivat
CHANGELOG 0.5.0b72
Below, you'll find the complete patch notes. Besides highlights like the new feature to shoot out tires and windows on all vehicles, the changelog also includes many technical adjustments that we tried to describe as informative as possible. However, we'd like to emphasize that in the background, we've made dozens of minor tweaks and general clean-ups of the game map and other elements of Vivat Slovakia.
We continue to monitor all your wishes and feedback, both on Discord and directly in the game - keep it up, only together can we polish and perfect our game to the maximum possible extent.
Missions
01 Ovce treba strihať:
- Added a checkpoint upon arrival at the Sheep Institute
- Fixed a rare occurrence after a cutscene where the main menu became unresponsive
- Fixed the ability to grab items through walls
- The “Restart Player” option now correctly drops items from hands
02 Investigatíva a jej negatíva:
- Added missing wallet on the journalist's desk
03 Dostihy:
- Fixed occasional misbehavior of Laura during this mission
04 Karavana ide ďalej:
- Caravan participants and the player's “phantom” vehicle behave more naturally and smoothly; several different fixes and adjustments prevent unwanted collisions and other chaotic behaviors
05 Kto nekradne okráda svoju rodinu:
- Added missing damage indicator to the Gerlach truck
07 Povolaný syn:
- Fixed getting stuck aiming the parabolic microphone without the ability to stop aiming
- Fixed immediate mission failure at the start of eavesdropping
- Removed white noise that sometimes persisted even after putting away the parabolic microphone
- Fixed the save of the “Change Clothes” objective at the start of the mission
08 Tutovka:
- Added checkpoint after passing the fourth floor (collective sigh of relief from many citizens)
- Optimized NPC character rendering, leading to better performance throughout the mission
Vehicle Repair Points:
- Adjusted vehicle repair points in missions where the car damage indicator is used, now correctly showing the level of damage/repair
NPCs
- Reduced Humanoid navmesh agent height to 1.7, leading to greater freedom of movement for pedestrians in the open world
- Pedestrians should now correctly avoid trams
- Fixed navmeshes in various chunks of the game map, leading to better navigation for pedestrians
- Fixed tram drivers floating in the air next to trams while driving
- Fixed instances where pedestrians stayed at the crosswalk even when they were supposed to get into a vehicle
- All characters involved in story missions have better navigation, such as when getting into vehicles, etc.
- Various fixes and adjustments to the ragdoll system of characters, significantly impacting instances of strangely shaking hands, most unwanted T-Pose instances, limb stretching, and more
- Fixed instances where even minor bumps/touches by the main character's vehicle activated its ragdoll
Map/City
- Adjusted geometry in the player's apartment, removed light leakage in various places, and made various global illumination and lighting fixes
- Fixed camera animation in Muničák
Vehicles and Traffic
- Added new vehicles:
- Smola Fortuna
- Smola Fortuna Combi
- Smola Fortuna Grand Van
- Smola Fortuna Joy
- Smola Fortuna Pickup
- Gerlach 725
- Added the ability to shoot out tires and windows on all vehicles. This includes worsened vehicle control when missing one or more tires and adding relevant visual and sound effects. The next step in this functionality will be the ability to shoot at passengers in vehicles (though we do not endorse such actions, wink wink).
- Fixed malfunctioning player reset option when the player is driving a car other than their own
- Smoother AI vehicle traffic, less unnecessary stopping and subsequent traffic jams
- Increased braking power for all vehicles
- Removed the remnants of the space initiative experiment, which under certain conditions caused the vehicle to be launched into…space
- Various fixes to the AI system that controls traffic, fewer instances of vehicles inexplicably moving slowly
- New transmission system in vehicles, leading to smoother acceleration and hill climbing, and fixed transmission and engine sound effects
- Complete overhaul of the camera system, dynamic zooming out at higher speeds, and fixing various instances of the camera getting stuck or passing through interiors
- Fixed vehicles that remained on the game map and did not despawn after being…seized…by the player and subsequently abandoned, causing surrounding traffic to collapse
- Fixed instances where it was possible to control two vehicles simultaneously by incorrectly activating the ragdoll when getting in
- Fixed faulty interaction between vehicles and pedestrians, which previously allowed pedestrians to survive a vehicle collision from the side or when reversing. Fingers crossed.
- Adjusted visual and sound effects for skidding and drifting
- Adjusted the distance of the prompt for getting into cars
- Various adjustments to the player's car controller, smoother acceleration, less "floating/skidding"
- Adjusted the range of vehicle rotation that triggers turn signals
- Fixed an error that caused vehicle lights not to turn off after exiting
Audio
- Fixed incorrect audio references on the Smola Bohemia vehicle
- Various fixes in triggering sound zones in missions and outside of them
UI/UX
- Fixed several typos in initial settings on the first game launch
- Localization of texts for all story missions into English
- Added localization to the betting menu in the horse races
- Fixed shadow setting in graphical settings that did not save
- Added “Turn Off Tutorials” option to Settings
- Fixed an issue with displaying some mission objectives in English
- Added an option to set the volume of the custom radio in Settings
- Changed the default control setting for the radio in the player's car, which until now was on the same key as changing the radio
Optimization
The first major round of optimization focused on cleaning up redundant code, world loading, geometry of a large number of buildings, and other various technical kung-fu related to rendering objects, shadows, and background processes.
Above all these tasks is the transition to the latest version of Unity 6, which, among other things, offers many new optimization possibilities. Many points in this section are written in technical jargon, but all contribute to overall performance improvement. Many of the points listed above also impact performance, but for the sake of order, they were listed in their respective sections.
- Removed all redundant blendshapes from NPC characters, saving approximately 3GB in runtime memory
- Fixed random stuttering during gameplay; upon opening the game map, a process to clean up unused assets is triggered
- Reduced memory usage of textures for the most distant buildings
- Added a system for pre-preparing shaders at game launch, before opening the main menu, resulting in significantly smoother world streaming and chunk loading of the game world
- Added NavMesh scene to the loading sequence at the beginning of the game
- Optimized rendering loop
- Better rendering of distant chunks of the game map
- Optimization of building geometry (this point is still in process, all buildings are gradually being optimized)
- Building shadow casting from HLODs, significantly reducing the number of "shadow casters," improving general and rendering performance
- Optimization of WorldPoint data structure
- Complete overhaul of the spawnpoint and waypoint system (the system that controls where and how vehicles appear in traffic and parking lots and where they head)
Miscellaneous
- Fixed an instance that caused the game not to load under certain circumstances
- Various optimization adjustments to the weapon system
- Various adjustments and fixes to the gamepad system, better aiming, removal of weapon wobbling
- Increased radius for automatically picking up weapons and wallets from the ground
- Increased speed of weapon equip/unequip animation by 100%
If you’ve read this far, hats off to you. If you still haven't had enough, please direct your attention to the updated Known Issues section below.
Thank you and have fun.
Known Issues
New:
- Large shadow without apparent source when descending from the harbor bridge to Petržalka (identifying the issue and working on a fix)
- Cars spawning into each other (issue identified, working on a fix)
- The last car in the caravan in mission 04 can get stuck on the presidential palace gate under certain circumstances, then continues in reverse from the palace (identifying the issue, should not impact mission completion, restarting the last checkpoint will return the car to its regular position)
- Some buildings under certain circumstances do not switch from HLOD (lowest level of quality model used for rendering very distant objects) to LOD0 (highest level of quality model) (issue identified, working on a fix)
Severe (Fixed):
- Just before completing the Races mission, the player can get stuck in story progression if they interact with the wardrobe in their apartment before the mission properly ends and saves (issue identified, working on a fix, temporary solution is to restart from the last checkpoint) FIXED
- Just before completing the Called Son mission, the player can get stuck in an object if they exit the eavesdropping van in the garage before the mission ends and saves (issue identified, working on a fix, temporary solution is to restart from the checkpoint, which properly completes the mission and the player does not have to repeat it) FIXED
- Music, ambient sounds, sirens, and others turn on/off/stay on/off regardless of what is actually happening in the game (identifying the issue