Search Unity

Need help making decision

Discussion in 'Works In Progress - Archive' started by Euge, Mar 16, 2012.

  1. Euge

    Euge

    Joined:
    Mar 16, 2012
    Posts:
    1
    Hello,

    I'm a long time Flash developer, thinking about a switch to Unity. I know that this has probably been asked many times before, but what difficulties I might face? Here's the list I made:

    Strengths
    • Quick development time for 3D games.
    • Various already implemented often used features like physics, multithreading, resource management.
    • Support of maya and 3dmax (.max) models.
    • Low price.
    • Requires less proficient developer team.
    • Crossplatform.

    Weaknesses
    • Small community, exotic for major game developers.
    • Somewhat inflexible. You cannot modify its core or tweak some features you may require at low level. Source code for renderer is unavailable.
    • Poor networking support.
    • Doesn’t work with version control.
    • Requires good knowledge and usage experience of their already implemented library.
    • No 2D support. Can only be emulated using fixed angle camera with 3D models and/or flat plates with animated textures.
    • Very poor GUI support. It is known problem for almost every game development tool.
    • Requires bigger team for developing game from scratch.
    • Requires more complicated game resources and assets since almost all of them should be 3D.
    • However even if Unity project is crossplatform it requires tweaking for each platform especially if it is mobile platform.
    • Compiled projects are not as fast as C++ or other lower level language 3D game written by professional team.

    Opportunities
    Well suitable for various game genres: platformer, racing, physic, shooter, adventure. Some parts of games are already implemented so Unity needs more game design and assets than programming. Output can be exceptionally good with less efforts than using 3D game engines like OGRE or writing game from scratch.
    Unity is one of the best development environments for rapid development of 3D or fixed camera 3D (looks like 2D but works in 3D world) games. It is exceptionally good for arcade platformer games, puzzles, adventures. It even can spice up some 2D games with 3D effects.

    Threats
    Completely depends on support of one company since it is not a language which can be compiled using different compilers like C++ etc. Requires more money investments since 3D models and their animations are usually much more expensive than vector or raster art and programmer should have better qualification for implementing 3d worlds. Some projects could not implemented by Unity since there is no low level access for the renderer and core functions. Important for big serious projects or some exotic ones. Users who download games on their PC also wants them to be made much better than online flash games.
     
  2. jedy

    jedy

    Joined:
    Aug 1, 2010
    Posts:
    579
    Various already implemented often used features like physics, multithreading, resource management.

    Just note that multithreading isn't directly supported by unity, some of their stuff is on separate threads, but actually using your threads to modify objects in the unity threads is not possible. You still are able to use your threads for networking ( not the unity native one ), calculations, or anything if it doesn't directly mess with the Unity's stuff though.

    Small community, exotic for major game developers.

    True. But the community is growing rapidly.

    Somewhat inflexible. You cannot modify its core or tweak some features you may require at low level. Source code for renderer is unavailable.

    With a bit of extra work almost everything could be changed. But yes - Extra Work and Almost Everything.

    Poor networking support.

    The networking support is pretty good - the unity networking has a ton of great goodies such as Nat Punchthrough, UDP and TCP connectivity, it's perfect for player hosted games. For bigger projects there are all the C# networking goods and a couple of 3rd party solutions.

    Doesn’t work with version control.

    You could use the asset server, if you pay an extra buck for hosting ( or have a machine to host it yourself ). Other version control systems work, but may require an additional line of code to fix some bad references. Shortly - it could be achieved.

    Requires good knowledge and usage experience of their already implemented library.

    Yeah.

    No 2D support. Can only be emulated using fixed angle camera with 3D models and/or flat plates with animated textures.

    I've seen amazing 2D games made with the engine. It's not the most native thing, but it is possible and a lot already made ( and pretty good looking ) solutions for 2D games in the unity asset store. They can save a ton of time.

    Very poor GUI support. It is known problem for almost every game development tool.

    The GUI system, with some documentation and DLL digging could do pretty well for everything besides mobile. There are a number of external solutions or alternatives, and there is a new GUI coming somewhere in the future. But basically for now it's a pretty big issue for mobile.

    Requires bigger team for developing game from scratch.

    On the contrary - the engine saves a ton of time, giving smaller teams greater potential.

    Requires more complicated game resources and assets since almost all of them should be 3D.

    Depends on the game - I've seen a great deal of games using less than 10 3d models, and a great logic behind them resulting a great game. Using a thousand good looking models won't make the game good if the idea, programming aren't on a level. But yes you will need at least a couple of models/sprites/generally art.

    However even if Unity project is crossplatform it requires tweaking for each platform especially if it is mobile platform.

    It requires a bit of tweaking, but it's far less than any other engine offers. That aside you're able to write platform specific code, where needed and avoid any tweaking at all.

    Compiled projects are not as fast as C++ or other lower level language 3D game written by professional team.

    Actually the performance is quite blazing. The core of the engine is in C++, and there are shaders to utilize the video card. Basically for most of the games - performance heavily depends on the video card utilization, and Unity's shader engine handles that pretty good. For some heavy CPU operations - still not a big bump, I've red that Unity's speed gets to 50% slower than native C++ code. ( Which is real fast actually )
    For comparison - the webplayer capabilities are way above anything I've seen flash deal with, for mobile UDK has a couple of fancy visuals, but as far I've seen most if not all of them could be achieved in Unity, too.

    Sorry for the lack of formatting and occasional typos, but I'm too lazy to look it over at the moment.
     
    Last edited: Mar 16, 2012