" Unity is one of the most incredible tools I've used. No scratching your head trying to figure out how to do 3D graphics, or to add physics, or how to make things interact. "
Hunt Sparra, just a guy interested in making games for his son
UnityWeb-PlayerBuyTryGalleryCommunityDocumentationsSupportCompanyNews
My Talk
The talk went fine (I think)...

Here are the slides - I'll post some demo apps later this week.

smoke
|
Oooh
Been spending all day getting my stuff in order for the VisionDay conference, where I'm speaking on my deferred particles...

Been cutting edge just has a certain sleek feeling to it.

smoke

I'll post my slides here after the conference...
|
Rhinegold
Writing this in the train on my way home to my sleeping son. I've just been to see The Rinegold, the first opera of Wagner's Ring. By the end of this week, I've seen the entire work.

It was great. So much more emotion than any game I've ever played. Is the games medium ever gonna get close to the same level of involvement, of artistry, of passion - or are we just gonna make better and better bumpmaps?

It's weird... In a way, I think the games medium has enormous potential power - since we can let our audience interact we could make fantastically memorable scenes in our games. But any kind of drama I as a designer have planned gets shot to hell the moment the player actually begins interacting with it. I guess the main question comes down to 'how do we make sure we have a dramatic arc' - when the player is doing everything they can to fuck it up...

It's an interesting question. I so do not have an answer... I'll blog as I think about it.
|
Smokey!
From the OtEE R&D branch... Winking

On the 4th of June, I'm giving a presentation on deferred particle shading... I'll post the slides after I've given the talk, but for now here is some bumpmapped smoke Winking

Picture 1

Oh, and don't hold your breath... This shot is from our tremendously unstable Intifada branch of Unity, so these features are slated for 2.0....
|
Handheld Camera
About a month ago, we did an Intifada video - basically cheating in every way we could in order to show the game as it will appear by the time we ship. It was really good, but something kept bugging me - There was just something wrong with the feel...

A couple of days ago it hit me - We have a lot of Hollywood crane shots in the video... Nothing too fancy - something like this:



All well and good. But the story of the game is of the player as a journalist. This means a dirty, down-to-the-ground feel. Crane shots communicate Hollywood to me, hence no go....

So I've decided that we 'shoot' all cutscenes with a 'handheld' camera. This is fun to make. So far, I'm using various forms of Perlin noise - one on the camera position, andother for the camera direction to get that handheld feel. If the camera is moving or rotating, I increase the noise to simulate shaking hands. After the camera comes to rest on its new target, the noise fades down over time.

For the main rotation, I use a spring-damper based system - tweaked to overshoot a bit. So if the cameraman has to turn 120deg to capture a new person, the camera will overshoot a bit & get lots of noise.

The final idea is to use the camera as a dramatic element - when we want to communicate an intense situation, we turn up the amount of handheldness. The final part is the editing... That's gonna be hard. The expression I'm really looking for is lots of short shots, overlapped like mad - trying to capture what's going on in this confusing world... Sort of putting the cameraman at the same job as the player. To communicate the confusion, getting it out through all possible channels.

Really looking forward to seeing how it all comes together... No idea how to handle the positional audio though... Need to study some movies that have this editing style...
|
More screens
These are fun days

Picture 6

skylines
|
The Day The Soldiers Came
Hadid, 8 years old, looks on as his parents are told that their house is to be demolished

Pasted Graphic 2
|
Coming Along
We're doing nice progress on Serious Games....
Pasted Graphic 3

Pasted Graphic 4

Pasted Graphic 5

|
The OtEE Game
Joe and Aras have come up with the coolest game idea: Webcam-controlled dragon game. Control a dragon flying over a landscape with your arms. Diving into valles, rising up into the clouds... This is gonna rock so much.
|
GameJam coming up
Hi guys...

Tomorrow is the start of NordicGameJam here in Copenhagen. We've secured 12 macs thanks to Apple, and will be running Unity on it.

I'll be doing a 3-hour unity introduction and will be cutting it up in 20 minutte podcasts. I'll also be posting here over the weekend, so watch this space...
|
Playing God
Finally reached the point where implementing a strategy game is fun. All major variables in our simulation of the Israel / Palestinian conflict are locked down. Now I just gotta code it. What can I say - code like this is just incredibly fun to write;

From Population.DoTurn:

Population.Die (); // Kill people from social reasons or old age
Population.Breed (); // Make all the people breed to replenish

Then when I hit the End Turn button in the game, I can see the new houses being built over Israel & Palestine.
|
Busy Busy Busy
...People who blog have too little work to get done

(Dedicated to Keli)
|
Hack of the week...
In film lighting you often add rim lights to give your characters a well-defined silhouette. This looks great, but is not done in games as rim lights break when you begin to move the camera:

Untitled-1

I've had an idea for a quick hack for about a year, that I finally got round to actually trying out: Just take the directional rim light and parent it to the camera, so it maintains its angle when the camera moves. It works a lot better than expected:

Untitled-2

In the 'real' world I'd add a small fill light, but these settings were meant to show of how it looks in the worst case

|
Next Game Screenshot
image
|
Cg vs. GLSL
We've been receiving some requests of why we go with Cg rather than the 'industry standard' GLSL for our high-level shading language... Here are my thoughts about it:

There really is little difference from the coding perspective. The languages are pretty much the same. The main thing is in distribution & compatibility:

ATI really likes GLSL - The code Cg generates is optimized for NVidia cards, and there is not a lot they can do about it. The could make their own backend, but I think they have better things to do.

GLSL is not available now. It is not available for the Mac 'cept in beta OpenGL drivers. Even when they ship it, I have little hope it will be backported to older OS X versions - Apple doesn't do that. Not sure exactly what the status is for windows - I think it's available, but that doesn't mean we can count on people having it.

For the future, the main thing is not to have to rewrite too many shaders. Let's look ahead into the future when Unity holds complete supremacy:

Macs: In the ideal world, GLSL. It's a bit nicer, its potentially faster on ATI cards. In the real world, we don't want to make Tiger-only games. Does anyone know of a GLSL to ARB_FRAGMENT_PROGRAM converter? That would be nice. Then we could run GLSL if available and fall back to ARB_FRAGMENT otherwise.

Sony is backing Cg for PlayStation3. End of story. Want to do cool shading on PS3? Use Cg.

XBox360: That will be a DirectX port of Unity. That means HLSL (DirectX's high-level shading language). Cg is close to that than GLSL, so again, Cg wins.

Window based machines: Currently we'll use OpenGL, so that'll be the same story as Macs. XBOX360 meand DirectX, so then we get a case much cloase to XBox360. (Cg)

I'm not totally sold on Cg. The language has a number of 'issues', the compiler is buggy, it's not cool. It does however work. And we can make it work across the board.
|
Argh... The excel sheet of pain
Been trying to schedule the next 5 months of production on the next game
screen
Entering a ridiculous amount of numbers is fun. Just like having a wisdom teeth pulled.

Oh, and btw: Learn from me - don't bring your cellphone with you in the shower
|
Moments of excellence
Warning: non-tech post

One of the things that really turn me on is what I dub moments of excellence. It is those rare moments where everything come together and you are able to jump out of the ordinary. Think that magic thought. Grab that girl's hand. See how that mechanism works... When you get the shivers and push on anyways.

I guess I try to structure my life to optimize for those moments. Have for a long, long time... Back when I made weird indie movies it was the same. When I have them, that's when I get all my cool ideas -

Lately I haven't been having a lot of those and it sort of has me worried. I hope it's just my resources are a bit drained - guess I need to gather some surplus energy for these things to kick off.

Gotta take more care.

EDIT: After writing this I went to soak in a bathtub. While submerged, I had a cool idea for how to do HDR rendering in a really cool & simple way.
|
Looong compile times
I've found the perfect way to do docs: You use compile time to do it.

This way, I've started the (will-be) quite large ShaderLab reference guide. Not much to see yet, but it'll come... For now, take a look here.
|
Got IT!
These are great days for me... After having done the ShaderLab for 2 years, and not really doing funky stuff with it, it's finally playtime...
After some hours, I got another cool high-end thing going - meet Venus

Pasted Graphic

This is a setup that calculates the depth the light has moved _through_ the mesh, to correctly simulate translucency. Then a few spec highlights...

Don't expect this one out-of-the-box in 1.1, though - it took me ages to set up...

Oh yeah - I think this shader will be great for cheap, correct light plumes. These will look a hell of a lot better than the normal 6-quads on top of each other approach...

\me sleep

Update: Tweaked params a bit - and made the translucence dependent on lighting hitting the back side of the status as well as the depth...

Here we have A light coming from front of the statue..

Unity(Debug)ScreenSnapz002 Unity(Debug)ScreenSnapz001


Small effect on front side, large when seen from behind...

No more statues for a few days... Next up is Refractive water particles
|
PRO 1.1 feature
Here's a small movie of some of the RTT functionality for Unity 1.1



Just came home from venice. Time to check this baby into SVN....
|
Racing, pt. 1
Since the cat is now out of the microwave about our next tutorial, here's my thoughts on making a racing game.

My job in this is to make the track, so I've been thinking a bit about how to go about that.. I always start these things by taking a step back and trying to get a wider perspective; what is racing about? Which part of it do we want to relate to?

Man-Machine? possibly... NFS has a lot of this 'build your ultimate pimp ride'
Sports? Part of it - somehow it doesn't really interest me, though...
Exploration? sortof - since the road is there it's not exactly unexplored
Travel, Voyage? Yeah, I like this... Driving off into the unknown, easy rider, strong mythology. Even if the road's been built it's still a personal exploration....

Ok. Some sort of travelling thingy... Lets take a look at our format... It's a double thingy: A Unity tutorial & a tech demo. Tech demo means flashy graphics. Since its a Unity tutorial, we want to keep the code simple. Not a simulation. We don't want to get dragged down into the precise handling characteristics of different cars. There's also entire teams that specialize in this field, so anything we do will probably suck by comparison.

Ok, we got something here... Personal journey, exploration (=>exotic), freedom, simple car model.... Outrun? I always liked that game... Could write an entire post on why that game is so great...

Ideally, a journey has a start and an end, but this is a bit problematic for us: We don't want to model 20km of highway. Most games do circular tracks - here's my thinking of why that works:

Human Psychology: We like to balance the known & the unknown. We like to be surprised and we like to feel reassured. We like to feel we get better at stuff. If you drive a long linear track, it takes a long time to learn it - each curve is different. If you have a circular track, in each race, you get to try all curves 3 times. You get better at them within a single game.
Asset production: If you drive 3 times round a circle, you only need to produce a third of the assets.

So we do a circular track that feels like open road. Light hearted. Easy to control. How do we get the personal part in? Cars aren't that personal. Let's make it an open sports car and put in a driver. You don't see him all that much, but just him being there adds a lot. Ideally, we could do the outrun girl that points her finger at you when someone else overtakes - gives a lot of empathy... That would be overkill, though so lets not do that.

Exporation we don't do (Outrun does this perfectly by letting you choose your route). Exotic... Hmm I'm from the north, so something southern. Mountains, palms, small houses, water (then we can also show of reflections). Sunny. How lucky I happen to be on holiday in Venice B-). We could call it postcard racer... Drive from one postcard to the next.

To maximize good looks, I think a storyboard would be helpful. A series of images with track highlights. I don't understand why this is not used more. Since the car handling isn't done yet, I can't really make the actual track... Might as well do the storyboards now.
|
Render To Texture
Sitting on a plane on my way to Venice.

Been working like mad the past week on getting RenderToTexture nice... The goal as always is to make it appear simpler than it actually is... Nearly there now... Here's what I hope to get in in time for 1.1:

Camera's have a TargetTexture. Create a RenderTexture in the assets & just drag it on to the target texture. Then assign the texture to a material. Instant doom3-style surveillance cameras.

A new function in Scripting: RenderImageEffect (RenderTexture source, RenderTexture dest)
You can then do blurs, glows, etc... As long as you always get the image from source to dest. These behaviours can be attached to a Camera. You can attach multiple ones to get a stacked effect.

A Unity Effects Api A library of helper functions for doing blurs, zooms, etc in hardware. CoreImage, but multiplatform... At first, I won't have time to get a huge API in, but that will change. Source should be included in the release - if I forget it, beat me up a bit.

2 new shaderlab pass types:
GrabPass - grabs whatever is on the screen before rendering this object. You can then use this screen grab in the next pass, distorting it. This is how we did the GooBall shader - only we had to configure so much junk to get it to work... Now its a one-liner in a shader.

OffScreenPass - renders the object to an offscreen buffer. In the next frame you can use this buffer as part of some shading calculations. This is great for doing translucent stuff (lamp behind a thin layer of skin), or really most kinds of deferred rendering. Got some great ideas for particle stuff...

All of these things are relatively simple by themselves, but when combined they get evil - all of these effects use at least one render texture. Unless you're smart about it, video memory's gonna run out quick. So we now have automated rendertexture sharing, garbe collection, and a lot of new camera code. However, I'm pretty certain that NO other engine allows this configurability and having it all just work. Not even Unreal3 from what I've seen.

(and yes, I want to beat Unreal3 in Unity2 - don't know if I'll make it)
|
Hi there
Okay - hi guys. This is my first blog (doesn't that just make you NOT want to read this?)

Anyways - I'm Nicholas, OtEE's residential artiste Winking

At days, I'm working on our next game, an educational title about the Israel/Palestine conflict. At nights, I hack Unity & do a small top-down shooter. Mostly Unity.

My small top-down shooter is basically taking the kind of game I grew up playing and turning it into 3D. As the gameplay is strictly 2D, I sorta call it 2.5D. The design is simple. Top-down shooter. Player starts somewhere with a pea-shooter mk1. Then he kills enemies, grabs money they leave behind, and use it to upgrade his ego (oh, gun). There are a few cool twists, but that's basically it. Think Chaos Engine meets Commando with the weapons from Xenon2

2.5D
So far, I've spent something like 8-10 hours on it, and have a basic labyrinth with a cylinder running around shooting blue balls at cubes. It is so nice to be working in 2.5D - all the scripts are so much simpler as you (mostly) can assume that you're working in 2 dimensions. None of the GooBall sticking to oddly-sloped walls here (or ever again, for that matter)

Greed
I don't want the player to stand back and take enemies out from afar - this is about action, after all. Last night I added the coins the enemies leave behind when shot. The coin disappears after a few secs, thus forcing the player to rush in (which will trigger more enemies). Much more action.

I cooked up a small script to make a spinning bouncing coin animation (could have used an animation, only I can't animate). Getting the feel just right was a bitch, but it got sorta right. Then I modified the enemies to leave the coins behind when shot. So far the player can't pick them up and they don't disappear yet.

Unity
This brought out an interesting idea for Unity. Right now, all enemies have a reference to the coin they should leave behind. However, I only really want 3 or 4 different ones through the game, so a popup enum would make a lot more sense than a reference I have to drag. How to get from the enum to the actual coin is a bit problematic. I could make a global settings object that stores the references, so I can query for that, but it seemed a bit overkill. Would be much nicer to just have the coin references as class variables and be able to edit those. Then the popup could just fetch the reference from the class variable. Only we don't have any editors for class variables, so I can't assign the reference. DOH! Would be nice if public class variables were editable when you selected the script.
|