Sunday, May 27, 2007

CuteGod: A prototyping challenge

It is once again time for a prototyping challenge! The rules are the same. You are an elite programmer that wants to make something fun without spending ten years in art school learning how to draw stick figures. I provide some easy-to-use graphics and an intriguing game design for you to riff upon. Send me the links to your masterpieces and I'll post them for folks to enjoy and critique.

This time, we are tackling an ancient, yet still fascinating, genre that is long overdue resurrection: The God Game.

Back in the day, there was a game call Populous where you played a god. You mucked about with the land, zotted unbelievers and created a verdant landscape populated with bustling villages and happy followers. This week's design, CuteGod is a god game on a smaller, more casual scale. I've reworked the mechanics to be more prototyping friendly, but the spirit is the same. You play a simple village god who seeks to make his people happy by fulfilling their heartfelt prayers.

I've divided the challenge up into two sections. The first is the core mechanic and the second challenge adds a bit of depth to the game. We are using the PlanetCute prototyping tiles and the set has been updated with 20 new objects in preparation for the challenge. You can download them from the resource section of the post.

Challenge Part I: Core Mechanics
Have you ever experienced the simple joy of sorting your Legos? This is a broadly enjoyed activity for many folks whether they express it through a love of beading or shopping at Organized Living shops in the mall. The core mechanic in CuteGod is one of sorting tiles and completing simple patterns.

As with all mechanics, the written design is a starting point. Prototype, experiment and see what works. The idea is to create an activity that is intrinsically pleasurable and can act as a foundational activity for other game mechanics.

The map
The land starts out with randomly sorted PlanetCute prototyping tiles, piled up to five levels deep. Tiles can stack up on one another to form hills and valleys.

There are several types of tiles:
  • Basic tiles: There are a few basic tiles, grass, dirt, water.
  • Rare tiles: Each basic tile has a rare analogue such as emerald, ruby or sapphire. There may be a handful of these tiles in the entire level and are used to create advanced patterns or increase the completion bonus of existing patterns.
  • Immovable tiles. These stone tiles create the foundation of the level.
Player action
You can drag tiles around. Tiles can be dragged on top of other visible tiles. By dragging tiles, you rearrange the map to Your liking.
  • Picking a tile plays a cool sound effect and the tile is sucked up into the air.
  • An indicator shows where you can drop a tile. As long as you can touch it with your cursor, you can drop a tile there.
  • Dropping a tile has a quality clunking noise. The tile drops into place with a small bounce.
The villagers
Sad villagers wander about the map looking for a place to live. If you click on them, a thought bubble appears showing you a pattern of tiles they need in order to build a happy home. This pattern is known as a prayer and acts as a mini-mission. It is your job as a god to do something about such heartfelt desires. Clicking on the thought bubble automatically accepts the prayer.
  • Finding villagers and accepting their prayers gives you a small amount of points. A small animated heart floats up from the villager to let you know this is a good action.
  • The prayer pattern flies over into the prayer list.
Patterns are a set of tiles in a prearranged order. For example, a simple pattern might be a grid of 4 dirt blocks arranged in a square all at the same level. Completing a pattern builds a structure and gives the player points.

Prayer list
Along the side of window is a list of patterns that various villagers want you to build. This helps you keep track of all the requests.

Partially completing a prayer
As you build out the pattern, the tiles glow when they are assembled in partial patterns. The appropriate prayer pattern also glows. This intermediary feedback lets the player know that they are progressing along the right path.

Completing a prayer
When you complete particular pattern, the tiles glow, the villager smiles and bounces over to location of the pattern. Blocks rain down from the sky and assemble the house. For each block that falls, you get points. When the house is complete, particles go off and flower spring up around the house.
  • The finished house will pop out the villager upon completion. He will be happy.
  • Some advanced patterns will also pop out a treasure box upon completion.
Simple levels and winning conditions
CuteGod is about playing in a sandbox, not so much about winning. However, it is easy to add levels to the game to give the prototype a sense of completion.
  • Each level is a new initial configuration of tiles and patterns that the user needs to build.
  • Each level has an overall goal of reaching X points, where X is might be 10,000, etc.
  • When the goal is reached, a 'win' message is shown.

Challenge Part 2: Treasures and Spells
Once you have the basic engine running and the gameplay feels good, here are some additional mechanics that should improve the rhythm and addictiveness of the game.

Buried Treasures
As you dig about, you’ll discover buried treasures. These are magic chests that contain a variety of interesting and useful things.
  • Click on the box to open it. The box fades out in a glorious burst of particles and the item inside pops out.
Buried mana
Some treasure boxes simply have bonuses of buried mana. Bonus points increase the user score for no additional work.

Buried spirits
You can also uncover buried spirits in treasure boxes. These are ancient villagers from ages past that require truly opulent homes. They give you a new mission and extra bonus points if you bring them back to life.

Buried Spells
You can find spells in treasure boxes. These are special actions that give you useful tools for manipulating the environment.

If you click on a spell icon on the map, it activates. If it requires targeting, your cursor turns into the appropriate spell. Click on the spell again to cancel. If it does not require targeting it becomes active immediately.
  • Boom: You can blast a house to pieces. This allows you to build it again for more points, or you can get to the stuff underneath. All the house pieces disappear. You can also use the boom spell quickly dig through a hill.
  • Find Tile: Finds a block of a specific type. For example, ‘Find Grass’ would cause the top level tiles wherever buried grass tiles are located to glow.
  • Find Rare: Highlights any rare tiles.
  • Bonus: Increases the bonus that you get from completing houses in a particular amount of time.

Future ideas
If the core mechanic is interesting, we can introduce additional layers of complexity and rewards. The future ideas section is a brainstorming list to get your creative design juices flowing.
  • Economy: Points are really money. :-) As you gather them, you gain the ability to purchase more land, more villagers, visits to other maps, tiles, rare patterns, clothes for your villagers, etc.
  • Additional prayers: Some villagers will become unhappy again, even after they get a house. They request gardens, bath houses, etc. You get loads of bonus point if you assemble these touching their existing abode.
  • Marriage: If you put a man and woman’s house next to one another, they will fall in love and you’ll get a marriage bonus. If you wait long enough, they’ll have a small child who can request a house of his own.
  • Stacking objects on villagers: You can stack tiles on a person. This allows you to keep track of the tiles that a particular villager requires and gets the tiles out of your way.
  • Complex patterns: Advanced patterns can be quite complex. We’ll have to see if this is an enjoyable avenue of advancement.
  • Fast completion bonuses: If you complete a pattern quickly after receiving the prayer, you get a bonus.
  • Minimum number of moves bonus: If you complete a pattern within some number of moves, you get a bonus.
  • Time sensitive prayers: Instead of prayers just waiting for you to click on them, a prayer starts floating up in the sky. If you don't catch it in time, the prayer is lost and the little villager is unhappy.
  • Scrolling maps: Larger scrolling maps gives the user more things to think about.
  • Water: You can drag water onto crops to soak them. This will cause some to grow and yield new treats like mana or spells.
  • Pests: Pest come through and damage crops and buildings. You can drop rocks on them or pick them up and drown them in water.
  • Player on the map: It would be possible to add the player as a character on the map. This gives the player someone to identify with and adds more gameplay possibilities. It also gives a focus point for scrolling. To move, just drag your avatar to a new location and the screen scrolls accordingly.
  • Web-based play: It would be great if this was an online game with instant access and no install. Other players could come visit your realms and chat.
Long term vision
CuteGod is a paintbox game. Ultimately, the user should be able to organize and paint the world that they desire. By carefully managing their tiles, collecting the right patterns and spending wisely, they can create a little living world that is their personal space.

This challenge is an interesting exercise because you get to see the craziness that happens when you prototype an original design. In my limited knowledge of games, the dragging and arranging of tile patterns to satisfy the prayers of little villagers is an uncommon mechanic. There aren't a lot of example to fall back on when something isn't working.

That means much of your prototyping time will be spent balancing and exploring with the new game system. Build the initial game, but don't be afraid to take in new directions if you discover interesting sources of fun. If you end up with something that is truly, horribly unenjoyable, certainly share it! Everyone will learn from both the dead ends and the successes.

For those of you who wonder why there aren't more original games, this can be a great learning experience. The first lesson is that original design isn't usually constrained by technology. I've intentionally kept the engine requirements rather low tech. Instead, the biggest challenge becomes the mental shift from 'implementing a spec' to 'finding the fun in a new game system.' These are two very different skills. If you merely implement an original design, you'll often end up with unplayable garbage. Instead you have to dig for the fun.

In today's risk adverse game development culture that focuses on rapid implementation of a spec, many game developers never master or know how to manage the process of finding the fun in a new game design. It is a process that requires slack time in the schedule to experiment and balance your game. It requires tight collaboration between design and development usually in small groups, not large silos. It requires the ability to try out multiple things at once and pick the best option, not the only option you have time for.

So here is an opportunity that only a few commercial game developers get a chance to regularly engage in. Have fun. :-) I'm very much looking forward to see what you make!

take care

Prototyping Resources
Download the PlanetCute tiles: I've added over 20 more tiles and objects. The shadow system is improved, you can build full houses and there are hearts, gems and stars.
Shadow Tile Placement: One of the first problems that prototypers run into is that their lovely work doesn't look like my mockups. This is because my mockups use the miraculous height improving power of the shadow tiles. I updated them in the latest .zip to be even more effective. If you haven't downloaded the PNGs lately, I recommend you do so since some of the graphics and some of the tile names have changed.

Use the diagram below to write your clever algorithm for automatically placing shadow tiles appropriately. (It is an endearing puzzle all by itself)
  • Tile A is on level 1
  • Tile B and C are above Tile A on level 2
  • For each of the 8 directions of the compass, tile B will cast a shadow on tile A. In order to simulate this effect, I've created 8 shadow graphics. If you are Tile A, check the rules. If a rule is true, place the appropriate shadow tile. You can have multiple shadow graphics on top of the same tile.
  • Special case A: When two tiles are on the same level in the diagonal pattern shown below, you need to place Shadow Side West.
  • Special case B: When a tile is at the very top of the stack and there is nothing north of it, you can reused the Shadow South graphic to give the edge more emphasis.

Populous: The original God Game. This genre eventually morphed into more mundane sim and building games, but the fire and brimstone original concept has rarely been revisited. This game was a formative part of my youth. The mechanics of CuteGod are slightly different, but the setting remains an homage to one of histories great original game designs.

Sunday, May 20, 2007

Initial PlanetCute level editor

Corsix just posted up a prototype of a level editor he built using the PlanetCute set from last week. You can download it here:
To install:

Extract all files, make sure DX9 is intalled

To run:
Double click EXE

To use:

  • Arrow keys: Move active character
  • b: Change active character
  • 1 though 6: Load premade levels
To manipulate the terrain:
Click on terrain in top left, click one of the blocks across the top to select it, click on a block in the level to set it to that block. Click and hold a block, and drag up/down to move the block up/down.

To manipulate objects:
Click on objects in top left, click one of the objects across the top to select it, click somewhere in the level to place it. Only one object can be present on each block. To delete an object, select the object across the top then click on the object in the level.

To manipulate people:

Click on people in the top left, works same as objects.

This is exactly the type of project I was hoping someone would build. Once you get a hang of the editor, it is easy to build interesting levels rather quickly. Be sure to check of the prepackaged levels. Though simple, each one is actually a rather enjoyable exercise in finding keys and delivering gems to the princess.

I'm impressed that Corsix even figured out the shadow system, probably the most complex part of the set.

I find that my initial tiles usually go through several iterations before I settle on a final look and feel. Having seen them in action there are still a couple of rough spots.
  • Displaying vertical height: This is still a bit tricky. There are a few simple shadow tricks I can play. A simple trick that can be played on the programming side is to increase the brightness of each layer by 10%. This makes the top blocks lighter and the bottom blocks darker given a nice bit of depth perception to the whole thing.
  • Noise in the base tiles: The basic floor tiles are a bit high contrast. This gives the playfield a much noisier feel than I would like. I'll tone that back.
  • Lack of objects: It is obvious that some basic objects are missing. Vertical doors, conversation bubbles, ramp corners and better buildings all come to mind. Any others that seem missing?
One of my dreams while making this set was to one day see an online RPG maker similar to Little Big World. The player wanders about a series of realms, but they have the ability cast spells and mold the terrain like a giant art canvas. Think Populous, writ small.

take care

Tuesday, May 15, 2007

The Circle of Life: An Analysis of the Game Product Lifecycle

My article introducing folks to the genre life cycle is up on Woot. Gamasutra is a site that I respect quite highly, so I'm honored to see them taking an interest in these esoteric writings of mine. :-)

Let me know what you think:

take care

Saturday, May 12, 2007

Danc's Miraculously Flexible Game Prototyping Tiles

RPGs love PlanetCute

So do platformers...

One of the commenters on the SpaceCute posts wondered what would happen if you visited one of those delightful spa-like planetoids that decorate our little galaxy of cuteness. Well, now you know. Here is a new set of graphics I'm dubbing "PlanetCute"

These are Lowest Common Denominator graphics. I put the challenge to myself: "What is a graphical style that is attractive, but are useful to both the widest range of developers and game genres?" Here's what I came up with for an answer.

Useful to the widest range of developers
Very few indie developers want to spend time figuring out how to use a set of graphics for their prototype. Often a developer would rather build their own format specific to their design and hire some to make graphics to spec or horrendously mangle free graphics to fit their needs. For completely original graphics, MS Paint in all its heavenly glory, is a extremely popular choice.

Some of the fault lies with the existing graphics, be they free sets scrounged from the internet or leftovers from a previous project. 3D graphics are notoriously difficult to convert between formats, are optimized for use on a specific platform and often present a confusing technological challenges to student developers. What coordinate system are they in? How are they grouped? How are they animated? Perhaps Collada will make it all seamless one day, but we aren't there yet.

Even 2D graphics are tricky. I've seen a simple system like auto-tile confuse new developers. There is typically a whole class of rules associated with any set of 2D graphics. What pieces go together? What is the render order? A set of a hundred graphics presents a puzzle that surprisingly few are willing to decipher.

The PlanetCute set attempts to wiggle past many of those problems.
  • Building blocks, not tilesets: Instead of having complex tilesets, each block stacks nicely with pretty much any other block. If you can understand Legos, you can understand how to put together these graphics. These tiles should be useful to children, not just uber-elite game gods.
  • Standardized format: All the graphics are uniform sized PNGs. The graphics will also work in almost any graphics engine out there that can do 2D sprites. Once you get your offsets right once, you never have to change them again.
  • Source files included: If you do need to make changes, I've included the source files. If you really need to change a color, go for it. If you need a big gem, just scale up the original. Everything is a vector so you'll alway end up with clean results.
Useful to the widest range of genres
These terrestrial tiles that be used to prototype a shockingly wide spread of popular 2D genres. Some that come to mind include:
  • Console RPG
  • Platformer
  • 2D brawler
  • Pacman
  • Sokoban (Please don't make this game again)
  • Match-3
  • Populous
  • Syndicate
  • Pong
  • Arkanoid
  • Marble Madness
I imagined that a basic engine that can deal with stacking blocks and a bit of collision detection could be easily adapted to new game types as desired.

This set is also quite amendable to original games. What could you make with destructible terrain, crowd AI and ancient treasures hidden several layers deep in the earth? I don't know, but I suspect it would be a heck of a lot more interesting than yet another Match-3 game. :-) And this set can handle all those technologies with delightfully low-fi aplomb.

Why does the world need nice graphics for prototyping?
The whole goal is to get you to focus on building up your game mechanics, not on polishing your graphics engine.

Many developers are driven to improve their graphics. There is a common moment that is seared into most developers brains. Do your remember that time you were working on a new idea for days, perhaps weeks. Finally you showed it to your friend. Your code was tight. The idea amazing. Yet your friend took one look at the command line interface and the rectangular graphics and his eyes glazed over. He was bored before you even complete your first sentence. That moment can be devastating.

For the follow up, you spent half your time making your prototype pretty. Unfortunately, to be overly blunt, you suck at drawing. You spent untold hours on something that didn't quite meet your vision. As a result, you didn't get a chance to polish and balance the game mechanics. You know...the part that makes a game fun. There is only so much time in your day and you wasted a good chunk of it on getting past that first 15 second impression.

The next time you make a prototype, use these graphics. If you can reduce the time you spend on futzing with graphics from 40% to 5%, you can put more time into those fun game mechanics you've been dreaming about. The magic is that your graphics will now look good enough to get you through the first 15 seconds of your demo. Your friend will perk up and stay engaged long enough to give you feedback all the wonderful work that you've put into your prototype.

Let me know if there is anything major missing. These were surprisingly fun to draw.

take care,

Download 'em here
Vectors: Ideal for Silverlight or WPF experimentation
Bitmap: Good for that vast world of pixel engines

Tuesday, May 1, 2007

Thoughts on Silverlight, Expression and Games

I just got out of the packed keynote for MIX 07 in the surreal universe that is Las Vegas. The event was set in an enormous hall at the Venetian with four cinema sized screens dominating the stage. You could see individual pores on each speaker. A band on raised stage was rocking out to sweet accordion music set to what appears to be lyrics about pickles. All around me are masses of developers, designers and Microsoft folks gabbing about art, Macs and revolutionary new technologies. Wait, where was the chatter about black helicopters and the joys of pragmatic Outlook maintenance? Cultural dissonance rocks my world.

The big news of the event is that Silverlight will have will have full .NET support. Silverlight, for those who haven’t been following the glorious web technology soap opera, is a cute little browser plug-in that allows you to build rich internet applications. I think technologies like this are good for game developers. More on that in a bit.

Expression Design is released
My product, Expression Design also went live Monday morning and I picked up a boxed copy at the event. To say the release process is like giving birth is perhaps extreme, but I’m very proud of my team. They’ve waded through swamps of vipers to get this product out the door and are already rearing to work on the next version.

Version 1.0 graphics tool are rather rare and mysterious creatures that few software developers get a chance to work on. I’ve been blessed with the opportunity to design three in my career and have come to realize that their promise is greatest even when their features are most limited. The next few years will be a rush.

SpaceCute supports Silverlight
If anyone is interested in dabbling with either Silverlight or Expression Design, it just so happens that all the SpaceCute graphics were built with these technologies in mind. To squeeze the delightful XAML marrow out of the SpaceCute files just follow the steps below:
  • Import the .design file in the zip into Expression Design
  • Click File > Export in the menu.
  • Select XAML as your file export type
  • Select “Silverlight”
  • Export.
Voila, you have a lovely chunk of XAML assets for messing about with Silverlight. You can now make a sexy, zippy, web-based version of SpaceCute that runs on both the Mac and the PC in Firefox or Internet Explorer. Here are links to all the files.
  • Download Silverlight:
  • Download Expression Design:
  • SpaceCute Graphics:
Why web-based technologies are desirable for games
I’ve devoted most of my professional life to making complex game technologies more approachable and accessible for creative people. Silverlight and Expression Design are just a couple more steps along that path. I’m a big fan of runtime technologies like Flash and Silverlight because they offer two important advantages to small game developers.

Simple install: A massive percentage of (often upwards of 50%) downloads never make it onto the customer’s machine. That translates directly into lost sales for those starving indies of the world. A single click install where the player has instant access to your game allows you to capture player interest immediately. Once you’ve hooked them, you can stream in additional levels, cut scenes etc at your leisure. When you increase your initial conversion rate, you increase your revenue. It is simple math, but a bloody hard technological problem to solve well.

Reliability: Custom engines run well on the developer’s machine, but often fail in horrendous ways on a multitude of customer configurations. A mass market runtime backed by a company whose biggest value proposition is a great experience on the widest number of machines means you shouldn’t have to worry. The number of support calls a Flash developer fields regarding video drivers crashing their customers computers is substantially lower than the number fielded by folks who build a custom engine.

Areas for improvement
Obviously, not all game developers use Flash or Silverlight. If you look at top titles like Bejeweled, Peggle, or Aveyond they still use old school downloadable installers. In the past few years, there have been big obstacles to using browsers plugins as your primary platform for casual and indie game development. The good news is that these problems are slowly, but steadily being eradicated.

Robust programming model: Historically, you’ve been forced to program your million-line project in Javascript. As Dofus shows us, this is certainly possible. Yet due to issues with maintainability, very few folks want to do it.

This is the area that Silverlight addresses. The addition of a full-fledged language like C# should not be underestimated. You’ll start seeing more complex games with more intricate behavior. You’ll be able to easily create scalable, robust architectures using familiar tools. This advances us beyond ‘house of cards’ applications and opens up rich clients to the classically trained master programmers of the world. I am a great believer in their creative powers to blow our minds and change the rules of the game in the process.

Speed: Traditionally, web-based engines have been slow. Users are subjected to slow framerates, small number of objects on the screen and wimpy dynamics. It is not really surprising, given these limitations, that the majority of Flash games are simple action games or point and click adventures. Our runtime technology is barely capable of running games that were popular in the early days of DOS. With technology limitations, come genre limitations.

With Silverlight, you are seeing the execution speed of C# code running 300 to 1000 times faster than the equivalent JavaScript code in some cases. This is a good start. Both the latest version of Flash and Silverlight are also starting to pump out reasonable numbers of objects on screen without slowing down the system. In the next couple of years, I see web technologies reach DS or PlayStation level of 2D capabilities. This opens up the golden era genres like epic platformers, brawlers, fighting games, and RPGs.

Local storage: The biggest reason that folks are using downloadable applications is that many users still play offline. Ideally, we could cache 20 megs of data plus a 2 meg save game file on your hard drive and allow you to use the application when the internet is disconnected. This is exceedingly difficult with current technology.

Some of the technologies that Adobe is working on looks promising here and I hope to see more from Microsoft in the future. When game developers gain control over their caching and local storage, the silly distinction between online and offline starts to disappear. This blocker hasn’t been solved yet, but there is hope.

Future of mixed cloud/client games
What really excites me is the mixed world of applications that sit halfway in the cloud and halfway on the client. As these become easier to develop, more people will get into the market and they will innovate in order to differentiate their products. Casual game developers are just starting to dip their toes into this universe, but with time expect a flood of interest. Occasional connectivity + instant downloads is a huge and exciting opportunity to create entirely new genres.
  • Shared user created content: As users create content and upload it to a universal cloud, you open the world of massively single player games. Imagine Spore as a web-based RPG or platformer with a single click install.
  • Multiplayer experiences: Little Big World shows a little bit of what can happen when you mix an traditional platformer with online capabilities. Imagine if most web-games had this level of multi-player mechanics.
  • New revenue models: The retail model of paying 19.95 for a mess of levels is due for a shakeup. Micropayments in casual games are a natural fit for cloud/client games. The cloud provides the persistence and the payment system. The client provides the rich interactivity that captures the player and provides the compelling context necessary to encourage them to invest monetarily in the game.
  • Stats: Great games are well-balanced games. Well-balanced games are created through the massive amounts of user feedback. Internet enabled games offer a natural way of collecting copious amounts of player data in a transparent manner. Imagine if all games had Valve-level diagnostics built in. If websites can do it, so can games.
Ending thoughts
I’m excited about Silverlight, not necessarily because it solves all the problems facing game developer or because it provides all the solutions. I’m excited because it adds a serious jolt of competition that is bound to drive rapid advancements. The improved tools and more robust runtime platforms that result from competition are huge wins for game developers. They allow us to focus on making great immersive games, not on rewriting our game engines for the 57th time.

For at least the next five years, the casual and indie games marketplace is going to be a crazy ride. The ‘typical’ genres of point and click Flash adventures, shooters and downloadable Bejeweled clones is going to replaced by instant install, rich applications that cover a much broader range of game genres. Developers will have the power. They just need to use it to make something amazing.

Take care
Danc (in a good mood)