Wednesday 17 July 2024

Changes in graphics

People following the project with interest in its technical aspects know that the L.B.A. Tribute runs on OpenGL. This graphics API was introduced in 1992 and by some, it is loved while by others, hated. These days you may hear an opinion that it is inferior compared to DirectX.

In reality, the answer is more complex. OpenGL evolved from its original form and these days the current stable release carries version 4.6 which was released in 2017. I mention that because on the internet, you can still find tutorials and people using OpenGL 1.4 from 2002  and claiming that it is inefficient and not modern. 

In reality, if you look at the API that OpenGL 4.6 offers, you will see that it is closer to the Vulkan API than OpenGL 1.4. We ourselves used multiple versions of OpenGL and in these 18 years, we learned how to use it efficiently, grew fond of it, and these days have a large sentiment for it. But even we understand that in the game industry, nothing stays the same. Things moving forward, GPU architecture evolving, API changing, and modern tooling focus more on supporting Vulkan and DX12.

This was visible when we recently tried to improve our shaders compilation pipeline. Our goal was to combine SPIR-V which is us for Vulkan with OpenGL. Based on documentation it should work without any problems but in practice, our attempt was only partially successful. We managed to use it for shader compilation which gave us uniform errors across different vendors. But it also failed to load the SPIR-V shader in OpenGL which was our goal. All our attempts to use it resulted in not passing some data to the shaders. We even tried examples from other people. But even they failed for our machines which was a sad discovery.

Another example of issues with OpenGL was when we were tracking graphical issues. Each of them was a small issue with the API usage that potentially could be caught by the debug layer in Vulkan. In the end, all the tools for OpenGL did not give us clear information that something went wrong and we needed to spend a significant amount of time to track them down. For people interested in graphics we are currently using RenderDoc and Nvidia Nsight Graphics. Looking only at them we have a feeling that OpenGL lacks debug tools compared to more modern APIs. In some way, this makes sense as the current focus of the vendors is on the modern API and not on something used by a few. 

That is why we decided to start the process of switching all our tooling to support:

Now, don't worry. We do not plan to drop everything. We plan to do things in stages and the first one of them is to prepare code for the second graphics API and display a triangle on screen. This effort will be driven by Alex while I’m continuing our Little Big Adventure project. Things are slowly coming together and last week was the first time when we felt that we finished with only fixing stuff and doing something that moves us closer to the finish line. 

Monday 8 July 2024

Dr. FunFrock

This time we feel like we should talk about something nontechnical. Sadly we do not have something specific in mind so I will try to reply to question 2.21 posted recently on X :

For me personally, I have mixed feelings about the new version of Dr. FunFrock. I think that the changes done to his face will fit nicely with the new style. The addition of a mustache and eyepatch is also ok as it gives him an interesting look. I really do not mind changes like that. 

What I do not like is his body. I watched this fragment from the trailer at 25% of the speed and his posture looks pretty muscular compared to the chooby version we know from the original game. I kind of liked how he was before as it gave him this unique look compared to all the classic evil characters. Another aspect that feels weird, is his clothing. Looking at his shoulder pads I suspect that they wanted to show him as a dictator, with a look closer to general than as a researcher. But I once again am not really sure if I like these changes.

Still, this is the first look at his new design. Looking forward to the finished version of the game.

We know that this is a short post but this was a tough week where stuff with the project did not really go how we would like it. The plan was to actively work on a new animation system and we ended up repairing stuff and going in the circle with some other changes. This is part of the "fun" of making the game with its custom technology. Want to believe that this week will be better.