I need some confirmation...

Hi guys,

In our search for the ideal gaming engine we are getting more and more confused! I just found the Unity game engine. I looked at all the tutorial videos and demos and I am quite impressed, especially by the sneak preview video of Unity 2.0. I was about to look for a trial when I found out that this is mac only :-(. But apparantly a windows make will come out sooner or later. I am not in a hurry and I looked on the forums finding that right now all efforts are put in the new Unity 2 release and afterwards the windows launch is planned. I saw another thread about this, but no real answer, do the developers have an idea whether this windows version will take a couple of months, a year or more then a year and will this windows version have all the features of the mac version?

We are currently using another 3d engine which forces us to do a lot of coding. Basically we have to code every single aspect and we are in doubt if we will ever be able to finish it. We want to make a golf game as an extension of the services we provide. It has to be reasonably advanced in terms of gameplay and graphics. We are not looking for quality as EA’s Tiger Woods game but we do strive to end up with a professional commercial product that deserves its place in the 2007 gaming market although our target is not really the regular gamer. So our main question is, will Unity3d and its features be suitable for us and should we consider to buy some macs?

Below are a number of questions that are the most important for us.

Physics engine:

  1. Can you apply a force to the ball once the animation of the main character reaches a certain frame (ballflight starts when the clubhead arrives at the bottom position)? This is probably a yes, but I ask it anyway!
  2. Let’s say we import a mesh made in 3ds max for the landscape. Can the physics engine return the group ID of the terrain mesh once the ball collides with it so you can add forces to the ball depending on the group it collides with? I saw the excelent features of the terrain options in Unity 2.0. Will we be able to use those features for our game. Meaning is this terrain system based on a grid or can we add detail to it and create the highly detailed hole in it? Second, will we be able to implement collision detection for specific parts of the landscape, ball stops immediately when it lands in sand, ball stops quicker when it lands in rough, ball either gets backspin or rolls longer when it lands on the green, etc.etc.?
  3. How bullet proof is collision detection? In the game engine we now use it occasionally happens that the ball goes through the terrain!

Cameras:

  • When the player arrives on the next hole we would like to move the camera smoothly over the complete hole ending behind the player. Does Unity has a simple to use system to implement camera paths?

Terrain:

  • Does unity support texture splatting (unity 2.0 new terrain options) on imported meshes or only when the terrain is created in Unity itself?
  • Does the engine has an integrated lod system?
  • In the preview video I saw some bending features for trees. Does this mean unity will come with a library of trees (if so when can we expect a list of the tree types?) or can the features be applied on custom tree meshes imported into Unity3D?

Character:

  • does unity support normal maps taken from a hi poly version of the character?
  • does unity support rotation of bone id’s, and can it perform matrix transformations? For example when the character is positioned on an undulated part of the terrain, we would like to be able to bend knee/hip bones and get the normals at that position of the terrain and transform the foot bone matrix so it will be aligned according the normal of the terrain at that position. Is this possible or can you only align the whole character with the normal of the terrain at that position?
  • can you attach meshes (golfclubs) as a child to the bones of the character (golfer) so it follows the bones animation?

General:

  • It seems the new shadow system will be quite advanced. Does it support dynamic soft shadows on the trees? And if so how fast is this? Can it actually be used in a game like ours with a terrain with 50-200 trees, fullscreen (so reasonably big texture files) or do you really need an advanced computer setup to run this smoothly? I am asking this because in the current engine we use the fps drops dramatically after applying shadows!
  • What types of texture rendering are supported?
  • None of the demos I tried seem to have antialiasing. Is this supported?
  • Do the standalone games run on Windows just as fast as on the mac?
  • The demos I saw were all windowed in a small size. Are there any fullscreen PC standalone commercial demos (ideally with landscapes and trees) available
    so I can see what it is capable of in Fullscreen mode?
  • Obviously we will need to buy Mac’s. From which Mac does it start to become interesting and will we be able to use Unity3D in a decent way?

This has become quite long, my apologies for this! We are not using macs but are quite willing to move over to it if Unity3D is the right engine for us. But, obviously, we will need confirmation first that with Unity we can do what we want a come up with a commercial golf game.

Many thanks anyway for reading all of this :wink:
Raoul

I definately think so. Many others have done exactly that and are very happy with it. But i am biased of course.

Of course. You just call rigidbody.AddForce when a time value in an animation has passed. eg.

if (animation["hit"].time > 1)
   rigidbody.AddForce(0, 0, 10);

You can do this with meshes by splitting up your mesh. Each mesh collider can have a different physics material assigned.

We use physX which is extremely robust. It’s been tested in several games including Gears of Wars. It is one of two worlds best physics engines out there. In Unity we generally choose technologies we embed very very carefully.

You can import camera animations which you created in eg. 3d studio max.
You can edit what the animation systems outputs eg. fade out at the end of the animation towards the player position.

There are shaders on the wiki for splatting which works on arbitrary geometry.
The painting tools provided for 2.0 are only for terrains for now.

Yes. The terrain uses a bunch of lod systems.

The text about it saying that you can have a terrain with billions of grass blades, 300.000 trees and kilometer large terrains was not a joke. And you can also do it in a relatively small web player.

I actually have scenes with 40.000 trees visible at the same time on my 4 year old 1.5 ghz powerbook at interactive rates! I think it’s gonna blow people away when they see what they can do with it.

Trees are imported like normal through fbx or any of the other 5 formats we support. For trees we calculate specialized soft ambient occlusion, which gives the trees a very nice natural look.
We will provide an example project with a bunch of high quality trees that you can use for any unity based project commercially.

Yes. You create the nromal map in 3ds max, zbrush, maya, etc.
Unity has a set of builtin shaders that let you use those normal maps for realtime rendering.

Yes. In Unity this is really simple because we have no special bone id’s instead it is just a game object with transform’s attached. This way you can reuse existing scripts on skinned character bones. You could also attach any other component for example rigidbodies to the transforms. This is actually how one builds a ragdoll. In unity this is no specialized concept to work around bone id limitations. Compared to bone id approaches this is breeze to work with.

No problem, see above. It’s as simple as it’s gonna get.

Shadows are very optimized. In our tests they slow the scene down by around 20% compared to no shadowed scenes.

But on top of that they also give you several options to optimize performance for your specific use cases. For example you can determine a fadeout distance for shadows, this works really well in practice and can increase performance for far away objects.

Anything you can think of really. We have a shader language which directly embeds several other shader languages, starting with combiners to arb fragment shaders and GLSL etc.
This allows us to support the latest hardware with cutting edge shaders while falling back to less advanced shaders on 8 year old Rage 128 graphics cards.

We have a set of 40 builtin shaders which you can use without having to think about using shaders. But for those who want to create custom shaders/texturing you are only limited by the graphics card not by Unity.

Yes. I actually think the standalone demos are setup to enable antialiasing in fantastic quality mode.

With 2.0 actually they run faster because Direct-X is faster than OpenGL.
On top of that with 2.0 Unity runs between 50 - 100% faster on the average graphics limited scene.

Global Conflicts is probably a good example.

http://www.globalconflicts.eu/

I think the iMac with Radeon xt 1600 is a really good value for the price and has a good graphics card.

I’d give the demo a whirl if you can beg, borrow, or steal a Mac from a friend. I’m sure you’ll be astonished at how quickly you make headway in Unity, and how much you can do with surprisingly little code. Then you can see just how the ball reacts on the terrain, tweak the physics and bone settings to your liking, and see first-hand how things will progress.

Now, the shadows and terrain painting would have to wait a few months for U2, but you could get going on the rest any time.

Two unique benefits of the Unity engine: a) Web delivery and b) the potential for future Wii delivery!

As for which Mac, a really cheap Mac Mini or MacBook can play my Unity game just fine, and I could do my work on those machines as well. They have rock-bottom GPUs but very fast processors. However, a REAL GPU is preferred, and that’s where I’d recommend iMacs or MacBook Pros. Note: NEW iMac models are expected in the next 2 months, if rumors are true. MacRumors.com is a good source for filtering out the likely rumors from the unlikely ones.

Also, two good deals on lower-cost Macs:

  1. Educational pricing for students/faculty/staff if you can qualify.

  2. Refurbished–there’s a link for these on the Apple store page.

Thanks a lot for the replies. This is not making things easier for us as none of us seem to know someone with a Mac so we could test it out as Morgan suggested! It really sounds like Unity is the way to go although I took from your answers that the new terrain system in unity 2 is probably not supporting what we need for our scenes and that would be quite a disappointment.

I got some further question:

Thanks,
Raoul

One thing about Unity is that there are often several different ways of doing something. I think what I would do for a golf game is to take an overhead snapshot of the course, then bring that into Photoshop, and with a new layer, just paint over the areas with solid colors that represent the terrain type. e.g., yellow = sand, green = the green, etc. Then save that layer as a texture, and when the ball lands, you translate the x/z coordinates of its location in 3D space to texture coordinates. So you look up the color at those coordinates and set different physics conditions as appropriate. That would be pretty simple and quick, I think.

If you were using traditional meshes for the terrain instead of the new terrain system, you could paint different vertex colors that represented different terrain types. Then look up the vertex colors that correspond to the polygons that the ball collides with, and set physics conditions as above.

You’re also not limited to just one or the other. You could use the new terrain system for general landscaping, and add detailed meshes on top of that.

Any iMac would be fine, although you probably wouldn’t want the low-end 17" “edu” model with GMA 950 graphics.

–Eric

Thanks Eric!

Yes, we could import detailed meshes, such as the green and lay it over the terrain but don’t you think it will be quite a hazzle to blend the two of them nicely into eachother because of the differences in slope detail between the detailed imported mesh and the less detailed terrain object?

I saw a video of the new cryengine, it allows you to draw high detailed roads with crisp edges straight on the terrain. Will Unity3D have a similar feature or will you always see some blending between the landscape textures and the road texture?

Thanks,
Raoul

One of your questions remaining unanswered was about the possible problem with cutting holes in the terrain. This can be done with a shader trick and has already been done in Unity in the context of a rowboat with the bottom of the inside under the water level. A mesh with a very strange but yet simple to write shader sits on top of the boat and cuts the water out of the rendering. Then the boat is rendered on top of that.

There are shaders and an example on the wiki.

Thanks Yoggy, I like the idea of using the shader technique for the hole but what about the game play? The ball will roll over the hole, true? I guess you could avoid that by disabling collision detection on the terrain when the ball is above the hole but you will still lose realistic physics behavior when the ball rolls over, for example, the left edge, slowly moving to the right and dropping in the hole, right?

But that technique must be really cool, it could also be helpful to make detailed bunkers. Will/is it possible to export the terrain object as a mesh and import it in 3ds max? This way it would be easy to get the geometry around the bunkers match the geometry of the same area on the terrain and the 2 will blend in perfectly.

if you go the shader method i’d do the opposite - have a trigger collider at the hole that just turns off the sphere collider on the ball. less chance for strange problems like unwnted objects falling through also and (i imagine) quicker for the engine than turning off/on a mesh collider all the time.

IMO doing an actual 3d mesh of the hole would be the way to go on this. possibly you could take a look at cgorans nice mini golf game in the showcase for ideas.

What I have done in my portals project is give the hole a collider that reaches for out along the surface it is on, and has a hole in it in the center like it should. When the object is near the portal (or in this case golf hole) You call Physics.IgnoreCollision(ballCollider, terrainCollider, true). When the ball misses the hole and goes back towards the green you call Physics.IgnoreCollision(ballCollider, terrainCollider, false);

That way when the ball does go into the hole it will fall through the ground, but collide with the hole just fine. The only problem with this is that the ball might hit the edge of the hole collider and look unrealistic with will take tweaking to fix.

Holes are definately something we want to support for terrains. If that will be in 2.0 or 2.x, i don’t know. But it’s quite obvious that this is important for anyone doing underground structures etc. So being able to paint holes directly in the terrain tools makes sense.

It depends on how closely the terrain matches the hole mesh.
If the golf ball ends up 1 meter embedded in the terrain it will jump up 1-2 meters to resolve the collision. But if you make sure the meshes really match closely it’s going to work without bumpy movement.

Best is if you try to match the heightmap vertices exactly and have zero overlaps and match mesh and heightmap 100%. That should work really well.

We do export the heightmap, which i am sure there is some way to get them into 3ds max. But you might have to go through another app to do it.
Alternatively you could adapt the obj mesh exporter available on the script wiki. That should be doable.

Oops. I just edited a post instead of quoting it. Sorry about that.

It depends on how closely the terrain matches the hole mesh.
If the golf ball ends up 1 meter embedded in the terrain it will jump up 1-2 meters to resolve the collision. But if you make sure the meshes really match closely it’s going to work without bumpy movement.

Best is if you try to match the heightmap vertices exactly and have zero overlaps and match mesh and heightmap 100%. That should work really well.

We do export the heightmap, which i am sure there is some way to get them into 3ds max. But you might have to go through another app to do it.
Alternatively you could adapt the obj mesh exporter available on the script wiki. That should be doable

I belief you can turn an heightmap into a mesh in 3ds max but how accurate will it be??? What is the biggest heightmap texture size it can export to? Is it possible to get all vertice positions of the terrain so we can try to turn it into for example a .x file and import that into 3ds?

For meshes, you might want to look at http://unity3d.com/Documentation/ScriptReference/Mesh.html. You can get a list of al the vertices using yourMesh.vertices. If you have the demo, you might want to download the Procedural Content example project. Some mesh manipulation is done in the example and you can see the code being used.