Game Design, Programming and running a one-man games business…

Positechs website (explicit numbers inside!)

Positech has been around a long time. I am OLD. I remember before VHS. I remember before CD’s. i was there when Sauron was defeated and men were shown to be weak. As a result, I’ve had a website for a long time, and probably due to mere inertia, it’s got a lot of SEO from inbound links, and a lot of (my) games on it, and therefore, it acts as quite a good funnel for traffic and sales. I’ve also advertised a lot over the years and pointed at it, so that has boosted traffic too.

Lets look at some numbers.

In the last year, my direct sales have been $170,000. That actually surprises me. I thought it was less than that. Not bad for an indie website in these days of ‘everybody buys on steam’. If I look at web traffic I get these stats over the last 365 days:

2,700,000 unique visitors according to awstats

23,000,000 pages according to awstats.

site1

That seems pretty good to me. Maybe some of that is my games checking for updates? If I check google analytics, the site got 1.8 million visits. 417k were from organic search. That’s a decent figure. I’d love to know how it compares with other indies sites, and smaller portal/bundle sites. I should also state these figures ignore redshirts site and the gratuitous tank battles site, both of which have their own base domains.

What this has got me thinking is that in effect, I own a mini-portal. I’d wager indies get a fair few emails along the lines of ‘We are an exciting new game store and we would like to grab 30% of your revenue despite having virtually no traffic, if you agree to sell through us!’. I know I do, and I wonder if those sites have less traffic than me. I have signed deals in the past that have earned under $10k a year in sales through a channel, even under $5k. 5% of my direct sales is more than that. You can probably see where I’m going with this?

I have zero time and mental bandwidth, but I do muse over the idea of saying to indies who refuse to sell direct because ‘it’s too much hassle’ something along the lines of ‘I’ll do it for you, and take 15%’. This is just an idle thought, and I’d have to be very impressed with a game I’d add to my own site. But it is worth a thought.

I have been slowly investing in my site over the year. Check out the forums. They now support facebook, google and twitter as logins, and the individual forums have custom graphics. ooh!

 

Thread Concurrency bug. Any expert advice?

I’m new to multithreading, and the visual studio concurrency visualiser. I have lovely multithreading code working. basically my main thread throws the Threadmanager a bunch of tasks. The threadmanager has a bunch of threads which all spin doing nothing until told to do a task. Once they finished their task, they set an IDLE flag, and the main threads WaitForAllTasks function then assigns them a new one. It works just fine…. but I notice an anomaly.

See below (Click to enlarge enormously)

bug

The highlighted connection shows thread 4828 sat on its fat ass waiting for the main thread, when it clearly idle and ready to do stuff. The things is, the main thread function is just this:

    bool bfinished = false;
    while(!bfinished)
    {
        bfinished = true;
        for(int t = 0; t < MAX_THREADS; t++)
        {
            if(CurrentTasks[t] == IDLE_TASK)
            {
                //maybe get a queued item
                if(!QueuedTasks.empty())
                {
                    THREAD_TASK next_task = QueuedTasks.front();
                    QueuedTasks.pop_front();
                    CurrentTasks[t] = next_task;
                    SetEvent(StartEvent[t]);
                }
            }
            else
            {
                bfinished = false;
            }
        }
    }

Which basically does sod all. How can this take any time? Setting event sets an event which the worker threads function is calling WaitForSingleObject() on. Again…how can this take any time? Is there some polling delay in WaitForSingleObject? Is this the best I can hope for? It’s the same case for all those delays, it’s just this one is the largest. I’m new to this. Any ideas? :D

 

 

What a directx developer does in a steambox world

Elaborating on my last post. Valve have made it pretty clear they are heavily betting on Linux. Microsoft, you missed the ball. You didn’t get the hint. What action did you take to get valve back? Apparently not enough. Regardless… Linux will be big for gaming. It’s 2% of my sales right now. This is going to grow and grow fast.
This is no big deal to me, apart from the fact that Linux also means OpenGL. I currently have my own engine which uses DirectX. What should I do? Here are my options…

steambox1) Do nothing.
Just stick with it. 2%? Even if it goes up to 20% so what? My current system is me doing the directx version, then paying a contractor to handle the OSX & Linux ports by converting it all to OpenGL. This works fine so far. This option is easy, but it seems like I just go further down a dead end. I don’t want to be the last guy using DirectX.

2) Prepare my engine to be more cross-platform friendly
I could re-engineer my code so that it’s more modular and easier (re: cheaper, faster) to port to OSX/Linux. This way I still keep directx, but make things simpler for a future transition. This is appealing because it’s a hedge towards either direction, and frankly engines should be built like this anyway.

3) Learn OpenGL.
This is the hardest because it involves serious work. I know everyone will say ‘it’s really similar’, but being ‘familiar’ with OpenGL isn’t what I want. Being VERY sure I know the BEST way to use OpenGL for my purposes is what I need. I love optimizing. I love pushing to get as rich a 2D experience as the hardware allows. I don’t want to trade a really fast DirectX engine for a slow OpenGL one. This involves the most work, to do it right. There is huge opportunity cost for that time as a programmer. This is also by far the most future-proof.

4) Hire a full time Linux/OpenGL coder.
Not a sensible option for me. I couldn’t keep them busy, I still don’t learn anything, and this is effectively 1) but more expensive and with more admin. All it does is guarantee me availability, but at too high a price.

5) Switch to middleware.
An option for 95% of devs. I hate middleware in general, but I also do something very unusual. The engine for GSB 2 works in a very specific way. At it’s core, it is a heavily optimised, shader & post-processing based, lots of render-target flipping 2d engine that assumes a huge amount of 2D objects. I’m not aware of any engines designed specifically to do this except mine. Plus there are costs in terms of learning that new engine,  which represents investment in something I neither own or control. I don’t like this.

I’m thinking about this a lot. I’m currently favoring 2), Possibly 3). I have discounted 4) and 5). Doing 1) seems lazy. This is something I need to get right at some point this year.
Feel free to add your thoughts :D

Steam Dev Days afterthoughts

(I’ve never done this before, but I’m typing this on the plane, so I have time for some detailed thoughts. Long post ahead!)
I’m returning from the first steam dev days conference (they will surely become regular). By now you will have heard all about attendees getting steam boxes & controllers, and the major announcements. I bet journalists have that stuff covered. I’m going to write up more strategic thoughts, combined with some thoughts on business in general that have weighed on my mind.

Linux.
This is the big takeaway for me. I’m not a big Linux fan. Nothing ‘political’, I’m just so used to windows. I’ve used windows constantly since windows 3.11. I don’t know anything about Linux, and I now have to learn. Valve have made this clear. Not ‘Linux is growing’ more ‘learn Linux now… today…’. Personally, I’m not too bothered by this, especially now I have a steam box. What this really means for me is OpenGL. My hand-coded directx engine is now looking like a bit of a dead end. This is unfortunate…

Steam Boxes.
Actually not a big deal for me, this shores up the PC gaming market share against console erosion, which is great. Will PC’s migrate into the living room? maybe… but not for text-heavy strategy games that I make. I think the impact for me may me minor. Ditto the steam controller, although this might be worth using for GSB 2.

Virtual Reality.
I didn’t attend a demo. I should have, stupidly assuming that being stereo-blind would rule me out, but fellow stereo-blind devs assure me its still amazing. I don’t make first person games, I make totally abstract ones, so again, maybe not a big impact for me.

Micro-transactions/economies/user-generated content.
Fascinating stuff, brilliantly presented, and a bit of an eye opener for me in how to do this stuff in a *nice* way. I am hugely motivated about doing work in this area in future. These were the most interesting talks for me, although I hear that the marketing panel was also amazing :D

Deeper Thoughts.
This is kinda separate. I need to add a disclaimer here so I can put these thoughts into context… Positech Games in recent years has become very very successful. I used to publish sales figures back in the day, but I don’t do that now. Things have ramped up big time. I am still basically a one man company, but with an increasing army of contractors and also automated systems and methods to boost my efficiency. As a result, things have gone kind of huge. Not notch level, but damn good.
This isn’t meant to be bragging, this is to put this next section into context.

A lot of things are happening in games. A lot of people are getting into the industry. The industry is growing, but also changing. There is a lot at stake. A well-placed solo indie developer can make or lose a million dollars or more based on a good or bad call. This is high stakes poker, or in some cases roulette. We are playing with live ammunition now. I love metaphors.
I have decisions to make about company growth, platforms, investment, languages, genres. These decisions will make or lose those millions of dollars. The stress and pressure related to those decisions is massive.

Intuitively, I know that I’m fine. Positech has a great financial base. I’m not about to bet my house on a game release, or lose everything if I get things wrong. I have no employees I might have to fire. In many ways I’m lucky, and can relax… but frankly, I like to win. That doesn’t mean at the expense of anyone, I don’t need others to lose, if that makes sense? The most adrenaline-packed and rewarding strategy game I play is called ‘running positech games’. I want to make the right calls and win, it’s burned into me at some primeval level. As a result, I take these decisions incredibly seriously. This leads to intense pressure and stress, that is outwardly completely invisible. I take from this two things:

1) Company executives earn their money. It’s very easy to look at people who run a bank or huge company, in their chauffeured car and executive hotel suite and million+ dollar salary and think that life’s easy for them and anyone can do it. No. There is more to an easy life than having great food and a nice car. Those big salaries come with epic responsibilities and incredible pressure and stress. I cannot imagine how much worse it is at the billion-dollar 10,000 employee level. Get it wrong there and you can kill of thousands of jobs. Intense Pressure. I don’t begrudge anyone in that situation their big salary and aston-martin. I’m surprised there are not more CEO suicides, to be blunt.

2) This can’t be healthy. I’ve taken the opportunity in the last year to have my heart and blood pressure checked. Both were absolutely fine. I could maybe lose a little bit of weight, but generally I’m healthy. This is great, and also very surprising to me. It’s something I try to keep an eye on. I am acutely aware of the fact that high stress and pressure is bad, and I don’t want to be the guy with the highest sales figures in the morgue. So far I seem to be balancing it well, but it isn’t easy. I slept for just 3 hours last night, purely due to stress and pressure. Rare, but still bad. I guess I’m trying to max out all my Kudos 2 stats at once, I want to be healthy, happy and successful. Not easy :D

So there you go, my first post-steam conference thoughts. Maybe a bit scattergun, but I thought I’d jot them down while they are fresh. I have a lot more to say about Linux, but I’ll save that for the next post…

TL ;DR: Linux is coming, Positech is selling lots, This is stressful and creates pressure, but I’m somehow still healthy!

Off to the land of the free!

I’m on a panel about game marketing at steam dev days:

http://www.steamdevdays.com/

steam

So I’m mixing it in with what you slackers call a ‘holiday’. Thus, I’m about to leave this stormy wet windy weather behind me to enjoy the sun-drenched countryside around seattle. See you all soonish!