Yep, it
_is_ absolutely awful.
I know that thread you posted and I've read it many times. I recently checked all my models to make sure there are none with "mixed" or only empty skins. It's possible that I missed one, so I'll be going through all of them again tomorrow, just to make sure. But as far as I remember, that bug had been fixed anyway, right...?
Brings me to your next question: Yes, I'm using the latest version (8.47.1 (Pro, if that makes any difference)), and made sure the guys supporting me do so, as well.
Next: Yes, there's a single sky entity in the game. It's defined like this:
ENTITY* skyscene =
{
type = "sky_scene05a.mdl";
layer = 3;
scale_x = 380;
scale_y = 380;
scale_z = 380;
y = 28000;
flags2 = SKY | SCENE;
flags = FLAG2;
albedo = 100;
}
Things I'm doing with it at runtime:
- change of position vector
- change of scale_x vector
- visibility control (via flags2 - SHOW)
- color manipulation (by modifying red/green/blue)
- ent_morph'ing to different, level-specific models after level_load
Sound: No, I did not try that using the engine parameter. What I did so far was to test with sound_vol set to zero, and that didn't make a difference (if I remember that correctly). Will check that tomorrow.
Plugins: In fact, I don't recall having these issues before starting the Steam implementation - however, I've changed so many things around that time, that it could easily be almost anything else. I'd rule this one out anyway, as the Steam plugin is currently fully disabled. I also removed the DLLs from my Win10 test environment, just to make sure. Good point with the NULL strings though - I will make sure to check all the strings I'm sending.
While we're at it - in my leaderboards code I have this slightly suspicious part where I'm fiddling around with a local short array and two char-pointers. Maybe let's have a look at it:
function mm_lb_fill() // used to fill lb strings
{
(...)
// defining local stuff...
short short_array_x1024[1024];
char* _nameUTF8="";
char* _nameFINAL[10];
(...)
// The function ends here.
// No, I'm not removing the char pointers - should I?
}
Remember: As I said, the Steam implementation is currently turned off, so this part of the code should never be executed anyway. But since I recently learned that local STRING* pointers should a) be created using str_create(), rather than simply defining them like 'STRING* test = "";' and b) should also be str_remove'd by the end of the function, I keep asking myself if there's an equivalent guideline for using chars. Could the way I define them here be problematic? Could the precompiler come across this part of the code and go totally nuts? I mean, it shouldn't, for my understanding, but I'm starting to look for potential mistakes
anywhere.