Compatibility Thoughts (Part 3 – The Missing Chapter)

Okay, here’s some of the stuff you didn’t see yet in the recent compatibility posts. I should have been clearer and give more information about what I’m currently going through. The 2D versus 3D didn’t like occur because one day I ate wrong type of mushrooms or anything. I tested quite new version (not the newest though) and saw that there had been some major changes in how the Leadwerks engine works.

Here’s some points:
#1 – Some ATI users reported black screen problem with older Leadwerks engine
This has been said to be fixed in the newest version.

#2 – Some people reported lighting issues (no textures showing)
This also got partly fixed by using a newer version.

#3 – Newer Leadwerks version changed controller behavior
In the new version, the character controller works completely differently than in the earlier version. My game has barricading system where you could drag’n’drop boxes to build your defense. In the new version this no longer works because the guy starts flying when you move box too near the guy (or an enemy). Basically… it starts acting really weird.

Now, I did partially solved this problem by disabling physics for draggable objects, but this isn’t a long term solution since there would still need to be some sort of code that would ensure that the object isn’t dropped too near any other object or otherwise physics act weird and gameplay suffers. Character controller is key thing in the game (it affects all the physics that the character faces).

I could use the older version (where it worked okay), but then I’d be facing the bigger compatibility problems (people reporting black screen, which should work in newer Leadwerks).

#4 – Newer version have only DDS format support
All my content has used .JPG or .PNG textures and materials. The new version requires DDS which means that I needed to change all my texture files to use DDS format. Most of the old content is working fine now though (since I went through this stuff), and DDS is a good choice for texture/materials.

Of course when engine drops support for certain files and starts having support for only one file type, it means that people using the engine need to upgrade their work.

I’m mentioning this merely as an example of something that has happened (and something I’ve tackled quite well) to give you a better picture about what’s going on in my thinking.

#5 – Never version also require people to have up-to-date drivers
I was under the impression that Shader Model 3.0 has pretty okay coverage (Valve’s hardware survey reports “around 50-75%”), but it seems that people still need to find the latest video card drivers for Leadwerks powered games to run properly. Some people reported problems on the forums and those got better after they did the upgrade. I don’t know if this happens a lot, but I think average Joe won’t be upgrading his drivers so easily…

Yes, I know that changes should happen early, not late
I’ve done software projects for quite a while and I’m aware that changes should happen as early as possible. Even in agile projects this same holds true: it’s good to get things sorted out early in the sprint before actually coding anything.

But… this isn’t just about 2D versus 3D. It’s a compatibility issue that’s getting better in newer versions. And when I choose to use newer versions, it means changes in my existing code.

The compatibility problem I’m facing is a two edged sword: I have one more major change in front of me, no matter where I look. If I go forward with an older Leadwerks version (which has poorer ATI support) the compatibility problems are simply too huge (so this option is not possible). I’ve upgraded to a bit newer version to test it out. I worked with it, and now it seems that I gotta start making couple of major changes to my existing project such as the player character controller, which now works ‘decently’ but still has that major bug which is quite tricky – and takes time away from coding actual features.

And after all – the 3D – what kind of support it really has after all?

And these lead me into thinking 2D
…and because I’m facing a compatibility dilemma (that can be somewhat helped with upgrading the engine – which of course means continuing the work to get my game”s existing features to work properly). At this point I started thinking about what the game would be without Leadwerks – what it would be to do the game with BlitzMax only and how much existing code could I reuse? I’ve programmed my game using a pretty good object oriented and encapsulated code, I thought I could limit the main part of the changes to a handful of main classes – and that I would test first to see how much time it would require to take step back to 2D.

My main concern is the compatibility (and the fact that the new Leadwerks engine changes that can improve the compatibility affect directly my game). What happens in the future versions – will there be more changes that help compatibility? What kind of changes do I need to make for my code and assets to get the newest versions working? Will there be similar major changes that require me to go through all my art assets to improve compatibility? (Aka, how much more work it is now and in the future patches to ensure better reach?) If I don’t use the newest version (and don’t need to go through many more changes in my existing code), how good compatibility it provides?

In retrospect it’s now easy to say that I should have thought about this issue more (and not just rely in the thought I had “in 6 months the compatibility & computers get better”). I did make a point about compatibility in Leadwerks review few months after choosing the tool, but at that time I thought that the compatibility would still be perhaps bit better that the versions I’ve used have proved to be. I thought that the engine is ready enough and that compatibility issue would get better (and it indeed has). There has been some critical changes (mainly ATI card compatibility issues) that are close to “have to get” for my game (and this of course meant doing changes to my own code).

To “break away” from this situation, I started pondering using only BlitzMax (aka 2D) to program – and continue using the code I’ve used so far (without the 3rd dimension of course) as much as possible. That’s why I wrote some thoughts couple of days ago.

Releasing a game is a good idea – can’t argue with that
With that being said, I do think that it could be a good idea to get the 3D version out and test how it works. I’ve already done some part of the changes (still missing some stuff like the “barricade bug” – which is a major one – that appeared due engine change). With the new version there has been new changes (like mentioned earlier) which means that I haven’t got all the planned features for the upcoming version (due the fact that I have needed to get my existing code to work properly). I’d like to get “some more features” but I also think that at some point one gotta get the game out.

Things aren’t so black & white, but perhaps this gives you a bit better picture about my situation and what lead me into thinking about this “2D versus 3D” right now.

Maybe this also replies to the rest of the points that people made in the earlier posts.

4 thoughts on “Compatibility Thoughts (Part 3 – The Missing Chapter)

  1. I tried the converter but my images were shown as black inside the game. I first needed to open them in Fragmotion and then save them there before I could turn them into DDS (I wrote about this issue in the forums – it seemed to be something about how my texture files were done or something)

  2. You know there is a batch converter to convert your image files into .dds format?

  3. So basically I feel for you going through these technical issues and I hope that you can resolve them soon. I originally had lots of issues to solve when I first started using BlitzMax 3 years ago but I found lots of workarounds and got the makers of BlitzMax to fix others. The result is a stable engine that works on most PCs. But it seems that as soon as people move up to DX9 and 3D engines problems are introduced (no matter what engine is chosen), the more fancy the engine, the less PCs it works on. Developing for a console must be such a pleasure as you know the game will work on them all.

    Sounds like right now you just need to make some workarounds for the controller issue (or bug Leadworks to fix it and assist where possible with test code) and work with the texture format issue (shame the jpg/png feature was removed. I tried to never bread my framework for older customers when I released new versions). You so just have to get it done though and move on. You can reuse the code for a 2D sequel if you want or try out another 3D engine with BMax if your code is as encapsulated as you say it is.

  4. My next game will still be 2D and DX7 and it’ll sell 100,000+ units. Nothing wrong with old tech.