Featured Post

Cosmetic Character Customisation

Currently in production (as seen in my last blog post) is an “underpants man” version of the character sprites. What does this mean, besides confirmation that the survivors in the apocalypse do indeed still wear underpants..? Well, the screen posted before was the first pass of the anims,...

Read More

Mesh Enshrinkulation

Posted by CaptainBinky | Posted in Project Zomboid | Posted on 26-11-2012


We’ve had a few people contact us for specifics on the process we’re using to translate the 3D source models for Zomboid into 2D sprites. So I thought it’d be a good thing to go into here.


The Goal

The result we’re striving for is all the advantages of being 3D (ease of creating animations in all directions, simplicity in terms of adding new costumes, hair, accessories, props, etc) without the look straying too far from our original hand-drawn sprite look.


The Process

The models are built and animated in 3D, and were we just to render the frames directly, they’d look something like this:

…which is not particularly great. Even shrunk down to the size it would appear in-game, it would obviously be a 3D model and stick out like a sore-thumb. So what we have, then, is a  two-stage process.

Firstly, we render the model to a render target that’s twice the size that it would need to be in-game. We apply a shader which applies some basic lighting (using hard edge, cartoon-style lighting) and uses Point sampling to preserve the crispness of the source texture.

We then render the contents of our double-sized render target to a game-resolution quad and apply a second shader process. During this stage, we allow anti-aliasing (we’re basically doing super-sampling here, since our source is twice the resolution of the destination) and then in the shader we clean up the image data.

The cleanup involves several layers of quantizing.

First, we ‘snap’ the colour value to the closest available colour in the source palette (the palette is passed in as a parameter to the shader, and is calculated once per model processed).

Next, we quantize the intensity (the length of the colour vector) to one of 5 possible values (0.0, 0.25, 0.5, 0.75, 1.0)

Then we quantize the pixel alpha to one of 3 possible values (0.0, 0.5, 1.0)

Finally, the colour is re-constituted from those parts, and spat out of the shader.

It’s a little difficult to show a fair comparison between the first version of this system and the current system, because a few things have changed with the source (an obvious example being that hair is now a separate overlay rather than being drawn onto the texture), but this should give a reasonable idea:

While there’s definitely a ‘personal preference’ aspect to which you prefer (and the new system is still work-in-progress at this stage), the new sprites are considerably cleaner, and much more closely match the original sprites.

There’s still work to be done in terms of finding that ideal sweet-spot for the lighting which will help add definition needed particularly on the side-on frame.

But one of the tremendous advantages of the new system is the speed that we’re able to convert the 3D data to sprites. Almost all the work of the process is now done on the graphics card, which means you can spit out all the frames for all the animations in all directions for one model in a matter of seconds. Beforehand, the process would be something we would leave running overnight.

Why I’m not a fan of F2P

Posted by CaptainBinky | Posted in Stuff | Posted on 15-11-2012


One of the main reasons I was made redundant from my position at the studio I worked at prior to going indie was that I was (ridiculous as this sounds) too interested in the quality of our games. It caused arguments, stress, it made me a problem. I got so angry – I just wanted to make games which were good, that we could be proud of. You’d think this would be in the best interests of everyone, the studio included, since if you make consistently bad or, at best, mediocre games you’re on a downwards spiral towards the company exploding. Which is what happened.

This is the problem with financially driven entertainment. It’s easy to lose sight of the point – that games, primarily, are supposed to be fun – and instead focus on hitting those milestones so that you get your completion bonus. Balls to whether the game is good, have you technically fulfilled all the requirements of this month’s milestone? Yes? Move on.

Of course, all those development costs need paying so while it’s easy as an employee to stamp your feet and scream that the game is utterly awful, unless those milestone deliveries are met, that bonus which the studio relies on will disappear and suddenly people are losing jobs. It’s a vicious circle and a spiralling problem as development costs rise and team sizes bloat.

Everybody knows this. That, generally, games are just a business and there to make the developers and publishers money and, primarily, not there for the well-being of the gamers. But for the most-part it’s easy to separate yourself from this. You run home, clutching your copy of whatever it is you’ve been looking forward to, and you immerse yourself in it. All cynicism regarding why this game exists in the first place or how you have been moulded into thinking you need it, evaporates. From this point on it’s all about the game, and you.

Not so with Free-to-Play which reminds you at every opportunity, with a sledgehammer, that this is all about money.

Scenario A – game costs $10

You buy the game, it’s fun. You do well, but you get to level 10 and you get stuck. God this is hard. You consult guides, you ask friends, you try anything to get an advantage. You succeed, you feel great! Man, I’m good!

Scenario B – game is free.

You grab the game. Hey this free game is fun. You do well, but get to level 10 and you get stuck. Why is this so hard? What’s this, there’s an item here for $10 which will make this considerably easier. I can buy that, but where’s the satisfaction? I’ve bought my way to victory.

In both scenarios, you spend the same amount of money. But the trouble with F2P is that it makes you feel like the entire structure of the game, all design decisions, all difficulty spikes, everything is there to force you to buy that item. Is that really the best way to design an enjoyable experience? Frustrate the player to the point they give you cash (edit: or, as is often the case, bore them into giving you cash. Save yourself this arbitrary hassle! Only $5.99!)?

Or is it better to get that financial exchange out of the way, right at the start? It’s paid for, forget about it. Now the game can focus on entertaining you with no ulterior motives in play. If the game is hard, it’s there to challenge you to make you feel good about beating it, not sell you something.

Which model is ultimately better for developers and publishers is another issue entirely. But a gameplay experience should ALWAYS and EXCLUSIVELY be about the gamer.


(Other opinions are available)