Jump to content
  • Advertisement
Sign in to follow this  
kitman20022002

Difference between Framework and Engine

This topic is 910 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Done research but definition is too board for me , from what I research the different between engine and framework

Engine : 

1.Aengine allows you to have a list of entities, each with a position on the map

2.An "engine" is a self-contained,externally-controllable, piece of code that encapsulates powerful logic designed to perform a specific type of work, instruct it to perform some complex, abstract task, and it handles the specifics in a relatively efficient manner without further external guidance.

3.A  engine implements all of the components defined in the framework… or at least all of the components that the game engine developer feels is required in order to implement his game engine.

4.Engines are full features toolsets that actually manage your program flow. They handle core logic and implementation details and you act on top of that.

 

FrameWork: 

1.framework is a collection of (usually) lower level libraries and helper stuff that you can use to do whatever the hell you want

2.A "framework" is a "foundation" or "support structure" around which you build your actual application

3.framework is mostly a bunch of component interfaces, but it does not implement those components.

4.Frameworks are toolsets that provide you with an API to accomplish tasks, however they do not run or control you program flow.

 

 

For example 1 : I can say PhysX helps to accomplish physics task , but because physX also has a update function , which control the flow of the physics, so how do you I know is PhysX a engine or a framework (I know on the internet it says it's a engine, just don't know why)? or maybe is there any function or variables I can look at so I can determine it is engine or a framework this we be the best.

 

For example 2 : when building a rendering class, I have a update and draw functions and also some setTexture , unbindTexture  , clearScreen and getOpenGLVersion functions, like this video 

, so the update,draw and clearScreen is controlling the flow so I say it is a engine, but however settexture , unbindTexture, and getOpenGLVersion are support structure around my actual application which they don't control my program flow, so in this case how would I know is it a engine or a framework?

 

Thanks.

Edited by kitman20022002

Share this post


Link to post
Share on other sites
Advertisement

I wish as well, but two main reason

1. communication wise, for example: When i was building a "engine" and show my teacher he says it's a "framework" not a "engine",but then I can't prove is he right or wrong. 

2. Job interviews. when i'm interviewing, I'll wanted to show my "engine/framework", and when I say it is a engine while they think it's just a framework, They think you are unprofessional. (this happens when there almost two person have the same skills,and trying to decide who they need, at that point every single words matters) 

Edited by kitman20022002

Share this post


Link to post
Share on other sites

There is no right or wrong. They're both vague umbrella terms that overlap almost completely. Another term that fits is "SDK" :P

 

Within game development, we tend to use the term engine more than framework.

An engine usually a complete SDK that includes: libraries of code, sample code, many different kinds of tools and external programs (level editors, data exporters, etc), and sample assets.

A framework is usually just libraries of code, but not always :p

Share this post


Link to post
Share on other sites

OK. just have to accept it for now 

 

There is no right or wrong. They're both vague umbrella terms that overlap almost completely. Another term that fits is "SDK" :P

 

Within game development, we tend to use the term engine more than framework.

An engine usually a complete SDK that includes: libraries of code, sample code, many different kinds of tools and external programs (level editors, data exporters, etc), and sample assets.

A framework is usually just libraries of code, but not always :P

thanks guys I just just have to accepted it ,but one more thing, Hodgman you said "A framework is usually just libraries of code, but not always" so in what case its not would you mind to give me a example?  

Share this post


Link to post
Share on other sites

Hodgman you said "A framework is usually just libraries of code, but not always" so in what case its not would you mind to give me a example?

For example, the QT GUI framework is a set of libraries for writing cross-platform GUI applications. You'd call it a framework instead of a library because as you put in the OP - it's a "foundation" or "support structure" around which you build your actual application.
As well as libraries though, it also contains it's own IDE, plug-ins for other IDEs, GUI editing tools, tools for (human language) translators, etc...

FWIW:
Framework points 3/4 aren't necessarily true -- a GUI framework that doesn't actually implement any GUI components is pretty much useless. Some frameworks do implement the main program loop and dictate the program flow -- this is one thing that for me would elevate a library to framework status (pushing it's ideology onto the user).
Same with all the engine points ---
Entities/Maps aren't necessarily terms that pop up in every engine. They're very common terms in "game engines", but not necessary. You also see the term 'engine' used in other realms too, such as a graphics engine.
Point 3 is about engine/framework interplay, which doesn't really make sense to me. An engine defines and implements its own frameworks.
Most engines control your program flow, but some just provide you with lots of tools to help implement common program flow patterns yourself, leaving the decisions up to you.

Share this post


Link to post
Share on other sites

The way I keep it in mind... an engine is just an abstraction and functionality layer that is built ontop of a layer of frameworks.

A framework is simply a library with some sort of functionality.

 

Example: A Graphics Framework vs a Graphics Engine. A Graphics Framework is simply an array of API calls that can be used easily in an application. This is not a framework in the mind of just DirectX or OpenGL, but rather a framework in the mindset of BGFX library. A graphics engine builds onto this framework, and it may add on more, Ogre3D.

Share this post


Link to post
Share on other sites
For me, there's a continuum between the terms. As a library grows to cover more functionality, it becomes a framework. And as a framework grows to become more extensible and complete, it becomes an engine.

Share this post


Link to post
Share on other sites
This is the way I look at it while categorizing these things:

An engine is a "just add content" solution. An engine likely is shipped as some kind of executable. A designer or artist can make a complete if basic game on their own using the prebuilt pieces of the engine with only very simple or no coding required. A complete engine likely includes a number of tools in addition to the core game platform, e.g. a level editor, an asset pipeline, and so on.

A framework is missing significant code, and probably only compiles into a library and not an executable. Programmers can use the framework to create a game or create tools like a level editor. A programmer is required as very significant chunks of core logic are missing, likely far beyond the ability of your average content creator. Game frameworks might also include things like an asset pipeline, especially if the framework includes a model-loading module or the like.

Short version: frameworks are only immediately useful to programmers while engines are immediately useful to content creators.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!