How Objects are Created for Video Games

Mar 26, 2016 8:59 PM

kurnett

Views

56612

Likes

3438

Dislikes

43

Step 1: Creating a base model.

In this case, I was making a barrel. Before you can move on to the fun stuff, you have to create a simple model to work with! There are a lot of 3d modelling applications to choose from (Blender, 3ds Max, and Maya are three well-known ones), but I used Maya. At this stage, it's important to make sure that the model's topology is good - that means making sure to only use quadrilaterals and to try to keep them as close to similarly-sized squares as possible.

Step 2: Subdivision and sculpting.

Next the model is brought into a 3d sculpting application, like Mudbox or ZBrush (I used ZBrush for this), and subdivided into millions of polygons so that you can sculpt finer details into it. This is why it's important to have good topology in the original model: if you don't, you'll end up with strange aberrations.

After the object is sculpted, the high-resolution version is exported to be used later on - you'll see why momentarily.

Step 3: Retopologizing the model.

Now we need to turn that 1,000,000+ polygon model into something that a game engine can use! To do that, we'll create an object very similar to the one in step 1. The reason we don't use the original model as the final version is that we're trying to minimize the number of polygons needed to accurately capture the form of the object - take a look at the top of the two models to see how the topology is different.

Step 4: UV mapping.

If we want to add textures to the object (and we definitely do), we'll need to do something called 'UV mapping'. Basically, we take the polygons of the barrel, peel 'em apart, and lay them out like a bear pelt (or should I say a barrel pelt, amirite). Then we can overlay an image on the 2d layout and the game engine will be able to render it all.

It seems odd that I haven't used the entire image to lay out barrel's UVs, right? That's because we're creating a thing called a texture atlas. It'll make sense by the end of this post.

We're now ready to export the low-resolution model. This will be the final version that gets used by the game engine.

Step 6: Baking maps.

You know that high resolution, sculpted model we exported earlier? This is where it comes back into play. I use a program called xNormal to bake maps from the high-res model (in other words, to take the details from that high-res model and convert them into a 2d image that can be applied to the low-res object).

I won't bore you with all the details, but again: I highly recommend reading up on normal mapping and ambient occlusion if you're interested.

Here's the final texture map! Specifically, it's an ambient occlusion map (basically a shadow map) and a wood texture. You can see that there are multiple objects in the same map (although it's not finished yet) - that's the texture atlas I mentioned earlier. Having multiple objects' textures in the same map allows the game engine to render scenes much, much faster.

And here's the second piece of the puzzle: the normal map. Normal mapping lets the game engine realistically fake how lighting affects little details - things like indentations, scratches, and warped surfaces.

Step 7: Putting it all together.

And there you have it! The final model with texture and normal maps applied in Unity. The scene is from a game I've been working on for a while, but it's nowhere near finished (which is why the background is incomplete).

If you guys have any questions about the process (or would like similar posts on related topics), lemme know in the comments.

If you're interested in modelling and/or game development, take note of the following:

- Unity is a very versatile, powerful, and easy to learn engine that's free to use for personal projects and some commercial endeavours: https://unity3d.com
- Blender is a free, open-source piece of animation software with a solid body of tutorials and how-tos: https://www.blender.org
- Autodesk Maya (which is what I use) has a free student version with all the features of the commercial version. Check it out: http://www.autodesk.com/products/maya
- Autodesk Mudbox is a 3d sculpting program. Like Maya, it has a free student version available: http://www.autodesk.com/products/mudbox/overview
- xNormal is phenomenal for baking all kinds of maps - textures, ambient occlusion, normals, height maps, you name it. Also, it's free! http://www.xnormal.net

I've only used blender before, it's an exciting new world for me currently.

10 years ago | Likes 2 Dislikes 0

This is so much more satisfying than when i made models for Half Life mods in the 90;s. Things have evolved since milkway (thankfully).

10 years ago | Likes 2 Dislikes 0

Neat. Thanks bud.

10 years ago | Likes 2 Dislikes 0

You should try Substance Painter. You can bake out normal and AO maps from the high poly model and then paint directly on the low poly model

10 years ago | Likes 3 Dislikes 1

Favoriting to never try later.

10 years ago | Likes 2 Dislikes 0

3/D or 5/7 for soaking those logs in pixels.

10 years ago | Likes 2 Dislikes 0

I would have soaked them in wood, but you work with what you've got.

10 years ago | Likes 4 Dislikes 0

dont worry, the programmers added 'if(Item.IsWodden()){Soak.Wood(Item);]'

10 years ago | Likes 1 Dislikes 0

I feel like a fool, I'm going to school for this and I do this stuff all the time but I never knew I could get FREE Internet points?!

10 years ago | Likes 2 Dislikes 1

The fake internet points are there, man. People like hearing about this stuff, apparently.

10 years ago | Likes 2 Dislikes 0

Cool post! So you make a higher res one first and then dumb it down?

10 years ago | Likes 2 Dislikes 0

Pretty much, yeah! The cool thing about modern modelling techniques is that you can flatten huge amounts of detail down into small sizes.

10 years ago | Likes 1 Dislikes 0

It just seems like a waste of so much work that goes unseen

10 years ago | Likes 2 Dislikes 0

C'est la vie and all that. At least I get to tell everyone on Imgur about it. :P

10 years ago | Likes 1 Dislikes 0

This is really cool showing people how it's done, but you did miss out PBR which is fast becoming the norm

10 years ago | Likes 3 Dislikes 0

That's actually a good point I didn't really talk about materials, though - that could be a topic for a future post!

10 years ago | Likes 2 Dislikes 0

Hells yeah :D More! Nice one

10 years ago | Likes 1 Dislikes 0

I made a Max Payne level once which took place inside a big green pyramid I created. It was really shit.

10 years ago | Likes 38 Dislikes 0

Can you post it?

10 years ago | Likes 2 Dislikes 0

JourneyEd.com and get the full 3 year version for like 10 bucks (2/2)

10 years ago | Likes 7 Dislikes 0

Just a quick little tip: If your comment is too long, reply to yourself. That way we don´t have to search for the second, third etc. part ;)

10 years ago | Likes 2 Dislikes 0

I tried lol. I'm on an Android and I couldn't reply to myself. Idk why

10 years ago | Likes 1 Dislikes 0

AMD user here, thank you for not having 500,000 polygons on useless shit, unlike Crytek.

10 years ago | Likes 4 Dislikes 0

The models didn't have that many polygons. They were added at runtime by a technology called Tessellation.

10 years ago | Likes 3 Dislikes 0

I know that, but this means he can add tesselation and it won't murder my framerate as much.

10 years ago | Likes 1 Dislikes 0

Crytek's didn't either. Tesselation adds polygons dynamically, but yes, it's an intensive effect so will hit your FPS.

10 years ago | Likes 1 Dislikes 0

The main issue was it was done with "help" from Nvidia, and love to murder and competing cards, their own included, with the effect.

10 years ago | Likes 1 Dislikes 0

Gonna use the space in the UV map for something else? I cried i bit thinking about all that lost space haha

10 years ago | Likes 2 Dislikes 0

Don't worry, it'll get used soon enough. :P I haven't finished all the wooden assets for the scene yet.

10 years ago | Likes 2 Dislikes 0

Btw all Autodesk programs are free for 3 years if you're a student but if you don't wanna use the educational version, you can go to 1\2

10 years ago | Likes 12 Dislikes 0

JourneyEd.com and get the full 3 year version for like 10 bucks (2/2)

10 years ago | Likes 2 Dislikes 0

(copied your 2nd comment so people don't have to search for it)

10 years ago | Likes 1 Dislikes 0

Thanks. For some reason I couldn't reply to myself. On an Android phone

10 years ago | Likes 1 Dislikes 0

hell

10 years ago | Likes 31 Dislikes 0

Made me giggle. Thanks.

10 years ago | Likes 1 Dislikes 0

Save yourself 700 $ and use sculptures, made by pixologic and is free to use. As for re topology from a high res model, instant meshes (1)

10 years ago | Likes 2 Dislikes 0

Scuptris is nowhere close to as powerful and versatile a program as ZBrush.

10 years ago | Likes 1 Dislikes 0

I'm a 3D design student and I had no idea we use both Maya AND mud on for stuff. Guess I'll be looking forward to that

10 years ago | Likes 2 Dislikes 0

Don't wait for your program to cover it! You're not gonna be prepared for a job if you just do your classwork.

10 years ago | Likes 2 Dislikes 0

Seconded. Classes will help immensely, but start experimenting now just for the heck of it. You'll learn a lot and make some cool stuff.

10 years ago | Likes 1 Dislikes 0

Believe me, I will.

10 years ago | Likes 1 Dislikes 0

I use maya and love it

10 years ago | Likes 5 Dislikes 0

last I checked (10 years ago) zBrush exported maps fitted to models. Why not do that with a low-res model instead of rebuilding and mapping?

10 years ago | Likes 2 Dislikes 0

ZB doesnt always create what you want in a low poly model and personal preference may be the reason for using xnormal.

10 years ago | Likes 1 Dislikes 0

I prefer the level of accuracy I can get by retopologizing in Maya. ZBrush would work, but it wouldn't be quite as precise.

10 years ago | Likes 1 Dislikes 0

I've done this and the only annoying part to me is getting the right texture.

10 years ago | Likes 2 Dislikes 0

It's a lot easier with applications like Substance (a bit crappy) and Quixel's dDo. It does a lot of the boring bit for you.

10 years ago | Likes 1 Dislikes 0

I'll look into those.

10 years ago | Likes 1 Dislikes 0

Is a good free alternative. Obviously they are not as good as zbrush or topogun, but they get the project done. (2)

10 years ago | Likes 2 Dislikes 0

Hi other CG artist

10 years ago | Likes 10 Dislikes 0

Hello

10 years ago | Likes 1 Dislikes 0

Yo

10 years ago | Likes 3 Dislikes 0

can i join the cg artist gang aswell? ;(

10 years ago | Likes 1 Dislikes 0

If you're learning 3D art, Unity is a horrible place to start. Unreal Engine 4 is free and has a much better toolset. Also, dat UV layout

10 years ago | Likes 3 Dislikes 1

Unreal looks great right out of the box. Unity can look good, but requires far more tweaking and plugins.

10 years ago | Likes 1 Dislikes 0

First engine I learned way CryEngine. I've had a hard time actually finishing a level in Unity or UE4 but I've done several in CryEngine.

10 years ago | Likes 1 Dislikes 0

1) CryEngine's good to get started with because it has plenty of sample assets, and outdoor levels are easy to make. Approaching it as an

10 years ago | Likes 2 Dislikes 0

Thats why I learned it first, tons of assets I could just throw around and experiment with.

10 years ago | Likes 1 Dislikes 0

2) artist is particularly horrible, though (not as bad as Source). The materials and workflows are set in stone, unless you know HLSL.

10 years ago | Likes 2 Dislikes 0

I've found Unity to be a fantastic playground for new developers. I don't disagree that Unreal is a great engine, but don't undersell Unity.

10 years ago | Likes 2 Dislikes 0

Even with Unity 5's improvements, it still lacks a proper material and/or particle editor which makes it useless for learning artists.

10 years ago | Likes 2 Dislikes 0

And yes, there's Shader Forge (etc.) - but Unreal Engine has had this for a decade. It's a critical part of the art pipeline.

10 years ago | Likes 1 Dislikes 1

Neat. More please.

10 years ago | Likes 2 Dislikes 0

Will do. o7 Is there anything specific you would want to see a post on, or should I choose another random game dev topic?

10 years ago | Likes 2 Dislikes 0

I likely will never put any of these things into practice, but I like seeing what makes the things I like tick.

10 years ago | Likes 1 Dislikes 0

How about making a human or creating animations like crouching?

10 years ago | Likes 2 Dislikes 0

Creating a human might be a bit too much detail for an Imgur overview, but animation workflows - I can do that.

10 years ago | Likes 3 Dislikes 0

Thanks. Im in school for comp sci and in a game dev class so this overview was nice

10 years ago | Likes 2 Dislikes 0

Omg I love this. This is my dream job and I just am not talented enough to do it. I work in development instead.

10 years ago | Likes 4 Dislikes 0

Not a bad guide. Your uv mapping should completely utilize the 0/1 space in order to get the most from your texture work though.

10 years ago | Likes 2 Dislikes 1

use the whole space, but game assets are a whole 'nother can of worms. (2/2)

10 years ago | Likes 2 Dislikes 0

Well he's creating a texture atlas. Meaning he'll create maybe another 9 assets to fit into the same uv space to reduce the amount textures.

10 years ago | Likes 4 Dislikes 0

as a programmer, thank you for doing this. changing textures in memory is costly

10 years ago | Likes 1 Dislikes 0

I use a 4096x4096 texture atlas, so the actual resolution is still decent. If I were rendering this out in Maya, I definitely would (1/2)

10 years ago | Likes 1 Dislikes 0

Didn't think of that admittedly. When I did level design it was always requested one uv set per obj because of how finnicky udk is.

10 years ago | Likes 2 Dislikes 0

Yeah, apparently (from my talk with another commenter) UDK handles materials way different than Unity does. I'm gonna have to look into it.

10 years ago | Likes 1 Dislikes 0

Yeah. It handles each material as a separate entity. I suppose in theory you could group objects, but for the sake of simplicity.

10 years ago | Likes 1 Dislikes 0

1) Atlassing is standard practice in UDK and UE4. What they may have been referring to is the UV layout for lightmass, but in that case

10 years ago | Likes 1 Dislikes 0

2) you use two UV channels. UE4 handles that automatically these days, anyway.

10 years ago | Likes 1 Dislikes 0

That's wicked. I haven't done much in UDK for the last few years, but I'm definitely out of practice hearing all this neat stuff.

10 years ago | Likes 1 Dislikes 0

Blender is great. There are loads of tutorials online.

10 years ago | Likes 7 Dislikes 1

Any you would suggest for someone who has no 3d modeling exp at all?

10 years ago | Likes 1 Dislikes 0

Yes. It's mostly key commands so learning those will help and there are so many great tutorials to start and move forward

10 years ago | Likes 1 Dislikes 0

CG Cookie, crying in fetal position, blender guru, etc

10 years ago | Likes 1 Dislikes 0

Always upvote xnormal :D

10 years ago | Likes 2 Dislikes 0

As a Max user, I don't really understand why people want the hassle of exporting to another software suite?

10 years ago | Likes 1 Dislikes 0

Mostly because I can't practically import a three million poly model from ZBrush into Maya, but xNormal can process that with no problems.

10 years ago | Likes 1 Dislikes 0

As a Blender user..... that's my explanation, blender XD

10 years ago | Likes 1 Dislikes 0

Fair point. I just figure there must be a reason Max / Maya users use it as well, but I've never figured it out.

10 years ago | Likes 1 Dislikes 0

To be fair you can get great results in Blender but you nearly always get great results in xnormal. It also does a load of things, is free

10 years ago | Likes 1 Dislikes 0

What an inefficient UV layout, you should be ashamed :/

10 years ago | Likes 2 Dislikes 1

The layout assumes an indeterminate number of assets to be accounted for. It's not ideal, but it leaves enough room to work safely.

10 years ago | Likes 1 Dislikes 0

Just put things on separate maps, each using the full 0-1 space. You can combine maps later if you need to reduce draw calls.

10 years ago | Likes 1 Dislikes 0

I suppose I can give you a pass, though just about every modern game assigns layouts per model. Texture atlases are old school.

10 years ago | Likes 1 Dislikes 0

Creating 0-1 layouts for each model would require a new material for each model, which would cripple performance (speaking from experience).

10 years ago | Likes 1 Dislikes 0

In my experience with Unreal, I've never had a problem having hundreds of materials. I guess you have a point for console or mobile games.

10 years ago | Likes 1 Dislikes 0

Very interesting... In Unity, the number of draw calls skyrockets until the game won't even run on PCs. I'll have to look into that.

10 years ago | Likes 1 Dislikes 0

Not if you're using material instances properly.

10 years ago | Likes 1 Dislikes 0

Sadly, material instances still result in an increase in draw calls. It ends up being the same as creating new materials.

10 years ago | Likes 1 Dislikes 0

No, having one layout for multiple (similar) models would be horrendously inefficient. Texture atlassing reduces drawcalls.

10 years ago | Likes 1 Dislikes 0

Read my responses to OP.

10 years ago | Likes 1 Dislikes 0

Also, the actual resolution is 4096x4096. The individual assets still have a decent amount of resolution.

10 years ago | Likes 1 Dislikes 0

WHAT, why are you using such a high resolution?!? the coders are going to kill you!

10 years ago | Likes 1 Dislikes 0

Fortunately, I am the coders too. :P Really, though, 4096 is fine for most atlases. It takes up a bit of memory, but nothing too extreme.

10 years ago | Likes 1 Dislikes 0

for a gods dam normal map tho? thats over kill in the extreme

10 years ago | Likes 1 Dislikes 0

It's really not. Memory size is far from the limiting factor in modern video games.

10 years ago | Likes 1 Dislikes 0

As someone who has been doing this for 15 years I can honestly say that uv layout offends me to my core. The rest is accurate.

10 years ago | Likes 8 Dislikes 0

I'm really a programmer who dabbles in animation, so I know there's stuff I don't know about this. Would you mind PMing me about how (1/2)

10 years ago | Likes 1 Dislikes 0

Maximize uv coverage. You only have so many pixels, so try to use them all. You'll get sharper textures and a cleaner normal map.

10 years ago | Likes 3 Dislikes 0

Care to share what is wrong with it for the curious but uninformed of us?

10 years ago | Likes 1 Dislikes 0

you would lay them out? (2/2)

10 years ago | Likes 1 Dislikes 0

I'm curious as to why it looks like it takes up an nth of the space, must be the odd way this is being shown surely

10 years ago | Likes 1 Dislikes 0

They're leaving space to put other objects on the same texture map. Not how I would have done it.

10 years ago | Likes 1 Dislikes 0

You reckon it's better to have the lower resolution per texture with the price of more draw calls?

10 years ago | Likes 1 Dislikes 0

It does depend on the project, but I'd default to one texture per asset unless there's a compelling reason not to.

10 years ago | Likes 2 Dislikes 0

Good thinking, I'd do the same if it's anything that isnt a part of a modular construction set

10 years ago | Likes 1 Dislikes 0

Especially for something like a barrel that'll likely be reused in different contexts.

10 years ago | Likes 2 Dislikes 0

I tried making a m3 with blender for starcraft. I opened the program and then cried, closed it and quit

10 years ago | Likes 291 Dislikes 0

Don't give up! Blender is amazing tool! Just take a look of few tutorials and you have a good start :-)

10 years ago | Likes 2 Dislikes 0

Blender has that effect on people. Just pirate Maya or 3DS Max, find a website that has good tutorials (like 3D buzz, or youtube), and 1/2

10 years ago | Likes 1 Dislikes 0

take it one step at a time. You'll also need to learn Photoshop for textures, and probably Zbrush for better textures. It's a long road.

10 years ago | Likes 1 Dislikes 0

Well I'm pretty good at gimp. I've made a few textures but don't really understand the alpha and rgb values for nomad mapping

10 years ago | Likes 1 Dislikes 0

No need to pirate, auto desk has free student editions that are so easy to get.

10 years ago | Likes 1 Dislikes 0

Take a tutorial, then it's easy.

10 years ago | Likes 1 Dislikes 0

Which

10 years ago | Likes 1 Dislikes 0

I can't recommend any specific one as I learned how to use it before they revamped the UI. Blender Cookie is likely to have a lot. (1)

10 years ago | Likes 1 Dislikes 0

(2) Theirs were my favorite. Once you learn the UI, all of the other skills are transferable to any other 3D program, pretty much.

10 years ago | Likes 1 Dislikes 0

See I tried following a specific tutorial but the whole gui was different and I was lost. Doomed for despair

10 years ago | Likes 1 Dislikes 0

The current version is 2.77. Any tutorial which covers anything version 2.49 or before will be wildly different. Some things in early (1)

10 years ago | Likes 1 Dislikes 0

I'm a professional 3D artist. Give me a shout if you have Blender questions okay?

10 years ago | Likes 2 Dislikes 0

look at my most recent post. can i get an opinoin

10 years ago | Likes 2 Dislikes 0

Hey man looks fun! You should take that texturing to the next level on the cheap! Quixel is on a massive sale for students!

10 years ago | Likes 1 Dislikes 0

Also, I might use some variation in that grass. Check out Gleb Alexandrov's tutorial on grass over at YouTube.

10 years ago | Likes 1 Dislikes 0

Could I message you? I've been using blender for almost 3 years and I still suck ass. I feel like I'm going nowhere.

10 years ago | Likes 2 Dislikes 0

Got your message. Lets talk about where your at and where you wanna be, alright?

10 years ago | Likes 1 Dislikes 0

So I want to make a complex shape, no bones or animations. What is a good tutorial for blender that is updated.

10 years ago | Likes 2 Dislikes 0

Masterxeon1001, Gleb Alexandrov, Blender Guru, and Tutor4u are all good channels on Youtube.

10 years ago | Likes 2 Dislikes 0

Blender is the most unintuitive 3D modeling software. But it's gotten better.

10 years ago | Likes 10 Dislikes 2

But have you tried 3DS Max. OH GOD WHY.

10 years ago | Likes 1 Dislikes 0

See, I learned how to use Blender, and now every other 3d program just feels clunky and awkward. You have to click so many things!

10 years ago | Likes 4 Dislikes 0

Hoo boy, the horror stories I could tell about ZBrush. It makes sense once you get used to it, but getting there is a pain in the ass.

10 years ago | Likes 3 Dislikes 0

As someone who used Maya for years Blender is the best and certainly the best for beginners.

10 years ago | Likes 3 Dislikes 0

If you do that enough times, eventually you'll keep the program open and not quit. Don't let your dreams be dreams, man.

10 years ago | Likes 187 Dislikes 0

Don't let your dreams be memes!

10 years ago | Likes 1 Dislikes 0

^this is how I got used to blender. Took me like a decade of opening and closing it until I didn't really get the hang of it. Now I can 1/2

10 years ago | Likes 2 Dislikes 0

use it pretty well but I'm not an artist so it doesn't do me much good. ¯\_(ツ)_/¯ 2/2

10 years ago | Likes 2 Dislikes 0

'Not an artist'? Your ability to use Blender disagrees. :P Don't sell yourself short.

10 years ago | Likes 2 Dislikes 0

Can't you do most of this stuff in blender alone?

10 years ago | Likes 2 Dislikes 0

You can, actually! However, you'll typically get a better result using the applications created specifically for one task (1/2)

10 years ago | Likes 2 Dislikes 0

(ZBrush for sculpting, xNormal for baking, etc) rather than one general-purpose program. As with anything, though, skill trumps power. (2/2)

10 years ago | Likes 2 Dislikes 0

Thanks for the awesome response.

10 years ago | Likes 1 Dislikes 0

Can...I just, like, give you a cyber hug for this comment? It reminds me it's okay to close it and have a cry, but always open it again.

10 years ago | Likes 13 Dislikes 1

You can hold me all night long

10 years ago | Likes 2 Dislikes 1

Let them be night terrors and sleep paralysis

10 years ago | Likes 59 Dislikes 1

Laughed too hard at this then I should have.

10 years ago | Likes 2 Dislikes 0

Dreams! By Radon Randell.

10 years ago | Likes 1 Dislikes 0

I've tried to learn Blender since I was 11, and now I finally made a model of my room. I'm 16.

10 years ago | Likes 2 Dislikes 0

That's awesome! You have a huge head-start on all the other aspiring animators - keep at it.

10 years ago | Likes 2 Dislikes 0

That's what I did with FL Studio. I'm a musician who wanted to create. I gave up years ago. Thanks for inspiring me to re-install.

10 years ago | Likes 3 Dislikes 0

Don't give up! Life's a crapshoot, but the only way to really fail is to stop trying. Whatever you do, keep composing.

10 years ago | Likes 2 Dislikes 0

I'm not a musician, that's probably why I found FL Studio fairly easy to make music with. Not good music, but it *was* music.

10 years ago | Likes 2 Dislikes 0

For me it was mostly learning how the software worked. I knew next to nothing and let that be my excuse for stopping. Thanks

10 years ago | Likes 1 Dislikes 0

When I was at highschool I used to map my parents house as a cs map, my friend mapped his parents home, and the third mapped the school.

10 years ago | Likes 2 Dislikes 0

I used Hammer to map a job site I was working at. It was to scale according to the blueprints

10 years ago | Likes 1 Dislikes 0

Btw do you still have it?

10 years ago | Likes 1 Dislikes 0

nah, it was for an old cs before source and go, friend might still have it, but tbh honest the house maps were ok, schoolmap is gone.

10 years ago | Likes 1 Dislikes 0

oh ok i c. Yeah good times

10 years ago | Likes 1 Dislikes 0

He could not map the entire school, it was too big, he partmapped it, but it was never really playable (and that was the whole point)

10 years ago | Likes 1 Dislikes 0