Potential buyer

Couple questions, if you guys wouldn’t mind answering.

  1. How does this compare with those of torque, c4, and gamestudio?

  2. What networking does this support? Am I able to create some sort of MMO with it (without significantly modding the engine)

  3. You mention c++ plugins for the pro edition. Does this mean I can code snipets in c++ and use them in game?

  4. Your javascript demo on your website processes 3,000 vertices a second, meaning only 1,000 triangles. Is this capable then of making a 3d game?

  5. What is the fps on your FPS game online? I’m looking for high quality graphics with speed.

  6. What editors come with the indie version? Am I able to make my models, make my levels, and script them all together using just what you have?

Thanks,
Gardon

Welcome. Hopefully someone more knowledgable with other tools will respond, but until that time

You can use .Net to do the networking, or use a specialized library via plug-in. I hear version 2.0 will have networking out of the box, but I cannot vouch for that. Like the rest of Unity, I would expect the networking to be well thought out and easy to use.

Yes. You can also use external libraries through this mechanism. Just as an aside, I have used external code that was not written in C++, so technically, you are not limited to just C++.

The engine seems plenty fast for a 3d came. However, I do not know its ceiling, especially considering the different techniques that can be used to raise any engines ceiling. I believe the Javascript demo is modifying 3000 verticices of a mesh using some calculations as opposed to just moving around 3000 vertices. The javascript demo was to show that javascript in Unity was not slow since it is compiled into CLR code just like C#, which you can also use. I believe the javascript runs at about 1/2 the speed of straight C++. Don’t quote me on this, but I think Unity likes your individual models to be between 2k and 4k triangles, but I could be remembering this wrong.

With Unity, you make your models in your specialized modeling package. Quite a few are supported, some natively some via .fbx. Take a look at http://unity3d.com/Documentation/Manual/Imported%20Scenes.html . Textures are created externally as well, One really neat thing is that if you update your texture in your app, then Unity automatically updates, even if you are in the process of running a game in the editor. For me the Editor is very easy to use and very powerful, at least to me.

There are quit a few threads in the Gossip area of the forum discussing various aspects of your questions. I am not sure if you are aware of it but an arm of Otee (not sure of the actual legal structure) is making a game (not sure of the exact genre), see http://forum.unity3d.com/viewtopic.php?t=2941 .

I am quit happy with Unity. It has allowed me to do things that I would not have been able to do, at least without a lot of effort. It is amazing how fast you can put something together. I would suggest looking at the docs. They are online at http://unity3d.com/documentation.html .

Of course, that’s what it’s for. The mesh interface typically actually processes around 2,000,000 vertices per second on a low-end (by today’s standards) machine. That’s manually processing with Javascript…you normally only use that for special stuff; just moving objects around is handled by the Unity engine and is fast as you could want. Basically you never have to worry about speed; in my experience your graphics card is usually going to be what’s limiting you long before the CPU does.

Nope, Unity is a game engine…it doesn’t try to be a 3D modeler. Instead, you use whatever 3D program you’re comfortable with and import into Unity. (Assuming there’s support for it, but pretty much everything can at least get models into Unity, although animation is limited to a few apps at the moment.)

–Eric

  1. How does this compare with those of torque, c4, and gamestudio?

My research has turned up NOTHING which can compare, although some promising engines still “in progress” might be worth a look when (if?) they are completed.

Unity has a huge feature list, and it’s not hot air, you can really do those things. It has a very helpful community. And most importantly, it has a very rapid workflow allowing you to see and play your game in a VERY short time without the hard core engine programming something like Torque would require. Unity scripting (I choose JavaScript) is VERY fast and VERY powerful, so you get complete flexibility without having to mess with the engine itself. People sometimes thing that if you don’t have the engine’s source code, you must be limited to doing things in very particular ways and creating only certain types of games. Not so–Unity is completely open-ended.

  1. What networking does this support? Am I able to create some sort of MMO with it (without significantly modding the engine)

You won’t have to mod the engine, but you will have to do some .NET scripting that is not for scripting beginners. Multiplayer in Unity is not as quick and straightforward as most other tasks. This is one strength Torque does seem to have.

  1. You mention c++ plugins for the pro edition. Does this mean I can code snipets in c++ and use them in game?

I have never messed with that (I have Indie) but my impression is that C++ plugins allow you to add things to the engine–giving you the flexibility of supporting additional hardware devices, communications methods, whatever–without needing access to the engine source code.

I’m sure there’s a way to use C++ for game logic too, but normally that would be done in C#, JavaScript, or Boo/Bython.

Others here will know much more than I about this!

  1. Your javascript demo on your website processes 3,000 vertices a second, meaning only 1,000 triangles. Is this capable then of making a 3d game?

Yes, everything in those demos was done with Unity and could easily be part of a game.

  1. What is the fps on your FPS game online? I’m looking for high quality graphics with speed.

Depends on hardware of course, but I find Unity to combine good quality with good speed. It handles adjustable levels of detail, so the same game can easily run well at low-detail on a low-end PC, or at higher detail on top hardware.

  1. What editors come with the indie version? Am I able to make my models, make my levels, and script them all together using just what you have?

At a minimum you need 3D modeling software–Blender is a popular free choice.

Unity is where you assemble everything, define properties, and make everything work the way you want. So level building might start with a 3D app like Blender, and then you might position the enemies and powerups in Unity. Check out the tutorial here for a quick tour:
http://unity3d.com/Documentation/Tutorials/1%20-%20GUI%20Essentials.pdf

Scripting is done in a text editor. I like TextWrangler (free) and Unitron (comes with Unity). Both will color-code your scripting as you go.

Other apps you might commonly need would be an audio app to make your sound effects, and graphics app (Photoshop etc.) to make textures and menu elements.

Unity auto-imports changes you make in any other app, so everything you use is integrated like one big app, in practice. It’s really nice. For instance, change a texture in Pshop, save, and you see the texture change in your running game immediately.

I’ll let out users answer that as I’m biased :slight_smile: However, there’s quite a difference between Unity and, say, torque/c4/nebula/crystalspace.

Unity is more like a game development tool (think Flash) and most other game engines are mostly about giving you a bunch of code to mess around with. Yes it is possible to get Unity source code licence, but you have to think whether you actually want this.

Our “philosophy” is that the user should be creating a game, and not dealing with low level details. Your task is making a great game - think up great idea, implement and polish good gameplay, make fancy artwork etc. Leave rendering internals, script execution, sound streaming, graphics driver bugs and wahtever else not related to your game to us. It is our task and goal to let you keep focused on your game.

Yes. But think twice whether you need this. Our scripting is really fast; you get super-fast iteration time (who loves linking C++ code?); all public variables are automatically exposed in a GUI for you to tweak; Unity can reload modified scripts while your game is running.

On what machine you’re trying this on? We get 2 to 4 million dynamically modified vertices per second. The number is lower on integrated graphics cards with no hardware vertex processing of course.

The javascript demo only shows how many vertices can you change in JavaScript using procedural mesh interface. For the majority of your game models you won’t be changing vertices of course; and there Unity can push them as fast as your video card can process them.

You get the Unity editor :slight_smile: That said, you’ll still need some software to do models, animations, textures and sounds. Unity is a game editor, so you can create your levels there, place objects, setup and tweak them, test the game etc. But it does not try to replace existing tools for creating game art.

In other words: just try the trial version :wink:

My completely unbiased opinion is that, at least for now, Unity is a class by itself. The biggest difference between the other game dev environments I’ve tried (including Torque) is the “Asset Pipeline”. There isn’t one in Unity. Save your assets into the project folder, and drop them into your scene. No multistep conversion backflips just to be able to see the effect of changes - change your texture or UV map or model or script and it’s instantly updated in the game, even while it’s running. This feature alone is about a 10x force multiplier. Every game dev tool will work this way someday, Unity does it NOW.

Since you mention CrystalSpace, you may be a Blender user, and this is the other feature I love about Unity - native Blender support! Yes, cook your Blend files on any platform and drop them right into your Unity project! So you can, for example, share the project folder and edit your assets over the network, from a Windows or Linux box. Again, a big force multiplier, since Blender is free and runs anywhere.

And almost any Mac will run Unity - I know there are a lot of folks still running Unity on G4 hardware. I myself bought Mac just to run Unity - a dual core Mini, on which it runs beautifully (OK, I maxed the ram). With the 1.5.1 Unity update, the Intel 950 integrated graphics supports all the cool shaders too. That’s right, I’m doing game dev on a machine without a dedicated graphics card. See http://elnoise.com/games for examples.

I think the comparison to Flash is very apt. As a recovering flash weenie, I feel about Unity the way I felt about Flash in the mid-90s: this thing is going to change the way we think about interactive media and the web.

You know what’s cool about it is that you can use real languages (javascript, c++, etc.) and not have to learn some funked up language other engines require you too.

Macs are a good choice as well; I’ve always wanted a mac, and personally, I think everything to do with macs is amazing, including game engines

I do have another question though. So what exactly IS unity… a game engine, yes, but you also have to write scripts for it.

Is it more or less a global bank of resources that you can choose from, say LoadWorld(world1), or DrawCharacter(1,0), that really simplify the ins and outs of lower programmig logic?

And how does the editor work. You say you can’t build characters in unity, but you can do levels. So could I use the interface to build my levels and then import characters, write scripts for them, and have them interact within the game engine during real time.

Just want to clear some things up.

Oh, and what about online architecture. How would I go about building my own client/server systems for online play? Would I have to add on to the engine?

It is a “game development tool” (with a game engine underneath). That is, you use Unity to place, manage, configure, tweak various assets that make up your game (models, animations, textures, sounds, scripts, …).

I suggest just trying out the trial version. Or if you don’t have a mac nearby, take a look at tutorials: http://unity3d.com/documentation.html (GUI Essentials, Scripting Tutorial, FPS Tutorial). That should give an idea what Unity is and how it works.

You could say so, except much more of the game is not actual programming, but assembling and tweaking the objects via GUI. For example, attach a Rigidbody component to your crate to make it physics-controlled; tweak it’s mass in GUI until it feels just right. Attach the script you just wrote to some object and you get GUI for tweaking all public variables you declared in your script. Drag a texture on some object and the material is updated to use that texture.

You create most assets externally: 3D models, textures, animations, sounds. You can place them (models) to create the game level inside Unity; or you can place them inside Maya (or other app…) - it’s up to you.

Haha, next question. I’ve never owned a mac, so I don’t know what they run. Rather than searching google for an hour to find the type of mac that I want, what’s a standard OS X model go for? I mean, if I’m testing a game I’m developing I’m going to want to have a decent graphics card, CPU, etc.

Also, how does networking work? Can I write scripts for connecting to an external server, or is re-writing part of the engine required?

by the way I"ll take a look at those links,

Thanks,

Jason

I would probably go for the iMac. Price will depend on your country. In the US the 17" iMac is $1200 and the 20" is $1500 retail. If you want to spend less you can get a Mac Mini, which others on this forum can comment on or go the refurbished route. The iMac has a Radeon X1600 while the Mini uses Intel GMA950 integrated graphics, Or you could get an older model. I actually run Unity on a 1.25 Ghz Powebook (2-3 years old), which uses a G4 processor, so I am not exactly leading edge :slight_smile: I plan on upgrading in the Spring.

You just write scripts. The wiki has an example script that moves a cursor. If your networking needs were light you might be able to get away with the WWW class currently in Unity. It is super easy to use.

I can’t speak from extensive experience (i’m a new mac user) but I know there has been some discussion as to which Mac is good for Unity. The consensus is that any current mac is good but it depends on how strong a graphics card you need.

Similar discussions on these posts:
http://forum.unity3d.com/viewtopic.php?t=2462&highlight=mac+mini
http://forum.unity3d.com/viewtopic.php?t=2453
http://forum.unity3d.com/viewtopic.php?t=2492&highlight=mac+mini

Say I wanted to make a grassy hill that you can drive a tank around on and shoot rocks. Here is how it would work for me.

I would go into Unity and select New Project from the menu. This makes a folder that contains your project. It has folders named Assets, Library and Temp. Assets is where you put your stuff. Unity puts it’s stuff in the other ones.

Then I would make the grassy hill. I go into Blender, model it and save it into my Assets folder. I get a grass texture, make sure it is the correct size in Photoshop and save it in the Assets folder. Then I can go back into Blender, load the texture and paste it onto my terrain model. This is how you will make models for your game, from terrain to tanks to trees to animated characters (animations cannot be imported from blender. Hopefully this will come soon). It might vary how you do it depending on your setup and how you work, but that is the general idea.

Now if I go back to Unity, I will see my terrain I have just created in the Assets View in the form of a blender model, a texture and a material. From there I can drag and drop it to the game scene. Once there it should show up with the texture already on it. It might not, but the most you will have to do is drag the texture from the Assets View onto the mesh in the Scene View. I can add a collider component to my mesh object for physics interaction by selecting it from the add component menu. I can also create a light object and tweak it to illuminate the grassy hill however I want.

Then if I make a cube with the Create Primitive menu and add a RigidBody Component like how I added the collider to my mesh and place the cube above the mesh using the transform handles in the Scene Veiw, when I run my game by pressing the Play button I will see the cube in the Game View fall down, hit the slope and bounce or roll down in a realistic fashion.

Now I go to blender, model and texture my tank and save it and the texture(s) to the Assets folder. I can drag the tank onto the grassy hill and see it there but getting it to drive around and shoot with a camera following it around will be a lot harder. I will have to write a script that gets input from the keyboard and mouse or joystick, checks if each tank tread is touching the ground and if it is, adds forces to the rigidbody of the tank depending on the input (turn, go forward, go backward etc) to make it move. To aim the turret I will rotate my turret objects depending on the mouse input. For projectiles I will make a script that moves the object it is attached to forward until it hits something, then it makes an explosion where it hit. I could create a copy of the projectile object at the end of the tank barrel whenever the mouse button is pressed.

Any script that you write can be attached to an object just like the other components and you can see it in the Inspector when you select the object it is on to tweak it’s public variables (wether they are colors, numbers strings or links to other objects/components, it doesn’t matter).

I can’t really tell you exactly how this would be done but I can show you some exampes of code I have written for Unity.

LookAtCamera.js

private var target : Transform;

target = Camera.main.transform;

function Update ()
{
	if(target)
	{
		transform.LookAt(target);
	}	
}

TimedDelete.js

var emitTimeOut = 0.00;
var deleteTimeOut = 1.000;
var detachChildren = false;

if(emitTimeOut != 0) Invoke("StopNow", emitTimeOut);
Invoke("DestroyNow", deleteTimeOut);


function StopNow ()
{
	particleEmitter.emit = false;
}

function DestroyNow ()
{
	if (detachChildren) {
		transform.DetachChildren ();
	}
	DestroyObject (gameObject);
}

Projectile.js:

var speed = 0.00;
var randomMovement = 0.00;
var gravity = 0.00;
var framesPerRay = 1;
var extraRayDistance = 0.00;

var damage = 0.00;
var explosion : GameObject;
var detachChildren = true;

private var bullet : GameObject;
bullet = transform.FindChild("Bullet").gameObject;
private var trail : GameObject;
trail = transform.FindChild("Trail").gameObject;

private var velocity : Vector3;
private var hit : RaycastHit;

private var frames = 0;
frames = framesPerRay;

velocity = transform.TransformDirection(Vector3.forward) * speed;

function Update ()
{
		frames ++;

		if(frames >= framesPerRay  Physics.Raycast(transform.position, velocity, hit, (velocity.magnitude * framesPerRay * Time.deltaTime) + extraRayDistance))
		{
			frames = 0;
			
			other = hit.collider.gameObject;
			Detonate(other, hit.point, hit.normal);
		}
		
		velocity.y -= gravity * Time.deltaTime;
		if(randomMovement != 0) velocity += Random.insideUnitSphere * randomMovement * Time.deltaTime;
		
		transform.rotation = Quaternion.LookRotation(velocity);
		transform.Translate (0, 0, velocity.magnitude * Time.deltaTime);

}


function Detonate (o : GameObject, p : Vector3, r : Vector3)
{
	o.SendMessage("Damage", damage, SendMessageOptions.DontRequireReceiver);
	
	if(explosion)
	{
		object = Instantiate(explosion, p, Quaternion.LookRotation (r, Vector3.up));
	}
		
	if(detachChildren) transform.DetachChildren ();
	Destroy (gameObject);
}

edit : oops looks like there were a few posts made while I was writing this.

Thank you yoggy

Hardware wise I was deciding between a mac mini, and a second hand g4. I made my final decision on the fact I could customise the hardware on a g4, even if the cpu was smaller. So I installed a 128mb video card, extra ram, a bigger hd, dvd writer, and brought a 19inch crt monitor. What a rig, even if cpu is small.
Now I have bumpmaps, detail textures etc, which the mac mini wouldnt have given me. Neither does the “all in the screen” emac.
My g4 (Quicksilver model,733mhtz cpu) is a bit slow framerate wise playing games due to cpu, but I can live with that. My project is cranking along.
AC

Minis, non-Pro (amateur?) MacBooks, and iMacs are all perfectly useable for Unity development, especially if you max the ram. Before the 1.5.1. release, some of the shaders didn’t work on my Mini, like the fancy water and bump mapping, but now it’s all good. Something to do with the OpenGl drivers for the Intel 950, I gather. Of course, a monster video card is…nice. Mmm, video cards… But arguably, you’re emulating experience of a broader segment of the market by developing on less that state-of-the-art kit, as far as the shaders go. Performance wise, I have no complaints with Unity on a Mini.

Jason, I think you might have missed the “k” for the Javascript performance example. Those were 3000k vertices being manipulated. That’s 3000-thousand - 3 million verts! So 1 million polys per second, or 33,300 polys per frame at 30 fps. That’s pretty dang good for a Javascript app IMO. As others have pointed out, these verts were being animated with the script, too.

If you’re interested in networking, but you don’t know much about it, I’d recommend making a mod using an existing game engine. Networking is a very intense thing to tackle, technically speaking. The very design of your engine has to be centered around it if you want good performance. You can’t exactly “slap it on” and hope for something amazing. I would guess that’s why OTEE is implementing it for a 2.0 release. It takes a lot of work to get a good result.

Otherwise, throw out the networking aspect and make a single player game with Unity. There’s still plenty of fun to be had fighting NPCs. Another alternative would be to grab a friend who’s experienced with programming and excited to work with you and have him/her do it. :stuck_out_tongue:

For hardware, I’d recommend an Intel Mac simply for the fact that you could put Windows on it if you wanted later on. Couple that with virtualization software like VMware or Parallels, and you wouldn’t even have to reboot to run a Windows app.

At global conflicts we got most people sitting on Intel iMacs. They run perfectly - and we have large scenes: http://unity3d.com/profiles/Serious-Games-Interactive.html bottom screenshot.