This is my first post here on the Unity3D forums. I have been game programming for many years at the hobbyist level with DarkBasic, App Game Kit (AGK by The Game Creators), Truevision3D and within C#, C++, & Visual Basic. With almost every engine I choose they start out good and end up being in beta and never completed. AGK was pretty awesome but I’ve literally been waiting 3 years for them to complete bringing 3D animations into the engine. I have seen many amazing videos of Unity3D and would have no hesitation buying Unity3D PRO but I’m just a little intimated by its style.
The usual game engines I have used pretty much start out empty with a program shell and I add code to get cameras, models, movement, input, textures and so on into my game. With Unity3D we drag them in and set properties. I’m just confused as to how to get full control in code like the engines I’m used to.
Get Unity free, it got most of the bells and whistles… it certainly got enough stuff in it by default to make most games and missing features can often be replaced by hard work and sweat… or paying for Pro if you got the money.
The tutorials you watched only show the easiest way to get some things done but you can also do most of the things straight through code. Most of my stuff is done with code that then generate the necessary game-objects in the scene etc… so it is a very classical style of development. On the other hand, the plug-and-play mentality in the engine is really nice, I can drop a well written script onto an empty gameobject to quickly test it. Then hook it into the bigger code-web for my overall game when I know that it is behaving like intended.
I found that there was a small learning curve to get used to this but I absolutely love it now.
I come from the same background and know your feeling. In the beginning it’s totally confusing and I often thought about to write a beginners tutorial for programmers like us who know how to code but have no clue about this visual editor stuff…
In general, I’d rather call Unity a “game authoring tool” than a game engine. But don’t let that scare you away
In game development, there’s a lot of things where I feel that having an authoring environment is actually more fun, more efficient and giving you much more control than coding. Of course, there’s also quite a few things where nothing beats plain simple code (I know a lot of artists ask for visual programming and this certainly has its place but in many cases it’s just not as efficient / fun as code … at least if you know how to code ).
So, for example: Setting up a camera or models or the like is something where being able to tweak everything, possibly even during runtime, with a natural 3D interface and the ability to change properties with a convenient inspector just beats having to set all of this up in code by any reasonable measure. You immediately see what effect the changes you make have while you’re changing it. IMHO, this is as much control as you can have.
That doesn’t mean you couldn’t do all or almost all of this via code in Unity. Some people just have one game object with a script attached, and this script then sets up everything from code as they like it. And there’s scenarios where that’s really the best way to do it (procedural games). Did you already have a look at the scripting API?
It sucks that they’re not using namespaces in a more elegant manner but once you’re over that obstacle, this really gives you a nice perspective of what you can do. There’s a few areas where scripting access lacks … particles and I believe Mecanim are popular examples but aside of those few areas, you can do almost everything you could think of from code.
Plus, you can extend the editor pretty much any way you wish.
I had the same experience when I first came to Unity. I saw the scene editor and thought ah another GameMaker like tool. Thought well this is probably just an optional workflow for people who are not programmers.
I have slowly made the switch in the process throwing out as much of the Unity specific stuff as I can. I mean GUI oriented workflows. I don’t set up animations in the GUI. I don’t use the Unity physics system to move my objects around. At the moment I am still using their collision system but thought about building my own solution for that too.
Anyway, I know what you mean. I just wanted a way to display graphics, play sounds and music, write code to bring it all to life able to have it easily run on multiple platforms.
I do find the ability to set up public properties I can adjust in the inspector a nice feature. I use it sometimes. It is not really any more efficient of a workflow than changing it in code as I normally would BUT the difference that does make testing / tweaking more efficient is you can change those public properties while the game is running.