0
\$\begingroup\$

I am new to Game Development, All I have developed is some 2d Games, using Game Maker by YoYo Games. There game development is much more easy, just as simple as Drag and Drop.

But, Now I wish to evolve in Game Development, and wanna try some hands with the common programming languages like, Java, C++ or C. In order to achieve this, I came around the first topic, Game Engine.

So, What is Game Engine.?

That is a broad question, with various answers. I came out with some conclusion after reading various links,

Wikipedia:

A game engine is a system designed for the creation and development of video games. The core functionality typically provided by a game engine includes a rendering engine for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph.

GameCareerGuide.com

It exists to abstract the (sometime platform-dependent) details of doing common game-related tasks, like rendering, physics, and input, so that developers (artists, designers, scripters and, yes, even other programmers) can focus on the details that make their games unique.

Engines offer reusable components that can be manipulated to bring a game to life. Loading, displaying, and animating models, collision detection between objects, physics, input, graphical user interfaces, and even portions of a game's artificial intelligence can all be components that make up the engine.

Now what I understand is, Game Engine takes care of all the common work, like physics, loading etc...

As far my question is concerned, what is a Game Engine (Programmatically)?

Is it a Library? With pre-defined functions and classes, which can be inherited? Or what so ever, what is it?

\$\endgroup\$
  • 1
    \$\begingroup\$ it's like the operating system on your computer is the code that does the things behind the walls. instead of running programs it runs the simulation for the game. \$\endgroup\$ – Raxvan Nov 29 '13 at 19:49
  • \$\begingroup\$ Also: gamedev.stackexchange.com/questions/10770/… \$\endgroup\$ – Josh Nov 29 '13 at 20:38
2
\$\begingroup\$

A library simply refers to a collection of classes/functions. There is really not much to it. A Game engine can be released as a library, it's not going to change anything. Afterall software is build from a collection of classes and/or functions.

Where a game engine refers to the basic software of your game. When you speak of a game engine there is at least an architecture involved that handles the bare minimum of the game structure( Entities/Gameobject, rendering, etc ). A lot of the technical stuff is automated for you.

Game engines dictate how certain things are done ( adding scenes, entities/gameobject, loading assets, etc ). All you have to do is add gamelogic and give it an artistic flair ( assets-sound/models/shaders/whatever ).

Game engines exists so that they can boost production. Why or how they do certain things in certain ways is arbitrary ( programming styles as well as work environments can play a big role. To each their own).

\$\endgroup\$
2
\$\begingroup\$

Despite many accompanying stuff like editors/tools for the engine it can be 1 of 2 things, I guess:

  1. What you said - a kind of library which gives you functions and (code) tools to setup the rendering/window, load assets, manage, update and render them. But it also helps you with audio, physics, AI and so on... The main goal of such a game engine is not to let you do all that - you can do that by youself with raw API - but to let you do it fast and easily.
  2. A kind of environment that is closed and let's you only fiddle with some of it's functionality - setup the rendering machine and load/manage the assets. But the core functionality would be the same, I guess.

The difference betweend the two is that in the former case you have either the engine's source code or compiled binaries and use it like a library and in the latter it's a closed unit that you have no access to (like Unity3D) and it only let you do stuff in its editor and with scripts.

But I might be horribly wrong as I've only really worked with 1 commercial engine (Unity3D) and other than that I've tried creating my own ones, to no great effect. Still, I hope it helps.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.