Mar 09 2012

SCAVENGER

Wow – I haven’t had any spam on this blog over the past few days. Recently I’ve been fending off a flood of the stuff, especially trackback spam… but now I’ve got comments locked down on everything except the latest posts, comments can’t contain URLs and I’ve just disabled trackbacks entirely. Maybe I’ve got it licked?

I also lost some time this week tracking down and closing an exploit due to an outdated WordPress theme, if you can believe it, after a hacker tried to have a poke around (look up TimThumb; even if you’re not using a theme that contains it, having it installed leaves your server wide open). Basically, maintaining a web presence can be a pain in the arse 😀

Anyway! DEVELOPMENT NEWS.

Shops in roguelikes have always bugged me a bit. Diablo’s towns make a sort of sense, as does the town halfway through Nethack’s mines, but they’re very specific answers to this problem of where you can trade stuff. In general roguelikes just have random shops in the middle of nowhere, staffed by a single shopkeeper, with dozens of monsters banging around outside. Dungeons of Dredmor does exactly this. It’s always felt a bit weird.

So CQ2’s got scavengers.

Scavengers aren’t exactly shopkeepers. They’re foragers, sneaking around dungeons and battlefields, staying out of trouble (with invisibility) and picking up anything valuable they find. And, what do you know – they’ll sell it to you, if you’ve got the coin.

I haven’t got the shop in yet, but it’ll be a basic extension of the item comparison screen. Scavengers will only have two or three items worth buying, which simplifies things. Here’s a mockup:

Scavengers or wandering merchants wouldn’t work in everything, but it feels like a plausible way of letting you buy stuff in the middle of apocalyptic hellholes.

Oh – and it feels nice and bleak to have NPCs in the game make a living by going out there and nicking the boots off dead people.

Mar 02 2012

AWARENESS

I’ve been working on tile system features, how loot is managed and fixing a few bugs. It’s not very photogenic stuff! Fortunately, continuing the theme of making the game’s inner workings more visible, I’ve just added a list of active buffs/debuffs.

So now when something’s affecting you, you know it’s there and you know how long it’ll last. This’ll be especially useful when I get the terrain buffs working. (Moving through hedges will be slow but stealthy! That sort of thing.)

I’m currently going over two things in my head: shops and AI placement. Shop-wise, I think I’ll have vendors scattered through the game world that have one to three items for sale at fairly high prices; gold will carry over between playthroughs, up to a limit; and if you quit a level before all the monsters are dead, you’ll get extra gold as a bonus to compensate for less XP.

As far as AI placement goes, I’m contemplating putting most of the monsters in game into squads. Squads will tend to hang around each other, and when you alert one of them the rest will become alerted as well. It’s a way to make these open town, cave and forest areas a little more interesting, to stop you from easily pulling one enemy at a time as you clear through the level. Alerted AIs will also be able to open doors sometimes, too, so perhaps when you sneak up on someone and surprise them another AI will bust through a door behind you…

Well, back to it. The to-do list’s getting longer as quickly as it’s getting shorter; I need to fix that 😀

Feb 27 2012

PROPS

So I’m experimenting with scattering a handful of placeholder props and things around in sensible places, to make village huts and stuff feel a bit more lived in.

In towns, chests and enemies (and other NPCs) are going to try and spawn in houses rather than out in the streets and fields.

One major aspect I’m pushing with CQ2 is bringing a sense of geography and place into the mix. It’s still a way off that mark, and my temporary graphics shouldn’t be around for long… but the systems are getting there to support it, and that’s the main thing. 😀

Feb 22 2012

BOUNDARIES

Cardinal Quest’s tilemaps were pretty straightforward. Each 16×16 tile was a different image: wall, floor, door, stairs. The boundaries between tile types didn’t affect the graphics at all.

If we apply this approach to forests, we’d end up with Forest Tiles and Not Forest Tiles. Something like this (though obviously with better art):

That’d work, sure. But we can do better.

The approach I’ve decided to take is to stick with 16×16 tiles generally, but allow applying a variation to just a quarter of a tile – meaning the system can use 8×8 tiles where it counts.

Continue reading »

Feb 20 2012

LEVEL GENERATION

I’ve been working on a few new kinds of level for CQ2. The first is a forest to traipse through and kill things in. Forests are messy, confusing places! The main features in these forests are trees (that get in the way) and bushes (which you can’t see through). Your sight lines are pretty limited, except when you find the odd clearing, but there are plenty of opportunities for leaping out of the bushes and stabbing people.

Please excuse the placeholder graphics. It’s essentially grey boxing: I’m roughing the levels out with dumb coloured blocks to see what works and what doesn’t, and the pretty art comes later when we’ve settled on level features worth keeping. So for now, trees are solid orange blocks; bushes are mottled grey and orange; and the forest floor is grey.

You’ll just have to use your imagination a bit. Trust me, this is more forest-like than using the old tileset and having bricks everywhere!

Continue reading »

Feb 17 2012

INTERNATIONAL

Fixing text layout issues is extra fun when you can’t actually read what you’re fixing!

Almost every single displayed string in Cardinal Quest is loaded from a text file. I wrote a tool to embed these text files in the source code, so the whole thing’s entirely self-contained as a .swf or .exe, but the game can also load the text files on the fly so we can modify strings and just relaunch the game to try new stuff faster.

All of this supports Unicode. Doing a translation has pretty much just involved sending off these text files to be translated.

The only real problems were fonts and layout. Cardinal Quest uses two different fonts throughout. The Japanese version, now, that uses a single font almost exclusively. It’s not like you can knock up a useful Japanese font easily or cheaply – a usable font would need thousands of glyphs! As a result, there aren’t nearly as many fonts around to pick from.

On the layout side, most of the text is only loosely framed by artwork around it. The font sizes of some stuff needed tweaking, but only really a handful of things in the UI. If you’re ever designing something which you think you’ll have translated later, just remember that tolerating a little whitespace around your text goes a long way. 🙂

Feb 13 2012

CORPSE SNAKE

On Saturday evening I was browsing the TIGSource forums and came across this thread about making a game of Snake in ActionScript and sharing the source. It got me thinking, and I ended up spending the weekend making a Snake variant called Corpse Snake where you grow as normal and then score points by mutilating yourself. Go play it!

One thing I’ve noticed a lot of Snake clones do is that they make the play field really large and empty, so there’s very little pressure on the player to respond. I prefer to keep the pressure on – so Corpse Snake runs on a pretty tight 18×13 play field, it starts off with a few squares filled in around the edges, it has five apples to go for at any given time… and the play field gets smaller as you go. I hate to bang on about this, but it’s one of those situations where the size of the screen is really important.

I finally started playing with Pixel Bender on Sunday, which is basically a way of using GPU shaders in Flash. You can now look forward to every single game I make having shaders in. ALL OF THEM. 😀 I’ve been meaning to get into shader programming for a while: it’s basically how to make pretty things happen just with programming, which suits me fine. Layering Pixel Bender effects over the top of 2D games isn’t quite as fun as shader programming in 3D, but it’ll do for now.

Anyway – if you want to play around with Corpse Snake yourself, the source code’s at the bottom of the game’s page. You’ll just need FlashDevelop, HaXe and Sam HaXe. You’ll need the Pixel Bender toolkit as well if you want to muck about with the shader.

Feb 11 2012

DOWNLOAD VS FLASH

I was discussing download figures on Twitter with @SurplusGamer (one of the chaps behind The Wager) the other day and I came to a realisation: if you’re putting a game out for free, a Flash game doesn’t really get your name out there any better than a download game.

I put out two games last year. The first was Beacon, a download game for Windows, Mac and Linux. The second was Fear is Vigilance, a Flash game. Both started as Ludum Dare 48 competition games, ranking #2 and #3 overall respectively in the competition. Both were about the same scope, and both were covered in Rock, Paper, Shotgun. The only real difference is that one was downloadable and one was Flash, and the figures tell me that didn’t really change how much impact they had.

“But wait!”, you say. “Fear is Vigilance has 130,000 views on Newgrounds!”

It does! But I’m not sure that’s as helpful as it sounds.

 

Continue reading »

Feb 08 2012

CLOSE QUARTERS

I’ve been messing around with level generation. The big plan at the moment is to get various generators up and running – for things like dungeons, caves, towns, forests and so on – meaning that we can have a whole bunch of different-feeling levels. One of the core features of CQ2 is going to be a sense of place, a feeling that you’re carving a way through different areas on a journey and that there are new things to discover up ahead if you persevere.

First up was messing with a cave generator of Ido’s that was already in the codebase. I played around with the settings a bit and then, thinking of NetHack, tried pulling the view distance all the way in so it feels a bit darker and more threatening:

It certainly feels a bit different! (Ignore the tileset :D)

One thing I’ve realised is that, even with procedural generation like this, the different areas of any given level type tend to feel a bit bland due to being all pretty much the same. We’re going to need a range of level features, like special rooms and so on, so there are things to find when you explore. I’m not sure what to do on that front yet. I’ll work on it – I don’t just want to stick in shops and treasure rooms, though they might be part of the solution.

For now, I’m going back to raw level generation. These villages and forests aren’t going to make themselves!

 

Feb 03 2012

BREAK

Yesterday I tried to get some stuff done and I just couldn’t. Work was going slowly, I was feeling really stressed – I’ve been feeling gradually more stressed about work for the past month, to be honest, but it finally got to the point of making it hard to think clearly about the whole thing.

What’s really been getting to me is, I’m in the middle of this long period – about two months – where I’m changing lots of core stuff about Cardinal Quest and I’m not totally sure if it’ll all fit together and work well. Everything feels good in isolation, but I won’t know if it’s actually good until all this rough work-in-progress stuff starts to resolve into something shaped like a coherent game again.

Now rationally, I do believe it’ll be good and solid. Emotionally, I’ve been worrying about it and second guessing my own judgement. I’ve never actually designed a roguelike/RPG before, so hey – what if I’m making poor judgement calls and I don’t even know it? It’d mean the work I was doing would be a waste of time. Trying to get stuff done when you’re feeling it might not be worth it isn’t much fun!

Not having much confidence in the game and feeling unhappy about it was making working on the game pretty stressful. My first response was to try and power through by spending more time thinking about and working on it, but that just amplified the stress.

What I needed to do is twofold. Firstly, I needed to get a solid idea of where the game’s going to end up and restore my confidence in it. Secondly, I needed to create some space in my life insulated from work, so even if work was getting stressful it wouldn’t drive me completely crazy within a couple weeks.

So I shut the PC off mid yesterday afternoon and took a break. 😀

I’m already feeling much better and I’ll probably get back to work on Monday or over the weekend. I won’t be rushing it, though. More than anything this has shown me that I need to pace myself when things get a bit rough. Starting next week I’m going to try and get back into working days and taking evenings off instead of it all blurring together. I think that’ll help a lot. A month or so of taking it easy and methodically knocking through to-do list items and it’ll be properly ready for playtesting. From there on out, constant corrective feedback should make development much easier, emotionally speaking.

To anyone else going through a rough patch mid-project, lots of hugs. We’ll get through it 🙂

Related: Michael Todd gave this cool talk at the Independent Games Summit last year about depression in game development, Turning Depression into Inspiration. It’s good stuff.