Jump to content

Framework or Engine?


hilty
 Share

Recommended Posts

well a framework is a complete toolset with a base architecture, so spoken the application frame

the application frame is static and you normally working with its components without changing the core structure

for example: construct, game maker, phaser

 

while an engine is more a code set you use and where you programming on a much lower level

normally you can change parts of the core structure with ease and adapt them to your needs, like using the render engine of one and the input engine of another one etc.

dont know about real examples but maybe pixi.js? and basicly every engine you build up for your games

 

oh and alot of frameworks actually start out as engines and move to framework status over time

Link to comment
Share on other sites

I was just considering frameworks vs engines and stumbled across this thread. 

 

Whats the preference with the developers here, do you guys use engines much or prefer use frameworks instead? I guess you can use both, but all the JS game engines I've seen so far have been quite specific and I struggle to see he broader appeal.

 

Cheers,

h

Link to comment
Share on other sites

The difference between a framework and an engine is simply this:

 

Frameworks are toolsets that provide you with an API to accomplish tasks, however they do not run or control you program flow. They are just there to provide utility methods or to abstract interfacing with a resource. An example is Three.js or Pixi.js, they provide an abstract API to work with WebGL/Canvas though they don't have application logic to run your program.

 

Game 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. It is more than just simply interfacing with a resource, it is the core runtime of your entire application that you build on it. Generally they are a collection of different frameworks (some custom, some off the shelf). Usually you use components of these to build your game, or extend the engine with new components for you to use. Examples of these are Unity, or UDK.

 

A good rule of thumb is you build *with* a framework, but you build *on* an engine. Think of a framework like a toolbox and a game engine like a workshop filled with tools that you use in the certain way of that workshop.

 

Which to use is dependent on what you are building, the environment it is in, the features you need, and how much work you want to put in.

 

Another good definition is: http://stackoverflow.com/questions/5068992/whats-the-difference-between-an-engine-and-a-framework

 

 

These terms, and others, do seem very similar. They're named from a conceptual standpoint, and so could be defined as follows:

  • A "framework" is a "foundation" or "support structure" around which you build your actual application. The .NET Framework includes not only a foundation (the CLR) but a series of libraries that provide standardized functionality that you would otherwise have to implement yourself. Other frameworks or foundations provide more specific areas of support, such as in UI, data storage, client-server interaction, etc. Frameworks provide a relatively static, generic structure on and in which you build something specific and unique.
  • An "engine" is a self-contained, but externally-controllable, piece of code that encapsulates powerful logic designed to perform a specific type of work. Engines exist to do "heavy lifting", where you instruct it to perform some complex, abstract task, and it handles the specifics in a relatively efficient manner without further external guidance. SQL implementations, and other services that perform searching, are typically called "engines". There are also physics engines, graphics engines, etc., which all have in common the idea that you tell it "do this" in some generic manner, and it handles the details.
Link to comment
Share on other sites

The difference between a framework and an engine is simply this:

 

Frameworks are toolsets that provide you with an API to accomplish tasks, however they do not run or control you program flow. They are just there to provide utility methods or to abstract interfacing with a resource. An example is Three.js or Pixi.js, they provide an abstract API to work with WebGL/Canvas though they don't have application logic to run your program.

 

Game 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. It is more than just simply interfacing with a resource, it is the core runtime of your entire application that you build on it. Generally they are a collection of different frameworks (some custom, some off the shelf). Usually you use components of these to build your game, or extend the engine with new components for you to use. Examples of these are Unity, or UDK.

 

A good rule of thumb is you build *with* a framework, but you build *on* an engine. Think of a framework like a toolbox and a game engine like a workshop filled with tools that you use in the certain way of that workshop.

 

Which to use is dependent on what you are building, the environment it is in, the features you need, and how much work you want to put in.

 

Another good definition is: http://stackoverflow.com/questions/5068992/whats-the-difference-between-an-engine-and-a-framework

 

Thanks for your answer. :)
 
So, following that you said, Phaser is a engine, right?
Link to comment
Share on other sites

 

Thanks for your answer. :)
 
So, following that you said, Phaser is a engine, right?

 

 

Can go either way, I think Rich calls it a "Game Framework" which is legit because it is generic, but calling it a "Game Engine" would not be incorrect either. Though in the most technical definition, it is probably an Engine. As I said before though, don't get caught up in these names they are subjective and fluid; plus it doesn't really matter what they are called choose the toolset you want/need.

 

engine is a component of framework

 

If I understand what you are trying to say, then you have it backwards. A framework is an abstraction for dealing with a single API, and engine is generally a collection of frameworks purposed to deal with a specialized task (i.e. a game).

Link to comment
Share on other sites

Can go either way, I think Rich calls it a "Game Framework" which is legit because it is generic, but calling it a "Game Engine" would not be incorrect either. Though in the most technical definition, it is probably an Engine. As I said before though, don't get caught up in these names they are subjective and fluid; plus it doesn't really matter what they are called choose the toolset you want/need.

 

 

If I understand what you are trying to say, then you have it backwards. A framework is an abstraction for dealing with a single API, and engine is generally a collection of frameworks purposed to deal with a specialized task (i.e. a game).

 

xerver, thanks.

 

I'm understand best now.
 
But, other questions. :)
 
What you say with generic?
Phaser may be used for make different types of games? Is it?
 
But this is the same concept of Engine, no?
 
What I understand until now is that a framework have more uses.
You can use it to build a software, for example. Engines have a only focus, games.
 
That's right?
 
(Thanks for your patience)
Link to comment
Share on other sites

That is one way to think of it, yes. Pixi.js (a framework) is for rendering, you can render anything like games, charts, anything. Phaser is a Game Engine, you make games with it. It is possible to do other things, but it is focused on making different kinds of games. Since it isn't for a *specific* game, but instead is a generic library for making all kinds of games calling it a Game Framework makes sense, so does calling it a Game Engine.

 

Again, try not to get caught up in the names; it really doesn't matter what something is categorized as. Just choose the tool that is right for you.

Link to comment
Share on other sites

That is one way to think of it, yes. Pixi.js (a framework) is for rendering, you can render anything like games, charts, anything. Phaser is a Game Engine, you make games with it. It is possible to do other things, but it is focused on making different kinds of games. Since it isn't for a *specific* game, but instead is a generic library for making all kinds of games calling it a Game Framework makes sense, so does calling it a Game Engine.

 

Again, try not to get caught up in the names; it really doesn't matter what something is categorized as. Just choose the tool that is right for you.

 

I ask it because I created "something" to build my games but I didn't know how to call it. :)
 
Game framework is a good name for it. :D
 
Thanks xerver.
Link to comment
Share on other sites

I tend to say - in game related terms, they are nearly the same. In application development, you differ between libraries and frameworks.

 

A library offers you the tools to get a single job done, like converting images, or rendering something.

 

A framework, on the other hand is a environment you build your application into. It dictates how things work together, shapes the way you need to structure your code and files.

 

A game engine does the same. It requires you to work in a specific way to get your game built. So for me, the terms framework and engine are the same thing in the game development space.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...