Thursday 21 November 2013

Unit 67 Computer Game Engines

16/01/2014 15:37 - Get the game score to stop looping, so it just stops once you collide with the capsule/coin.



Computer Game Engine Research

Here is a good description I found of what exactly a computer game engine is: 

"A game engine is a system designed for the creation and development of video games. The leading game engines provide a software framework that developers use to create games for video game consoles, mobile devices and personal computers. The core functionality typically provided by a game engine includes a rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localisation support, and a scene graph. The process of game development is often economized, in large part, by reusing/adapting the same game engine to create different games, or to make it easier to "port" games to multiple platforms."- This information was found on wikipedia under the search "Game Engine" on 28/11/2013

Some game engines are designed for specific things, such as lighting or physics. I believe games back in the day used a number of game engines, where as now we have game engines that can handle all these things. It still remains that some game engines are better for certain things than others, that being particular game features such as lighting, but also whether they're more tailored to 2D games or 3D games. Although while researching different game engines, I cannot seem to find any information on what these game engines particularly excel in and where they're lacking as their sites generally seem to have listed that they're very good at every aspect of a game engine.

Here are a couple tables looking into many different factors of computer game engines - found on wikipedia under "Game Engine" on 28/11/2013:
NamePrimary programming languageScriptingCross-platformSDL2D/3D orientedPlatformNotable gamesLicenseNotes and references
3D RadC#AngelScriptNoNo3DWindowswRaceCustom3D physics-based engine, no scripting required.
Adventure Game StudioC++AGSScriptYesNo2DWindows LinuxChzo MythosThe Blackwell SeriesArtistic License 2.0Mostly used to develop third-person pre-rendered graphical adventure games, one of the most popular for developing amateur adventure games.
Aleph OneC++Lua, Marathon markup languageYesYes2.5DWindows LinuxOS XAleph One (Marathon remake)GPLFPS engine
Allegro libraryCAdaC++C#DLisp,LuaMercuryPascal,PerlPythonSchemeYesYes2DWindows LinuxOS X DOSzlibGraphics and audio
Angel2DC++LuaYesNo2DWindows LinuxOS X IOSBSDAngel is a cross-platform 2D game prototyping framework based on OpenGL and C++. It provides a broad set of basic game functionality in a lightweight fashion, and is designed to make it easy to get your game ideas up and running as quickly as possible.
AnuraC++YesYes2DWindows LinuxOS X iOS AndroidBlackBerry 10Frogatto & FriendsGPLIt is a fully-featured, cross-platform game engine.
Ardor3DJavaYesNo3Dcross-platformzlibFork of jMonkeyEngine 2.0
Axiom EngineC#YesNo3DWindows LinuxOS X SolarisLGPL[1][2]
BlenderC++PythonYesYes3DWindows LinuxOS X SolarisYo Frankie!ColorCubeGPL2D/3D game engine packaged in a 3D modeler for quick and intuitive use; fully integrated Bullet physics library.
Build engineCNoNo2.5DWindows LinuxOS X DOSDuke Nukem 3DShadow WarriorBloodCustomFPS engine2.5D (2D grid base geometry.)
Cafu EngineC++LuaYesNo3DWindows LinuxOS XGPL orproprietaryFull game engine; graphics, audio, physics, scripting, networking, and map editor.[3]
ClanLibC++YesYes2.5DWindows LinuxOS XzlibSelf-described "toolkit", provides most game engine functionality and extensive GUI programming.
Cocos2dC++, Python,Objective-CJavaScript, JavaYesNo2DWindows LinuxOS X IOSHardest Game Ever 2MITPorted to Linux, Mac OS X, iOS, Windows. iOS port uses Objective-C and integrates with Box2D and Chipmunk physics engines. Android port binds to Java. Cocos2d-x is multi-platform and uses C++.
Construct ClassicEvent BasedNoNo2DWindowsMinitroidGPLBSD
Core3DObjective-CYesYes3DWindows LinuxOS X IOSCoreBreach3D EngineMIT, Source Code GPL v2The 3D engine powering CoreBreach, an anti-gravity racing game.[4]
Crystal SpaceC++Java, Perl, PythonYesYes3DWindows LinuxOS XKeepsake, The Crystal Scrolls, Yo Frankie!LGPLGraphics, audio, physics
CubeC++YesYes3DWindows LinuxOS XAssaultCubeCubezlibPrevious generation (means it has a successor), 2D grid-based system, optimized for outdoor rather than indoor maps.
Cube 2C++CubescriptYesYes3DWindows LinuxOS XCube 2Red EclipsezlibEfficient 6-directional height map based geometry (versus traditionalPolygon soup model), hence the name Cube, FPS engine.
Delta3dC++PythonYesNo2.5Dcross-platformLGPLUses modular libraries.
Dim3C++JavaScriptYesNo3Dcross-platformMIT3D game engine for the Mac (although finished games are cross-platform).
DimensioneX Multiplayer EngineJavaJava, VBscriptYesNo2.5Dcross-platformUnderworld OnlineGPLProduces browser games with pseudo-3D views, sounds and music. Games can be turned into Facebook Apps. Intended for beginners. Free support and hosting.
DreemchestC++LuaYesNo2DWindowsOS X,AndroidiOS,FlashMatch them AllCustomCross-platform 2D engine. Box2D physics, WYSIWYG editor, Adobe(R) Flash(R) UIs, Localization System, Streaming, and DLC.
DualityC#Plugin-basedNoNo2DWindowsHonourboundMITGeneral-purpose game development framework. Comes with WYSIWYG editor.
Eclipse OriginsVisual Basic 6Windows onlyNo2DWindowsCrystalshire, yoomxWorldGPLA 2D MMORPG engine with a very large community. Includes NPCs, maps, resources, dynamic sprites, animations, skills, a bank, player chat, items, and more.
ENIGMAC++EDLYesNo2DWindows LinuxOS XGPLA compiler for Game Maker projects that runs cross-platform.
Env3DJavaYesNo3Dcross-platformGPL3D game engine that creates a simple interface for dynamically adding EnvObjects. Built on jMonkeyEngine 2.0. Intended for educational use in teaching computer science.
ExultC++YesYes2DWindows LinuxOS X BSDGPLFree software re-implementation of the Ultima VII game engine.
FLAREC++YesYes2DWindows LinuxOS X BSDGPLRPG engine that supports isometric and orthogonal perspective.
Flexible Isometric Free EngineC++PythonYesYes2DWindows LinuxOS X BSDUnknown HorizonsLGPL2D game engine optimized for RTS or RPG games.
FlixelActionScriptYesNo2DVarious games by Gregory WeirMITBoiler-plate code for flash games.
GameKit (OgreKit)C++LuaYesNo3DWindows LinuxOS X androidMIT/zlib/BSDHas Blender integration similar to BGE. Integrated Bullet physics library.
GamePlay3DC++LuaYesNo3DWindows LinuxOS X iOSBlackBerry 10AndroidApache 2.0Aimed at the indie game developer ecosystem with similar features to cocos2d-x.
GamvasJavaScriptJavaScriptYesNo2DHTML5MITHtml5 canvas game engine with Box2D integration.
GritC++LuaYesNo3DMITOptimized for Open world games like GTA.
Haaf's Game Engine (HGE)C++CGoYesYes2DWindows LinuxOS XHammerfightzlibHardware-accelerated 2D library with particle effects, sprite and animation handling, GUI controls, distortion, font, and resource handling. Go binding[5] Windows version ported to Haaf's Game Engine(HGE) for UNIX (hge-unix).
HGamer3DHaskellNoNo3DApache 2.0A Windows game engine for the Haskell programmer, including bindings to Ogre, CEGUI, Bullet, enet, SFML for Audio, Network, 3D Graphics, GUI and Input Device functionality.
Horde3DC++YesNo3DWindowsEPLHorde3D is a small 3D rendering engine designed for large crowds of animated characters.
HPL 1 engineC++AngelScriptYesYes3DWindows LinuxOS XPenumbra: Overture,Penumbra: Black Plague,Penumbra: RequiemGPLv3HPL is a cross-platform game engine which is compatible with the OpenGL, OpenAL, and Newton Game Dynamics libraries. One of the engine's defining features is its ability for advanced object interaction through the use of Newton's physics code.
id Tech 1 (Doom)CACSYesNo2.5DWindows LinuxOS XDoomDoom IIHeXen,HereticStrifeGPL2D-based geometry, sprite and particles, uses clever methods to emulate 3D graphics.
id Tech 1 (Quake)CQuakeCYesNo3DWindows LinuxOS XQuakeGPLFirst true 3D id Tech engine.
id Tech 2CCYesNo3DWindows LinuxOS XQuake IIGPLBetter known as the Quake II engine.
id Tech 3CGame Data {PK3 }YesNo3DWindows LinuxOS XQuake III ArenaGPLBetter known as the Quake III engine.
id Tech 4C++via DLLsYesNo3DWindows LinuxOS XDoom 3Doom 3: BFG Edition,Quake 4GPLBetter known as the Doom 3 engine with a set of good tools andMegaTexture.
IndielibC++YesYes2.5DWindows LinuxOS XLGPLIncludes entity system, sprite animations, collision detection, bitmap/TTF fonts, parallax scrolling, 3D objects, 2D Cameras, 3D Cameras, timers, alpha blending, shaders, and image filters.
ioquake3CYesYes3DWindows LinuxOS XUrban TerrorGPL
IwGame EngineC++YesNo2DWindows LinuxOS X iOS AndroidGPL(requires license to commercial Marmalade SDK)IwGame is built on top of the Marmalade SDK.
Jake2JavaYesNo3DCross-platformGPLJava port of the Quake II game engine.
JGameJava, Actionscript 3YesNo2DJ2ME AndroidBSD
jMonkeyEngineJavaYesYes3DCross-platformBSDA community-centric project that is used by several commercial game studios.
JogreJavaYesNo2DCross-platformGPLDesigned to be equivalent to websites such as Yahoo! Games. Used by many schools as part of the course work.
jPCT and jPCT-AEJavaYesNo3DJava AndroidSpaceCat, SkyFrontier, Max the flyerFree for personal and commercial usejPCT-AE is an a port of jPCT to Android. OpenGL, transparency, key-frame animation, shader support, built-in primitives, lens flares support.[6]
Kobold2DObjective-CLuaYesNo2DOS X iOSMITBased on Cocos2d with integrated Lua, Wax, cocos2d-iPhone-extensions, cocos3d, Box2D, Chipmunk, Chipmunk SpaceManager, Google AdMob, and ObjectAL libraries.
LibgdxJavaYesNo3DWindows LinuxOS X iOS AndroidHTML5Bumbledore, Apparatus, Clash of the Olympians, IngressApache 2.0A cross-platform game development library used in several commercial games.[7]
LWJGLJavaYesYes3DMinecraftBSDThe Lightweight Java Game Library
LÖVELuaLuaYesYes2DWindows LinuxOS XMari0Journey to the Center of Hawkthornezlib
MaratisC++LuaYesNo3DWindows LinuxOS X iOS AndroidSave Our Soulszlib/GPL
melonJSJavascriptJavascriptYesNo2.5DHTML5Alex4 WE,Bitzz,Neverwell Moor,Escape from MinimarsMITA lightweight (cross-browser) HTML5 game engine integrating the Tiled map editor format.
Moai SDKC++LuaYesYes2DWindows OS XiOS AndroidCrimson Steam PiratesCPAL
Multiverse FoundationJython and JavaPythonNoNo3DMITOpen source MMO and Virtual World Development Platform. Download includes starter assets and fully functional online world to play around with. Currently optimized for third-person RPG games.
Nebula DeviceC++Java, Python, Lua, Tcl/TkYesNo2.5DWindows LinuxUrban AssaultDrakensang: The River of TimeMITA real-time 3D game engine developed by German game studio Radon Labs.
NetGoreC#YesNo2DWindows LinuxMITOpen source multiplayer online RPG engine (MMORPG).
NMEHaxeYesNo2DWindows LinuxOS X iOSAndroidBlackBerryMITA game and application framework used to create many commercial mobile and web games.[8]
nxPascalObject PascalDelphiLazarusYesNo3DMIT
OpenSimulatorC#LSLYesNo3DBSDA server platform for hosting virtual worlds that is compatible with Second Life clients.
ORXC/C++CustomYesYes2.5DWindows LinuxMac OS X iOSAndroidLe Magasin des Suicideszlib3D accelerated
OxygineC++YesYes2DWindows LinuxMac OS X iOSAndroidElements Battle,BattlePaint(mobile),Match3QuestMITModern hardware accelerated 2D C++ framework for mobile and PC platforms. Features: OpenGLES 1/2, compressed textures, atlases, complex animations/tweens/sprites, scene graph, fonts, event handling, build tools, and others. Can be built on top of SDL2.0 or Marmalade SDK.
Panda3DC++PythonYesNo3DWindows LinuxOS X iOSToontown OnlinePirates of the Caribbean OnlineBSD
PixelLightC++AngelScriptLua,PythonJavascript/V8YesNo3DWindows LinuxAndroidMIT[1] OpenGL & ES 2 and D3D 9 & 11 renderers, OpenAL & FMOD sound, physics, Database, & GUI.
PLIBC++YesYes3DWindows LinuxOS XLGPL
PolycodeC++LuaYesYes3DWindows LinuxOS XMITA self-described "Framework for creative code"
PyrogenesisC++JavaScriptYesYes3DWindows0 A.D.GPLA modular engine designed for RTS games.[9]
Retribution EngineC++NoNo3DWindowsGPLA 3D game engine that is used to make first person shooter games.
SFMLC++YesNo2DZlibGame engine tool kit providing access to graphics, audio, scripting, and networking.
Sge2dCYesYes2Dcross-platformMITA framework for programming 2d games
SpringC++CC++Java/JVM,LuaPythonYesYes3DWindows LinuxOS XBalanced AnnihilationZero-KGPLRTS, simulated events, OpenGL
StepManiaC++LuaYesNo3Dcross-platformIn the GroovePump It Up ProMITA rhythm video game and engine that was originally developed as a simulator of Konami's DDR.
StratagusCLuaYesYes2DLinuxBos WarsGPLA 2D real-time strategy game engine
Torque3DC++TorqueScriptNoNo3DWindows LinuxOS XTribes 2MIT
TurbulenzTypeScriptJavaScriptYesNo3DHTML5Polycraft, Save the Day, Score RushMITDesigned to create 2D and 3D HTML5 games.
Wire3DC++YesNo3DWindows WiiLGPL
WorldForgeC++Lua(client), Python(server)YesYes3DGPLMMORPG framework consisting of Libraries, Server, Client, and Media.
ZenGLPascalCC++YesNo2DGNU/LinuxWindowsMacOS X iOS AndroidzlibCross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D graphics, handling input, sound output, etc.
ZGameEditorDelphiCustomYesNo3DWindows LinuxOS X AndroidMITA lightweight game engine and IDE.
NamePrimaryprogramming languageScriptingCross-platformSDL2D/3D orientedPlatformNotable gamesLicenseNotes and references




Unity game engine

Due to what is available to us here at the college, we will be using Unity for both our 2D game and 3D game. 

"The fully integrated and extendable Unity Editor is the interface in which you create your game. You import all your assets to and arrange them in the Editor. This is where you build your scenes with terrains, lights, audio, characters, physics and more; it’s where you add interaction via scripting, simultaneous play test and edit your game, and deploy to your chosen platforms. There are different views, or windows, in the Editor that contain the tools and workflows for creating your game." - www.unity3d.com 28/11/2013.

"Every scene in your game begins with adding empty containers, called GameObjects, that can be turned into anything. By attaching Components to a GameObject you create behavior and movement, and define appearance. Lights, meshes, special effects, audio, cameras, and particle emitters are examples of Components. In turn, each Component has its own set of adjustable properties—range and intensity for a light, for example—that you can tweak in the Inspector." - www.unity3d.com 28/11/2013.

'"Play' mode in Unity is an incredibly powerful development tool for rapid iterative editing while you play your game. Press Play and instantly you are inside of your game, playing and previewing how it will look in its platform-specific final build. Pause it, and alter values, assets, scripts and other properties, and instantly see the results. And, you can step through your game frame by frame for easy debugging." - www.unity3d.com 28/11/2013.

I hear that you can put import work from Cinema 4D (software I have previously used) into Unity. As you edit your creations in Cinema 4D, it'll alter it in Unity also. Because of this, I plan to put in my creations and animate them to be interactive characters in my game which I create using Unity.


You can arrange the different Views to suit your individual preferences and drag and drop elements from one View to another.




Here is a video showcasing some of the creations using Unity:
 http://www.youtube.com/watch?v=rYBaZyqiYZo


Scratch

Scratch is nice and simple for beginners to coding, as the actions are already there which you put into a flowchart, rather than typing up the script yourself. The simplicity of it is purposeful as Scratch is designed for children between the ages of 8-16, however, it is used by all ages. "With Scratch, you can program your own interactive stories, games, and animations — and share your creations with others in the online community. Scratch helps young people learn to think creatively, reason systematically, and work collaboratively — essential skills for life in the 21st century." - http://scratch.mit.edu/about/ - 05/12/2013. From what I've seen and experience of using Scratch myself, it is tailored towards 2D games as opposed to doing 3D like Unity does.

As well as games, people can make: Animations, Art, Music, Stories, etc.



Unreal game engine

"Every aspect of the Unreal Engine toolset is designed to ease of content creation and programming in mind, empowering artists and designers to develop assets in a visual environment and giving programmers a highly modular, scalable and extensible framework for shipping games in a wide range of genres." - http://www.unrealengine.com/en/features/ - 05/12/2013

Animation: Unreal 3 engine's 3D modelling is driven by an AnimTreem. It is a tree of animation nodes including:
  • Blend controllers, performing an n-way blend between nested animation objects
  • Data-driven controllers, encapsulating motion capture or hand animation data.
  • Physics controllers, tying into the rigid body dynamics engine for rag-doll player and NPC animation and physical response to impulses.
  • Procedural skeletal controllers, for game features such as having an NPC's head and eyes track a player walking through the level.
  • Inverse Kinematics, solver for calculating limb pose based on a goal location (e.g. for foot placement).
  • Group animations, handling notifications for the whole group. Synchronise all or a subset of them.
  • Morph target animation, allowing the control of morph target blend weights from animation data, with support for material control as well. Morph animation can be authored in Maya and morph data can be exported via ActorX. Skeletal animation can now control vertex and material animation, with preview in AnimSet Viewer.
  • Plus, there are no restrictions on the number of animations playing at the same time, number of blends, or post-processing operations.
AI: "Unreal Engine 3 ’s artificial intelligence system provides robust systems for game AI and navigation. Unreal Engine 3 supports the automatic creation and use of navigation meshes, giving AI-controlled characters increased spatial awareness of their environment and the ability to make smarter movement decisions." - http://www.unrealengine.com/en/features/animation/ - 05/12/2013

The Unreal 3 engine has a navigation mesh system. It provides an accurate representation of an AI's traversable space via a connected graph of convex polygons:
  • Less nodes means less time fixing up cross-level pathing information.
  • Pathfinding times go down as the density of the graph being searched shrinks.
  • Better representation of the world results in better pathing behaviour.
  • Paths are automatically generated.
"Furthermore, you can add crowds of animated characters to a map with Unreal Engine 3’s flocking technology, which directs character movements and game animation through a network of crowd destinations and Kismet interaction. Unreal Engine 3’s crowd system gives you complete control over the movement and interaction of crowd agents with players and other NPCs using a 'plug-in' behavior system." - http://www.unrealengine.com/en/features/artificial_intelligence/ - 05/12/2013

Audio: Unreal engine allows users to immerse themselves with 3D location-based sound. It supports all the latest compression schemes and gives you complete control over pitch, levels, looping, filtering, modulation and randomisation. From the information I can find on the Unreal engine, the audio seems somewhat limited to the rest of the engine's features. However, this doesn't necessarily make it worse than other audio systems in other engine's. Maybe audio isn't Unreal's forte.

Cinematics: "Unreal Engine 3 provides mature tools for creating visually stunning in-game cinematics and cut scenes. Unreal Matinee provides movie director-class control over all of the objects in a scene, as well as cameras and cuts, plus it includes an in-engine, real-time preview feature that plays back all the visual effects of a cinematic. Unreal Matinee injects film-style scenes into your game, enabling you to place every camera, object and explosion within the world and even play it back in real time." http://www.unrealengine.com/en/features/cinematics/ - 05/12/2013


  • Movie director-class control over all of the objects in a scene, as well as cameras and cuts.
  • Track-based, non-linear style editing system with support for controlling object movement and animation, playing audio, cutting between cameras, toggling particles, field of view, and more.
  • Easily created key frames for actors and objects, which can be manipulated directly in the editor.
  • Post-processing effects such as fades, depth of field, bloom and colour filtering effects can be easily animated and fine-tuned for each camera shot.
  • Ability to animation interactive, physical objects in the game such as doors and platforms.
  • High resolution frame-dumping allows for saving out pre-rendered source images to create game cinematics that can be played offline or converted to a standard video format.
  • Robust user interface with support for loop ranges, key/time snapping, playback speed controls, colour-coded tracks, automatics key reduction, as well as the standard copy/paste and undo/redo.

Unreal 'Kismet': 


  • Unreal's visual scripting system gives artists and level designers virtually limitless control over how a level will play without touching a single line of code. (Sounds good for people like me who aren't good with coding).
  • Allows connecting simple events and actions, created by programmers, to quickly assemble everything into actual gameplay prototypes.
  • Lets programmers easily extend and create their own game-specific actions and events.

I could go on in detail about every aspect of the game engine but that seems a bit "over-kill" so I will list what remaining features the Unreal game engine has:

  • Lightmass - an advanced global illumination solver.
  • Terrain - Unreal 3 engine makes creating terrains and levels easy.
  • Networking - Offers full LAN and direct IP connectivity for online play.
  • Physics - Physics in Unreal 3 engine are powered by NVIDIA's PhysX.
  • Real time shaders - A powerful visual interface comparable to the non-real time functionality of XSI and Maya.
  • Rendering - Unreal brings Gemini, the mutli-threaded rendering system.
  • Unreal Script - A simple high level programming language that gives complete scripting control.
  • Unreal Swarm - Multi-core support with a distributed computing system.
  • User Interface - Create menus, UI elements, and 2D graphics for modern 3D games.
Here are even more features!:

Destructible Environments - "Build a gorgeous world and then let your players crush it to pieces. Unreal Engine 3's fracturing tool and runtime enable you to take virtually any existing mesh, slice it up into as many fragments as desired, and destroy structures." - http://www.unrealengine.com/en/features/more_features/ 09/12/2013. The engine supports the destruction of everything from metal to cloth, brining more realism and interaction to your environments.

SpeedTree Foliage Editor - Model and render beautiful, realistic, animated trees and plants in real-time. "The game and simulation industry's premier tool for creating foliage. Unreal Engine 3 features a full integration with SpeedTree, which includes powerful rendering features and numerous terrain and grass engines." - http://www.unrealengine.com/en/features/more_features/ 09/12/2013.

FaceFX Facial Animation - "Create realistic facial animation from audio files with the FaceFX tolls included with Unreal Engine 3. Batch process thousands of sound files, add expressions to a single animation without ruining lip-synchronisation, and tweak animations to perfection." - http://www.unrealengine.com/en/features/more_features/ 09/12/2013.


This all sounds very well and good for professionals but for me personally I think it might be a bit complex with there being so many features (too complex to make the most of the Unreal Engine). Especially as on their site, they use the words "simple" and "easy" a lot, as if they're trying to stress this fact to cover the complexity of it? Maybe what they say is true, either way, luckily I'll be using Unity.


This video shows of some of these features mentioned in the Unreal Engine across multiple different platforms: http://www.youtube.com/watch?v=pVJ31jkr5zc


Look! I'm learning! I got the ball rolling, in Unity! [exclamation mark]:


I'm learning! and here's the proof!:


theballcannowjump.jpeg



ballmovementcoding.jpeg



thecameranowfollowstheball.jpeg


Iamlearningandcodingatthesametime.jpeg