You are on page 1of 14

Motor de videojuego

Un motor de videojuego es un trmino que hace referencia a una serie de rutinas de


programacin que permiten el diseo, la creacin y la representacin de un videojuego. Del
mismo modo existen motores de juegos que operan tanto en consolas de videojuegos como
en sistemas operativos. La funcionalidad bsica de un motor es proveer al videojuego de un
motor de renderizado para los grficos 2D y 3D, motor fsico o detector de
colisiones, sonidos, scripting, animacin, inteligencia artificial, redes, streaming, administracin
de memoria y un escenario grfico. El proceso de desarrollo de un videojuego puede variar
notablemente por reutilizar o adaptar un mismo motor de videojuego para crear diferentes
juegos.1
Hoy en da existen una gran variedad de motores completos y motores grficos como OGRE
3D que es un motor grfico gratuito con "open-source" para que el usuario pueda crear
aplicaciones desde el lenguaje C++. Desarrolladoras grandes de videojuegos como Epic,
Valve y Crytek han lanzado al pblico sus motores o SDKs para que los usuarios interesados
en el desarrollo de videojuegos puedan descubrir como se elaboran y as tener una
introduccin amplia a la industria y el desarrollo. Otros ejemplos de motor de juego son el
motor grfico Doom Engine, Quake Engine, y GoldSrc, desarrollado por Valve y el cual fue
utilizado para crear el exitoso juego Half-Life 1; otros motores famosos son Source, tambin
creado por VALVe, y BLAM! Engine, desarrollado por Bungie, y en el cual se cre la famosa
saga de Halo.
ndice
[ocultar]

1Glosario de aspectos relacionados


o

1.1Assets

1.2Application Programming Interface (Interfaz de Programacin de Aplicaciones)

1.3Render (Renderizacin)

1.4Objetos 3D

1.5Higher-order surfaces (superficies de alto orden)

1.6Culling

1.7BSP Tree Hierarchy (BSP rbol de Jerarqua)

1.8Tesselation

1.9Iluminacin (lighting)

1.10Vertex Lighting

1.11Flat Shading Lighting (Iluminacin de Sombreado Plano)

1.12Scripting Systems (Sistemas de scripting)

1.13Sonido

1.14Msica/Pistas de Audio

1.15Inteligencia Artificial (IA o AI)

2Motores de videojuego

3Vase tambin

4Referencias

Glosario de aspectos relacionados[editar]


Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada. Este
aviso fue puesto el 28 de noviembre de 2011.
Puedes aadirlas o avisar al autor principal del artculo en su pgina de discusin
pegando: {{sust:Aviso referencias|Motor de videojuego}} ~~~~

Assets[editar]
Los assets pueden ser traducidos como elementos que sern introducidos al videojuego.
Estos elementos incluyen Modelos 3D, personajes, texturas, materiales, animaciones, scripts,
sonidos, y algunos elementos especficos de cada motor. Cada motor trabaja de una manera
distinta a otros lo cual puede aceptar "Assets" que otros motores no pueden manejar, sin
embargo los ejemplos mencionados antes, son elementos que todos los motores de hoy en
da usan.

Application Programming Interface (Interfaz de Programacin de


Aplicaciones)[editar]
Es un sistema de rutinas, de protocolos y de herramientas para desarrollar programas de
aplicacin. Un buen API hace ms fcil desarrollar un programa proporcionando todos los
bloques del desarrollo del programa. El programador pone los bloques juntos.
Entre estos los ms importantes son el DirectX (de Microsoft) y el OpenGL (que trabaja con la
mayora de los sistemas operativos).

Render (Renderizacin)[editar]
El render o renderizacin, es el proceso de la computadora en mostrar en pantalla el aspecto
visual de nuestro juego. El render se encarga de mostrar al jugador todo el poder grfico que
el desarrollador haya configurado en el motor, el render muestra todo lo que es el terreno o
BSP, modelos, animaciones, texturas y materiales. El render contribuye todo el aspecto visual
del juego.

Objetos 3D[editar]
son objetos "secundarios" podra decirse, que se agregan al escenario del
videojuego (Ej: Baos, puertas, rboles, muebles, adornos, etc) Los

objetos o modelos 3D son clasificados por polgonos al igual que todo


elemento que tenga una composicin tridimensional.

Low-Poly: Traducido como "Polgonos bajos" son modelos que su composicin de


polgonos es baja lo cual es probable que el modelo tenga un muy mal detalle y no se
obtenga un resultado favorable. Estos modelos se usan para optimizar el rendimiento del
videojuego y el "Low-Poly" es efectivo en modelos que no requieren mucho detalle (Ej,
una caja o un jabn)

Mid-Poly: Traducido como "Polgonos medios" son modelos que su composicin de


polgonos es media y logran dar mejor detalle que los "Low-Poly" aunque su velocidad de
procesamiento es ms tardada. Estos modelos son ms usados para modelos que
requieren un poco ms de detalle (Ej, Un arma, una casa)

High-Poly: Traducido como "Polgonos altos" son modelos que su composicin de


polgonos es alta y llegan a dar un detalle magnfico pero su procesamiento es ms
complejo y tiende a ralentizar el ordenador, dependiendo de la potencia que el Hardware
de la computadora o consola cuente. Estos modelos son usados para modelos que
precisan de un buen grado de detalle (Ej Un personaje, un vehculo).

Esto es en pocas palabras el LOD o Level of Detail (Nivel de detalle).


Comparaciones y medidas

Imagen

Vrtice
s

Notas

~5500

~2880

~1580

Detalle Mximo.
Jugador cerca del
objeto.

~670

140

Detalle Mnimo.
Jugador muy lejos
del objeto.

Higher-order surfaces (superficies de alto orden)[editar]


Es una forma de renderizacin especialmente para terreno en un videojuego. Videojuegos de
nueva generacin como Gears Of War, Halo 4, Battlefield 4, Crysis 3, utilizan esta tcnica para
crear terreno de manera suavizada y realista.. Esta tcnica se puede utilizar para otros

modelos pero es exclusivo para modelos High-Poly puesto que se especializa en deformar
con curvas.

Culling[editar]
Codificado que logra que los objetos que no se ven en determinado cuadro de
la animacin por causa de objetos que los obstaculizan (como una pared) no tomen tiempo
de renderizado. As se reduce la cantidad de trabajo del motor. El Culling es ms fcil de
implementar en juegos en donde la visin es controlada, como los RTS, en comparacin con
los FPS. Un mtodo de Culling puede ser utilizando rboles BSP.

BSP Tree Hierarchy (BSP rbol de Jerarqua)[editar]

Un heightmap creado con Terragen

El BSP (Binary Space Partioning) es el modelo o terreno base que nuestro videojuego siempre
va a renderizar en todo momento, el BSP se diferenca por ser la base de nuestro mundo o
nivel, es lo que conforma el ecosistema y estructura de nuestro nivel (Ej. Un desierto, un mar,
un castillo, un bosque etc) Un BSP se puede crear de muchas maneras pero hoy en da las
tcnicas ms utilizadas son mediante Brushes y Heightmaps.

Un terreno creado mediante Brushes en Schorched3D

Brushes: Los Brushes es una herramienta codificada del software del motor, no todos
los motores lo utilizan pero motores de nueva generacin como Unreal y CryEngine lo
utilizan y manejan High-Order surfaces para deformar la superficie mediante vrtices.

Tambin, se pueden crear BSPs con Brushes que crean figuras geomtricas simples
como: Cuadrado, Esfera, Cilindro, Cono, etc.

Heightmaps: Los Heightmaps son mapas que funcionan a escalas de grises al igual
que sus "hermanos" displacement maps. Los heightmaps estn ms codificados para
deformar una superficie High-Poly o HOS mediante escala de grises y pixeles y solo
modifican la altura. El color negro representa una altura nula o sea que no es modificada,
y mientras ms blanco sea el pixel representa ms altura a la superficie.

Tesselation[editar]
Tcnica usada por la caracterstica de TruForm de ATI que consiste en agregar ms polgonos
a un modelo o a una superficie convirtindolo en un objeto High-Poly para poder agregar ms
detalle visual.

Iluminacin (lighting)[editar]
La iluminacin es un proceso de renderizacin en la que el motor ilumina todo lo que sea 3D
ya sea por pixel o por vrtice. La iluminacin varia dependiendo la configuracin que haya
establecido el usuario al motor. La iluminacin puede ser de las cosas ms complejas al
desarrollar un videojuego puesto que una iluminacin cercana a lo "perfecto" puede dar un
aspecto visual al juego espectacular, pero claro que no es fcil de obtener. Por lo general la
iluminacin es influenciada por APIs, como DirectX y OpenGL, por obvias razones, versiones
ms nuevas de esta API demuestran mejores resultados de iluminacin. El sombreado es otro
factor sumamente importante y que reacciona mediante la luz, si el mundo obtiene buena
iluminacin tambin tendr un buen sombreado.

Vertex Lighting[editar]
Se determinan cuantos polgonos cruzan el vrtice, se toma el total de todas las orientaciones
de los polgonos (Normal) y se asigna la normal al vrtice. Para cada vrtice, un polgono
dado reflejar la iluminacin en una forma levemente distinta. La ventaja es que al hardware le
toma menos tiempo el procesarlo, pero este tipo de iluminacin no produce sombras.

Flat Shading Lighting (Iluminacin de Sombreado Plano)[editar]


Consiste en que cada polgono represente un valor leve que se pase al polgono completo que
genere una imagen plana del mismo, a esta imagen tambin se le asigna un color
determinado.

Vertex Shading (Sombreado de Vrtice, Gouraud shading): solicita al motor de


renderizado un color para cada vrtice, luego por medio de interpolacin se renderiza
cada pxel por la distancia en relacin con su respectivo vrtice.

Phong Shading: es similar al Gouraud Shading, trabajan con la textura, solo que el
Phong Shading usa a los pxeles en lugar de lo vrtices.

El Phong Shading toma ms tiempo de procesamiento que el Vertex Shading pero su


resultados son mucho mejores en cuestin de suavizado de texturas.

Light Map Generation (Generacin del mapa de luz): se usa una segunda capa de
textura (mapa de luz) que dar el efecto de iluminacin a los modelos, es un efecto
excelente pero debe tomarse antes del renderizado pero si se tienen Luces Dinmicas (o
sea luces que se mueven, encienden o apagan sin intervencin de programa) se debe
estar regenerando los mapas en cada Frame de animacin lo que toma mucha cantidad
de memoria (pero son de render rpido).

Textura: es esencial para que las escenas 3D se vean reales, en si las texturas son
imgenes que se rompen en los distintos polgonos del modelo, muchas imgenes
tomarn mucho espacio en la memoria por eso se debe usar tcnicas de compresin:

Mapeo MIP: consiste en preprocesar las texturas creando mltiples copias del mismo
cada una la mitad del anterior, esto porque si la textura solo es pegada al polgono cada
textura es a cada pxel y tomara ms tiempo de render; as cada Texel (elemento de
Textura) toma menos espacio.

Texturas Mltiples: requiere mltiples renderizados por lo que para obtener buen
resultado se necesita una tarjeta con Acelerador de Grficos, provee mejor calidad que el
simple mapeo. Se puede colocar una imagen sobre otra (ms transparente) para dar el
sentido de movimiento pulso o hasta sombra.

Bump Mapping: tcnica vieja de texturas que tratan de mostrar como la luz se refleja
en el objeto. Solo hasta hace poco se vuelto a retomar.

Antialiasing: El anti-aliasing revisa los polgonos y difuminar las bordes y vrtices,


para que los bordes no se vean como dentados. Esta tcnica se puede hacer de dos
maneras. La primera se realiza de modo individual, entremezclando polgonos para
sobreponerlos unos delante de otros.

La segunda manera se hace por medio de tomar todo el marco y quitarle los bordes dentados,
pero esto requiere de mucha memoria.

Vertex and Pixel Shaders (Vrtices y Sombreo de Pixeles): Con este mtodo se
pueden extraer y utilizar directamente las caractersticas y facilidades de la tarjeta de
video, sin tener que utilizar mucho la API. Pero no es utilizable en todas las tarjetas.

Stencil Shadowing (Plantilla de Sombreado): la idea es renderizar una vista de un


modelo desde la perspectiva de la fuente de luz y despus utilizar esto para crear o para
generar un polgono con la forma de esta textura sobre las superficies afectadas por el
modelo. As se obtiene una iluminacin que parece real. Pero es costosa, porque usted
est creando texturas en vuelo, y hace mltiple render de la misma escena.

El manejo del cache de textura es imprescindible para que el juego se desarrolle rpido (y
para cualquier motor), ya que si se presenta un constante swapping de las texturas en la
tarjeta el juego se vera lento y tedioso, algunos APIs descargan cada textura cuando esto
pasa, pero eso hara que en cada cuadro se refresquen las texturas dando ms lentitud. Todo
se trata de cargar la menor cantidad de veces una misma textura, pero eso tambin depende
del API que se utilice. Otra tcnica es la compresin de texturas, comprimir texturas es como
comprimir MP3, los algoritmos de compresin logran una relacin 4:1 que no es mucho pero
ayuda.

LOD (level of detail, nivel de detalle): el sistema de nivel de detalle est relacionada
con la complejidad geomtrica de los modelos. Algunos sistemas necesitan que se hagan
mltiples versiones del modelo, para que dependiendo de cuan cerca de este del modelo
as ser su cantidad de polgonos. Otros sistemas ajustan dinmicamente esta
caracterstica pero en este caso da ms carga al CPU

Depth Testing (prueba de profundidad): Con esto se empieza a eliminar los pxeles
ocluidos y se pone en prctica el concepto de sobre dibujado. La prueba de profundidad

es una tcnica utilizada para determinar que objetos estn delante de otros en la misma
localizacin del pxel.

Sobre Dibujado: es la cantidad de veces que se ha dibujado un pxel en un frame. Se


basa en la cantidad de elementos existentes en la tercera dimensin (profundidad).

Scripting Systems (Sistemas de scripting) [editar]

Pre-scripted Cinematics: usada normalmente en una situacin que necesita la


explicacin en una manera controlada. Para presentar las escenas de la historia, ahora se
utilizada el cortar-escenas que presenta la historia en vdeo digital y luego por medio de
transiciones se pasa a las grficas reales del juego.

El scripting le permite al diseador tomar mando de la escena y manipularla, como colocar


objetos o eventos que el jugador no controla. En muy complicado, se necesita de una mente
muy metdica y lgica, la mayora de estos scripts se basan en lenguaje C.

Visual Scripting Systems: como lo dice su nombre, permite manejar el script en un


ambiente grfico en lugar de un cdigo escrito, se maneja un carcter real en un ambiente
del juego real.

Sonido[editar]
Creative Labs ahora ha proporcionado sus extensiones manejadores de sonido EAX para
DirectX, y la nueva iniciativa de OpenAL (biblioteca audio abierta). OpenAL, como suena, es
un API para los sistemas de los sonidos de la misma manera que OpenGL es un API.
Para el procesado de sonido es muy similar al procesado de los modelos, muchas veces un
software los procesa antes de pasar al hardware respectivo, por ejemplo DirectSound hace al
sonido para la Tarjeta de sonido lo que Direct3D hace al modelado antes de llegar al la Tarjeta
3D. Esto es llamado premezcla en el software.

Msica/Pistas de Audio[editar]
El sonido de un videojuego se llega a manejar de muchas maneras y esto depende de las
capacidades que tenga el motor. Hoy en da los motores de nueva generacin soportan
muchos formatos de sonido pero los ms populares son el ".wav" y ".ogg" y en algunas casos,
exigen configuraciones exactas dependiendo el motor. La administracin de pistas de audio
larga son amplias puesto que motores de nueva generacin permiten modificacin para poder
meter un "looping" a la pista, modificar el tono, etc.

Inteligencia Artificial (IA o AI)[editar]


Es la caracterstica ms importante que se le atribuye a un motor al lado de la representacin
de modelos o Render. La IA provee de estmulo al juego. Es crtico en la parte de la forma de
juego (game play).
La inteligencia artificial de determinado juego puede tornarse muy compleja, primero se debe
definir la lnea base del comportamiento de los NPC (Non Player Characters - Personajes no
Jugables), primero debe definirse qu hace el NPC (patrulla, guarda, etc.), luego se delimita
su visin del mundo, que es lo es el NPC puede ver del mundo del juego; se debe tomar en
cuenta que el personaje no slo estar en medio del mundo del juego sino que tambin
interactuar con l, despus vienen las rutinas de Toma de Decisin: si el NPC est
patrullando, y hay un sonido, debe darle importancia o no?, investiga su origen o no?, etc.
Es un sistema de reglas para las acciones que responden (o inician) y que el jugador debe
responder, esto es un concepto ms general de IA.

Motores de videojuego[editar]
Nombre

Lenguaje de programacin

3D Rad

C#

Adventure Game Studio

C++

Aleph One

C++

Allegro library

Angel2D

C++

Ardor3D

Java

Axiom Engine

C#

Blender

C++

Build engine

Cafu Engine

C++

ClanLib

C++

Cocos2d

C++, Python, Objective-C

Construct Classic

Event Based

Nombre

Lenguaje de programacin

Core3D

Objective-C

CRM32Pro SDK

C/C++

Crystal Space

C++

Cube

C++

Cube 2

C++

Delta3d

C++

Dim3

C++

DimensioneX Multiplayer Engine

Java

Div GO: Games Online

HTML5Javascript PHP

Dreemchest

C++

Duality

C#

Eclipse Origins

Visual Basic 6

Nombre

Lenguaje de programacin

ENIGMA

C++

Env3D

Java

Exult

C++

FLARE

C++

Flexible Isometric Free Engine

C++

Flixel

ActionScript

GameMaker: Studio

Delphi

GameKit (OgreKit)

C++

GamePlay3D

C++

Gamvas

JavaScript

Grit

C++

Haaf's Game Engine (HGE)

C++

HGamer3D

Haskell

Nombre

Lenguaje de programacin

Horde3D

C++

HPL 1 engine

C++

id Tech 1 (Doom)

id Tech 1 (Quake)

id Tech 2

id Tech 3

id Tech 4

C++

Indielib

C++

ioquake3

IwGame Engine

C++

Jake2

Java

JGame

Java, Actionscript 3

jMonkeyEngine

Java

Jogre

Java

Nombre

Lenguaje de programacin

jPCT and jPCT-AE

Java

Kobold2D

Objective-C

Libgdx

Java

Linderdaum Engine

C++

LVE

Lua

LWJGL

Java

Maratis

C++

melonJS

Javascript

Moai SDK

C++

Multiverse Foundation

Jython and Java

Nebula Device

C++

NetGore

C#

Nombre

Lenguaje de programacin

NME

Haxe

nxPascal

Object Pascal

OpenSimulator

C#

ORX

C/C++

Oxygine

C++

Panda3D

C++

PixelLight

C++

Polycode

C++

PLIB

C++

Pyrogenesis

C++

Retribution Engine

C++

SFML

C++

Sge2d

Source
StormEngineC

JavaScript

Spring

C++

StepMania

C++

Stratagus

Torque3D

C++

Turbulenz

TypeScript

Wire3D

C++

WorldForge

C++

Nombre

Lenguaje de programacin

ZenGL

Pascal

ZGameEditor

Delphi

Unity3D

C#

Unreal Engine

C++

WiMi5

HTML5

Nombre

Lenguaje de programacin

Vase tambin[editar]

Anexo:Motores de juego

DirectX

OpenAL

OpenGL

You might also like