Compatibility Thoughts

I’ve been doing Dead Wake zombie game development for a quite some time now and I initially aimed to do a launch on this month. I’ve been messing around with the new Leadwerks update and updated parts of my code to reflect the changes.

In the back of my head, the compatibility point has raised its head. After releasing the new version I’ve got replies from people about the ‘screen going black’ emails (but also many ‘the shadows look awesome’).

I haven’t updated the existing content to use the new texture format (which basically means I need to get my 3D content up to date to be able to use it properly in game). I’ve also pondered more about the potential audience and even though I’m getting closer and closer to the release, I have second thoughts about the release & compatibility.

For that reason, I’ve dug some information about 2D versus 3D and I’m re-thinking the possibilities stop using the Leadwerks 3D engine and continue with BlitzMax alone. I know this is a big thing, and definitely something that I really should have examined more several months ago.

I know that taking away Leadwerks and proceeding with BlitzMax alone would help build more compatible game, but it also means major change – and delay – in the project.

I have listed pros and cons (and will mention these in a general level in my next post), but I also thought to simply try it out and see how it goes. I’ve coded my game using a decent encapsulation or following the “black box” tactic (classes interact with each other as little as possible), so I’m trying out what would it mean to take step away from 3D to 2D.

I’ll report back how this goes. (Feel free to give your thoughts as well)

16 thoughts on “Compatibility Thoughts

  1. [I know that taking away Leadwerks and proceeding with BlitzMax alone would help build more compatible game, but it also means major change - and delay - in the project.]

    i would rather go for the future and not look back. Soon Geforce GTX 300, radeon 5xxx or Larabee will be out with more power you can imagine.
    i would rather check the video card when launching the game and popup a message ‘you 3D card does not meet minimal requirements to run this game, please upgrade’. Who cares if the guy with a notebook and a geforce 6200LE cannot run your game ?

  2. I was almost tempted to do something similar with my current game I’m working on. Essentially, I’m using an engine based on Objective-c for my IPhone game (using cocos2d). Although I find the engine is doing it’s job, the fact that it is in Objective-C instead of my trusty old C++ is really slowing me down. The alternative would be to change the engine, or rewrite the thing in C++. I was almost tempted to do so, then decided against it. I just have to put up with the fact that if I want to develop on the iphone, knowing Objective-C will be an advantage in the long run. So I kept the engine as it was, and I’m using as much c++ as I can, when I can to make up some of the lost time.

    In the end, no one release perfect software, but it’s still very important to release. Learn what you can from this project, and apply those learning in your next endeavor.

  3. I wrote stuff here, check it out: here’ll be the dragons.

    @Scurvy Lobster:
    “If you change from 3D to 2D you might piss of most of the established fan base. That could waste a lot of hard work for done for your community.”
    Yeh, indeed – I know. This is a major thing (and I’ve gently asked about the current fan base about this).

    @Anonymous:
    Yeh, I’m testing a quite new version… which has so far required quite many changes to my existing code & assets :)

    @d.evil:
    It’s Leadwerks engine problem (or “ATI cards problem” as they say id ;). I’ve told people to “try out their evaluation kit” and the scren close black.
    It doesn’t use DirectX, it uses OpenGL. Shaders Model 3.0.

    @Jake:
    I cannot release with current (old) tech, since the game won’t work with ATI cards. Good points on other things though.

    @Anonymous Alex:
    Yeh, the dynamic shadows are indeed kind of like “required” for this type of game (well, almost at least :).

    I do agree that Leadwerks has good points, and that updating drivers can sort issues… but I wonder how many people are willing to do that.

    “This is your hobby project and your life doesn’t depend on it.”
    Well, this project actually has the biggest budget I’ve had for a game so far. :)

    In earlier games I’ve used mainly time, but this time I’ve spent quite a bit of time & money and I do this stuff for commercial purposes… as in to build & grow my company :)

    Thanks for the help everybody

  4. Sometimes, I’m also trapped in the “compatibility issue” when designing my engine. It’s so annoying, but I hope by the time I get to the game, the engine would be so well wrapped that these details won’t affect the game’s code.

    I’m also thinking that using vertex and pixel shaders should not be a problem these days. Of course it depends on the game. If you do a 2D Hidden Object game, I don’t see a point to risk it . But this is not your case.

    Having your game in 3D is a good thing. Mainly for the dynamic shadows that are a “must have” in any horror game.

    —-

    Now if you want to avoid Leadwerks because it’s special requirements (multiple render targets for deferred rendering ) there you may have a point. It will lower the hardware requirements and it will probably work for more people with old drivers.

    Render targets are a real issue for old/bad video drivers. I’ve seen commercial games that showed me the “black screen” or whatever color it was, without any warning message (probably the game engine receives no error codes). To mention a few I remember now: Myst IV, So Blonde (badly broken shadows), Azada2. A drivers update and it all worked fine.

    The best thing to do is to talk to the people who experienced problems and see if they or you (or Leadwerks) can fix them.

    Dropping Leadwerks would make you miss the deferred rendering advantages and you’ll need a complex lighting system to limit the lights per object, etc.

    ———

    So my advice is not to give up on 3D because of compatibility issues. You can drop Leadwerks if you decide it doesn’t cover enough of your audience, but you don’t have to give up 3D and not even shaders.

    If you’re still thinking about 2D, it might be because you don’t think your game looks good enough in 3D to worth the effort and the requirements compromise (I’m sure Diablo 3 developers have no such thoughts). If so, make an analysis (by checking similar games) to see if you can have it better looking in 2D or if you can improve it as it is.

    Keep the good work, and don’t worry about releasing a new game each year. This is your hobby project and your life doesn’t depend on it. Nor your credibility, as someone suggested it.

    Alex

  5. Agree with much of what is said. Finish game in current tech and release. You may loose a certain percent through compatibility issues (any idea what %?) but at least the game will be done and out there. You may be able to work with cooperative testers and Leadworks to narrow down the issue and fix it (if it affects high enough % to bother with instead of working on marketing and you next game instead).

    As for 2D zombie game, forget it (unless isometric like Zombie Shooter). The audience for zombie games expects 3D and a 2D game would feel to much like a free game. Get it out soon and ride the popular zombie wave before it dies down (forgive pun).

  6. Holy crap… now this post really got comments. I think I gotta reply all these in a minute :)

  7. We’ll I think that Ovogame have right with relation between tech changing and doing final release. It’s better to drill problem instead of escaping to another (I bet there’s more of them waiting for you If you change framework/engine/libraries). Frequent changing can be long, long way or even no-way.

    And as Scurvy Lobster suggested – check thing with different DX releases – It can be the problem.

    Other case is that he said about community – I also think that people waiting for DW that already seen 3D version would be pissed of if you suddenly switch to 2D…

  8. I recommend using the latest version of the engine because there were issues with ATI drivers that were not fixed until recently. If you decide you want to make a 2D game, that is your decision. My experience has been that if you try to please everyone, you are better off just making two separate products because the capabilities and needs are so different.

  9. Scurvy Lobster

    And one more thing. If you change from 3D to 2D you might piss of most of the established fan base. That could waste a lot of hard work for done for your community.

  10. Scurvy Lobster

    It sound like a lot of your players don’t have a new version of DirectX installed. Be sure to put a web installer in your installer so that they can upgrade to the latest builds. In my experience it’s normal that people still can be running builds from 2006 and 2007. That is still DirectX 9 but not in the latest version.

    Other than that: read the book ‘Masters of Doom’ by David Kushner. It gives a great perspective on changing tech in mid development.

  11. Also, this might be a problem of inexperience in programming, rather than the tools you use.
    I think that if you get a black screen, then its your bug and not the engine’s fault.
    Perhaps all you need is to put more asserts, pre/post conditions and check and report for more errors at run time?

  12. I kind of agree with ovogames on this one. I also think you are soon missing the “zombie game” fad that has kind of peaked (imho). On the other hand you are not professional game dev and have other things in your life going on so things tend to take time :) In iterative development it’s alos a big no no to break the timeboxed deadlines.

    3D – 2D issue shoul be a question of gameplay not tech.

    Personally I would not touch a retained mode scene graph based “engine” with a pair of pliers. Both DX and OGl are quite mature, stable and easy to learn APIs. Put the pedal to the metal so to speak.

  13. I could write a lot on this issue, but I don’t like the format of these blog comment entry forms, so I’ll keep it short.

    If you drop Leadwerks to use only Blitxmax, you are moving backwards in a bad way and as a developer, you will be forgoing a lot of important lessons learned. I absolutely agree with what Ovogame has said. You need to press on with Leadwerks and Deadwake, “suck it up”, and get the game out the door.

    You are almost about to fall into a trap that a lot of developers do, and once you go there, getting out is really hard. I’d hate to see that happen as so far, you have one of the most “completed” and “working” games made with the Leadwerks engine on the forum. You being able to finish your game and get it released would be a good inspiration for a lot of developers who are in limbo right now using the engine.

    Don’t give up. Keep working at it, get it updated to the latest version, try your best to squash any bugs, then let er’ rip. Don’t look backwards, only forwards from here on out. If you are worried about quality and compatibility problems, don’t charge money for the game; if it’s free people have no basis to whine ;)

    I wish you the best of luck!

  14. I think, I have been folowing your blog for more than 3 years now. In that time I release 4 games. How many did you released? I think it’s time for you to release a game or you will lose credibility.

    Whatever you do (releasing soon or not) you will always have a huge amount of problems with your game. It’s a learning process, and you improve a bit after each release. But if you don’t release you’ll never learn these things, even if you read about it… Living it for real is different.

    Stop changing tech every 2 weeks and release your baby. You know I’m right…

    JC

  15. Maybe I’m not understanding right, but you are thinking about dropping Leadwerks, and in the process drop 3D to 2D.

    I would probably drop Leadwerks, but not 3D all together.
    I had a similar problem with DtDTD2 early on. I was using Game Maker still, with the Xtreme3D engine (It uses some OpenGL wrapper for Delphi, so it was a wrapper of a wrapper.) However, I ran into many problems with the 3D engine: like compatibility, slowdowns, bugs that I couldn’t fix with what I had. So I eventually made the jump to C++ and used Irrlicht for my 3D engine. I had used C++ for NDS and GBA homebrew before, but not alot of computer stuff. Even though the jump to C++ and Irrlicht has caused huge delays in game release, I think in the long run it will make it a much better game.

    ~DtD

  16. Hmm, the screen should never go black ever. Even if the guy does not have sufficient hardware to run your game.
    He should get an error message.
    So I am not sure if its compatability or just a bug?
    Of course, going into the 2D realm will make things a lot easier.