Saturday, March 11, 2023

0006 | Microsoft Painted us in a Corner

Microsoft left a mess for us to cleanup

 Microsoft XNA

In 2004 Microsoft announced development of a new game development framework called XNA that would allow C# developers to have the same level of access to low level graphics and sound components such as DirectX.   C# was getting to be hot at the time too.   Basically, XNA is C# wrappers around the DirectX C++ libraries.  In 2006 the first version of XNA was released.  

Now you might ask yourself, why bother with C# if you can program in C++ and just use DirectX.   Well, the short answer is that with C# it is far easier to create a cross platform solutions for iOS, Linux, XBox, and even stuff like Raspberry Pie.   Because C# doesn't compile down to machine code (chip manufacture specific), it instead compiles to a ubiquitous intermediary code that then can run in a Common Language Runtime (CLR) environment.  This is basically a language that is universal between hardware, and the CLR compiles it to machine specific code for a specific chipset just before it runs.   

You do pay a speed penalty at load time but given that you can write code for many platforms at once, the tradeoff is worth it!  Not to mention that most games run at 60 frames per second, and the Cortex engine will do thousands of frames per second when unbridled.  So there is enough horsepower to spare. (Giggle Horse Power that is)

C# is also a far easier language to learn and use than C++ because the heap is managed for you. So naturally we adopted both C# and XNA for the Cortex engine.  






Why was XNA abandoned?

XNA was its own worst enemy.  With C# and XNA, it lowered the bar for entry into developing video games substantially.  That seems like it would be a good thing, yeah?  Well Microsoft started the XNA Creators Club, which allowed anyone, and I mean anyone, to create a game with XNA and release it on Windows and XBox 360.  This was Microsoft embracing the Indie games movement.

You would think this would be awesome, and we would have more games to choose from.  However, there was such a flood of games, and not enough people to vet them that tons of total shit games were being released.  The same thing was happening on Steam at the time, which led them to implement their green light program, which turned out to be a nightmare in its own right.  So, for about two years there were AAA games being released along with thousands of games that were total trash.  

The market got very diluted with garbage very quickly.  In an effort to get this all under control, Microsoft scrapped the Creator's Club, and also abandoned XNA.   This is sad, because it wasn't the technology's fault.    At the same time, Steam decided to just make you pay for entry.  

I really wish that Microsoft would have just taken a page from Steam and made people pay to submit a game.  That would have cut down the crap very quickly. 






Microsoft Cock Blocks XNA on Visual Studio

XNA was, and still is, a very viable solution for cross-platform development.   Unfortunately, Microsoft doesn't see it as such.  Not only did they stop supporting it, but when Visual Studio 2019 came out, they completely blocked the installation of the development tools and frameworks.   What a crock of shit!

I won't go into it, but I can't tell you the hoops and tricks I had to jump through to trick Visual Studio 2019 to install the framework so that we could use Cortex again.   

This really pisses me off because they are essentially blocking technologies developed by companies  that might use their framework just because they want to play gatekeeper.  

I'm being very calm here, LOL can't you tell, but I can't even tell you how many hours of frustration I went through to get our own technology to compile again because they decided to be technology Nazis.  







Crashes and Fixes

So here we are in 2023 with Cortex 7.2 developing Absolute Zero, when all of a sudden, a weird and random crash started to appear.   I instantly blamed my code in the Cortex engine, even though it has been stable for years.   So, after debugging very deep into the engine, I finally caught the unhandled exception.   It was Microsoft XNA throwing it!   It also wasn't a simple invalid range type exception.  

Exception thrown: 'System.Runtime.InteropServices.SEHException' in Microsoft.Xna.Framework.Xact.dll

This started to make me wonder if the framework always had this error, or something more nefarious. 

Funny thing.  XNA was supposed to abandon in 2013, however we can upload Absolute Zero to Steam, and then install it from there and suddenly we get XNA framework files with versions that are as much as 10 versions past ours with the Microsoft msi install.   To add to the weirdness, these are frameworks that don't seem to be downloadable from Microsoft.

It makes me suspicious that they are updating things for Steam so games don't crash, but making sure that we can't independently release on Windows with an installer.  






Breaking free

Thankfully, there have been many groups that have taken the XNA tech and made it their own and made it open source so things like this can't happen again.  At least not by Microsoft.   The best-known technology that is open source, cross platform, and from what I can tell, bug free relative the original incarnation of XNA is MonoGame.   

For those of you that know me, know this is my fourth game engine, and I have won lots of awards for this one, including from Intel themselves!   So, I could write all the backend parts myself, but I believe the folks over at MonoGame have done a superb job.   There is no need for me to reinvent that wheel.  Also, the Cortex engine ports straight over and MonoGame doesn't require a third-party installer like XNA did, making sure that "our" version of the game stays that way.  So, thank you MonoGame.  

I'm actually surprised that MonoGame is not more widely used to tell you the truth.  






A Conspiracy of My Own Making?

Is this some crazy conspiracy I made up.  Maybe.  Maybe I am completely wrong about Microsoft.  Here is what I do know.  
  1. We can build Absolute Zero with a standalone installer using the latest download of XNA from Microsoft's website.
  2. That version has a bug that is Microsoft's, and we have to catch it to make sure that the game doesn't crash.
  3. We can push that build to Steam.
  4. We can then install that build from Steam onto a clean box where XNA was never installed.
  5. That version won't crash.
  6. The XNA framework that Steam's installs have files that are several versions past the supposed "Newest" version you can download from Microsoft.  
This leads me to believe that Microsoft might be secretly supplying updates to their framework to Steam while giving the rest of us that aren't making billions the finger.  

Given this information, you can judge for yourself.   In any case, we have fixed the situation for both Steam and the standalone release of Absolute Zero.  

If Microsoft doesn't want us to use their tech, and they have made my life hell trying to do just that,   I'm going to comply with their wishes.

Just my extra 2 cents, but this is another reason I hope the Activision / Microsoft deal doesn't go through.  They don't need more control over any part of the gaming industry.  




Support Giggle Horse and Wish List Absolute Zero!

Okay, enough ranting about mean billionaire companies.  Absolute Zero is fixed, and it will run without issue when it is released.   So go wish list and help out the little guy!  Thanks everyone.

Add To Wishlist!

Wednesday, March 1, 2023

0005 | Getting Organized

 



Document Everything

After more than 30 years developing video games, and application software heavy in graphics, I've collected quite a bit of information with regards to graphic pipelines, audio pipelines, tools, techniques and so on that make developing games easier and at higher quality.  In short, if there is information that you have that makes your job easier, you should document it, even if you use it on a constant basis.  There is always a day where you get ready to do something, and you know that you have an easy path to go down, if only you could remember what that path was.  That is why you document everything.  Then all you have to remember is, that you know there was an easy path, and that you wrote it down.  Now all you have to do is find it!  

For the longest period of time, all that information was stored in various folders scattered across multiple computers and backed up in multiple places for fear of losing it all.  Even though I knew that I had the information, it made it a pain in the ass to find it sometimes.




Organize your Documents

Document Archive


Then came along Trello.  I don't know who made it originally, but Atlassian bought it a few years back.  Basically, it is an online interface like a Kanban board, or scrum board.   I used it to categorize and organize information that I had collected and keep track of tasks that need to be completed on the games, game engines, tools, audio and video pipelines.  

Trello Example

Unfortunately, over time, there got to be thousands of these cards, and it got to looking more like the image above this one.   It still works, but it is messy and complicated.  I think it is more suited for Kanban / Scrum boards than trying to organize anything.

So, then I had someone mention Confluence, which is also by Atlassian.  Unfortunately, when they said that, I instantly shivered in disgust.  I brought it up to my producer who also has worked at the same places I have, and he thought it was a horrible idea.  Most all the places we have worked run the enterprise version, and it hasn't been updated in forever.  Also, the places I have worked that use it have basically let it turn into the Wild West where people can just put anything anywhere, and also ends up looking like the room above.  If you have ever used one of these versions of Confluence, at a software company, you know what I am talking about.  I loathe searching for anything on them because it is like playing "Where's Waldo".  

Well, we gave the NEW Confluence a try, and OMG, it is the bomb!  It is everything I have ever hoped for in an organizational structure for documents.   Now I can store everything from programming notes to information about setting up specialized shaders in 3DS Max, and even how-to instructions on common actions we have to perform here at Giggle Horse Games!  So far it is a miracle, but I will let you know if that changes.




Recording 3D Modeling with OBS



Next thing I had to do was setup OBS (Open Broadcast Studio) again so that I could record the 3D Modeling, UV unwrapping, texturing, and 3D sculpture sessions with ZBrush.  One the issues I had with OBS straight up is that it doesn't record several monitors at once by following the cursor.  So, for example, when I 3D model something in 3DS Max, I usually apply a UV Unwrap modifier, then go into the UV editor on the second monitor so I can see how the UVs are laying out on the 3D Model on the first monitor.  Unfortunately, OBS won't follow the cursor to the next monitor.  So, I had to get a plugin and configure some macros, so it automagically switches screens based on where the cursor is.  

I am now back in the saddle and creating assets for the scenes in the game.  It feels good to be back working on the game.  The last two years of nightmare distractions are gone.  

Now for the BIG PUSH to finish this game.  




Getting some Stamina back


Having said that, I have noticed that all the shit I went through last year really took a toll on my stamina.  I didn't really notice it until a couple weeks ago and I realized I didn't have the endurance to push like I used to.  So I am now doing interval endurance training on the treadmill to build my stamina back up so I can work longer without getting so tired.  

That's all for now fans!   From here on out, it is all about Absolute Zero and the push to get it done.  Thanks for following us, and the thousands of you that have already wish listed the game on Steam.  For the rest of you, click the button below so you can get your copy the day we release it!   Yea!




Absolute Zero on Steam

Hey everyone,  don't forget to add Absolute Zero to your Steam wish list!   

Add To Wishlist!

Popular Posts