kodu

June 2009 - Posts

No news tonight

I promised my wife a night out and you don't mess around with that. I'll see what tomorrow brings...no more posts tonight - rest those F5 keys...

Posted: 06-30-2009 5:40 PM by mattmac | with 74 comment(s) |
Filed under: ,
Kodu: What to Expect

Thanks so much everyone for helping us launch our little fledgling to such a receptive audience. As folks are getting excited and waiting on the ETA (me too!,) I thought it would be a good time to calibrate some expectations. Kodu is far and away the coolest project I have ever worked on - it'll be tough to top in the next 25 years of my career in software, but it is a 1.0 so it's good to understand what's there.

1. It is programming. Kodu's a real, albeit small and specialized language. Simple things are very simple to do, and complex things are possible. If you want to do something super-complex, you will have a learning curve, but nothing like what you'd see with a conventional programming language.

2. It can't do absolutely everything. We managed to squeeze in just enough (mainly camera support) for side-scrolling games, but there are still little annoyances: for example, you can make roads float in the air, (such as for a jumping game) but if two roads cross over each other, you can only place objects on the higher road. Annoying; we just didn't get to it.

3. The characters all move differently to support different design goals. If you're into fast, twitchy action, go with the saucer, wisp, or puck, all of which can turn on a dime and accelerate very quickly. Most of the other characters are a little slower, some a lot.

4. Everything has a cost. Sometimes some fairly simple things can be kind of expensive when the game is running. We try to warn you when you've got to much going on in your world - look for the thermometer - but we err on the side of letting you go for it, so it's up to you to keep things running smooth by trading off how you're using different features. For example, if you have a bunch of characters that are all trying to look at each other (using the "see" sensor,) they'll be doing a lot of expensive tests against the terrain. This applies to other things as well: for example, if you drop 50 coins in a level and program them all to react when bumped, they're all doing a little bit of thinking each frame that really adds up. Better to program the character to detect the coins, so you only have one brain running rather than 50. Hint: hearing is more efficient than seeing, because it doesn't have to check if something's blocking.

5. It's a 1.0 from a small team. We do work at Microsoft, but the Kodu team (design, dev, and test) is only six people. I'm sure we missed something. We are standing by to fix any bugs the minute they appear and to flip a service build quickly if necessary. I've been in software long enough to be quite sure we'll need a refresh at some point.

6. If you've been in the playtest or review, your worlds will not be available in the retail version. This is a security thing on the Xbox 360; we can't do anything about it. If it helps, I've rebuilt dozens of levels many times. You get pretty fast at it.

7. The built-in games are just a start. We've put a good double handful of prebuilt content, all built by the team and our early testers. We expect you can do way better. We have designed each of these worlds to show some realistic techniques. We'll be doing some deconstructing of these levels on the blog so you can see why we "did it like that." It's our hope that you can find the world that is closest to what you're thinking of, and then go from there.

8. Kodu is for making small games. We considered many features that would support very large worlds and very long campaigns, but were very conscious that the toolset stay simple and streamlined. Some of these calls were wrong, but we are very happy with the balance we came up with - a set of quick, simple tools for making very cool small games. If you're careful with performance, you can make significantly larger worlds, but you're not going to make Gears 3 with Kodu 1. Haiku is a word that comes to mind. Here again the built-in levels show you some of the tradeoffs you can make.

9. Use the tweak screens. Select a character and press <x>, or go to the world settings tool (far right in the tool palette.) These let you change a lot of nerdy - and very useful - things like the sky color, basic lighting scheme, character speed, bullet speed, smoke trails on your missiles, and lots more.

10. You are Kodu. The success of Kodu depends entirely upon what people build with it. I have been really surprised by what people have pulled off with it already, and supremely delighted to see the level of buzz in the community. It's out of our hands now, and we are counting on all of you to realize the dream of the Kodu omniverse. We're all just getting started...

 

Posted: 06-30-2009 2:48 PM by mattmac | with 49 comment(s) |
Filed under: ,
Kodu Review is Complete

Please stand by - it's looking good, but no promises until the jury returns to the courtroom.

Posted: 06-30-2009 10:09 AM by mattmac | with 84 comment(s) |
Filed under: ,
Kodu Peer Review Process 66% Complete

We're all just sitting around, making games, talking about our incredibly exhilarating / exhausting weekend, and refreshing the peer revew status page every five minutes. It's currently at 66%.

While we all sit around, taking notes, making games, and waiting to clear the review, we've got another desktop for you - a little more abstract, a little dark, a little dangerous... ;)

I love the little worlds floating in space. One of the things we talked about when we started Kodu is those cool little isometric vignettes in Scientific American - like ones that show a little cutaway view of, say, an ocean scene, showing the research vessel on the surface and the diver down below. Cubes of water are cool.

Posted: 06-29-2009 2:23 PM by mattmac | with 54 comment(s) |
Filed under: ,
Kodu Released to Peer Review

We put Kodu into peer review about one minute ago.

This means that independent developers who belong to Microsoft's XNA Creator's Club will be reviewing Kodu for basic stability, appropriate content, and copyright issues.

If they find a serious bug, we'll fix it and restart the process.

If all goes well, once a certain number of developers sign off on it it will go live for sale on the XBox. The soonest this could happen is Tuesday the 30th as it takes about 48 hours after approval to reach the service.

If we do hit problems, I'll give an update here. We've been so through many different permutations I'd be surprised if we found a bug that took more than an hour to fix.

The team has been working all weekend chasing down all kinds of increasingly tiny fixes. No major last-minute earthshakers, but a few interesting twists.

It's looking really good, but we're all super-tired.

But not too tired for a new desktop!

Once we clear peer review I've got a tour of the sharing system. It's a peer-to-peer sharing system with your friends list. If folks want to swap levels, my gamerTag is RandomWave - feel free to friend me - I'd love to gather cool levels from folks.

Update and a Desktop Image

Pardon the dust - it's been busy around here!

We are currently in playtest on the XBox Live Indie Games Channel. folks who are members of the XNA Creators Club are helping us bang on Kodu, trying out different features and giving us some helpful feedback that we are incorporating as quickly as we can.

We recently had a nice article in Seed magazine (online) here: http://seedmagazine.com/content/article/serious_fun/

All my time (and lots of it) is going into testing and polishing, but Brian Bosworth, our resident designer, busted out some wonderful Kodu desktops. Here's the first:

 

 

Posted: 06-27-2009 1:12 AM by mattmac | with 6 comment(s) |
Filed under: ,
Bonus Screens for You

This guy is definitely one of my favorite character designs from Kodu. (Hi Jeremy!)

Programmatic beauty. This wisps are moving in a complex pattern built in five or six lines of Kodu.

One of the latest-generation styles we've been playing with for terrain. Our goal is to support your ideas, but we like to throw in some crazy stuff too. This game, by the way, is played with one button.

Code with your kids

Here's a world I built under my daughter Milena's (5) direction. She sits on my lap and tells me what to build and I build it.

I make some land

"It's an island! Where's the ocean"

I make some ocean. What should be in the ocean?

"A submarine! Make it swim"

"A boat should be there too and follow it"

"Why aren't there trees on the island?"

tree..tree...treee

Should we see from the submarine? I add a clause that if you're holding the left trigger you get the sub's POV.

Eventually we added a hot air balloon, some blimps floating around on the island. I showed her a wall and she insisted "the trees need more privacy" so eventually the wall encircled the island.

2D Platformers

Here's a snap from a sweet little 2D platformer that Brad cooked up to prove out the genre.

The two tricks you need for a side-scroller are:

- lock a characters motion to a single plane parallel to the screen

- lock the camera angle so it can follow a character from a fixed offset

The other key is to use roads as platforms you can jump onto. You can raise all or part of a road into the air.

The look here was also Brad's invention - if you turn out all the lights and choose a bright background, the characters wind up looking like little 2D illustrations. It's very beautiful in motion, particularly when missiles start flying, etc...

A look at the tool palette

We've done many, many iterations on how to structure and present the core editing functionality. I'm pretty sure it can't get much simpler than what we're doing here and still let you build the wide variety of genres that Kodu supports.

Here's a look at the help screen for the tool palette, which focuses on the first four tools. These four do most of the work.

 

In case you're curious, the other tools let you:

- add and remove water (many of the characters go underwater or float)

- flatten an area - such as to make a level area for combat or driving

- roughen an area - this makes an area a little hard to traverse, but it's nice for visual detail

- character erase tool - for quick bulk deletion of charactes and props in a world (hard to see in this snap)

- world tweak - a few dozen detail tweak settings to do things like change the base lighting or skydome in the world

 

 

A Look at the Load Screen

This is where you go to load up worlds. We had to make it capable of dealing with tons and tons of files, so you have this gigantic list that scrolls left and right. We put the files into "buckets" (these are across the top) for the major categories. There's another layer of categorization in the filter menu ("show".) This gives you a bunch of tags for different genres so you can keep your creations organized.

The blue arrow on the big tile shows you that this world is marked for sharing. This means that when you enter a sharing session other folks will be able to download this level from you. More on sharing later...

Posted: 06-08-2009 10:54 PM by mattmac | with 10 comment(s) |
Filed under: , ,
So Busy, So Here's a Screenshot

Click here for newer Kodu posts

I'm doing final content passes as we get ready for release, which is the end of June. (Exact day TBD)

Thought I'd snap this nice picture of one of the "old school" sample levels, Pandemica. I like the details here. Mark and Stephen sure do nice shader work.

 

Implementing Invulnerability

Here's a level I'm working on today which is an retro invaders / galaxian sort of thing: good guy moving back and forth at the bottom of the screen, bad guys diving from above.

I had a problem where some of the more aggressive enemies could get down to my height and then ram my defenseless sides.

So I thought: I need a shield! But it can't be infinite - it has to be something I use sparingly. So you have a few seconds of shield when you press the button.

So in the code above, what you see is:

 // first make sure so we can see that the shield's in effect

glow - blue  

// use the blue score to keep track of "shield points"; subtract one each second

timer - one second : score subtract - blue - 1

// when we're out of shield, got back to normal mode

scored - blue - below - 1 : switch page 1

// blow up any saucer that touches me

bump - saucer : boom - it

Some variations you could try on this are:

// blow up anything that touches me

bump : boom - it

// heal 10 health points every second

timer - one second : heal - 10

// damage my health every second that shield is on (it's radioactive!)

timer - one second : damage - 10

 

 

Posted: 06-01-2009 5:00 PM by mattmac | with 7 comment(s) |
Filed under: , , ,