Libraries, wrappers, framework, etc. What's the difference?

Started by
1 comment, last by nbmatt 10 years, 1 month ago

After being a student majoring in video game programming for the last few years, I've decided to finally start seriously working on a simple game. After much research on the best tools to use, I've found that programmers are always using or at least talking about libraries, wrapper classes, or frameworks. I'm not quite comfortable with the definitions and explanations when I google each term so I thought I'd ask you folks here,

if you would be so kind to explain them on a level that a student would be able to understand what the following are, and what makes them differ from each other:

- Library

- Wrapper class

- Framework

- Game Engine

- GDK (assuming this means Game Development Kit, things such as the UDK?)

- API

Also to help me understand better, which of the above would you categorize each of these in?

- Unity3D

- UDK

- Allegro

- DirectX

- OpenGL

- Qt Creator

- SDLnet

Advertisement

I'm surprised that after a few years in that major, you haven't had any of those elements covered for you, but here goes:

Library: just a collection of code, usually centered around a specific functionality. An engine is a library, a framework is a library, etc.

Wrapper class: "Wraps" a class or piece of functionality inside another class, usually for ease of calling the thing being wrapped in the wrapping class' language. Ex: SharpDX (a graphics library and API) has C# wrapper classes around the C++ DirectX classes. (this is grossly simplified for ease of explanation)

Framework: A library (ha!) or set of libraries that provide a lot of basic functionality that will be used to build upon. XNA is considered a framework because it doesn't actually give you a game, just the toolkit to make one.

Game Engine: is a framework. If you take a completely coded game, and remove all the stuff that specifically makes that individual game, what you're left with is the engine: all the code that makes everything work but that knows absolutely nothing about the specific assets it's loading, dialogue that happens in a game, level layouts, etc. Game engines often (unless you're some AAA studio like Epic or Id) are a result of writing a specific game, and then keeping all the code that can be re-used to make another game.

GDK: usually a framework (or engine) coupled with a few handy editor tools (level editor, asset packager, etc)

API: Application Programming Interface - You can think of them as tools to put in your coding toolbox. Graphics APIs, networking APIs, Physics APIs...basically a black box of code in a library with (hopefully) documented interfaces for using that functionality. Or not black-boxed in the case of open source. API does a thing, you need something that does that thing, you use that API in your project.

For the specifics:

Unity3D: Game Engine/GDK/Framework/APIs. This spans a lot. It has its own engine, you can program with its APIs, it has editors (that you can extend in code)

UDK: same as Unity3D

Allegro: as per its wikipedia entry, it's a library that contains multiple APIs. You could also consider it a framework (are you catching that some of these are loose definitions that overlap a lot?). It has everything you would need to make an engine, but is not one itself.

DirectX, OpenGL, SDLnet: APIs. Well, libraries of APIs if you stick to the concept of an API as a singular tool.

Qt Creator: had to look this one up, I guess it's just an IDE? (Integrated Development Environment, think Visual Studio, Eclipse, Netbeans, etc)

Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes)
DeviantArt :: Because right-brain needs love too (also pretty neglected these days)

Great explanation. Thanks, very helpful!

This topic is closed to new replies.

Advertisement