Fill out your e-mail address and click submit to join the positech games newsletter!

A tiny little image

Filed under: GAME FOUR cliffski 6:23 pm July 1, 2011

Amazon, Google checkout, and the letter T.

Filed under: business,GAME FOUR cliffski 10:17 am June 23, 2011

Something great has happened in the world of online payment providers. OK, it’s not up there with the discovery of fire, but BMTMicro, who handle the majority of my direct sales, have added amazon payments and google checkout to the payment options at last. I’m not too excited by google checkout (who here actually has an account?) but amazon is a different story.

Here in the UK, at least, amazon is VERY popular (although their tax-dodging behavior irritates me no-end) so a LOT of people already have an amazon account. What this means is that:

a) People who are lazy, and can’t be bothered to find their credit/debit card can buy my games just by remembering their amazon password. yay for frictionless selling!

b) People who are terrified of buying online can buy my games without ever trusting any payment data at all to a third party (even an established, safe one like BMTMicro).

I see both of these developments as steps along the road to easier sales, and encouraging people to buy direct now and then. Hurrah. AFAIK only BMT Micro support this option right now.

In other news…. I am having name-change thoughts AGAIN. Originally game 4 was called LB, then I changed it to OTT, then GTB. Now I might change it from GTB to GTB, where the letter T means something else. It means registering yet another domain, and getting a logo re-done, but I suspect it might be worth it. Oh the nail-biting angst….

Not long until I actually show some footage / screens/ etc

Optimising my ‘dumb’ textures

Filed under: GAME FOUR,programming cliffski 5:34 pm June 13, 2011

I have this class in my code called ‘smart texture’. I’ve had it for several games now. It basically lets me tell a sprite to use “gun.dds”, and it transparently converts that to the LPDIRECT3DTEXTURE9  and doesn’t mention it. It keeps ‘gun.dds’ in memory, and if I ever lose the screen (alt+tab), and need to rebuild stuff, it will replace the invalid surface pointer the next time it gets drawn with a fresh copy.

MAGIC.

Trouble is, that means keeping a list of every smart texture, so that I don’t miss any when recovering from alt+tab. That’s easy, but I ended up using texturedsprites (with a built-in smart texture) everywhere, and thus the list, for a full battle could be 20,000 textures long.

F**k.

So here I am, effectively keeping a record of me trying to fix this…

It’s 5.35PM Sunday. The wonders of aqtime show me that when I ditch the current level and load in a new one, I am killing off about 8,000 smart textures. Every one is going through it’s destructor and removing itself from the smart textured list. This sucks. I need this to be faster. First instinct is to speed up the destructor, but obviously that’s treating the symptom, not the cause. The real problem is 8,000 smart textures. That isn’t so smart, when 2,000 of them are probably pointing to the exact SAME surface in directx… I need to rethink this system, and NOT break any other code…

I *do* have a system called GUI_TextureCache which does some ‘fixed’ storing of textures I use all the time, like UI stuff, buttons etc. This is obviously a similar task to what I want to do here, in that I need a dynamic dumping ground for commonly used textures pointers. I’m concluding that the cleanest way to handle a fix would be within my SmartTexture itself. it can do some clever caching, and then nobody will ever know any code changed!

Realisation that this means I still keep all these smart textures knocking about, with their ‘gun.dds’ strings. That offends me, as a programmer, but tbh, even ‘longcomplextexturefilename.dds’ is only 30 characters, so with 2,000 units I’m wasting 60k here. Big deal.

Right, so the plan is when I call SmartTexture::SetTexture(“gun.dds”) it may, or may not add itself to a list of textures that would need rebuilding, based on if its already in the list.

Problem: I can’t do that, because it means checking the whole list every time I call SetTexture(). That might even be *slower*. However, my current ‘SetTexture’ goes through a list to grab the pointer, how slow is that? It looks like currently its about half as much time as all those smarttexture destructors, so it might be a win. Plus my SetTexture() stuff uses a MRU caching system which could make ti super fast when loading in 100 identical units…

5.50PM Actually realising I’ll need a totally new class to handle this. it needs to be done a different way, not with existing smart textures. Balls. Surely it can be done? Hold on.. Surely its just a matter of indirection. The purpose of a smart texture is to hold a surface pointer it can rebuild if needed, but it doesn’t have to hold a direct link. It could actually hold an indirect link.  One more piece of pointer indirection is trivial. I just add a new CLoadedTexture class that handles rebuilds, and the smarttextures can point at those, meaning no need to keep a list of them at all, as their pointers never go invalid or need rebuilding.

6.25PM everything coded except the actual rebuild() calls for alt+tab. I’ll comment the errors out for a quick test… GAH, it crashes immediately. fixed easily enoguh, and the code RUNS! hurrah, but it doesn’t seem AMAZINGLY faster,. Quick! to aqtime! what the hell… it’s slower?…

6.35OM. Hah! looking at it backwards, it’s about 75% faster. how much time does that knock off loading in a new level now? 5.28 seconds down to 2.1 seconds. That’s pretty good. I’ll code in the rebuilding stuff and give it a quick test…

6.50PM Alt+tab doesnt work, I get just a black window, but that may be something else. I’ve checked in my current code, and am investigating alt+tab issues now. It looks like the restore code hasn’t worked on this new game at all yet. I consider my (dumb) smart texture code fixed :D

 

AQTime

Filed under: GAME FOUR,programming cliffski 12:47 pm June 10, 2011

Yesterady I bought AQTime. It’s $600. That ain’t cheap. It’s profiling software, so basically its something that helps me write faster code. I’ve used it before, and it’s extremely good. I hope I can make my new game faster and smaller-memory-footprint than GSB by using it.

Already I’ve found out that some code that I thought was fast (searchlights) is in fact scarily slow. What’s more, I know the exact lines of code that cause the problem and it’s likely easily fixed. yay!

Plus fog of war code is done and dusted. Double yay.

I hope to have some interesting screenshots to show off in a few weeks. I’ve done the flashy graphics stuff before the gameplay balancing and level design, which means early screenshots of GTB will look nicer than the frankly awful early GSB ones :D

Also… there was a fox in the field opposite the house yesterday. It seemed to be just prowling about, midday, in the sun. Who needs springwatch when you have a fox? :D

Game Clue #7 plus decision making

Filed under: business,GAME FOUR cliffski 3:33 pm May 20, 2011

I was shopping for cakes today and bought 2 cakes. There were 2 of us, and we wanted one each, and the guy says “You can get a third cake for the price of 2, which cake do you want?” and although that’s a good deal, it kind of bugged me, and (in my obsessive analytical way) I realised it bugged me because I had lost control of my decision making right then. I had strode into the cake shop, confident of my wants, my decisions, my choices and my needs, and suddenly my whole world view (I want 2 cakes) was reversed at someone else’s decision.I thought I knew what I wanted, and someone else had taken over and was making me operate on their terms (they want to sell more cakes).

I mention it because it reminded me of ‘the social network’ which I watched last night. The harvard guy talks about how harvard encourages students to create their own job, rather than just take a job. I thought this was an incredibly good attitude and should be drilled into ALL students, not just ones at elitist super-expensive universities.

You almost certainly don’t have the job you want. You might *like* your job, but that’s different. You didn’t *really* choose your job. Someone else had an idea, and wanted to make/do/build something. They then worked out they needed some people do do parts X and Y (probably the annoying, boring bits) and they posted a job ad, or asked a headhunter for someone to do it. They then wrote a contract, on their terms, and offered it to you. They will tell you what to do, and keep you doing it as long as it is useful to them.

Employment is a very one-sided situation for most people. Imagine showing up at a job interview with your own contract and asking the employer to sign it. Laughable isn’t it?

Working for yourself is not just different in minor job security and tax and quality-of-life ways. It is a fundamental re-arrangement of the terms upon which you carry out a good third of your existence. Even if you are 80% sure you prefer employment to self employment, I strongly recommend trying it before you hit 40ish, and you become too risk averse. I don’t know many people who tried it and went back to a regular job.

Here is another clue alluding to my next game. The last three were a bit hard. I would have thought trench art and stormtrooper helmets were pretty easy to spot, but I’m impressed how rapidly someone can spot a tiger tank gun barrel, especially when it’s a photo of one I took myself :D . Enjoy:

Clue #7

 

We need an open, simpleapp store built into windows

Filed under: business,GAME FOUR cliffski 10:33 am May 19, 2011

Like most people selling software, I occasionally get people who say the download link is broken (it isn’t) or the file didn’t download properly (it did) or that it’s the wrong version for their O/S (maybe, but they bought the wrong thing in that case) or they lost the file they downloaded etc etc…

Obviously this sort of stuff is fixed by ‘client’ app stores such as impulse or steam. the problem is, those stores are run by third parties which

1) Take a cut of the sales

2) Retain all the customer details and never share them with you

3) Don’t accept all products for sale, so act as gatekeepers.

Ideally, windows would have a built-in bare-bones app-store. Not a microsoft store where you pay microsoft, but some system whereby you could pay anyone, and they could trivially build a back end system to provide you with the file. Maybe the app-store simply acts as a front end web browser client to your existing BMTMicro / paypal / plimus store.

Given all the shovelware crap that windows ships with anyway (photo editing, movie making, a calculator, a paint program, games…) it seems crazy that something people do all the time (buy stuff online) has virtually zero API support built into the O/S.

Time for another ‘next-game clue’:

clue#6

Grinding and unhappiness and clue #5

Filed under: game design,GAME FOUR cliffski 9:14 am May 15, 2011

I’ve been playing some World Of tanks. I’ve played before in the beta, now I’ve started for real. I haven’t spent any money on it yet. For those unaware, WOT is a free + microtransactions game. You earn gold and experience in the game to buy and research better tanks and crew, or you can just go and buy them with real money.

I don’t play normal MMO games any more because of my dislike of the tedium of ‘grinding’. To me, grinding is a failure of design. It’s an admission that the actual game isn’t very fun, so you need to stretch it out as slowly as possible so people pay a lot in subscription fees to you before you run out of content. It’s cynical. Imagine any other medium of ‘entertainment’ introducing a grind. Imagine a crime novel where you had to read through 12 almost identical chapters of the detective interviewing a witness before you could ‘level up’ and get rewarded by a chapter with a new clue. It’s just silly. We don’t do it in TV, Movies, or Plays, but in games, making the player do a tedious job to earn the next bit of entertainment is considered fine.

I found when playing WOT last night that I wasn’t having any fun at all. I wanted a better tank than the tractor with a pistol that you start with, and It seemed I got points for just being ‘in’ a battle and spotting an enemy tank before I died, so I played 10 quick battles where I just hurtled towards the enemy and died, to get the points. No fun for me, or them. No entertainment was had. And yet, at the same time, people whizz past me in better tanks, not because they are better at the game, but because they have more free time, or more money. I could sense that as a player, this subtly makes me unhappy, frustrated and jealous. This is not fun.

In Gratuitous Space Battles you sometimes get a player-designed challenge with faster ships, but that speed has come at a tradeoff. The player had the same points and the same components as you, they just re-arranged them differently using their own judgement and skill. That is what games should be about. A level playing field, and instant fun with no grind. I sadly accept I’m in the minority on this :(

Anyway, time for another clue. Nobody had a clue what clue#4 was did you? I’m dissapointed in you :D It’s  a very very specific form of art, from a very specific point in history.

 

Clue #5

 

Unit Variants and next game clue#4

Filed under: game design,GAME FOUR cliffski 11:04 am May 13, 2011

One of the things that GSB lacked, was visual unit customisation. You could customise the hell out of your ships, and that worked great, and of course people loved it, but aside from the visual deployment and choice of hulls, one GSB challenge pretty much looked superficially like another. In terms of holy grail, a system like that used to build ships in Galactic Civilisations 2, combined with the GSB engine would have pretty much kicked ass.

Sadly, that is not what I’m working on.

However, I am at pains, in the mystery new game, to ensure that people get a chance to customise their forces (yes there are forces…) so that they look at least slightly different and personal. I wanted, in my minds eye an incredibly modular system of putting together sprites to build things, but although it sounds great, it’s insanely difficult in practice, without severely crimping the art style. This is one of those phenomena that you only really encounter when you MAKE a game, rather than being a frustrated designer. No game design survives contact with the programmers, and the artists.

The system I have ended up with, and I really need to move on, so it’s the final system now… Is one where units have a basic design, and then a large number of variants. In GSB terms, it would be like picking an imperial centurion cruiser, but then picking variant_d, which has a different look, in terms of weapon attachment points or engines. New graphics cost money,  but no more programmer design or effort, so once the system is in place that makes ‘imperial centurion cruiser’ work, then adding  few new variants based on new engine styles is easy, and has no gameplay balance impact at all.

Hopefully this will mean the game has a lot of unit combinations visually, if sadly not complete freedom. There will also be an opportunity to pick unit colors in pretty fine and cool detail.

Ready for another clue? here it is…

clue #4

The next positech game: Clue #3

Filed under: GAME FOUR cliffski 9:36 am May 11, 2011

Age of empires online could be fun. Anyone played it yet? I’m looking for a new online game to play as co-op with a buddy. He isn’t a hardcore gamer or very tech savvy,  but he is obsessed with Company of Heroes. I’m looking to get him into another game, that isn’t too different. We tried men of war, but that didn’t really work out. Ideally something thats built around co-op play, and would benefit from voice chat. Any suggestions? Is world of tanks a good idea? Also, everyone feel free to add cliffski as a friend on battlefield Bad Company 2. I’m a helpful team player :D I tend to play evenings in UK time (GMT).

I guess it’s time for another clue about my next game, following on from the last two…

Clue #3

..

 

The next positech game: Clue #2

Filed under: GAME FOUR cliffski 3:40 pm May 9, 2011

Today it’s back to slogging through my huge programming todo list. And time no doubt for another clue about the game. Did you enjoy clue #1: http://positech.co.uk/cliffsblog/?p=1173

Here is clue #2:

 

Next Page »