Any recommendations for a game engine?

Started by
19 comments, last by Zakwayda 13 years ago

Unity has their own and if I'm not mistaken Vision has their own.

Unity supports three languages (not counting C++ plugins for the pro version). One of the languages, UnityScript (aka Unity JavaScript) is specific to Unity, but the other two, C# and Boo are not (and C# at least is of course widely used).
Advertisement
In the long run you'll be happier with C++, and especially glad you ditched unity, even if it is harder to get started in.


[quote name='dre38w' timestamp='1301705312' post='4793336']
Unity has their own and if I'm not mistaken Vision has their own.

Unity supports three languages (not counting C++ plugins for the pro version). One of the languages, UnityScript (aka Unity JavaScript) is specific to Unity, but the other two, C# and Boo are not (and C# at least is of course widely used).
[/quote]

But the support is of a nature that seriously limits you. The manner you do things is always in scripts, so it completely negates the OO features of C# and you don't get to use the actually useful parts of it like the GUI API so it's completely meaningless.

This is my thread. There are many threads like it, but this one is mine.


But the support is of a nature that seriously limits you. The manner you do things is always in scripts, so it completely negates the OO features of C# and you don't get to use the actually useful parts of it like the GUI API so it's completely meaningless.

Unity may not be for you, but plenty of people use it with no problem.

I'm not sure I understand your objections though. The programming environment Unity provides is very general, so I'm not sure where the limitations you mention come into play. At its root, you have access to the basic services many game engines provide: game entities and their transforms and visual representations, input, sound, etc. So at least within the basic limits of the engine (e.g. what features the renderer supports and so on), you can basically do whatever you want.

I'm also not sure what you mean about negating OO features of C# (there's nothing stopping you from writing OO code in Unity). And what GUI API are you referring to?

It sounds to me like the problem isn't so much Unity, but just that it doesn't meet your particular requirements, whatever they might be. (Or maybe that you're just not that familiar with how Unity actually works.)

Unity may not be for you, but plenty of people use it with no problem.

Lots of teenagers and people making cell phone games use it, sure. It would also be fine for a corridor shooter or other simple game.


I'm also not sure what you mean about negating OO features of C# (there's nothing stopping you from writing OO code in Unity).

Yes there is. Well there is and there isn't. The problem is the linkage.

Your interface method between the engine and the coding language forces you into a scripting paradigm (interface is all created by a scripting call), so it makes no difference what language you use you are forced to do everything in a simple manner. In Unity you can't even reuse code between projects let alone make a real OOP project (unless you have the very expensive full source version). So given that last little tidbit and the comments you made that unity does nothing to limit OOP which of us is unfamiliar with the engine? Or maybe you just don't understand the distinction, seemingly most programmers don't. Unity not only limits OOP but it pretty much eliminates any kind of basic organization you could get from using straight up C as well.

And you know the little API that C# is a part of, the .NET frameworks? You can't use that either, not that it would be too helpful due to the other constraints, but really it's the only thing truly good about C# in the first place.

A couple months of me playing with unity ran like this:
Unity is great!
Unity is great!
Hmm.
Unity is...totally useless for anything but a game with very simple gameplay? Crap.

It's like the makers of torque and starforce teamed up to make a game engine.

This is my thread. There are many threads like it, but this one is mine.

I don't want to be argumentative, but it really doesn't sound like you know what you're talking about here. It sounds like maybe you didn't really understand Unity when you tried it, or maybe it just didn't 'gel' with your particular way of thinking.

To be clear, I'm not advocating for Unity specifically. But, I do think it's a useful product, and that your analysis of it is highly flawed.

Lots of teenagers and people making cell phone games use it, sure. It would also be fine for a corridor shooter or other simple game.[/quote]
First of all, there's nothing wrong with an engine being good for 'cell phone games' or targeting a particular niche.

That said, you seem to be ignoring the facts completely. Just to cite a couple examples, Unity was used by EA for some of their games, and it was also used for FusionFall. Like any engine, Unity has its own niche and its own limitations, but to say that it's only good for simple games shows that you don't know much about it.

Your interface method between the engine and the coding language forces you into a scripting paradigm (interface is all created by a scripting call), so it makes no difference what language you use you are forced to do everything in a simple manner.[/quote]
Sorry, that doesn't make any sense. You can write whatever code you want, and it can be as simple or complex as you want. If you want, you can interact with the engine minimally (e.g. by manipulating object transforms only), and do everything else yourself (more or less) in your own code.

From my own experience working with Unity, I can tell you with certainty that you are not forced to do everything in a 'simple manner'. (I really can't imagine where you got that impression.)

In Unity you can't even reuse code between projects[/quote]
Absolutely, completely, 100% false. What gave you that idea?

let alone make a real OOP project (unless you have the very expensive full source version).[/quote]
I'm not sure what you mean by a 'real OOP project', or why you couldn't make one using Unity.

So given that last little tidbit and the comments you made that unity does nothing to limit OOP which of us is unfamiliar with the engine?[/quote]
Based on your comments, I can say with almost complete certainty that I'm more familiar with it (and understand it better) than you.

Unity not only limits OOP but it pretty much eliminates any kind of basic organization you could get from using straight up C as well.[/quote]
I'm not sure what you mean by that.

And you know the little API that C# is a part of, the .NET frameworks? You can't use that either, not that it would be too helpful due to the other constraints, but really it's the only thing truly good about C# in the first place.[/quote]
What are you talking about? Of course you can use .NET. Not every module is available, but you can absolutely use .NET. (Where are you getting this information exactly?)

Like I said, I don't want to be argumentative, but people do read these threads, so I think it's important to counter misinformation when it comes up. Maybe I'm just not understanding your points, but everything you've said so far seems to indicate that you know very little about Unity or how it works.
Sorry but I agree with jyk. I'm no pro at Unity but I've worked with it for over eight months or so, strictly, and it is capable of a vast variety of game types. Like jyk said even EA is using it. I found that very impressive when I heard that news by the way. Anyway Unity can go far beyond simplicity. MY only problem I had with it is the shadowing and lighting. Other than that the engine is great. Lots of mobile games are being made but that's where the money is. Although I prefer to use GameSalad for apps and whatever the other similar program was called for Android.

Isn't C# an object oriented programming language? Unity uses C# so how are they limiting that? Javascript seems to be lacking in some areas compared to C# BUT they still use C#.
Developers, developers, developers, developers.
So if I write a few programs that are OO then call them externally through another program, is that an object oriented program? If a unix command is made in an object oriented manner and I call that through bash is my bash script object oriented. Well I don't really want to argue about what OO means, which seems to be the issue. But I hold to what I said. It takes more than data structures to make OOP.

And sure you can share code...via cut and paste or copying a whole file into another project. Maybe this has changed, but on the other hand maybe you didn't go far enough to bump into that limitation yet.

And back to .net, you can't use all the GUI code in the API you have to rely on the simple tools provided or make your own based on them, which drastically limits your ability to separate your code from the engine. And that's it in a nutshell, everything is tightly mashed in to an ubertool you have little control over.

And yes I know all about the projects using unity. Good 3D display? Sure. Complicated gameplay and GUI? no. Of course you can say that of most any engine since everything is consolized and cellphonized these days and the leading engine unreal also has some pretty crappy GUI support, but I think it offers a particularly poor development environment for a complex project.

I don't mean to insult the cell phone makers of the world but it's a different story to make cell phone games and make something like a flight simulator or old school RPG. For unity that is virtually if not entirely impossible.

And this is not to just single out Unity, lots of engines have the same failings, possibly by design to make it harder to migrate to other products. The comment was more about C++ than unity, though.

This is my thread. There are many threads like it, but this one is mine.

OH! The GUIs! I don't know how this will work in other engines but in Unity I completely forgot how difficult it was to deal with the HUDs for my games. It was horrid. Agreed there. I apologize if I sounded like I was taking a shot at you. Didn't mean it that way. But anyway, I'm not going to use Unity anymore anyhow so it doesn't really matter to me what's said. Agreed that Unity has a long ways to go for improvement.
Developers, developers, developers, developers.
And sure you can share code...via cut and paste or copying a whole file into another project.[/quote]
How is that not sharing code? If you write a class for project A, and then re-use it in project B, isn't that sharing code?

Just as an example, what about heavily templated libraries in C++? Generally, you re-use that code by referencing the same file from multiple projects. How is that any different?

In any case, although I haven't done it myself, I believe you can use your own assemblies in Unity (although maybe not in the browser version). If that is in fact the case, then it completely negates your point (whatever it is).

And back to .net, you can't use all the GUI code in the API you have to rely on the simple tools provided or make your own based on them, which drastically limits your ability to separate your code from the engine.[/quote]
Ok, earlier you said you couldn't use .NET. So are you now at least acknowledging that you can use .NET?

And what GUI API are you talking about? Are you talking about something from .NET, like Windows.Forms or something? What is it that you can't use exactly?

Unity has a built-in GUI system, but I probably wouldn't use it for production code. There are some good third-party solutions though, and you can roll your own just like you would with any other engine. I really don't understand what you're getting at about the GUI stuff though. If you mean something from .NET, then what game engine allows you to use GUI-related features of .NET in a scripting environment? Can you clarify?

And that's it in a nutshell, everything is tightly mashed in to an ubertool you have little control over.[/quote]
This is the closest you've come to a valid point :) When you use a development tool like Unity, you do trade some control for ease of use, and that's something you have to weigh when deciding what tool to use. However, based on everything you've said, I think the 'giving up of control' that you're talking about is very different from the reality of it.

Complicated gameplay and GUI? no.[/quote]
Again, you're 100% incorrect. Unity imposes absolutely no limitations on the complexity of the gameplay or the UI. Why do you think it does?

but it's a different story to make cell phone games and make something like a flight simulator or old school RPG. For unity that is virtually if not entirely impossible.[/quote]
Where are you getting these ideas? There's absolutely nothing about Unity that would make it impossible to make an RPG or a flight simulator. Why do you think these things can't be done?

I apologize for being contrary; it's easy to fall into this trap on occasion when participating in forums such as this one :) But, it is a little frustrating when people post misinformation persistently. A lot of people read these forums, and some may not have the background or context to separate the good information from the misinformation. So, I do think it's important to counter misinformation where possible.

To be honest, it really sounds to me like you don't understand how Unity works. Like I said earlier, it's not for everyone (no tool is), but if you don't have a good grasp of it yourself, I'd at least refrain from discouraging others from using it.
First, drew you seem like a cool guy. I didn't mean to argue or convince you of anything, I was just throwing in my two cents. Please skip following rant.


And sure you can share code...via cut and paste or copying a whole file into another project.

How is that not sharing code? If you write a class for project A, and then re-use it in project B, isn't that sharing code?

Just as an example, what about heavily templated libraries in C++? Generally, you re-use that code by referencing the same file from multiple projects. How is that any different?

In any case, although I haven't done it myself, I believe you can use your own assemblies in Unity (although maybe not in the browser version). If that is in fact the case, then it completely negates your point (whatever it is).

And back to .net, you can't use all the GUI code in the API you have to rely on the simple tools provided or make your own based on them, which drastically limits your ability to separate your code from the engine.[/quote]
Ok, earlier you said you couldn't use .NET. So are you now at least acknowledging that you can use .NET?

And what GUI API are you talking about? Are you talking about something from .NET, like Windows.Forms or something? What is it that you can't use exactly?

Unity has a built-in GUI system, but I probably wouldn't use it for production code. There are some good third-party solutions though, and you can roll your own just like you would with any other engine. I really don't understand what you're getting at about the GUI stuff though. If you mean something from .NET, then what game engine allows you to use GUI-related features of .NET in a scripting environment? Can you clarify?

And that's it in a nutshell, everything is tightly mashed in to an ubertool you have little control over.[/quote]
This is the closest you've come to a valid point :) When you use a development tool like Unity, you do trade some control for ease of use, and that's something you have to weigh when deciding what tool to use. However, based on everything you've said, I think the 'giving up of control' that you're talking about is very different from the reality of it.

Complicated gameplay and GUI? no.[/quote]
Again, you're 100% incorrect. Unity imposes absolutely no limitations on the complexity of the gameplay or the UI. Why do you think it does?

but it's a different story to make cell phone games and make something like a flight simulator or old school RPG. For unity that is virtually if not entirely impossible.[/quote]
Where are you getting these ideas? There's absolutely nothing about Unity that would make it impossible to make an RPG or a flight simulator. Why do you think these things can't be done?

I apologize for being contrary; it's easy to fall into this trap on occasion when participating in forums such as this one :) But, it is a little frustrating when people post misinformation persistently. A lot of people read these forums, and some may not have the background or context to separate the good information from the misinformation. So, I do think it's important to counter misinformation where possible.

To be honest, it really sounds to me like you don't understand how Unity works. Like I said earlier, it's not for everyone (no tool is), but if you don't have a good grasp of it yourself, I'd at least refrain from discouraging others from using it.
[/quote]
Look is there some reason you are so defensive?

Remember, you are the one who came out and said I don't know what I'm talking about. I do know. I know a lot more about programming than all but a few people and if your life doesn't include a decades long programming training montague they you are NOT one of them. Yet I've had gamedev staff come into my threads and argue with me and even try to correct me like a schoolchild then get proven wrong flat out. Then still argue with me, like if you failed english 101 (and have this pointed out by quoting basic grammar texts) and then you keep arguing about obscure middle english texts with a visiting librarian from abroad who just spent a week studying the exact texts in question.

I would never normally posture to the extent of that last paragraph about my vaunted experience and knowledge but it's simple reality. If a guy just wrote a fricken memory manager he probably knows more about the subject than some guy who doesn't even know that malloc allocations are all 16 byte aligned (and in fact can't even be a C programmer at all to not know that, so should not even be saying anything at all on the matter).

And it's not like I made some uberrant against Unity. As I said, I feel that C++ is a better way to develop games in the long run. There's more learning curve but you have fewer limitations such as the ones you mentioned. I also said already it was not even intended to single out unity.

Now, your comment about sharing code tells me you are not much of a C++ programmer, and some of the other comments say you really don't know that much about unity even (a subject I am not expert in but which apparently more an expert than you, its defender). You have no business arguing with me to be honest, you just have no idea what you're talking about and you're just making noise for the hell of it. Of course you can have two separate files with the same thing in it. What would be nice is to be able to include another project in your project as a basis for the current one, especially when forced to use their stupid asset server. Or wait maybe you don't have pro version because obviously you don't even know what I'm talking about or why it's such a pain in the ass, and if not then you should doubly not try to drag me into an argument and waste my time.

Now are my comments arguable? Well of course like I said you can argue OOP and other abstract concepts pretty much endlessly with no resolution, but to come out and make the dumb comments you have about something you have very little grasp of is simply a waste of everyone's time.

This is my thread. There are many threads like it, but this one is mine.

This topic is closed to new replies.

Advertisement