Sunday, April 30, 2006

It's ugly, but it exists!

Well, I created a simple puzzle game to test the power of my search-and-reroute algorithm. Here it is: AdaptAmaze (1.3 megs).

This is a proof of concept. It isn't a game by any stretch of the imagination. But it is good to see the algorithm work. (It's actually slowed down a bunch here, for debugging purposes.)

You control your little blue token with WSAD controls, trying to get to the little green token. In a transparent attempt to make it more "gamelike", there's a fog limiting your visible range. Press "F" to toggle it.

The maze starts completely random. It probably cannot be solved as it stands. I have given you the power to choose your destiny. "P" finds a path and modifies that path towards the difficulty level you've specified.

The two text boxes in the upper left control size (smaller is more tiles) and difficulty (higher is more steps). Don't worry - modifying them prints a clear message, so you don't have to remember.

All you need to remember is WASD, F, and P.

By the way, the game has a hardcoded 10 iteration limit. This is fine in most situations, but in the most extreme situations (such as being 3 steps away and setting the difficulty to 30, or visa-versa) it can simply not work. Repeatedly re-engaging the path engine can usually "drill" a more suitable solution into the game.

In a game with more complex constraints, this wouldn't be a problem. The "space" between you and your target would stretch. Also, it would be passably easy to create special cases for the extreme situations.

But I didn't. :)

Tuesday, April 25, 2006

Arggh!

I can't think of a good framework to test the backbones I'm coming up with. In other words: I can't seem to make a fun game.

I can think of lots of ideas, but nothing small enough. Maybe my standards are too high.

I'll keep thinking.

Wednesday, April 05, 2006

The Art of Character Design

I won't pretend to be an expert in character design, but I do think about things.

Each of the characters in "Dreamland" need to have a distinct look. To that end, I'm designing each of them from a different culture, if I can. There are five characters: a princess, a sorceress-like lady, a nerd (female, because female nerds are cuter), a knight, and a pauper. To make matters more complex, each character needs to be suitable to be a hero, a villain ("obstacle" might be a better word), and a victim. Obviously, their victimhoods are different. The knight is unlikely to be kidnapped, but he is likely to be sweet-talked, confused, or poisoned.

Therefore, the character designs have to be "power neutral": anyone looking at them has to consider them neither particularly weak nor particularly strong along the particular axis of "plot arc" the character is likely to be in. Sure, they can be strong or weak in other axes. The geek looks physically weak. Shock.

The knight is turning out to be a pain in the ass, but I've got solid sketches of most of the others. Here is the current version of the princess:



Can you see her as a lovestruck romantic? A snotty brat? A scheming bitch? A victim of kidnapping?

Obviously, her culture is a mish-mash of Asian cultures, most heavily Chinese.

Comments?

Monday, April 03, 2006

Dreamland

My next little project is codenamed "Dreamland". It's going to be something halfway between a dream and a fairy tale. It's going to be pretty simplistic, because I'm intending to finish before a month goes by.

The basic idea is that there are some characters (five or six) living in a rather fairy-tale world - something like 1001 Nights, but with a touch of steampunk. Because I like steampunk, dammit!

There's going to be a plot mode - some kind of evil is threatening the land. I haven't really decided what kind, and it hardly matters. The game is about watching a fairy tale (or dream) about the people trying to stop it. In true 1001 Nights style, not all the good guys are good guys: the relationships and personalities of the characters are heavily randomized. One run, the princess may fall in love with the pauper. The next run, she might order him around disdainfully.

The power of their positions will also vary from run to run. In one run, the pauper might actually be the leader of a band of powerful theives, while the royal family might be on its last legs, poor and too proud to admit their obvious weakness.

And, of course, which characters meet which characters in which ways will also vary.

The fairy tale has "tokens" - nightmare and daydream tokens. I think the nightmare tokens will be brutal red shards, whereas the daydream tokens will be blue beads. These come out of things that happen: if the princess kisses the pauper, blue beads fly out and stick to the edge of the frame. If the princess then stabs the pauper, dark shards fly out to the edge of the frame. The basic idea is that the more beads and shards there are, the more likely extremely good or bad things are to happen. If you have lots of both, you're in a very intense part of the dream where anything could happen.

If you get too many beads or shards, you lose control of the dream temporarily. When you regain control, the beads and shards will have all vanished... but the tale will have gone off in new directions.

"Control" is, in this case, a rather strong word to use. The primary means of control in the game will be clicking on anything you want to see more of. If you click on the knight's daring fight, you'll get more daring fights. You'll also have beads or shards come out, depending on the mood of what you've clicked on. This means that you lose control faster the more control you exert. :)

You're not telling the fairy tale. You're listening to it and saying what you like, as if you were being told it by someone who was actually paying attention to you.

I know this isn't a game as such. It's a test of another kind of social algorithm. It might be fun as well, but it isn't my primary purpose. It certainly won't look very polished:



This is a quick demo screen I tossed together to show what it's like. Everything in the scene is simple(ish) lineart with a quick white background. The game then colors it whatever color makes the most sense for the scene: although blue in this scene, the knight could easily be red in a fight scene. The color shift would be very deliberate, though. Obviously, the lineart would be better than the above example.

There's not going to be any animation. Instead, it'll be like comic cells. These two people don't walk across the screen: they fade in and out at new locations making their way left. If they were running, that would be shown with simple movement - but the movement would just be to give an impression of direction and speed. The sprite would still fade in and out, like a comic book.

The game can tell what kind of arc might go best next, and it will then put that arc into the game. Since the game has no dialogue, these plot arcs are fairly simplistic. A plot arc might be "go on a picnic and get the pauper carried off by a demon" or "set out to find the pauper" or "train with the knight". Things which are longer than scenes, but not especially complex.

The core tidbit is in the social engine that drives the game. When you set off to find someone, your friends come with you or help you. If you're enemies, the two of you might set off simultaneously, but separately.

Also, the ways that the characters interact is entirely based on their relationship. There are lots of kinds of relationships, so some remarkably complex interactions should be possible. Like all fairy tales, the pace is somewhat less focused than movies. So there's room for plenty of character development, to see how people change under the pressures the story puts on them.

The social dynamics are fun and interesting. :)

Saturday, April 01, 2006

Download it!

Ngh, coloring takes FOREVER, and I've learned all I'm going to from creating this game. Instead of spending the next few days finishing the coloration, I'm going to release the game as it is.

This game is not a complete game by any stretch of the imagination. I created this game to test a few theories, and it has done so. Not entirely successfully, but as much as it is going to without a complete rewrite.

So, without further ado, you can download Crowd of Three here. (<3 megs, should run on any Windows machine, lemme know if it doesn't.)

If you download and play this game, it would be appreciated if you tell me what you think, keeping the roughness in mind. I don't really care whether it's complimentary or not. Just post it here. I'm especially interested in your reaction to the social AI.

It's rough. Many of the portraits are unfinished. You can't choose your player: it's random. There's no real "victory" condition or story. It's just a game of something very vaguely related to strip poker, although there is no real "stripping" and absolutely no "poker". The game is pretty easy to figure out on your own, so you don't have to read any further: just remember that the little red token is what you click on to roll. And clicking on other characters allows you to talk with them (so long as nobody is currently in a conversation) or trade with them (if it is your turn).

The program is a game and a fun little social AI. I was trying to make the AI as simple as possible, but that turned out to be a mistake. I'll be re-testing a different approach with my next game.

In this game, you are trying to roll threes. Each round is twice around the table. Each time you roll your dice, you toss a chip into the pot. If you don't roll any threes, you lose your score and the next person plays. If you roll three threes, you get two bonus points.

If you pass, you can give three dice to a person of your choice, to increase them from the default of ten. I say that, but I mean: your character gives them to a character of her choice. Similarly, trades are also automatically handled by your character. So the game plays very differently depending on who you end up playing as.

While the game is being played, the characters chat and (under the right situations) trade with each other. The chatting engine is a bit primitive: as I said, I wanted to see how simple I could go. The answer is "not this simple", but at least it exists.

People develop friendships and rivalries, but it is hard to see. The teamwork is not transparent enough, something I will be fixing in the next (entirely unrelated) game.

Here's an explanation of why I chose strip poker: Why Strip Poker? For a more detailed analysis of what I learned, try: What did I learn?

Please note: although this game has no nudity, it isn't really suitable for children. It does have mannequin nudity, adult situations, and some rather extensive (if simplistic) swearing. Also, I have put in a host of silly stereotypes which, I suppose, might offend the more self-righteous people out there.

If the occasional lack of portrait coloring makes you angry, feel free to color the portraits and send them to me (along with a statement that says I can use them). If they are decent, I will gladly package them in and re-release.

Speaking of re-releases, if I get a huge outpouring of joy over this game, I will not only be stunned, I think about rebuilding it. Or, at least, putting in some sound effects and a background.