Could a code layer on top of Unity be called an "Engine"?

Title says it all. I’ve seen cases like this before (there are some of the asset store), but I’m curious what people think:

If you built a code base on top of Unity that does a lot of the legwork to make a certain type of game (random example: rts), would it be appropriate to call that API an “Engine”?

Could you call the use of that package + Unity using the “Awesome RTS Engine”?

Curios, curious…

Not really, its more like a Framework .

Like when you say engine that implies it gets the rendering done .

I don’t believe ‘engine’ has anything to do with rendering. “A game engine is a system designed for the creation and development of video games” Rendering is only part of what a ‘game engine’ does. An ‘engine’,in the category of software, is an agent, or instrument, for development. So really any large code base with tools and instruments can be called an engine.

I say yes.

All an engine is is a bunch of ‘core’ components that do various tasks. Contrary to Keithsoulasa there is no requirement for a renderer to be part of the engine [though it is found in many] - furthermore, there’s nothing to say that an engine built ontop of/inside of unity does not do rendering!

Of course, you do need to draw a distinction between framework, engine and plugin. If you are by and large still using Unity’s components then it is likely not an engine. I’d expect most RTS systems to either be frameworks or plugins, simply because that generally works without having to reinvent the wheel too much.

It really depends on your definition . If your talking to a graphics programmer they MIGHT ask if they have to code the graphics engine from the ground up or if there working with existing code .

I reckon a engine could use something else for rendering , like if its 90% your code , and rendering is done in Orge then yeah you can say you wrote the engine .

I should probably clarify.

The big [but not only] reason a game engine doesn’t necessarily need a renderer is because sometimes the game engine doesn’t do any rendering. Think text-based games, or server based games.

Aww , that explains it .

It’s just a word, a symbol. You could call it a motor. It could be a collision detection engine, a rendering engine, a platform game engine, whatever.

Ok, thanks a lot for the info, folks! I’m working on something-that-is-probably-a-framework- a code layer on top of Unity that can be used to make adventure games. My interest in this question is to know what to call it most accurately- that someone might not write it off immediately upon seeing an inaccurate/inappropriate description.

Your comments have been very helpful! Let me throw out another term to get your definitions/impressions if you want: Toolkit. Would a code layer on top of Unity that takes care of most things besides art content (and content scripting) be better classified as a framework than toolkit? What is your understanding of the term?

Certainly it’s all semantics to an extent, but not such without a purpose. Many thanks~

The PhysX code used by Unity does no rendering whatsoever, but it still referred to as a “physics engine”. Rendering is what some engines do, but it is by no means a requirement.

When you see “engine”, just think “script library”, or “code library”. They’re the same thing. What you’re downloading from the Asset Store is usually just a bunch of scripts, hence “script library” is probably the best choice for Unity.

“Engine” is an old term that dates back to the time before Object-Oriented Design caught on in a big way and gave us the term “framework”. “Engine” is synonymous with “big library of (reusable) code”. The “Renderware Graphics” SDK was also known as a “3D graphics engine”, and was even marketed as such. It was written entirely in C, not C++, so calling it a “framework” would have ben incorrect.

Strictly speaking, a “framework” (in Object-Oriented jargon) refers to a bunch of classes, or ‘object templates’, that you’re supposed to use as a basis for your own classes. You’d typically define your own ‘class’ that inherits from one of the “framework” classes to provide its basic functionality.

For example, every script that needs to be attached to a Unity Component will inherit from “MonoBehavior” (in C# and Boo; in Javascript, the inheritance is implied, not explicit.) “MonoBehavior” is a base class—a base object—that defines all the bits and pieces needed to make your script play nice with Unity. It’s that MonoBehavior class that makes sure those “Start()”, “Awake()”, “Update()”, “OnGUI()”, and any other ‘standard’ Unity functions that you create in your scripts actually get called by the Unity engine. (Deriving a class like this is also known as “sub-classing”.)

Another example of inheritance is seen when creating Unity Editor extensions—you inherit from the “UnityEditor” class.

In ordinary usage, very few of the script libraries you download from the Asset Store are inherited from in this way: You don’t normally inherit from an “RTSGame” class: you still inherit from “MonoBehavior” and just use GetComponent to access the features of the script(s) you’ve downloaded. Such script libraries are therefore not “frameworks” in the OO sense. I’d define most of them as “script libraries”, or even just “ready-made scripts”.

The above is probably too much information for most, so I’ll stop typing now.

Haha- No, that’s great. I’m familiar with some of the concepts that define framework, like inversion of control, but not everything. Thanks for all that info.

Just to be clear- if “Awesome RTS Tools Package” did provide you with a base “Unit” class (derived from Monobehavior) with the intention that you’ll derive from that for your units…and if it supplied it’s own game manager that enforced a design structure by calling everything to run the game…and if it contained pre-made systems you could link into to take care of things like networking or pathfinding- That would rightfully be considered a framework, right?

This old chestnut.

It’s most likely an engine. There’s lots of engines that drive a game. You have the physics engine… the sound engine… unity… various engines to drive ai. It depends how fickle you are.

My personal definition is “tech” we have a cool piece of tech which sits on top of the unity base engine.

ex2D itself is probably a high level engine, running on unity. It’s got it’s own mesh creation and handling plus other stuff. Framework? Engine? Who cares.

Go with “Framework” to be safe.

go with learning to not post in old topics to be safe

You sir, just made my day :smile:

Of course engines are built on engines. Unity is built on many engines, not just one. Stuff’s in layers these days guys. Do keep up… tsk

[edit: just realised I already posted in this necro thread :P]