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
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.

Conclusion
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
Danc.

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.

81 comments:

  1. Thanks so much for these challenges. The art doesn't hurt too. :) They are really insightful and the other prototypes are great.

    Unfortunately I'm working on something else at the moment, but I'll to post my dead end in a few weeks.

    Thanks again!

    ReplyDelete
  2. I'd been considering jumping onto the SpaceCute challenge - I've been wanting to get up to speed on XNA and it seemed like a good excuse to gain some useful experience - but I think I'll jump on this instead. I clocked up hours in Populous II when I was a kid, so this ends up having a bit more appeal.

    ReplyDelete
  3. I wish I had the time for this :(

    I'll keep this in my todo list and hopefully some time will be found soon :D

    ReplyDelete
  4. NegativeZero, it seems this is a perfect opportunity to learn XNA. Go through the examples, make your bouncing boxes and make them collide, and practice reacting to user input and whatnot -- and then import these tiles into a new project and start playing.

    Danc: do you have an Xbox 360 with an XNA Creator's Club membership? I'm a Computer Science grad student looking for a summer project and this looks like fun -- but I'd like to build this with XNA, and my XNA development environment is a Vista VMware image. I can only run code on my 360. If I create something for you with this, will you be able to run it?

    ReplyDelete
  5. Looks really fun. i think I might be able to fit in the time to take a crack at this one. i was considering some of the extra suggestions before even reading them. Hope I can in fact get the time for this.

    ReplyDelete
  6. I think these tiles do not lent themself to.. well, tiling :)

    I didn't tile them pixel perfect, but this screenshot is hardly intuitive.

    ReplyDelete
  7. Well I threw something together in flash that lets you move around the tiles. But as Bjoernke said, it is a bit confusing moving them around. A bit of smoothing the landscape and less randomization would probably help though.

    http://67.169.215.5/cutegod.swf
    (Don't have a place to host so it won't always be up). Any recommendations on free site hosting with ftp access?

    Not sure how much more time I'll spend on it but I thought I'd get the ball rolling.

    ReplyDelete
  8. Bjoernke and Ezin

    Good point on how the heights can confusing. Your examples show the importance of the shadows to showing off height. I'll upload a tweaked set of shadow graphics that do a better job of showing of height.

    Another useful trick is to shade higher levels ~10% brighter per level. This increases depth perception.

    I ended up playing with Ezin's demo for a good 20 minutes. For me at least, rearranging things is quite fun. We can improve the moving tiles experience. Instead of using the indicator it might be more effective at this point to move a brightened transparent copy of the block. This will make it more obvious where your pieces will end up.

    Of course, all this changes when you add more mechanics. :-) No use pre-optimizing.

    Good stuff,
    -Danc.

    ReplyDelete
  9. I don't have enough time/talent to be writing a god game. Can't resist using these tiles for something tho - is that allowed?

    Kev

    ReplyDelete
  10. My algorithm for generating a world (as shown, picking bits at random doesn't work):
    1) Decide on world size. 12 blocks by 8 blocks seems good.
    2) Create a grid of 'keypoints' smaller than your world, say 3x2
    3) To each of these keypoints, assign a random height value in range 1-5
    4) Use bilinear interpolation to upscale from a 3x2 grid to a 12x8 grid. You now have a heightmap for your world which gradients nicely.
    5) Create the lowest level of your terrain by assigning a random block to each cell in your 12x8 grid
    6) Iterate over each cell in the 12x8 grid, and if it's height is less than the heightmap says it should be then add a block on top. To decide on which block to add, create an array of ten values. Fill the first 8 of these with the current block of each of the surrounding cells (if a cell has less than 8 neighbours, pad it up to 8 with random blocks). The 9th entry is what the cell is currently, the 10th entry is a random block. Pick randomly one of these 10 as what the new block will be.
    7) Repeat step 6 until the world matches the heightmap
    8) Add ramps and tall blocks (you'll get a cleaner world by adding these later)

    End result: http://www.corsix.org/godcute_worldgen.png (not coded step 8 yet, nor have I updated my shadow system)

    You should now have a world with veins or areas of particular blocks and a random yet consistent height.

    ReplyDelete
  11. Holy crap, Dan, that's a much taller order than Space Cute was! :)

    I'll see what I can do.

    ReplyDelete
  12. I'm on it. My hope is to have a first playable of the core mechanic by tomorrow morning.

    -Mike

    ReplyDelete
  13. Quick observation about the dynamics of the block piling simulation:
    - Building a house blocks you off from reaching the tiles underneath or behind the house. Planning the position of the house is an important skill for the player.
    - The optimal simple strategy is to seperate all the tiles by type first and then build the house. You can make the building strategy more complex by making each tile move cost points. If you gain points by building houses, you need to balance short term resource gathering and long term sorting of your blocks. This might be another interesting balancing act for the player.

    Scope of challenge:
    If the overall PlanetCute concept seems too large (and it is! :-), focus on the core mechanic first. Just getting blocks piling and houses placed when you form patterns can be very interesting. Hunty, I *know* that you are up for this sort of thing. :-)

    Kev: Feel free to use these tiles for whatever game you desire. The design exists to spark some ideas, not box anyone in. :-)

    Corsix: Thanks for sharing the map gen algorithm! In general, as folks tackle this problem, feel free to post your thoughts and solutions to this thread. Think of it like an Alternate Reality Game. One person might not be able to solve all the wierd little puzzles that come up. But together miracles can happen. :-)

    Anon: I don't have an Xbox set up with XNA, but if you get a solid game up and running, I suspect I'd be able find someone's system to run it on. This does seem like a good summer project. Code, games, watermelon. Mmmm...

    take care
    Danc.

    ReplyDelete
  14. Unfortunately, Dan, I don't think that this is a workable game foundation, especially with the oblique view angle.

    http://www.unm.edu/~luvcraft/adoration.swf
    (move with arrow keys, space lifts blocks)

    I'm having a hard enough time just moving blocks around and trying to figure out elevation, and if I don't like these core mechanics, then I'm going to hate it with more gameplay piled on top. Sorry. :(

    I hope that this has at least been a good exercise in learning why that particular projection style is so rarely used in video games; even the 2D Zelda games often "cheat" and draw some things at a 3/4 angle and some things top-down.

    Something that might save this concept is to scrap the elevation, put all of the blocks on the same level, and swap them as in a match-3 game. There would still be the problem of houses obstructing too much, though.

    ReplyDelete
  15. From previous comments I've seen the main complain is that the height perception is complicated. The shadows would solve a bit of that problem together with the bright/hue/saturation shift for each height step.

    But I think an easier solution would be reducing the max height (to 4 or 3) in order to prevent this kind of problems. Take in consideration that a built house will add at best 2 height steps more (walls and roof).

    ReplyDelete
  16. To Hunty and Chiguire,

    Try to think outside the box. Like Danc said, the "blocking" aspect actually factors into the gameplay if you want it to.

    I plan on offering the ability to "spin" the view around. Not free-form 3D, but one of four different angles, SimCity style (Rollercoaster Tycoon if you prefer).

    ReplyDelete
  17. Man, how do you come up with these great designs? The game is just so epic and world-ful as a god game, yet as small and simple and shiny as a casual game. It brings a tear to my eye. :')

    Thank you, thank you for sharing your great wisdom with us lowly mortals.

    ReplyDelete
  18. Speaking as a designer, the basic concept appeals to me. It offers a unique combination of simple but appealing experiences. XNA's 3D features actually seem like they might work well here for the blocks/houses and lend it a more "worldy" feel - the villager sprites, etc. can be 2D cutouts though, since actually modelling them would be silly. Thanks for sharing this great idea!

    I'd like to play around with adding some challenge to the game - time limits or something else. I'm averse to actually "killing" the player off, so probably this will take the form of "if you do poorly, you don't get as much cool stuff, but you can still play the game". Possibly something like the time sensitive prayers Danc mentioned.

    Speaking as a programmer, it looks like a bit of a headache, but I'm about one week out of the crunch phase, so I'm starting to recharge already. I've got the weekend free, and then another free week around the end of the month, so maybe I'll look into cooking up something. 3D picking is the only major issue, but I'm quite sure there are simple algorithms for dealing with that.

    ReplyDelete
  19. Added some improved shadow tiles and a diagram on how madmen with height fetishes might make use of them in their programming dungeons of darkness.

    -Danc.

    ReplyDelete
  20. The zip of PNGs includes: (shadow wise)
    Back North
    Side West
    Top North East
    Top Corner
    Top East
    Top North
    Top West

    The diagram refers to:
    South East
    South
    South West
    East
    West
    North East
    North
    North West
    Side West
    South again (with a different graphic to the the 'South' at the top of the diagram)

    I'm confused.

    ReplyDelete
  21. Hi, I've been developing a humble little game over the past couple weeks, and it has been greatly aided by your game design essays and 'Cute discussions.

    You can try it out here (~9.5 Mb):
    http://www.guruchild.net/phage12.zip

    Here is a screenshot:
    http://www.guruchild.net/bactphage.jpg

    Description:
    The object of Bacteriophage is to kill as many bacteria with each available Phage as you can. You begin with 10 Phages. Simply move your Phage to the place of your choice on the screen, preferably near large numbers of bacteria, and left-click to blow it up. Right click to randomize the field for better shot looks. Your phage will detonate and expand for a brief time before vanishing, killing any bacteria that overlap or come too near it. You get increasing numbers of phages as bonuses for "fighting off" a series of bacterial infections each 5 levels, so use your phages wisely.

    Hope you enjoy. Warning- may be addictive.

    ReplyDelete
  22. Danc,

    Thanks for the shadow layouts, that is incredibly helpful!

    Corsix,

    Some simple rotation should allow you fill in all of the necessary shadows. Unless I'm mistaken (which I often am).

    n.n,

    Are you going to make some 3D models from the 2D blocks? I was thinking about that last night, it shouldn't be hard, but it's still above my skill level.

    ReplyDelete
  23. Corsix, my fault for posting too soon. I've updated the description of how to use the tiles with a little more detail and a tweaked graphic.

    The biggest issue is that you are using an older PNG archive. Download the latest and the names should match up much better. :-)

    The other confusing aspect is that Shadow Side West is used in two situations. You can probably refactor this down to one rule, but I wanted to show both cases for completeness.

    I've started dating my zip files so folks know when there is a new one. Ah, the version control hotness of a blog. ;-)

    Visually, the new shadow graphics are a bit bigger than they were previously in order to give more emphasis to the height differences.

    take care
    Danc.

    ReplyDelete
  24. I just implemented the shadow algorithm with the newest version of the tiles (5/30) and they definitely make a huge difference in my ability to determine a tile's height. Mouse control is still a mess, though -- it just doesn't feel right, the perspective makes selecting blocks feel weird. In the meantime, keyboard/gamepad control, while hokey, works pretty well.

    But I am determined! Here I go to implement the house building aspects, I'll revist control issues later.

    ReplyDelete
  25. My prototype still in the world generation and mouse control stages: http://www.corsix.org/GodCute.rar

    * Shadows are good mkay
    * Currently selected cell is shown with selector
    * All cells connected to the selector by equal height will oscillate slightly
    * Dropping a block has a nice bounce

    ReplyDelete
  26. Glad the shadows are working out. The picture I saw o your Corsix seems to be working quite nicely. I like how you made the tiles bounce up and down! I was hoping that would be possible with this tileset.

    The tile movement is an interesting problem. The feel is a bit chunky feeling. There are three paths:
    - Live with it. It shouldn't affect the rest of the prototyping much and is a good polish item to fix later.
    - Experiment with alternatives that improve the feel. Here are some off the top of my head
    + First step, don't use the selector graphic I included...its doesn't seem to help.
    + Use a line that you drag smoothly from one spot to the destination. No jumping on squares! When you release, the block hops over to the new spot. The nice thing about this is that it is smoothly animated.
    + Grab the block, shrink it by 10%, lighten it and put a square drop shadow underneath. Drag this around. Since it is a mostly full height block, you can picture exactly what it will look like when it drops.

    In general, it is probably best to move onto the pattern mechanics soon than latter. I suspect that will be the bit that poses the biggest design challenge for the prototypes.

    Great work so far!
    Danc.
    For now

    ReplyDelete
  27. Well I added a few minor updates to my project.

    -Tile smoothing
    -New shadows
    -Tile shading by height

    Also added some tile pattern matching (currently just removes the tiles when you're done). It doesn't seem to be nearly as fun as just randomly moving tiles around though.

    cutegod.swf

    ReplyDelete
  28. bfblog,

    I'll probably start on the 3D stuff sometime today or tomorrow. The real headache is implementing the shadows :P I'm actually going to work with one placeholder tile first, but when I have decent-looking 3D tile models I'll upload them. Probably in the .x format, since I'm working with XNA, but if you want the Milkshape originals that can be arranged.

    I may actually play around a bit with using shaders to dynamically generate "fake" shadows; XNA makes that kind of stuff relatively easy (and I'm pretty sure it'll be far more efficient than doing it with dummy shadow objects). Still going to be a fairly meaty challenge. Once I've got the shaders figured out I'll look into posting them too.

    ReplyDelete
  29. Hehehe.. cool cute graphics Dan. Actually, I'm maybe going to use them to prototype an entirely different game (one that I've been thinking of for a while), which involved cuteness.

    I tried some of the demos and I think the problem of stack height perception is an issue. Basically its hard to tell where to place a block if it is obscured by other blocks.

    I have recently been doing some quick retro-types (i.e. prototypes of various retro styled games) to test a code-design concept. Basically I've been advocating certain code patterns for a while and recently I've been digging into that a bit more. I've been trying to prove to myself that my theories about object behavior composition are correct and I think I'm finally getting there.

    Hopefully I'll pull something together a bit more coherently and then publish it.

    So thanks for the graphics Dan, hope to post an image or two in a few weeks (not so rapid prototyping, but I'm damn busy).

    Phil.

    ReplyDelete
  30. n.n,

    Sounds cool. I'm interested only from a curiosity standpoint. I don't think I have the time or patience to implement 3D models, but I was wondering if anyone was going to take that track.

    Keep us updated, those could be very cool models.

    ReplyDelete
  31. Uh... they're boxes. Not much room for coolness there :P I'll still be using flat sprites for the people.

    I'll probably chamfer the edges and see if I can get some ghetto cel-shading in, though.

    ReplyDelete
  32. Oh, boxes are cool... you didn't know? :)

    Seriously though, how many 3D models have you worked with that stacked like these? I mean, since you put your lego set away. It's a simple concept, but it works so well it could really be lots of fun.





    Does anyone else think we could use a more organized discussion arena for this? Danc, what do you think? Ready to enable a forum on your blog? :)

    In the meantime, anyone is welcome over at the Newb (http://www.younewb.com). We've got a forum in place that we'd be more than glad to host these discussions at.

    ReplyDelete
  33. First pre-prototype (creating the basic terrain) done. Took about 3 hours, since I already have a half-built engine from which to work.

    http://haitaka.googlepages.com/xnacutegodprototype

    I'm not satisfied with the look of the thing, partly because the lighting isn't quite how I want it, and partly because compression seems to have played merry hell with the quality of the image. But then this IS a prototype... :P

    Also, need to implement particle systems into my engine sometime. Would help a lot with feedback (little puffs of dust or water splashes when you drop a tile, etc).

    ReplyDelete
  34. Another minor update. I added some environmental effects where nearby tiles affect each other. Not really sure if it's the right way to do it but the tiles need to differentiate themselves from each other somehow.

    So if you check the "Environmental" checkbox it applies these effects:
    -Stone blocks sink in water
    -Grass dies when beneath another tile
    -Grass spreads to nearby dirt tiles

    cutegod.swf

    ReplyDelete
  35. Now we are talking. The environmental effects are great! You are starting to build up a little ecosystem that the player can manipulate to get certain tiles. This adds skill to the process of arranging the landscape and makes it about more than just digging.

    There still need to be a reason for manipulating the tiles. Patterns that create houses that create mana/points is one mechanism. It is obvious that there are a rather creative bunch of folks participating in this challenge, so I'm looking forward to what you come up with.

    take care
    Danc

    ReplyDelete
  36. I'm planning something more prosaic: villagers can't go up/down more than one level at a time. So if you create a site but they can't get to it, they'll be unhappy. Possibly villagers can't walk on water either.

    If we use a "faith point" or "mana" system, perhaps the player can expend mana to turn a tile into a villager (from the dust of the ground, and all that stuff). The kind of villager who shows up could be determined by the kind of tile you use?

    ReplyDelete
  37. Aye, simple rules governing moving between heights is a great area to explore. I suspect there are some simple rules that result in intriguing puzzle-like challenges.

    NN: What you are doing with the 3D block is quite fun. Can't wait to see where it goes.

    ReplyDelete
  38. ezin, I like your cutegod.swf prototype. The block placement is somewhat disorienting for me though. I notice that I expect the glowing ghost surface to appear where the top of the block would be, not the bottom. Perhaps there could be a white, partially transparent ghost block instead of just a single surface?

    ReplyDelete
  39. I just discovered another project that would be the perfect complement to PlanetCute!

    It's called 300 Mechanics and seeks to create 300 completely original game mechanics not done in any commercial game to date. I could totally see using PlanetCute graphics to implement some of these, they are a gold mine.

    ReplyDelete
  40. Interesting prototyping as usual. Reminds me a lot of the process I went through while creating a game of mine once upon a time. It's called Gerbera Quarry (http://moppi.inside.org/quarry/Quarry.zip).

    I also started with free form building but ended up to tie the building and transfering of the blocks to in game avatars (robots in this case). For me the most interesting rules were the rules concerning the movement so the whole game got build around that.

    There are some features in that game that I slightly regret, like the horrible modal interface and the random blocks.

    Once these prototypes started to have the ability to recognize the patterns moving the blocks around started to feel nice and meaningful. I think one could create perfectly nice puzzle game around simple ecosystem and pattern matching.

    I'm looking forward to see the progress :)

    --mikko

    ReplyDelete
  41. Camera controls are in. Right-drag drags the world around, similar to Black and White. Middle-drag rotates the camera view around the target point. Scrolling the wheel zooms in and out (need to implement smooth zooming sometime).
    I can now do object-picking using the centre of the screen, but don't have a mouse pointer (yet).

    Decision time: Should I build this thing with gamepad controls in mind, and just have the mouse as a "poor cousin"? Or build it with mouse controls? Or both? The gamepad option would be pretty easy because I could decide to forget about picking and simply use the screen centre as the pointer. If I go with mouse, though, the interface gets a bit headache-y, but of course casual games (except on consoles) shouldn't require a gamepad.

    Any ideas?

    ReplyDelete
  42. Danc,

    I have the XNA Framework, XNA Creator's Club membership and an XBox 360 Elite.

    Like Anon, I'm a computer science student wanting to get some practical experience on the XNA Framework, to the point that I have purchased Professional XNA Game Programming by Benjamin Nitschke. He is the creator of XNA Racing Game Starter Kit for .NET and also Rocket Commander; in addition, his team created Arena Wars, one of the first commercial .NET games released, back in 2004.

    I'd like to learn how to use your prototyping kit in conjunction with the XNA Framework, and if Anon does get a project setup, I'd be more than happy to run it and post screen shots, review it, etc.

    Thanks,
    Ahad L. Amdani

    ReplyDelete
  43. Ahad,

    I'm using XNA to develop this game.

    My code certainly won't be a case study in technique, but it should provide some good ideas and direction for learning XNA prototyping.

    I'll post when I've got a useful build ready.

    ReplyDelete
  44. Took a stab at this on the weekend with a couple of friends.
    So far we've got randomly generated tile maps, both keyboard and mouse control, grabbing and dropping tiles.

    Puzzles and animations are next on my hit list, then hopefully a release.

    We're using python with the pygame library.

    ReplyDelete
  45. I love all this free-thinking around a game prototype. Soem great ideas bobbling up as well (the enviromental effects idea is a great one!)

    Just a question to Ezin : would you flash code be 'opensource' ? (or would you share it with me, so i could play around with it, without having to start from scratch?)

    If not:too bad for me I'll start from scratch!

    Anyhow keep those ideas comming in!

    Bluefr

    ReplyDelete
  46. bluefr: Sure, here's a link to the source code. I really hate flash but it's easier for others to use and pretty quick for prototyping.

    source

    Haven't really had a chance to do much work on it recently though as my monitor died on Friday and had to get a new one which I'll probably end up taking back due to color distortions (apparently I should have gotten a S-IPS lcd instead of a TN lcd).

    I did have a chance to make a few minor changes though. Grass only grows near water and water sinks to lower elevations (still needs a bit of work on that one).
    cutegod.swf

    ReplyDelete
  47. Hi, I really like the water diffusion effect , where the water tiles move to another lower level destination. I had thought of a similar effect with a 'bad guy' who would run around town, moving blocks from time to time (which combined with your effect could have nice effects(or disastrous ones for the player) for example if the bad guy removes a water block from the middle of a grass patch he is building!)
    Thanks for the source code by the way I'll look at it tonight

    Bluefr

    ReplyDelete
  48. I'm an independant mobile phone game dev, and this prototype gave me some good idea for a game. I'm trying to find Danc's contact about it too...

    But in any case, I'm here to share my ideas.

    Seeing as the floor placement is kind of like Popcap's Astropop, why not extend it? Just like in Populous, the player could have different "powers", all taking the same amount of mana, but each of them moving bigger and bigger land mass. So the player would save mana (and achieve bigger scores) by using the right move.

    The basic power would be the one described here. The next one could be a Bejewelled kind of power, where you can switch 2 adjacent blocks, and the last one could be a "rotate 4" power, where you choose a center and using the power will rotate 4 blocks around it.

    My next idea would be to have a tech tree. I know this is intended to be a casual game, but its a very simple idea ;) The tech tree would consists of "Holy Commandments". The player would choose which commandment to incult (research), and each of them would unlock a tech tree path.

    Of course, they would be silly thing like "You shall (or "shall not") make images of your Gods" in which cases the Cutes would (or would not) erect statues of the players (more on that later). Or maybe "You shall move your ass and climb blocks once in a while" which would do the obvious... I'm not clever enough to come up with more example just now, but those could the means to unlock new powers, finish a level, give bonuses, or open different game path/map.

    About the god "images". I dunno if anyone here ever read Pratchett's "Small Gods", but it would be cool to have the player starts as (for example) a tortoise (because thats how it is in the book). He would then find one follower by arranging the terrain for him, who in turn would "proletize" to other, unlocking new prayers, and the player would become a bigger animal depending on how many people believe in him.

    Thats pretty much about it... ;)

    ReplyDelete
  49. Alright, here's yet another basic prototype. No shadows yet (tomorrow). Small map, one npc, one pattern. Click the NPC to get the pattern and go nuts.

    Why is it so basic? This is another experiment with programming games in javascript/DHTML. Note the fancy zoom action using +/- or your mouse scroll.. Much more to come.. including source code.

    ReplyDelete
  50. Love the graphics...I think I'm going to make a prototype just because it looks sooo pretty. Time to get to work.

    ReplyDelete
  51. http://moonfire.us/blog/2007/07/16/weekend-of-cute-and-gods/

    It might not be much, but I've been working on this challenge for a couple weeks now and finally got something that *almost* looks like a game and it is playable as a game. I thought someone might be interested, there is a zip archive with a binary of it, I'll get an installer next version.

    ReplyDelete
  52. Updates to my PlanetCute project can be found here.

    The game is written in Javascript and takes advantage of DHTML/DOM. The bonus being that it will play in your browser and is more of a challenge than flash. I hope to clean up the code soon and slap together an editor. Plans on posting code and my experience should happen before animations and particle systems are implemented or when time permits.

    ReplyDelete
  53. My version: cute.zip

    I gave this a try to learn XNA programming. It's the first time I touch c# so don't expect too much. For now I have only terrain generation and the pattern recognition working. Also, due to a stupid bug in my videocard driver (the game was crawling...), I lost a lot of times fighting with the draw routine.. turns out my laptop wasn't restoring the videocard clock properly after stanby... at least it was educational.
    I plan to finish it as soon as I have more time

    see readme file for details.

    cheers to all

    ReplyDelete
  54. I only get to know of your site just a couple of weeks ago, however a late start is better than never. The tiles layout is extremely flexible and the shadow tiles are really well designed. In fact I learnt quite alot just from the layout of your shadow tiles.

    Keep up the good work.

    Anyway here is the updates to my CuteGod project - gamedboy.com

    ReplyDelete
  55. Hi Danc,
    I am Jeffrey. there is actually a Game Convention Asia going on in Sept at Singapore. I am actually showcasing some of my game projects at my school booth as part of my programming portfolio. I am hoping to use my cutegod project as one of the items, hope to get your permission for the images.

    I will give you all the credit for the images and the game design. Is there any contact information you would like me to post on the credits? Hope to hear from you soon.

    For more information visit http://www.gc-asia.sg/

    Regards.
    Jeffrey.

    ReplyDelete
  56. Hey Danc,

    I run a indie game resources site and would love to mirror these tiles and some of other fantasy tiles you have posted on your blog. The site is www.gamebeep.com. Please let me know if that'd be ok. :-)

    Cheers,
    - Bret

    ReplyDelete
  57. Wow, wish I'd seen this at the time! Cool project! Too bad I'm all allocated right now. :)

    Danc, have you ever seen "Dark Cloud" (PS2) and it's sequel? There are several Georamas or what-not that are basically villages you furnish and populate, trying to keep everybody happy... It's a main plot element, actually, and extra jobs give you bonus points/items. Very interesting.

    Cheers!

    ReplyDelete
  58. Just as a minor update, I created a little video of what I've gotten so far on the game.

    http://moonfire.us/blog/2007/10/05/cutegod-movie-1/

    It's pretty big (14 MB) as a flash video goes, but I'm pretty happy with it so far.

    ReplyDelete
  59. Wow, boy am I ever late to the party

    http://code.google.com/p/cutegod/

    There's my current progress on implementing this game. I've encorporated a few Ideas I got here (3d and environment) and plan to extend the idea by using a water source tile which will then generate water tiles using a particle effect.

    The plan there is to make the game less about puzzle solving and more about landscaping.

    ReplyDelete
  60. This comment has been removed by the author.

    ReplyDelete
  61. Travis: I don't think you are that late. Not like we have a time limit. :)

    I got an installer for my game up at http://mfgames.com/games/cutegod/

    It is playable as a game now. Feedback on my forum is greatly appreciated, of course, the only way to make it better.

    ReplyDelete
  62. Hey D.Moonfire, I saw your game listed on happypenguin! It didn't work for me, a few people there reckon one of the libraries you are using is the problem (in that we don't have it).

    I've got an alpha uploaded in zip format. It's pretty raw, but it's got most of the basic features. I'm thinking I'll probably move to ogre before making any more changes though.

    ReplyDelete
  63. Travis: Thanks. Yeah, I was surprised to see it actually on happypenguin when I was wandering over there for some reason. I commented on a few things and 0.3.0 (which goes out today) should fix a couple of the bugs they were having (plus the amd64 bug).

    Just trying to get things cleaned up and polished, you know? But, I've gotten a lot of really good feedback for Danc's graphics (even if I redid part of them for my purposes) and how the game plays. *squee* :D

    ReplyDelete
  64. just a quick question... if by chance a fun iteration of your concept is developed would you go further with the game art to completion?

    ReplyDelete
  65. Danc,

    Do you have any idea on how big the game board will be? I'm trying with a 16x5, but 4x4 houses are too big...

    BTW, do you have any house mockup? I couldn't figure out how to build them in various shapes.

    Regards,
    Eduardo

    PS: I guess I will have an playable version soon... Currently, only block movement and pray accept works.

    ReplyDelete
  66. Eduardo Costa: For my version of the game, I'm using a 5x5xN board where each additional stage adds 5 to the right. That is 5 tiles deep and 5 tiles tall and the width extends "forever" to the right.

    A 4x4 house lays out pretty well on that. Though, it is pretty cramped, but I found it still looks pretty decent. When I get back to this, I'm planning on making it a bit wider but I'm also deviating from Danc's graphics because of usability/angle. And maybe switched to a more combinatorial layout like what Danc was talking about with 2D avatars.

    http://mfgames.com/svn/CuteGod/trunk/Resources/layouts.txt
    http://mfgames.com/svn/CuteGod/trunk/Resources/layouts.xml

    The above links have a few examples of my own houses/constructions. The XML is a bit more fitting with the actual tile names (Roof North instead of RN) but I found the TXT version easier to edit.

    If you like any, feel free to use them, joys of open source. :)

    ReplyDelete
  67. Danc,

    Now it is official! I finished my first attempt on CuteGod! You can check it out on:

    http://extremejava.tpk.com.br/cutegod/

    Regards,
    Eduardo

    ReplyDelete
  68. Eduardo Costa: Pretty nice little game there. I love the font you are using, is that a image font? I like the little bounce for the tiles.

    It wasn't intuitive to drag the character to their tile so that took me a few seconds to figure it out. I also think you'll find doing the shadows will really help with the interface.

    But overall, a very nice job. It was fun to play (but I'm work, so I can't do much).

    ReplyDelete
  69. Hi Eduardo!

    Very nicely done. I wasn't convinced that this game design was revealing it's spark of fun. However the way that you've balanced the patterns and resources, it is actually an interesting challenge to arrange all the pieces correctly while the number of moves count down.

    Shadows would certainly help people understand the height of the blocks and there is a lot of tweaking left to do with the exact 'feel' of the game. However, in terms of finding the fun, this is a wonderful prototype!

    take care
    Danc.

    ReplyDelete
  70. Danc and Moonfire,

    I'm really glad you like it.

    I've developed the code to paint the shadows, but it slows down the game. Since a 3 FPS game isn't playable, I decided to deactivate that part.

    Dragging the prayer is something I will change - just need to figure out how. If I keep them on their place, they will make the game harder, wasting the space around them. They could jump there by themselves, but I don't know if it will be a cool effect.

    The font is name "Heartland" (www.haroldsfonts.com). It's TTF, but I changed it to PNG to allow using it on mobile devices.

    ReplyDelete
  71. Eduardo: If you look at my version, you can see the prayer's jumping around (mostly a random right/left jump every few seconds). I have some idea of how to expand on that, but I keep getting distracted. :)

    Yeah, FPS can get really nasty with shadows. I ended up putting in a bit of code to reduce the number of shadows I generate, but I'm still not entirely happy with the results. I'm considering doing a in-code pre-render with shadows that builds up the shadowed blocks and keeps it in memory (instead of rendering it out to disk) and see if that speeds things up.

    ReplyDelete
  72. I have to admit that noticing that this prototyping challenge was originally posted in 2007 has really gotten me concerned about what the hell I've done with the past two years... but anyway:

    I did put together a small Flash game called "Benevolence" that was inspired by the Cute God design and makes use of the Planet Cute graphics, and I thought it might be worth sharing it here. Admittedly, it is a *huge* simplification of the idea all the way down to a sliding tile puzzle.

    I've played around with the original design a few times since it was posted, and never got it to "feel" right, but I still liked the idea of the matching patterns to build houses and environments for the little people, so I wanted to express that in some fashion, at least. I've been experimenting with Flash quite a lot lately, and it seemed like a good chance to do something with the idea.

    Benevolence is online at the following URL, for anyone who might be interested:
    http://www.thewasabiproject.com/flash-games/play/play-benevolence/

    All kinds of feedback are always welcome.

    And, as always, thanks Danc for the ideas, the art, and the whole Lost Garden blog -- they've all been awesome resources.

    ReplyDelete
  73. C Berube: Pretty fun, actually. I found the original few levels to be rather repetitive, mainly because the same pattern pretty much solved most of them. But, I like how you did the tiles and the feedback is wonderful.

    Minor suggestion. Use the stars as a score and remove one star for every move you make? Might give more inspiration to finish, but still, I liked it.

    *sniff* even if you didn't like my attempt. :P

    ReplyDelete
  74. @C Berube: Sweetness. I played for a while and it is surprisingly polished!
    - Love the joy of building the house at the end.
    - Love the difficulty ramp. I dislike tile sliders, but I was able to play this one.

    Are you going to release this on various portal sites? I can see it getting a few hundred to a 1000 on FlashGameLicense.

    One thing it is missing: Some feeling of progression and advancement.
    - Unlocking levels.
    - A score or badge that gives you something to strive for above and beyond just beating the level.

    Good job!

    take care
    Danc.

    ReplyDelete
  75. Please allow me to resurrect this topic and announce that I developed an iPhone version of CuteGod!

    http://itunes.apple.com/us/app/cute-god/id421655156

    It was based on my Java version, but improved (a lot) to use resources from the iPhone platform. I hope you folks enjoy!

    ReplyDelete
  76. http://0xfaded.com:8001/

    Slightly different take. I made this in a weekend and its highly unpolished. Its multi player and everything is done in html5, so you'll require a real browser.

    ReplyDelete
  77. Not related to the prototyping challenge per se, but I recently used the PlanetCute tileset for a procedural map generation demo. Like many it seems, it took me a little time to "get" the proper way to use the shadow tiles. Once I got them working though, it was totally worth it.

    In case it helps, here's how I broke down the logic for myself to make it easier to implement in code:

    For a given tile:
    1. If a taller tile exists to the N, E, S, or W,
    Draw the N, E, S, or W shadow on the current tile
    2. If a taller tile exists to the SW,
    Draw the SW shadow on the current tile only if the tile to the west is the same height or less
    3. If a taller tile exists to the SE,
    Draw the SE shadow on the current tile only if the tile to the east is the same height or less
    4. If a taller tile exists to the NW,
    Draw the NW shadow on the current tile only if the tiles to the west and to the north are the same height or less
    5. If a taller tile exists to the NE,
    Draw the NE shadow on the current tile only if the tiles to the east and to the north are the same height or less

    If you're interested, you can see my C# implementation in this post on my blog:
    http://gamedevwithoutacause.com/?p=495

    Oh, and thanks for the tiles, Danc! They're great!

    ReplyDelete
  78. Hi Daniel,

    My name is Anthony. I'm from Cameroon and I'm studying Computer Science. I just wanted to say A BIG thank you for making your graphics available. I used them in my RPG-style/Puzzle game. I didn't forget to put your name in the credits at the end of the game :)

    Here is the link to play the game:

    http://www.scirra.com/arcade/puzzle/864/thisiscute

    ReplyDelete
  79. Hey! I know this may sound awkward but what software do I use to compile up the tiles? Certainly not "TILED" because the software does not help me in making 3D maps (like CuteGod)...

    SOMEONE HELP
    REPLY AT - utkarsh.kumar05@gmail.com
    Please do a little favor, either reply over here or mail me.
    Spend a little more time with your keyboard :D

    Peace

    ReplyDelete