Disclaimer: This essay is provided as an example of work produced by students studying towards a computer science degree, it is not illustrative of the work produced by our in-house experts. Click here for sample essays written by our professional writers.

Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of UKEssays.com.

A Study On Game Engine Technology Computer Science Essay

Paper Type: Free Essay Subject: Computer Science
Wordcount: 5249 words Published: 1st Jan 2015

Reference this

Current generation games are mostly developed using a game engine mainly due to the shorter development time and effort needed to create a game without thinking about the technicalities involved behind it. Therefore, a game engine must be equipped with advanced features to ensure the ability to generate high quality games. This paper will presents about game engine technology,its responsibilities, types of game engine and review of game engines lists.

1. Introduction

Today, large scale modern games are often separated in two primary parts: the game engine, and the game data. It is desirable to have a game engine or game engine components that can be reused for many games, leaving only new game data to be created. This is generally cheaper and faster than other ways to make games. The actual game specific code that describes the game can sometimes be considered slightly in between the game data and the game engine, and where it actually lies may vary. However, most modern games and game engines uses a script component which makes it possible to implement most of the game specific code in some scripting language, making that code quite clearly part of the game data. The use of scripting languages for games are not anything new, as for adventure and role-playing games driven much by stories, puzzles and quests, it has been used for more than 20 years. These languages were however often very task and engine specific. But with more general game engines, scripting languages have become more common for a wider variety of games. And with a wider variety of games, languages less specialized for the particular game are sought. Today, some game engines have their own custom and sometimes heavily integrated languages, while other uses common and freely available languages.

The engine of a game is essentially the program that the game runs on. An engine will contain any and all information pertaining to how the game is played, as well as how the game looks and sounds. Depending on how well a game’s engine is “written” by its programmer(s), more or less of the hardware’s actual processing power may be used for better-looking results. In other words, if Microsoft Windows, Linux, and Mac OS Xare the operating system for the computers, the game engine is the operating system for the games.

Get Help With Your Essay

If you need assistance with writing your essay, our professional essay writing service is here to help!
Find out more about our Essay Writing Service

2. Game Engine Technology

The game engine is the fundamental piece of software necessary for simulating and rendering virtual worlds.[1] It deals with issues of scene graph management, providing efficient input to a renderer, today usually a hardware implementation of the OpenGL or Direct3D API. It must provide the ability to simulate complex and moving objects in a physically realistic way. It usually also supports collision detection, curved surfaces as well as polygonal models, animation of characters, geometric level of detail, terrain management and culling techniques.

After all, the game engine, much like a car’s engine, is what makes the game go. Unfortunately, sometimes there’s a fuzzy line between where a game’s engine ends and where the content of a game begins, as if there were a fuzzy line between whether a car’s air conditioner is part of its engine.

Generally though, the concept of a game engine is fairly simple: 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. In contrast, the content of the game, specific models and textures, the meaning behind object collisions and input, and the way objects interact with the world, are the components that make the actual game. To use the car analogy again, think of how the body, CD player, in-dash navigation system, and leather seats make the actual car. That’s the content.

3. Game Engine Responsibilities

The engine is responsible for rendering everything you see and interact with in the game world.[2] In this context Rendering engine may refer to a software system designed for the creation and development of video games. Portal rendering stated that the engine is currently able to use the sector information to avoid rendering all object in the world, but it does so at the expense of altering the visual appearance in a way that is obviously not acceptable.

Creating a 3D world also be in game engine responsibilitiy.[3] 3D objects are stored as points in the 3D world (called vertices), with a relation to each other, so that the computer knows to draw lines or filled surfaces between these points in the world. So a box would have 8 points, one for each of the corners. There are 6 surfaces for the box, one for each of the sides it would have. This is pretty much the basis of how 3D objects are stored. When you start getting down to some of the more complicated 3D stuff, like a Quake level for example, you are talking about thousands of vertices (sometimes hundreds of thousands), and thousands of polygonal surfaces.

Figure 1. Without rendering you don’t get to see anything. It visualizes the scene for the player / viewer so he or she can make appropriate decisions based upon what’s displayed. The rendering is generally the first thing you tend to build when constructing an engine. But without seeing anything — how do you know your code is working? The renderer is where over 50 percents of the CPU’s processing time is spent, and where game developers will often be judged the most harshly

Next is visibility management (also called culling). The purpose of visibility management was to hide the non-visible objects and detail in the games. The unnecessary things such as outside view frustrum and object that occluded by other visible things need to be hidden in a games. The unnecessary detail (details too small to be perceived) alse need to be hidden in a games.

Culling means throw away non-visible things. The general strategies used were multi phase testing,select first cheap and coarse then gradually increasing cost/precision before utilize bounding volumes.

Figure 2. By culling the non-visible parts of a 3D world, a game engine can reduce its workload considerably. Look at this scene and imagine that there’s a room behind the one under construction, but if it’s not visible from this vantage point, the other room’s geometry and other 3D data can be discarded

The simplest approach to culling is to divide the world up into sections, with each section having a list of other sections that can be seen. That way you only display what’s possible to be seen from any given point. How you create the list of possible view sections is the tricky bit. Again, there are many ways to do this, using BSP (Binary Space Partitioning) trees, Portals and so on.

BPS is a way of dividing up the world into small sections, and organizing the world polygons such that it’s easy to determine what’s visible and what’s not — handy for software based renderers that don’t want to be doing too much overdrawing. It also has the effect of telling you where you are in the world in a very efficient fashion.

Figure 3. BSP Tree Topology

A Portal based engine (first really brought to the gaming world by the defunct project Prey from 3D Realms) is one where each area (or room) is built as its own model, with doors (or portals) in each section that can view another section. The renderer renders each section individually as separate scenes. At least that’s the theory. Suffice to say this is a required part of any renderer and is more often than not of great importance. Some of these techniques fall under the heading of “occlusion culling”, but all of them have the same intent: eliminate unnecessary work early.

For an FPS (first-person shooter game) where there are often a lot of triangles in view, and the player assumes control of the view, it’s imperative that the triangles that can’t be seen be discarded, or culled. The same holds true for space simulations, where you can see for a long, long way – culling out stuff beyond the visual range is very important. For games where the view is controlled — like an RTS (real-time strategy game)- this is usually a lot easier to implement. Often this part of the renderer is still in software, and not handed off to the card, but it’s pretty much only a matter of time before the card will do it for you.

Game engines not only provide the rendering, they can also provide the physics models and collision detection. Collision handling = Collision detection (geometric problem) + Collision response (dynamic problem). Collision Detection is like when your car drives into the wall it collides with the bricks its made from.  In this case the force of the tank colliding with the wall will cause the bricks to move, collision detection works out which bricks are affected.

Figure 4. Collision detection

Next, game engine responsible for character support in the games such as behaviour, decision making, appearance and movement of the object. After all, the last responsibility for the game engine is in multiplayer and networking of the game. In the last several years game engines have advanced by leaps and bounds in terms of things like memory management, processing power, optimization procedures, networking capabilities, and pushing polygons to screens. If you think back to the early days of 3D computer games, characters like those found in Castle Wolfenstein (circa 1992) had polygon counts of several hundred (if that), whereas today it’s not uncommon for characters to have polygon counts in the in the thousands, as is true for DOOM III, with the source models (often used for promotional materials, and transitional animations during play) to have polygon counts in the millions.

4. APIs and SDKs

Two other terms you hear in the game industry that are closely related to game engines are “API” (application programming interface) and “SDK” (software development kit).[4] APIs are the software interfaces that operating systems, libraries, and services provide so that you can take advantage of their particular features. An SDK is a collection of libraries, APIs, and tools that are made available for programming those same operating systems and services. Most game engines provide APIs in their SDKs. The Unreal Engine, for example, provides an interface for programmers to create their games, both through a scripting language called UnrealScript, and through libraries, which are provided to anyone who licenses the engine, and which come in the same package as their other tools, like the editor UnrealEd.

5. Game Engine Starting Point

For a long time, many game companies made their own game engines and kept that technology in house, iterating on it as computers improved and more advanced versions were needed.[5] Engines like SCUMM by LucasArts and SCI by Sierra, for example, powered most of the adventure games that those companies released in the late 1980s and into the mid 1990s. The engines like id Tech (the engine that powers the Quake series of games) and the Unreal Engine started as in-house technologies, though they have recently evolved into middleware technologies as well.

Over the past several years, the cost of making an in-house engine has grown significantly, and more and more companies have begun to specialize in making either full game engines or game engine components to sell to other companies, rather than make games. We call these kinds of companies middleware providers. The middleware providers can offer these products at very reasonable prices, and, for most game development studios, this creates a very clear “build versus buy” decision. Why pay six programmers for a year to build an engine when you can buy 90 percent of the features you want from a proven technology for less money — and have it immediately? As a result, almost all components of a game engine are purchasable at a variety of prices, or downloadable in the form of open source projects.

6. Types of Game Engines

Game engines come in many different flavors and at many levels of programming expertise. To get a feel for how different they can be, three kinds of engines will be explained which is the roll-your-own version, the mostly-ready version, and the point-and-click engine.[6]

6.1 Roll-your-own game engines (lowest level)

Despite the cost, many mainstream companies (as well as indie game makers) will still attempt to roll their own engines. This means they use publicly available application interfaces, such as APIs like XNA, DirectX, OpenGL, the Windows and Linux APIs and SDL, to create their own engines. In addition, they may use other libraries, both commercial and open source, to help them along the way. These libraries might include physics libraries like Havok and ODE, scene graph libraries like OpenSceneGraph, and GUI libraries like AntTweakBar.

XNA and SDL included here because, although they make creating an engine much easier by abstracting away some of the more nasty platform implementation issues, they still require a lot of programming to get a game off the ground. They’re not really engines so much as good starting points for creating your own engines.

Generally, these home-rolled systems give programmers the greatest amount of flexibility, letting them pick and choose the components they want and integrating them exactly how they want. But they also take the longest amount of time to build. Additionally, programmers frequently will have to build the tool chain from scratch, since they can rarely rely on all these libraries to work together straight out of the box. This makes rolling your own engine less attractive to most game developers, even the professional ones.

6.2 Mostly-ready game engines (mid level)

These engines are ready for prime time right out of the box, with rendering, input, GUI, physics — you name it. Many of them even have mature tool chains so you don’t have to roll your own. Engines in this category include OGRE and Genesis3D, which are both open source, low priced engines like Torque, and even really high priced ones such as Unreal, id Tech, and Gamebryo.

To varying degrees, all these engines still require a bit of programming to get them up and running into a complete game. They might call for some scripting or sometimes even low-level coding to get a real game working. Mostly-ready game engines are a bit more limiting than roll-your-own engines and are frequently optimized for the general case. That said, many of these engines are the product of dozens of people’s work over hundreds of long hours, and will provide better performance with less effort than most roll-your-own engines, even if they don’t do exactly what you want.

6.3 Point-and-click engines (highest level)

Point-and-click engines are becoming more and more common these days. They include a full tool chain that allows you to point and click your way to creating a game. These engines, which include GameMaker, Torque Game Builder, and Unity3D, are built to be as friendly as possible, and are made to require as little coding as possible. That’s not to say knowing a little coding doesn’t help, but it isn’t really a necessity the way it is for the mostly-ready and roll-your-own engines.

The problem with many point-and-click engines is that they can be extremely limiting. Many do one or two types or genres of game well, or one or two types of graphics modes. This is not to say they’re useless. Even faced with the restrictions of these tools, it’s possible to make highly creative games or even find creative ways around those restrictions. The best thing about these engines is that they allow you to work quickly, and play your games quickly, without too muck work. If you’re just starting out in game design, you could do worse than these tools.

7. List of game engines

Several tools called game engines are available for game designers to code a game quickly and easily without building from the ground up.[7]

7.1 Free / open source engines

Table 1. Free / open source engines

Engines

Primary programming language

Aleph One

C

Allegro library

Mercury, Pascal, Perl, Python

Ardor3D

Java

Axiom Engine

C#

Blender3D

C++

Build engine

C

Cafu Engine

C++

ClanLib

C++

Crystal Space C

Python,

Cube

C++

Delta3d

C++

DGD

LPC

DXFramework

C++

Exult

C++

Genesis3D

C

Glest

C++

HPL Engine 1

C++

id Tech 1, 2, 3

C

ioquake3 C

C

Irrlicht Engine

C++

jMonkeyEngine

Java

Jogre

Java

Lightweight Java

Java

OpenSceneGraph

C++

Panda3D

C++

Quake engine

C

PLIB

C++

Retribution Engine

C++

RealAxis Engine

C++

Second Life

C++

Sphere

C++

Spring

C++

Stratagus

C

Troll2D

C++

Verge 3.2

VC

Zombie Engine

C++

7.2 Freeware engines

These engines are available for free use, but without the source code being available under an open source license. Many of these engines are commercial products which have a free edition available for them:

Table 7.2. Freeware engines

Engines

Briefly about

Adventure Game Studio

Mainly used to develop third-person pre-rendered adventure games, this engine is one of the most popular for developing amateur adventure games.

Cocos2d

A 2d game engine for making iphone games.

DikuMUD and derivatives

MUD engines

dim3

Freeware 3D javascript engine for the Mac (although finished games are cross platform)

Game Maker Lite

Object-oriented game development software with a scripting language as well as a drag-and-drop interface

LPMud and derivatives (including MudOS and FluffOS)

MUD engines

M.U.G.E.N

A 2D fighting game engine

Open Scene Graph

An open source 3D graphics toolkit, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modelling

Panda3D

A relatively easy to use C++ game engine with Python bindings that was made by Disney and is owned by Carnegie Mellon University. Disney uses it to produce some of their games

Platinum Arts Sandbox Free 3D Game Maker

Open source and based on the Cube_2:_ Sauerbraten engine with a focus on game creation and designed for kids and adults. The program includes Non commercial content, but the main engine and large majority of the media can be used commercially

TinyMUCK

MU* engine

TinyMUD

MU* engine

Unity

An open-ended 3D game/interactive software engine for web, Windows, and Mac OS X. Upgrading to paid licenses can additionally enable support for the iPhone and Nintendo Wii

World Builder

A classic Mac OS game engine

Wintermute Engine

A runtime and development tools for creating 2D and 2.5D point’n’click adventure games

RGSS

An engine made by enterbrain to create RPG’s using RPG Maker XP. RGSS2 was used for RPG Maker VX

7.3 Commercial engines

Table 7.3. Commercial engines

Engines

Briefly about

Alamo

The engine used in Star Wars: Empire at War by Petroglyph Games.

Aurora Engine

For Role-playing games.

Bork3D Game Engine

A cross-platform game engine primarily targeting iPhone and iPad

BigWorld

Server, client and development tools for the development of MMOG for games that run on Windows, Xbox 360, and PS3

BRender

A real-time 3D graphics engine for computer games, simulators and graphic tools.

C4 Engine

A cross-platform game engine developed by Terathon Software.

Cafu Engine

A game engine with development tools for creating multiplayer, cross-platform, real-time 3D games and applications.

Coldstone game engine

An old game creation suite for Macintosh/Windows to create role-playing or adventure-style games.

CPAL3D

Complete game creation tools with scene editor, IDE and text server

CryEngine, CryEngine 2, CryEngine 3, CryEngine 3.5

The game engine used for the first-person shooter computer game Far Cry. CryEngine 2 is a new generation engine developed by Crytek to create the FPS game Crysis.

Crystal Tools

Square Enix’s proprietary seventh generation game engine.

DX Studio

Engine and editing suite that allows creation of real-time games and simulations.

Dunia Engine

Engine (heavily modified version of the CryEngine) made especially for Far Cry 2 by Ubisoft Montreal.

Earth-4 Engine

The graphics engine used in Earth 2160

Electron engine

Developed by Obsidian Entertainment for their game Neverwinter Nights 2, based on the Aurora engine

Elflight Engine

Cross-platform 3D streaming game engine designed from the ground up for use over the Web. Games can play in a web browser window, in a separate window or full-screen. Java and OpenGL based

Enigma Engine

A real-time tactics game engine, used in Blitzkrieg

Esperient Creator

A very powerful 3D modeler and engine, used world wide for training, simulation, architecture, and games. Built-in Scripting, C/C++, CScript, or Lisp, Shader Editor, import 50+ 3D formats.

Euphoria

This is a biomechanical Ragdoll engine by NaturalMotion.

Freescape (1986)

Incentive Software; One of the first proprietary 3D game engines, used in Driller and 3D Construction Kit.

Frostbite Engine

Game engine used for the next-gen title Battlefield: Bad Company.

Gamebryo

Cross-platform game middleware for professional developers, notable for its rapid development.

GameSalad

A 2D game engine that currently targets the iPhone and a Apple Safari Web-plugin developed by Gendai Games. Has a visual programming interface that allows for rapid development

Gamestudio

A 2D and 3D game engine for beginners. Uses the Gamestudio development system and the lite-C programming language.

Glacier, Glacier2

Developed by IO Interactive and used for the Hitman series of games. Glacier2 is a new generation engine currently in development for upcoming games.

GrimE

Used in LucasArts graphical adventure games starting with Grim Fandango

Hedgehog Engine

Created by the Sonic Team with the capability of rendering high quality graphics at high speed. It was first used in Sonic Unleashed.

HeroEngine

3D game engine by Simutronics for building MMOs in a live collaborative environment.

HPL Engine 2

Used in Frictional Games survival horror games. Earlier versions are free software.

id Tech 4

(Also known as Doom 3 engine) Used by the games Doom 3, Quake 4, Prey and Quake Wars. Have become Open Source with the release of RAGE in 2010

id Tech 5

Currently in development by id Software as engine for their games, Doom 4 and Rage, and as a general purpose engine to be licensed

IMUSE

Specifically designed to synchronize music with visual action

Infernal Engine

Created by Terminal Reality, provides rendering, physics, sound, AI, and metrics for game development. Used in several games such as Ghostbusters: The Video Game, Mushroom Men: The Spore Wars, Bass Pro Shops: The Strike and Roogoo: Twisted Towers.

INSANE

Used in LucasArts games

Infinity Engine

Allows the creation of isometric computer role-playing games

Jade engine

Developed by Ubisoft, originally for Beyond Good & Evil

Jedi

A game engine developed by LucasArts for Star Wars: Dark Forces and Outlaws.

Kaneva Game Platform

A MMOG engine for independent and professional game development

Kinetica

A game engine developed by Sony for PlayStation 2

Leadwerks Engine

Leadwerks Engine is a 3D engine for rendering, sound, and physics in real-time games and simulations

Lemon Engine

Lemon Engine is a modular set of libraries for all aspects of game development across all major platforms

Lithtech Jupiter Ex

Developed by Monolith Productions to create the game F.E.A.R

LyN engine

Developed by Ubisoft, originally for Rabbids Go Home and Beyond Good & Evil 2.

Medusa

A C++ 3D game engine developed by Palestar and used in the DarkSpace MMO. It features distributed world simulation, single tool version control and asset realisation, cross-platform compatibility and an integrated client/server network system

Monumental Technology Suite

A MMOG platform, including server and client technology and development / live management tools.

MT Framework

Game engine created by Capcom and used for their games on Xbox 360, Playstation 3 and PC.

Multimedia Fusion 2

A 2D game development system

Multiverse Network

An MMOG platform, including server, client, and tools.

Odyssey Engine

Used to create three dimensional computer role-playing games, used in Star Wars: Knights of the Old Republic

Pie in the Sky

Used in two internal games by Pie in the Sky Software and then in the 3D Game Creation System and the games made with it

PhyreEngine

A cross platform (PC & PS3) graphics engine from Sony Computer Entertainment

Q (game engine)

A fully pluggable, extensible and customisable framework and tools from Qube Software for PC, Wii, PS2, PS3, Xbox, Xbox 360, PSP, iPhone etc created by the team behind Direct3D

RAGE

A game engine created by Rockstar Games to power their upcoming video games on the Xbox 360 and PlayStation 3. Implemented in Grand Theft Auto 4

RelentENGINE

A next-generation FPS engine supporting massive destroyable city environments and realistic vehicle control, makes extensive use of shader model 3

RenderWare

A 3D API and graphics rendering engine

Revolution3D

A 3D graphics engine developed by X-Dream Project

RPG Maker VX

A 2D engine to make top-down and isometric-style role-playing games for Windows

RPG Maker XP

A 2D engine to make top-down and isometric-style role-playing games for Windows

RPG Maker 2003

A 2D engine to make top-down and isometric-style role-playing games for Windows

RPG Maker 95

A 2D engine to make top-down and isometric-style role-playing games for Windows

SAGE engine

Used to create real-time strategy games

Scaleform

A vector graphics rendering engine used to display Adobe Flash-based user interfaces, HUDs, and animated textures for games in PC, Mac, Linux, Xbox 360, PlayStation 2, PlayStation Portable, PlayStation 3, and Wii

SCUMM engine

Used in LucasArts graphical adventure games

Serious Engine

The engine by Croteam used in the epic Serious Sam: The First Encounter and The Second Encounter

Shark 3D

A middleware from Spinor for computer, video games and realtime 3D applications

ShiVa

A game engine with an authoring tool to produce 3d real time applications for Windows, Mac OS X, Linux, WebOS, Android, and iPhone

Silent Storm engine

A turn-based tactics/tactical RPG game engine, used in Silent Storm

Sith

A game engine developed by LucasArts for Jedi Knight: Dark Forces II

Source engine

A game engine developed by Valve Software for Half-Life 2.The SDK comes with Half Life 2

Torque Game Engine

A modified version of a 3D computer game engine originally developed by Dynamix for the 2001 FPS Tribes 2

Torque Game Engine Advanced

A next-generation 3D game engine support modern GPU hardware and shaders

TOSHI

A fourth generation cross platform game engine designed by Blue Tongue Entertainment

Truevision3D

A 3D game engine using the DirectX API

Unigine

Cross-platform middleware engine

Unity

An open-ended 3D game/interactive software engine for web, Windows, Mac OS X, the iPhone, and Nintendo Wii

Unreal Engine

A game engine for PC, Xbox 360 and PlayStation 3

Vengeance engine

A video game engine based on the Unreal Engine 2/2.5

Vicious Engine

Available for Microsoft Windows, Sony PlayStation 2, Microsoft Xbox, and Sony PlayStation Portable

Virtools

A 3D engine combined with high-level development framework, used for game prototyping and rapid developments. Available for Windows, Macintosh, Xbox, PSP. Can publish standalone or for the 3DVia Web Player browser plugin

Vision Engine

A cross platform game engine, developed by Trinigy. Used in games such as: Arcania: A Gothic Tale, The Settlers 7: Paths to a Kingdom, Dungeon Hero, Cutthroat, and Three Investigators. Available for PC, Xbox360®, PLAYSTATION®3 and Nintendo Wii®, and now even browsers

Visual3D.NET Game Engine

All-in-One 3D game engine and toolset, fully written in C#/.NET for Windows A browser player is roadmapped for v1.1

WGAF

The game engine developed by Guild Software which powers their MMORPG Vendetta Online

X-Ray

The game engine developed by GSC Game World which powers their FPS series, “S.T.A.L.K.E.R”.

XnGine

Developed by Bethesda Softworks, one of the first true 3D engines

Zillions of Games

used to develop games that happen on a grid, like chess

8. Conclusions

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, localization support, and a scene graph. The process of game development is frequently economized by in large part reusing the same game engine to create different games.

 

Cite This Work

To export a reference to this article please select a referencing stye below:

Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.

Related Services

View all

DMCA / Removal Request

If you are the original writer of this essay and no longer wish to have your work published on UKEssays.com then please:

Related Services

Our academic writing and marking services can help you!

Prices from

£124

Approximate costs for:

  • Undergraduate 2:2
  • 1000 words
  • 7 day delivery

Order an Essay

Related Lectures

Study for free with our range of university lecture notes!

Academic Knowledge Logo

Freelance Writing Jobs

Looking for a flexible role?
Do you have a 2:1 degree or higher?

Apply Today!