Motor de videoxuegu

Un **motor de videoxuegu** ye un términu que fai referencia a una serie de rutines de programación que dexen el diseñu, la creación y la representación d'un videoxuegu. De la mesma esisten motores de xuegos qu'operen tantu en consoles de videoxuegos como en sistemes operativos. La funcionalidad básica d'un motor ye aprovir al videoxuegu d'un motor de renderizado pa los gráficos 2D y 3D, motor físicu o detector de choques, soníos, *[[Script (informática)|scripting]]*, Animación por ordenador animación, intelixencia artificial, redes, *[[streaming]]*, alministración de memoria y un escenariu gráficu. El procesu de desenvolvimientu d'un videoxuegu puede variar notablemente por reutilizar o afaer un mesmu motor de videoxuegu pa crear distintos xuegos.

Anguaño esisten una gran variedá de motores completos y motores gráficos como OGRE 3D que ye un motor gráficu gratuitu con "open-source" por que el usuariu pueda crear aplicaciones dende'l llinguaxe C++.
Desarrolladoras grandes de motores o SDKs por que los usuarios comenenciudos nel desenvolvimientu de videoxuegos puedan afayar como s'ellaboren y asina tener una introducción amplia a la industria y el desenvolvimientu.
Otros exemplos de motor de xuegu son el motor gráficu Doom Engine, Quake Engine, y GoldSrc, desenvueltu por id Software y el cual foi utilizáu pa crear los esitosu xuegu Doom y Quake; otros motores famosos son Source, creáu por Valve, y BLAM! Engine, desenvueltu por Bungie, y nel cual creóse la saga de Halo.

## Glosariu d'aspeutos rellacionaos

### ''Assets''

Los *assets* pueden ser traducíos como elementos que van ser introducíos al videoxuegu. Estos elementos inclúin Modelos 3D, personaxes, testures, materiales, animaciones, *scripts*, soníos, y dellos elementos específicos de cada motor. Cada motor trabaya d'una manera distinta a otros lo cual puede aceptar "Assets" qu'otros motores nun pueden remanar, sicasí los exemplos mentaos antes, son elementos que tolos motores d'anguaño usen.

### Application Programming Interface (Interfaz de Programación d'Aplicaciones)
Ye un sistema de rutines, de protocolos y de ferramientes pa desenvolver programes d'aplicación. Un bon API fai más fácil desenvolver un programa apurriendo tolos bloques del desenvolvimientu del programa. El programador pon los bloques xuntos.

Ente estos los más importantes son el DirectX (de Microsoft) y el OpenGL (que trabaya cola mayoría de los sistemes operativos).

### ''Render'' (renderización)

La renderización ye'l procesu del ordenador n'amosar en pantalla l'aspeutu visual del nuesu xuegu. La renderización encargar d'amosar al xugador tol poder gráfico que'l desarrollador configurara nel motor, la renderización amuesa tou lo que ye'l terrén o BSP, modelos, animaciones, testures y materiales. La renderización contribúi tol aspeutu visual del xuegu.

### Oxetos 3D

Los oxetos 3D son oxetos "secundarios" podría dicise, que s'amiesten al escenariu del videoxuegu (p. ex., baños, puertes, árboles, muebles, adornos, etc) Los oxetos o modelos 3D son clasificaos por polígonos al igual que tou elementu que tenga una composición tridimensional.

* **Low-Poly:** Traducíu como "Polígonos baxos" son modelos que la so composición de polígonos ye baxa lo cual ye probable que'l modelu tenga un bien mal detalle y nun se llogre un resultáu favorable. Estos modelos usar pa optimizar el rendimientu del videoxuegu y el "Low-Poly" ye efeutivu en modelos que nun riquir enforma detalle (Ej, una caxa o un xabón)

* **Mid-Poly:** Traducíu como "Polígonos medios" son modelos que la so composición de polígonos ye media y llogren dar meyor detalle que los "Low-Poly" anque la so velocidá de procesamientu ye más tardada. Estos modelos son más usaos pa modelos que riquen un pocu más de detalle (Ej, Una arma, una casa)

* **High-Poly:** Traducíu como "Polígonos altos" son modelos que la so composición de polígonos ye alta y lleguen a dar un detalle magníficu pero'l so procesamientu ye más complexu y tiende a ralentizar l'ordenador, dependiendo de la potencia que'l Hardware del ordenador o consola cunte. Estos modelos son usaos pa modelos que precisen d'un bon grau de detalle (Ej Un personaxe, un vehículu).
Esto ye en poques pallabres el LOD o Level of Detail (Nivel de detalle).

### Higher-order surfaces (superficies d'altu orde)
Ye una forma de renderización especialmente pa terrén nun videoxuegu. Videoxuegos de nueva xeneración como Gears Of War, Halo 4, Battlefield 4, Crysis 3, utilicen esta téunica pa crear terrén de manera anidiada y realista.. Esta téunica puede utilizase pa otros modelos pero ye esclusivu pa modelos High-Poly yá que s'especializa en deformar con curves.

### Culling

Codificado que llogra que los oxetos que nun se ven en determináu cuadru de l'animación por causa d'oxetos que los atrabanquen (como una paré) nun tomen tiempu de renderizado. Asina s'amenorga la cantidá de trabayu del motor.
El Culling ye más bono d'implementar en xuegos onde la visión ye controlada, como los RTS, en comparanza colos FPS. Un métodu de Culling puede ser utilizando “Árboles BSP”.

### BSP Tree Hierarchy (BSP Árbol de Xerarquía)

El BSP (Binary Space Partioning) ye'l modelu dixital del terrén que'l nuesu videoxuegu siempres va a renderizar en tou momentu. El BSP estremar por ser la base del nuesu mundu o nivel, ye lo que conforma l'ecosistema y estructura del nuesu nivel (un desiertu, un mar, un castiellu, un monte etc)
Un BSP puede crease de munches maneres pero anguaño les téuniques más utilizaes son por aciu Brushes y Heightmaps.

* **Brushes:** Los Brushes ye una ferramienta codificada del software del motor, non tolos motores utilizar pero motores de nueva xeneración como Unreal y CryEngine utilizar y remanen High-Order surfaces pa deformar la superficie por aciu vértices. Tamién, pueden crease BSPs con Brushes que crean figures xeométriques simples como: Cuadráu, Esfera, Cilindru, Conu, etc.

* **Heightmaps:** Los Heightmaps son mapes que funcionen a escales de grises al igual que los sos "hermanos" displacement maps. Los heightmaps tán más codificados pa deformar una superficie High-Poly o HOS por aciu escala de grises y pixeles y solo modifiquen l'altor. El color negru representa un altor nulu esto ye que nun ye modificada, y mientres más blancu sía'l pixel representa más altor a la superficie.

### Tesselation
Téunica usada pola carauterística de TruForm de ATI que consiste n'amestar más polígonos a un modelu o a una superficie convirtiéndolo nun oxetu High-Poly pa poder amestar más detalle visual.

### Llume (lighting)
El llume ye un procesu de renderización na que'l motor alluma tou lo que sía 3D yá sía por pixel o por vértiz. El llume varia dependiendo la configuración qu'estableciera l'usuariu al motor. El llume puede ser de les coses más complexes al desenvolver un videoxuegu yá que un llume cercano a lo "perfectu" puede dar un aspeutu visual al xuegu espectacular, pero claru que nun ye bono de llograr.
Polo xeneral el llume ye influyida por APIs, como DirectX y OpenGL, por obvies razones, versiones más nueves d'esta API demuestren meyores resultaos de llume.
L'avisiegu ye otru factor por demás importante y que reacciona por aciu la lluz, si'l mundu llogra bonu llume tamién va tener un bon avisiegu.

### Vertex Lighting
Determinar cuantos polígonos crucien el vértiz, tómase'l total de toles orientaciones de los polígonos (Normal) y asígnase la normal al vértiz. Pa cada vértiz, un polígonu dau va reflexar el llume nuna forma llevemente distinta. La ventaya ye que al hardware tómalu menos tiempu'l procesalo, pero esti tipu de llume nun produz solombres.

### Flat Shading Lighting (Llume d'Avisiegu Planu)
Consiste en que cada polígonu represente un valor leve que se pase al polígonu completu que xenere una imaxe plana del mesmu, a esta imaxe tamién se-y asigna un color determináu.

* **Vertex Shading** (Avisiegu de Vértiz, Gouraud shading): solicita al motor de renderizado un color pa cada vértiz, depués per mediu de interpolación se renderiza cada píxel pola distancia en rellación col so respeutivu vértiz.

* **Phong Shading**: ye similar al Gouraud Shading, trabayen cola testura, solo que'l Phong Shading usa a los píxeles en llugar de lo vértices.
El Phong Shading toma más tiempu de procesamientu que'l Vertex Shading pero la so resultancies son enforma meyores en cuestión d'anidiáu de testures.

* **Light Map Generation** (Xeneración del mapa de lluz): úsase una segunda capa de testura (mapa de lluz) que va dar l'efeutu de llume a los modelos, ye un efeutu escelente pero tien de tomase antes del renderizado pero si tiénense Lluces Dinámiques (esto ye lluces que se mueven, encienden o apaguen ensin intervención de programa) tien de tase refaciendo los mapes en cada Frame d'animación lo que toma muncha cantidá de memoria (pero son de rénder rápidu).

* **Testura**: ye esencial por que les escenes 3D veanse reales, en si les testures son imáxenes que se ruempen nos distintos polígonos del modelu, munches imáxenes van tomar enforma espaciu na memoria por eso debe usar téuniques de compresión:

* **Mapeo MIP**: consiste en preprocesar les testures creando múltiples copies del mesmu caúna la metá del anterior, esto porque si la testura solo ye pegada al polígonu cada testura ye a cada píxel y tomara más tiempu de rénder; asina cada Texel (elementu de Testura) toma menos espaciu.

* **Testures Múltiples**: rique múltiples renderizados polo que pa llograr bon resultancia precísase una tarxeta con Acelerador de Gráficos, aprove meyor calidá que'l simple mapeo. Puede asitiase una imaxe sobre otra (más tresparente) pa dar el sentíu de movimientu pulsio o hasta solombra.

* **Bump Mapping**: téunica vieya de testures que traten d'amosar como la lluz reflexar nel oxetu. Solo hasta apocayá se vueltu a retomar.

* **Antialiasing**: El anti-aliasing revisa los polígonos y difuminará los cantos y vértices, por que los cantos nun se vean como dentaos. Esta téunica puede faese de dos maneres. La primera realizar de manera individual, entemeciendo polígonos pa sobreponelos unos delantre d'otros.
La segunda manera facer por mediu de tomar tol marcu y quitar los cantos dentaos, pero esto rique de muncha memoria.

* **Vertex and Pixel Shaders** (Vértices y Sombreo de Pixeles): Con esti métodu pueden estrayese y utilizar direutamente les carauterístiques y facilidaes de la tarxeta de video, ensin tener qu'utilizar enforma la API. Pero nun ye aplicable en toles tarxetes.

* **Stencil Shadowing** (Plantía d'Avisiegu): la idea ye renderizar una vista d'un modelu dende la perspeutiva de la fonte de lluz y dempués utilizar esto pa crear o pa xenerar un polígonu cola forma d'esta testura sobre les superficies afeutaes pol modelu. Asina se llogra un llume que paez real. Pero ye costosa, porque usté ta creando testures “en vuelu”, y fai múltiples renders de la mesma escena.

El manexu del cache de testura ye imprescindible por que'l xuegu desenvuélvase rápidu (y pa cualquier motor), yá que si preséntase un constante swapping de les testures na tarxeta'l xuegu se vera lentu y aburrible, dellos APIs descarguen cada testura cuando esto pasa, pero eso fadría qu'en cada cuadru enfresquen les testures dando más lentitú. Tou tratar de cargar la menor cantidá de vegaes una mesma testura, pero eso tamién depende del API que s'utilice. Otra téunica ye la compresión de testures, estruyir testures ye como estruyir MP3, los algoritmos de compresión llogren una rellación 4:1 que nun ye enforma pero ayuda.

* **LOD** (level of detail, nivel de detalle): el sistema de nivel de detalle ta rellacionada cola complexidá xeométrica de los modelos. Dellos sistemes precisen que se faigan múltiples versiones del modelu, por que dependiendo de cuan cerca d'esti del modelu asina va ser la so cantidá de polígonos. Otros sistemes afaen dinámicamente esta carauterística pero nesti casu da más carga al CPU

* **Depth Testing** (prueba de fondura): Con esto empiézase a esaniciar los píxeles ocluidos y ponse en práctica'l conceutu de sobre dibuxáu. La prueba de fondura ye una téunica utilizada pa determinar qu'oxetos tán delantre d'otros na mesma llocalización del píxel.

* **Sobre Dibuxáu**: ye la cantidá de vegaes que se dibuxó un píxel nun frame. Basar na cantidá d'elementos esistentes na tercer dimensión (fondura).

### Scripting Systems (Sistemes de scripting)

* **Pre-scripted Cinematics**: usada de normal nuna situación que precisa la esplicación nuna manera controlada. Pa presentar les escenes de la hestoria, agora utilizar el cortar-escenes que presenta la hestoria en videu dixital y depués per mediu de transiciones pasar a les gráfiques reales del xuegu.

El scripting déxa-y al diseñador tomar mandu de la escena y manipoliala, como asitiar oxetos o eventos que'l xugador nun controla. En bien complicáu, precisar d'una mente bien metódica y lóxica, la mayoría d'estos scripts basar en llinguaxe C.

* **Visual Scripting Systems**: como lo diz el so nome, dexa remanar el script nun ambiente gráfico en llugar d'un códigu escritu, remanar un calter real nun ambiente del xuegu real.

### Soníu

Creative Labs agora apurrió les sos estensiones manejadores de soníu EAX pa DirectX, y la nueva iniciativa de OpenAL (biblioteca audio abierta). OpenAL, como suena, ye un API pa los sistemes de los soníos de la mesma manera que OpenGL ye un API.

Pal procesáu de soníu ye bien similar al procesáu de los modelos, munches vegaes un software procesar antes de pasar al hardware respeutivu, por casu DireutSound fai al soníu pa la Tarxeta de soníu lo que Direut3D fai al modeláu antes de llegar al la Tarxeta 3D. Esto ye llamáu “premezcla” nel software.

### Música/Pistes d'Audiu

El soníu d'un videoxuegu llegar a remanar de munches maneres y esto depende de les capacidaes que tenga'l motor. Anguaño los motores de nueva xeneración soporten munchos formatos de soníu pero los más populares son el ".wav" y ".ogg" y en dellos casos, esixen configuraciones exactes dependiendo'l motor.
L'alministración de pistes d'audiu llarga son amplies yá que motores de nueva xeneración dexen cambéu pa poder meter un "looping" a la pista, modificar el tonu, etc.

### Intelixencia Artificial (IA o AI)

Ye la carauterística más importante que se-y atribúi a un motor al llau de la representación de modelos o Rénder. La IA aprove d'estímulu al xuegu. Ye críticu na parte de la forma de xuegu (game play).

La intelixencia artificial de determináu xuegu puede tornase bien complexa, primero débese definir la llinia base del comportamientu de los NPC (Non Player Characters - Personaxes non Jugables), primero tien de definise qué fai'l NPC (patrulla, guarda, etc.), depués se delimita la so “visión del mundu”, que ye lo ye'l NPC puede ver del mundu del xuegu; tien de tomase en cuenta que'l personaxe non yá va tar en mediu del mundu del xuegu sinón que tamién va interactuar con él, dempués vienen les rutines de Toma de Decisión: si'l NPC ta patrullando, y hai un soníu, ¿tien de da-y importancia o non?, ¿investiga'l so orixe o non?, etc.

Ye un sistema de regles pa les aiciones que respuenden (o empecipien) y que'l xugador tien de responder, esto ye un conceutu más xeneral de IA.

## Motores de videoxuegu

## Ver tamién

## Referencies