You are on page 1of 33

[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.

Motores

ndice de Contenidos :.
HistoriadelosVideojuegos::1
EstadodelMercado::2
AnlisisenEspaa::2.1
AnlisisMundial::2.2
ArquitecturadeunVideojuego::3
DescripcinGeneral::3.1
EnelCorazndelVideojuego::3.2
DivideyVencers;Modularzalo!!::3.3
AlgunosMotoresFamosos::4
Conclusiones::5
Vamos! Vamos!, grit la Reina, Ms Rpido!, Ms Rpido!
Alicia en el Pas de las Maravillas, Lewis Carroll

Sesin1::Transp.2
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

1. Historia (Breve) de los Videojuegos :.


[1889] Se funda Marufuku Company en Japn,
distribuidores de las famossimas cartas Hanafuna.
[1932] Creacin de COLECO. Empez vendiendo
cuero a fbricas de zapatos.
[1947] Tokyo Telecommunications Engineering
Company, que cambiar su nombre a Sony.
Comenz fabricando radios.
[1951] Marufuku Company cambia el nombre a
Nintendo Playing Card Company ("Dejar la suerte
en manos del cielo").
[1954] Un ex-militar americano funda Services
Games. Acababa de nacer SEGA.

Sesin1::Transp.3
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

1. Historia (Breve) de los Videojuegos :.


[1961] Steve Russell cre
"Spacewar", el primer
videojuego de la historia.
[1971] Comercializacin del
primer arcade "Computer
Space".
[1972] Se vende la primera
consola domstica
"Odyssey" por 100$.
[1972] Bushnell funda Atari.
[1976] Primera consola
basada en cartuchos: Atari
2600.

Sesin1::Transp.4
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Mam, mam, quiero programar mi Atari... :.


B15A7 STX D2
LDX #03
B15AB LDA L1765, Y
EOR D1
EOR D2
STA COLUP0, X
Fragmento de un
BPL B15AB juego de accin
RTS para Atari 2600.
J15BD LDA #00
B15BF INX
STA A2,X
BNE B15BF
RTS Atari 2600
L15C5 .BYTE $0E, $0A, $0A, $0A, $0E; 0 128 Bytes RAM
.BYTE $22, $22, $22, $22, $22; 11 Grficos con 16 colores.
.BYTE $EE, $22, $EE, $88, $EE; 22 2 canales de audio.
.BYTE $EE, $22, $66, $22, $EE; 33 Cartuchos de hasta 4Kb.
... No posee memoria de

vdeo. La CPU refresca la


pantalla.

Sesin1::Transp.5
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

1. Historia (Breve) de los Videojuegos :.


[1978] Taito: Space Invaders.
[1979] Atari: Asteroids.
[1979] Richard Garriot
"Ultima", hecho en Basic!.
[1980] Sierra crea su primera
aventura grfica "Mystery
House".
[1980] Namco lanza Pacman.
[1981] Nintendo "Donkey
Kong"
[1982] ZX-Spectrum.

Sesin1::Transp.6
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

1. Historia (Breve) de los Videojuegos :.


[1982] Dragon's Lair.
[1983] Creacin de Lucasfilm
Games.
[1988] Atari: Tetris.
[1989] Nintendo: GameBoy.
[1991] Street Fighter II.
[1993] IdSoftware: Doom.
[1995] Sony: PlayStation.
[2000] Sims de Maxis.
[2001] PSX2. [2002] Xbox y
GameCube.
Sesin1::Transp.7
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

2. Estado del Mercado :.


Algunas Cifras Interesantes...
En Espaa, el 73% de los jugadores (jugadores habituales:
47% de la poblacin) son varones con una edad comprendida
entre 20 y 30 aos.
En EEUU, el 60% de la poblacin juega (145 millones de
personas), con un 55% de varones.
En Espaa, durante el 2003, la industria
del videojuego movi 710.000.000 (un
22% ms que el 2002).
Cada ampliacin del juego "Los Sims",
vendi ms de 80.000 copias en Espaa en
el ao 2003.

Sesin1::Transp.8
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

2. Estado del Mercado :.


Algunas Cifras Interesantes...
Mundialmente, la industria del videojuego
factur en el 2003:
21.000.000.000 en programas Software.

7.000.000.000 en Hardware (consolas).


El 70% de los videojuegos en Espaa son

copias sin licencia.


El presupuesto de muchos videojuegos de

xito supera los 10.000.000 .


Commandos fue N1 en ventas en 17 pases.

El juego de "Harry Potter y la Cmara Secreta" ha


vendido ms de 350.000 copias en el 2003.
Sesin1::Transp.9
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

2. Estado del Mercado :.


Algunas Cifras Interesantes...
Segn estimaciones, en el 2006 unos 15,4 millones de
Europeos jugarn on line.
Electronic Arts factura ms de 1.500.000.000 al ao.

El 90% de los ttulos superventas son apropiados para todos

los pblicos.
Se han vendido ms de 100
millones de Game Boy.
El da de lanzamiento de la

PlayStation 2, se vendieron casi


100.000 unidades en slo 4 horas.
En 2003 ms de 60 millones.

Sesin1::Transp.10
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Reparto del Mercado Espaa/Europa :.


Otros 4,00%

7%
Video-
juegos
24,00% Europa USA
Msica 39% 37%
29,00%

Vdeo
18,00%
Japn
Cine 24%
25,00%

Reparto del Mercado a Nivel


Reparto del Presupuesto de Mundial (Ao 2003)
Ocio en Espaa (Ao 2002)

Sesin1::Transp.11
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Tipos de Videojuegos ms Vendidos :.


Tipos de Videojuegos ms Vendidos en Espaa
30 29,7

27,5
25
22,5
22,5
20
17,5
14,9
15 13,4 13,9
12,5
10
7,5
5
2,5
0
Plataformas Deportes Carreras Aventuras Accin

Sesin1::Transp.12
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Tipos de Videojuegos ms Vendidos :.


Segmentacin por Gnero en PC
45

40

35

30

25 Ao 2000
Ao 2001
20 Ao 2002

15

10

0
Estrategi Aventura Accin Carreras Deportes Otros Simulacn Plataform
a . as

Sesin1::Transp.13
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Tipos de Videojuegos ms Vendidos :.


Segmentacin por Gnero en Consolas
32,5
30
27,5
25
22,5
20
Ao 2000
17,5
Ao 2001
15 Ao 2002
12,5
10
7,5
5
2,5
0
Aventura Accin Carreras Platafor Deportes Estrategi Otros Simulacn
mas a .

Sesin1::Transp.14
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Y qu pasa con los sueldos? :.


Salarios por Ao en Programacin Media de Salarios por Disciplina
90000 70000
66293
65000 62486
80000
60000 57485 57791 58463

70000 55000
50000
60000 45000
50000 40000
35000
40000 30000

30000 25000
20000
20000 15000

10000 10000
5000
0 0
1-2 Aos 3-5 Aos +6 Aos
Audio Diseo Artistas Programacn.
Programador Jefe Prog. Director Produccin
Tcnico

En el mbito de la programacin, el 97% de los contratados son hombres,


con un salario medio de 62.000$.
Las mujeres (3%), tienen un salario medio de 70.000$.

Sesin1::Transp.15
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Entonces, Cunto Cuesta Hacer un Juego? :.

De forma muy simplificada, suponiendo un equipo de 30


personas, durante 2 aos (videojuego comercial):
Gastos por Personal: 60x60.000 = 3.600.000$
Gastos de Instalacin: 80.000$
Equipamiento: 220.000$
----------
Total: 3.900.000$ (Aprox)
Cunto obtenemos de beneficio?, suponiendo que se vende
muy bien... 1/2 milln de copias (10.000 en Espaa, aprox.)
Ganancias en Venta: 25.000.000$ Aprox
Distribuidora (-10%) + Tiendas (-25%) + IVA (-16%)
Ganancia Bruta: 12.000.000$ Aprox (Sin Costes de Produc.)
Ganancia Neta: 8.000.000$ Aprox

Sesin1::Transp.16
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

3. Arquitectura General :.
Desarrollos de videojuegos Videojuego
profesionales siguen el modelo de
factora de software. Mapas
Modelos 3D
Alrededor del 50% del cdigo de los Texturas
desarrollos es el mismo; este cdigo Sonidos
est recogido en el Engine. ...
Es importante alcanzar un punto de
inflexin. El motor no puede hacerlo Motor
todo. Comunicaciones,
Estados y Tareas
Estudiaremos la arquitectura
general del motor, con un diseo Kernel
tpico orientado a objetos y modular.

Sesin1::Transp.17
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Estructura general del Motor :.


Engine Aplicacin

Factora
Estado del Juego Estado del
Juego

A la Red A la Red
Com. Manejadores
Cliente Servidor
Local de Mensajes
Datos
Tarea
Vdeo
Tarea
Reloj
Tarea
Entrada
Tarea
Sonido
Tarea
Estado
Estado
Actual
Factora
Estado de la
Aplicacin
+ Modelos 3D,
Texturas,
Msica,
Scripts de IA...
Kernel Gestor de Tareas
del
Gestor de Memoria
Motor
Gestor de Opciones
Main de la
Gestor de Mensajes Depuracin
Aplicacin

Sesin1::Transp.18
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

En el Corazn del Engine :.


El kernel es el mdulo ms crtico del motor.
Se ocupa de actualizar todas las cosas que necesita el

motor en cada instante. Estas cosas se denominan Tareas.


Operaciones sobre Tareas: Crear, Pausar, Continuar, Finalizar.

Imprescindible gestin uniforme


Gestor de Tareas de tareas.
Gestor de Memoria Diversidad de Tareas.

Cmo lo conseguiremos?!

Gestor de Opciones
Arquitectura basada en el uso
n
Gestor de Mens. Depurac . de interfaces abstractas y patrones
de OO.
Medidor de Recursos

Mdulos del Kernel


Sesin1::Transp.19
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

En el Corazn del Engine :.


Singleton 0..*
kernel Interface
ITarea
#$Instancia : kernel
#ListaTareasActivas : lista #Prioridad : long
#ListaTareasPausadas: lista
+ITarea(prioridad:long)
constructor #kernel() +Crear()
esttica +getKernel():kernel +Actualizar()
+Ejecutar(): integer +Pausar()
+AnadirTarea(t:ITarea) +Continuar()
+PausarTarea(t:ITarea) +Finalizar()
+ContinuarTarea(t:ITarea)
+FinalizarTarea(t:ITarea)

TareaVideo TareaAudio

TareaReloj

Sesin1::Transp.20
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Cmo Diablos Implemento un Singletn? :.


class Kernel:
instancia = None
class __KernelSingleton: # Mtodo privado
def __init__(self):
## Inicializacin de los atributos...
ListaTareasActivas = None
ListaTareasPausadas = None
def __init__(self):
if not KernelSingleton.instancia:
Kernel.instancia = Kernel.__KernelSingleton()
else:
pass
def AnadirTarea(self, tarea):
# Aadir la tarea a listaTareasActivas
def PausarTarea(self, tarea): Ejemplo en
# Etc... Python. Cada
lenguaje tiene
class Engine:
def unBonitoMetodo(self): sus "truquillos"
# Ejemplo de llamada a la clase Singleton
Kernel().AnadirTarea(unaTarea)

Sesin1::Transp.21
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

El Bucle Principal (Main Loop) :.


El kernel se encargar de ejecutar en el bucle principal (llamada a
Ejecutar()) el mtodo de actualizacin de todas las tareas activas.
Una primera aproximacin...

Ejecutar() //Mtodo de la clase Kernel


Mientras (fin != true)
Para cada Tarea de (ListaTareasActivas) hacer
Tarea.Actualizar()
Fin_Para
Fin_Mientras
Fin_Ejecutar

Hummm... y esa solucin nos vale?


Solucin 1: Uso de Hilos. Dependiente de la plataforma.
Solucin 2: Variar la Frecuencia de Llamado de las Tareas.

Sesin1::Transp.22
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

El Bucle Principal (Main Loop) :.


Y qu tal este otro?
Ejecutar() // Mtodo de la clase Kernel
tiempoUltimo = ObtenerTiempo() // ObtenerTiempo es una funcin del S.O.
Mientras (fin != true)
Si ((ObtenerTiempo()-tiempoUltimo)>1000/frecuencia)
// Actualizar la parte de la lgica del juego
Para cada Tarea de (ListaTareasActivas) con Prioridad >= LimLogic
hacer
Tarea.Actualizar()
Fin_Para
tiempoUltimo = ObtenerTiempo()
Fin_Si
// Actualizar la parte de presentacin del juego
Para cada Tarea de (ListaTareasActivas) con Prioridad < LimLogic
hacer
Tarea.Actualizar()
Fin_Para
Fin_Mientras
Fin_Ejecutar

Sesin1::Transp.23
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Un Ejemplo de Main Loop Real :.


int main (int argc, char **argv)
{
int time, oldtime, newtime;
Qcommon_Init(argc, argv);

fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY);


nostdout = Cvar_Get("nostdout", "0", 0);
if (!nostdout->value)
fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY);

oldtime = Sys_Milliseconds ();


while (1) {
// find time spent rendering last frame
do {
newtime = Sys_Milliseconds ();
time = newtime - oldtime;
} while (time < 1);
Qcommon_Frame (time); Cdigo fuente disponible en
oldtime = newtime;
} Quake2-3.21/linux/sys_linux.c
}

Sesin1::Transp.24
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Un Ejemplo de Main Loop Real :.


void Qcommon_Frame (int msec)
{
int time_before, time_between, time_after;
// Suprimido fragmento de cdigo de registro de logs...

if (host_speeds->value) time_before = Sys_Milliseconds ();


SV_Frame (msec);
if (host_speeds->value) time_between = Sys_Milliseconds ();
CL_Frame (msec);
if (host_speeds->value) time_after = Sys_Milliseconds ();

if (host_speeds->value) {
int all, sv, gm, cl, rf;
all = time_after - time_before;
sv = time_between - time_before;
cl = time_after - time_between;
gm = time_after_game time_before_game; sv -= gm;
rf = time_after_ref time_before_ref; cl -= rf;
Com_Printf ("all:%3i sv:%3i gm:%3i cl:%3i rf:%3i\n",
all, sv, gm, cl, rf);
}
}

Sesin1::Transp.25
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

En el Corazn del Engine :.


Gestor de Memoria:
Gestor de Tareas Encargado de realizar un

seguimiento de la memoria en
Gestor de Memoria
uso.
Si el lenguaje no da facilidades,
Gestor de Opciones
habr que implementar un
Gestor de Mens. Depuracn. recolector de basura.
Medidor de Recursos
Gestor de Opciones:
Carga opciones de
Mdulos del Kernel
configuracin.
Tpicamente Controles,

resolucin, servidores de red...

Sesin1::Transp.26
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

En el Corazn del Engine :.


Gestor de Mensajes de
Gestor de Tareas Depuracin:
Muestra eventos de inters.
Gestor de Memoria
Es interesante que permita

Gestor de Opciones varias salidas (ficheros de log)


e incluso consolas de mensajes
Gestor de Mens. Depuracn. en tiempo real.
Medidor de Recursos
Medidor de Recursos:
Porcentaje de uso de la CPU
Mdulos del Kernel
segn tareas.
Empleado en labores de

optimizacin.

Sesin1::Transp.27
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Divide y Vencers: Moduralzalo! :.


Tarea de Reloj
Gestor de Tareas
Mide el tiempo transcurrido
... desde el ltimo frame.

Mdulos del Kernel Tarea de Sonido


Inicializacin y reproduccin
Tarea de Estado de efectos y msica.

Tarea de IA
Tarea de Entrada

Tarea de Vdeo Aisla la complejidad de uso


de diferentes dispositivos.
Gestin de Buffers y uso de
APIs grficas transparente.

Sesin1::Transp.28
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Algunos Motores de Videojuegos Libres :.

Crystal Space
Desarrollo GPL muy portable y escalable (gracias a su sistema
de plugins).
Versiones para todos los sistemas (Linux, Solaris, DOS,
Macintosh, Amiga, Windows, BeOS, NextStep, ...).

Ogre
Comunidad de desarrolladores muy activa. Licencia GPL.
Versiones para Windows, Linux y MacOS.
Gran cantidad de plugins para conexin con aplicaciones
existentes.

Sesin1::Transp.29
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Uno de los Grandes: NetInmerse :.


Es un Engine Multisistema (PC, Xbox, PlayStation 2,
GameCube) con un conjunto de herramientas y plugins.
La construccin de nuevos productos se hace mediante un
interfaz basado en grafos acclicos.
El ncleo est construido en C++ y puede ampliarse,
derivando nuevas clases.
Acelera enormemente el desarrollo.
Las aplicaciones son multiplataforma rpidamente.
El motor cuesta 200.000 para desarrollos en las 4
plataformas.
No da buen soporte para IA.

Sesin1::Transp.30
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Algunas Caractersticas :.
CrystalSpace Ogre Quake 2 Fly3D Unreal
Sistema de BSP S S S S S
Radiosidad S No S No S
LOD Variable S S No No S
Sistemas S S S S S
Partculas
Superficies Curvas S S No S S
Luz Coloreada S S S S S

Ilum. Dinmica S S S S S
Sprites 3D S No S No S

Soporte OpenGL S S S S S (Pt)


Soporte Direct3D S (Port) S S (Port) S S (Pt)

Sesin1::Transp.31
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Algunas Caractersticas :.
CrystalSpace Ogre Quake 2 Fly3D Unreal
Text. Procedurales S S S No S
Soporte para Red S (Bajo Nivel) No* S S S
Colisiones S (ODE) No* S No S
Fsicas S (ODE) No* No No S
Cartoon Render No No No S No
Lenguaje C++ C++ C C++ C++

Scripting Python, LUA S QuakeC No UnrealScript

Formatos 3DS, MD2, OBJ... Todos* MD2 3DS, MD2 DXF

Plataformas PC Todas Todas* Todas Todas Win/Mac

Licencia GPL GPL GPL Com/GPL Comercial

Sesin1::Transp.32
[Contenido]1.Historia::2.Mercado::3.Arquitectura::4.Motores

Conclusiones :.
Una vez hayas acabado el primer 90% de un videojuego,
tambin tienes que terminar el otro 90%
Michael Abrash, Desarrollador de Quake

La mayora de los proyectos que fracasan lo hacen porque no


acaban el segundo 90%.
Existen varias alternativas libres al desarrollo del engine en
videojuegos profesionales. Tomar como punto de partida
desarrollos robustos y personalizables.
Los rpidos avances en el sector exigen desarrollos
multiplataforma a nivel software y hardware.
El mercado internacional no puede ser ms prometedor. En
Espaa, de momento, parece que se mueve...

Sesin1::Transp.33

You might also like