Is Unity Right for Me? (419603)

I am in the early stages of developing an alternate history based Real Time Strategy/First Person Shooter. As with most start up projects, funds are limited and I want to get the most bang for my buck. With said, I am considering a few different engine possibilities. ofcourse I would like it to look as good as possible so the engine needs to support advanced shaders, HDR, etc but most modern engines look just fine. What I am really concerned with is are the features I am planning on incorporating into the game.

Good AI support: There will be AI controlled units but they only need basic AI as they will be managed by players. They won’t need to make their own decisions, however the code needs to be efficient because I plan on having a number of them. Few engines offer this out the box due to the complexity of AI programming so this might fall into “Would love to have” rather than “Have to have”

Wide open spaces: RTS games are big and I want big maps in mine. Almost all of these will be outdoors with organic terrain and will need vegetation and other props. Most structures will be placed by the team so there is not a great need for brushwork but it would be great if the mappers had alot of freedom to make buildings and what not on their own.

Huge models: As mentioned before, most structures will be placed by the team while in game. That’s pretty simple. The problem is I want my buildings to be very large and have multiple levels. This could lead to more complex collision meshes and hit boxes. The engine needs to be able to handle this.

Vehicles: There are going to be alot of them. Wheels, tracks and aircraft.

I would like to be able to change the map objects on the fly. This would mean periodically changing/replacing props and textures while a game is in progress. I am not talking dynamic terrain, although that would be great, just objects and textures. Again, this is a “would like” not a “must have”

Net code: This is going to be an online game so good net code is important.

Support for both FPS and RTS views: One player will be in RTS view exclusively while others can switch from one to the other. This should just be a camera orientation issue and a pretty simple feature to implement.

I would love to have destructible models as is supported in UDK, however this is another “nice” feature not a must have.

With all of this said, what do you think about Unity for what I need? I wanted to post hear to get some opinions from experienced users of Unity before making my decision. If this won’t work, perhaps there is another engine I should be looking at?

Thank you in advance for your help,

Unity can do pretty much any genre—even 2D games—so none of what you’re asking for is impossible.

As with all tools like this, however, there are some features which are likely to be harder to implement than others. This caveat applies to all the higher quality commercial game engines, so don’t let this put you off doing some basic research. Download a few trial versions, check out the docs, and see how quickly you can get up to speed with each one.

Unity’s development pipeline is arguably second to none. Scripting support is powerful and can easily cope with RTS-style AI. Similarly, the Editor is extremely flexible and extensible to meet your own development needs.

I’m curious about how you expect all this gameplay to be synchronised over the network. Mixing RTS elements with an FPS is tricky: an FPS has different priorities over an RTS: An RTS army fighting another won’t care if an occasional shot is lost due to lag, but an individual FPS player will notice if a shot that clearly hit its target appears to have no effect. It’s going to be a difficult balancing act.

There are very good AI pathfinding scripts available for Unity. But AI is game specific. There is no such thing as “out of the box” AI for any engine. You have to program the AI to tell them how to use your games unique weapons/vehicles/tactics

There is nothing about Unity that prvents you from having large maps.

You would not be limited by your engine of choice, but by the average gamers computer specs. RTS games usually have simplistic models because there are so many models on screen. Having many complex and detailed structures in an full blown RTS would put a strain on even the best gaming rigs.

Basic vehicles are easy to program, and there are many community examples.

I am not sure I understand what you mean. But if you mean switch from one map to another instantaneously than yes this is achievable in any engine.

Unity has a full suite of networking features, but you need to make the “net code”. Like with AI, every game is different, so there is no “Make multiplayer work” button. It needs to be programmed to tailor fit your game.

Yes that is a very trivial thing to program.

You can program your own destructible environments, but unity does not have a destruction engine to automate this. Your not going to find an engine under 100,000K that does.

I am not sure you understand what a game engine does. You have to program the individual elements of your game. The game engine handles the lighting, rendering, script implementation etc… But making a game is not a matter of piecing together features built into a game engine. You need to program your camera controls, AI, Networking etc… What you describe is a huge undertaking, and not a good place to start for a beginner.

Lol! I’m afraid you have misunderstood. I have been working on games since I was 16, but always as an artist. Programming has never been my strong suit. I am well aware that no engine has “Make game” buttons. My questions were simple to ascertain how suitable Unity was for my purposes. For example, some engines CAN do wide open terrain but not all SHOULD do wide open terrain. Take Source, it is capable of big, wide open maps but to produce such maps takes far more work than with, say, the Torque engine. I wanted to know how difficult it would be to implement these features using Unity compared to other engines.

BTW, the Unreal Development Kit has destructible models and it is free to use. It also has all of the networking, vehicle support and AI you could want. However, you have no access to the code so I am looking at other options. NeoAxis also has networking ready to go out of the box, no coding necessary.

Thank you for your prompt reply, though.

You don’t have access to the Unity source code, either.

That could be a problem. How are features coded? Lua script? I remember something about c#

Scripting is done with UnityScript (Javascript-like syntax), C#, or Boo (Python-like syntax).

I have working on quite a few projects with Unity, and I have never even thought about needing the source. I come from a Torque background, so at first I was skeptical about source access as well. Let me assure you - the Unity way is the best way. Low level access is just going to slow you down.

One thing that people who aren’t familiar with Unity sometimes don’t understand is that you use scripting to implement whatever features you want, which significantly reduces any need for source code. You wouldn’t consider using Unrealscript to add actual core engine features to Unreal, but you do in fact do this in Unity. Some of the engine features (terrain, GUI system) are actually implemented using scripting…it’s not immediately apparent because you don’t see these scripts, but you can by using reflection.

–Eric

UDK is free to use until you start making money, then they take a pretty huge cut from your sales. UDK isn’t paying the development costs for implementing APEX, their real commercial licenses(hundreds of thousands of $) are. I’m not sure why anyone would want to make a low-budget commercial game with UDK considering the licensing issues.

UDK and NeoAxis both have some sort of networking implementation just like Unity does. However, each one is going to require a lot of customization based on the kind of game you’re making and network optimization is really complicated. If you just want to run around and shoot opponents and nothing else, you’re good to go, but anything more than that is going to require a lot of work, both client and server side(which might not even be controlled by a game engine at all).

Everything you asked about is completely possible using Unity. You’re going to have to get your hands dirty to actually get it working though. Unity is an empty sandbox. It isn’t designed for any one kind of game, so it’s up to you to actually make that stuff. It’s going to take an enormous amount of work to create a game on this scale.

Doesn’t Blender give full src? It has a game engine.

I recommend you just download the free version of Unity and get going with some prototype development.

Idea being get levels and concepts working EARLY use simple boxes and objects to test out scale and movement though the prototype levels.

Go though the Unity tutorials so you can get a feel for how things are done in Unity - this may spark other ideas you don’t have now etc.

Get familiar with controlling Unity’s camera and prototype the 2 different views you want.

That’s the only way you’ll know if you can accomplish what you’d like to do using Unity.

-Will