Compatibility Thoughts (And More, Part 2)

Merely mentioning words considering “switching tech” got an avalance of replies and I thought it might be a good idea to reply the comments here and clear some things. I admit that I perhaps should have given more details about the situation, but one thing is true: it’s good to express your thoughts and tell somebody what goes on in your head. I think I’m getting a clearer idea about how I want to proceed.

Who the heck I am and why you should listen to me
Before I reply to any of the comments I think it should be appropriate for me to tell a few words about myself to give people bit of insight of the stuff I’ve done.

First of all: you should not listen to anything whatsoever I say. :) I think that people should use their own brain and I think this blog actually attracts that sort of people. I think indie game developers (or whatever people wanna call themselves) have started making games because they know how to make their own decisions, and follow their own path. I think you should question everything I say. (Or what other people say for that matter)

With that being say: I have no problem if you read the stuff I put here, and then use your own judgment to see if the stuff I say makes any sense.

Little bit of my experience
I’ve been programming stuff ranging from games to web software to betting application that could predict the results of hockey matches (that never quite didn’t work out for some reason…) for more than 15 years now. Ten of those years can be said to come alongside with project management work and can be really counted. First 5 was close to “testing waters” and not sure if much of those were really programming (well, I did create that betting software that helped my borther earn 100 bucks from one match – that counts for something, right?

I was the other founding member of Indiepath Ltd. Tim there is a really pro guy (and doing very well). We did couple of games together among with some game developer services (GameRelease.net being one of them). Doing stuff at Indiepath was cool, but Tim and I had bit different visions on what we wanted to do. For that reason he continued his stuff at Indiepath and I founded my own company late 2005.

I graduated late 2007 from university (software business, marketing): they gave me some sort of paper that says that now I have a fancy title that I can use. I liked the university period but thought that some of the stuff that was done there was bit like waste of time. Although I think there’s some flaws in the university system (what system wouldn’t have?) I think many of the courses were fine, and I think it has got me many good stuff in many areas. During the university studies I also did some part time software development.

After getting away from the university I’ve continued doing part-time/contract work and while at the moment don’t make a living in the gaming industry, my company does bring me decent five figure income through various streams of income (which is pretty sweet). I write about the stuff I learn here in this blog and since I’ve got some feedback from guys who work at gaming studios saying “you’ve got some good stuff in my blog” then I suppose somebody finds something useful from this blog. I personally think that I’m the one who is learning most – and if you guys can learn/benefit from this site too, that’s great.

I don’t claim to be an expert (on anything), but I do know little bit of what sort is useful in gaming business. I’ve done some projects that took very little time, were finished fast with little resources and even gave me very nice income (I haven’t mentioned it earlier, but Highpiled was actually a very successful gaming project in terms of “time spent versus all bucks & good stuff it brought to me”. Sometimes I manage to hit the nail so to speak).

I’ve done gaming projects where I’ve spent months and months of time, pouring time and energy into something that eventually got cancelled. So, sometimes things do go out so well – but that belongs to the learning process.

I’ve thought that “when it’s done” is bit bad approach on deadlines, since although things need to be fun gaming is also about business (if you are kind of serious about this stuff). This was my own thinking, and when Harvard Bonin (he was at EA back then, and in my opinion actually knows what he talks about) mentioned that “game companies are business units which have also financial targets”. He said that “‘when it’s done’ approach is okay if you have unlimited resources”. I kind of agree with that, and I try to follow that advice too. (I’m not suggesting that this is correct or that you should follow this advice – there might studios where this advice could very well be a bad advice actually)

I’ve exchanged words with real pros (indies and AAA producers) who are really good at what they do (you can see them commenting in this blog every now and then – and hey, maybe it’s you who I’m talking about). As far as I’m concerned, I’m like a sponge sucking all the information I can. I read a lot. I do my best to put the stuff in use. I try different things a lot. I try stop doing less stuff that doesn’t work and do more of the stuff that does work (as long as it’s fun).

Okay, that was little bit of background… and perhaps clariefies a thing or two. I presume I gotta update my about page and give bit more information about myself and not just assume that everybody who visits this site can read my mind. Anyway, hopefully this small text clarifies a bit about who I am and what I’ve done. Basically I’m one happy camper who does some gaming stuff online and is building a decent company around the crap I do.

If people like what I do and write here… that’s cool. If not, that’s cool too.

Now some blog post answers:
Now… to answer to questions in this blog post:

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?

@Sargon: Sorry, I should have added that “of course I tested this first and asked people to try the new Leadwerks evaluation kit (that has zero my code)” with the same result. People tested the Leadwerks system (and I’ve reported some of their logs at the Leadwerks forums).

Also should have added that Leadwerks requires Shader Model 3.0, it uses OpenGL and it is recommended updated to latest video card drivers.

So yes, 100% sure it’s compatibility. Sorry – this was my bad. Should have been clearer. :)

Of course, going into the 2D realm will make things a lot easier.

I’m also considering the time and money spent. But yes, that’s true. Maybe simpler too…

I would probably drop Leadwerks, but not 3D all together.

@DtD: That I won’t be doing. I did the mistake of leaping into NeoAxis and C# which I had zero experience. It meant heavy learning curve.

Leadwerks is a framework for BlitzMax (and I know Blitz3D inside out and BlitzMax is practically “same but with object oriented support” – to simplify a bit). I’m very familiar with BlitzMax too and can program stuff with good pace in BMax. I have no plans to drop Bmax, and from the 3D engines I checked some months ago Leadwerks seemed the most finished (although there’s some other DX9 options available as well – but it would again require learning new things: Leadwerks uses Blitz3D commands so this combination is super powerful for me).

I recommend people to stick what you know best (Update: Sargon has a good point in this in the comments section, check it out). BlitzMax and Leadwerks are very familiar to me so I think it would mean months and months of additional work to learn something else. I could go with BlitzMax and perhaps get stuff done more efficiently.

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.

@Ovo: Thanks for following my blog for these years and thanks for commenting. I remember your insight in various blog posts and really appreciate you taking time to comment.

Answer: zero games (well, one mini game Highpiled)

As for games published, I stopped Edoiki at some point and then have done about 9 different (public) versions of Dead Wake, but that’s about it.

As for “or else you’ll lose credibility”. I must say that I’m not doing games to gain credibility (not doing anything to gain credibility). I think it’s nice to be important, but it’s more important to be nice. I have kind of a ‘zen’ view about what other people think about it (in a good way I hope) – and I’m not suggesting that you’d be any different. (I think I got your point)

I do appreciate everybody’s comments and I’m really grateful to have you guys reading this stuff and commenting and helping me out. I hope you understand (nah, I know you think the same about yourself – and that’s good, right?) that in the end it’s me who decides what I think about myself. I do my best to help other people out, and I appreciate all the feedback – but in the end it doesn’t matter to me what other people think about me. If people like the stuff I do, that’s cool. If not, that’s cool too. It’s cool either way.

I’m not doing games to score points or gain credibility (but again I think I got the point Ovo – and I’m not suggesting you’d be doing this. I do understand that guy who talks about finishing games needs to actually do the same). I do games for players, and their opinion in the end is more important than what developers say about my games (I think same should go for every developer). I do get the point about “finish the game”, and I think it’s easy to come up with excuses not to. It’s easy to “change tech every now and then” and come up with excuses, and blame outside conditions, and it requires much more from a developer to actually finish things.

Sometimes one can get into tricky situations, and needs to ponder things. I perhaps should have been clearer about the compatibility issues and mention more details the points I’ve considered. Besides the main compatibility there has been some new big changes with the new Leadwerks version: necessary content graphics updates (it no longer supports certain texture files for example), different controller behavior (that behaves completely differently than the earlier version) to mention few – most of these I’ve tackled so far, but the compatibility is still the main thing that I worry a bit. In that yesterday’s blog post I didn’t tell much about the current situation or much details about the emails I’ve got. The yesterday’s post gave some info, but not all that goes in my mind. I think it’s good to ensure that you do the changes for the right reasons – and I think ovo’s post is a good challenger.

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.

I really agree on this. I wanna grow my business and have fun while doing it. This isn’t a hobby for me anymore. It’s grown bigger than a hobby… and I plan to keep that way…

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

That’s a good piece of advice, and I recommend that same to others too. The later the changes are done, the more expensive they become. I know you are quite right, but I also must say that I haven’t revealed the full picture (and perhaps I should have been more clear about this).

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 ;)

@pushedx: Thanks for the support. One thing I must say that people have every right to whine (at least if they provide something useful feedback). “Whining” is good since then you can find the weak spots easier. I’m using the “almost newest” engine and part of the problem is that Leadwerks also changes which impacts my own project.

Newer versions provide better compatibility and video card fixes, so it’s important to get them – but meanwhile other things change as well. For example, the new Leadwerks engine version allows only .DDS texture format, while earlier you could have also .PNG. Basically this now means that I need to manually go through each of my .PNG files and materials (thank god there’s not horribly many of them, and they are in proper places) and update them to use DDS textures. (Luckily this isn’t too big thing) There’s some figures about how well Shader Model 3.0 is supported (Valve’s hardware surveys), but right now I’m not so sure how valid those figures are after all.

Haven’t decided anything yet, and really keen to read all the comments and ponder different options.

To be continued… (There were so many good points that I wanna answer all of them, but that will happen in the upcoming posts. This one is getting way too long)

5 thoughts on “Compatibility Thoughts (And More, Part 2)

  1. @Sargon: Yeh, well I must say that I’d been using Blitz3D for ages (not OO stuff really) and then decided to take a leap forward to Bmax (similar syntax, but with more OO stuff). This has really helped me also in PHP side (and vica versa) since the languages & tools are similar – and fit my style.

    In c++ there’s way too much pointers and too geeky stuff for my taste, and c# has again compatibility issues (.NET stuff required), so yes… I do agree that it can be a good experience to try different languages…

    I don’t see how using DX would help (first of all because DX uses OpenGL and secondly… if SM 3.0 doesn’t exist then it won’t work. Leadwerks has good support for logging so I can send the log files to Leadwerks developer and help him figure out this stuff)

  2. Great. :)
    What I ment is, you should try a different language to get a different perspective, not to necesseraly use it.
    It shouldn’t take too long to learn a new language, at least the basics. If the langauge seem very alien to you, that might mean that it has a lot of new things to offer. But not necesseraly.
    My thoughts about design patterns is that you don’t need to remember them exactly the way they are.
    Moreover, some patterns have several different ways of implementation.
    My best explaination would be perhaps by pencil art.
    When you study to draw with a pencil, you start by drawing and shading all sort of shapes. Such as shapes, cubes and cones.
    They help you to learn how to draw, but they are not necesseraly what you are going to draw, eventually.
    So design patterns are like those shapes you draw for practice.
    I took one course about designing software that really opened my mind.
    I think that a good lecturer is valuable, and maybe you should look for one such course.
    Just my suggestion.

    Oh, I also have a suggestion how you might solve the compatability problem.
    Before your program starts even calling Leadwerks, use directX.
    Not for the graphics, but just to check if there is shader model 3 available.
    Do you think this can solve your problem?

  3. Sargon – I didn’t take your words as offensive. Not at all. I mainly blamed myself for not expressing the situation clearly. :)

    There were some people making assumptions about different things… so I thought I could try to save the situation and explain a bit more about who I am and what I do. (Okay, maybe the tone of voice wasn’t the best here – so maybe my zenish attitude needs more zen… ;)

    My main programming languages are blitzmax (not sure what it resembles, maybe “some sort of basic with object oriented stuff” is the closest it gets) and then web programming languages (PHP, Javascript for example). bmax is good stuff – can’t really say much more about it. Jake Birkett uses it. Ask him :)

    I know absolutely nothing about DirectX/OpenGL programming, and C++/C# go way over my head (I suppose they have some resemblance with PHP/blitzmax etc. but I see no reason to go into that direction). I’d say I don’t have such math/programming skills that I could build a DirectX engine (that’s way too geeky anyway ;) – and I never plan to get one (I try to go to the direction of ‘less engine programming, more game programming’ as much as possible :)

    Btw – During Edoiki development for example I really dug into multiplayer programming and now have pretty good understand on how to create a nice networking system with UDP – so there I was learning new, and I think it was valuable insight that I have used in different context.

    (Hmm… Why the hell am I listing all this? :D)

    Gotta add that right now I’m trying to get more information about different patterns. I think learning programming languages is fine, but learning different good patterns on how to code is very, very valuable.

    Maybe at some point it indeed could make change to learn a new programming language (or two ;)) but at the moment I think it’s better to stick with what I have, and instead of languages try learn better ways to program (better OO, better patterns etc).

    With that being said – I do appreciate your comments, and things aren’t black & white. Your comments seem sensible to me – nothing to disagree with those.

  4. Hmm… I believe you didn’t take my words as offensive juuso, but as a precaution I would like to say that I didn’t try to doubt your abilities or experience as a programmer, I wanted to help.
    Perhaps lack of experience was the wrong words to choose.
    But I can tell you something from my experience.
    About 8 years ago, I wrote a game in C(not cpp!) and direct draw.
    I worked about a year of my life on that game, I didn’t had a job, and I postponed going to university because of that.
    My game had a lot of bugs and there was no justification to demand money for it.
    I thought I could write everything in C and that there is no need for me to learn CPP, because I am good at C and could do everything at C.
    At university I have learned CPP and java and designing software.
    The courses that taught me those things were about 3 out of 40.
    Most of the other stuff was math.
    What I am trying to say is, that sometimes making the effort of learning something new, could save you a lot of time and make you do things a lot better.
    Its not that all the experience you had before in programming goes to the trash, its just that sometimes when you get a new perspective or a new tool in programming, you can do a lot better than you did before. And it doesn’t take a lot of time for you to become that much better with the new tool.
    As much as I appreaciate books, I think taking a course with the right lecturer on the right subject, can make wonders. If you already have the experience in programming. Otherwise, it won’t feel right to you.

    I believe you are using some sort of basic? I am not even sure how it is called.
    I believe trying to learn a new language, and in addition taking a GOOD course about desiging software, can enlighten you.

    I do not pretend to know if you are a good programmer or not, or what experience you got. I just wanted to give you an advice I have learned on myself.

  5. I don’t understand why some people think they can show up on somebody’s blog and chide him. You are not a professional game developer, we are not investors, you don’t owe anything to us. We are just bystanders, watching you doing games or trying (which is cool), and we are hopefully learning something in the process.

    I think the answers were a little harsh because the question was a little odd. Engine to use and 2d vs 3d are decisions that should be made at the very beginning of the developing process. While I understand the points you made and your reasons for considering changing, the question sounded like going back to zero. But at the end of the day, it is a valid question since you are the boss and you don’t owe us anything.

    The only thing I would recommend (as a person who has your blog in his rss reader) is that you focused your posts on game producing. I thought this last two posts (and this one too) were much more interesting than the ones related to unauthorized reproduction of intellectual property.