Desarrollando en la web

por Javi Agenjo

De Javascript a WebGL

Por Javi Agenjo

Quien soy?

  1. Javi Agenjo (@tamat)
  2. Programador de gráficos 3D
  3. Investigador y profesor en la UPF de Barcelona
    • Infografía
    • Desarrollo de Videojuegos
  4. Aficionado del desarrollo de juegos y Jammer
  5. Más info en tamats.com

javi.agenjo@gmail.com

Enseñando desde cero

En la asignatura que imparto sobre Desarrollo de Juegos explico:

  1. Cómo acceder a la GPU
  2. Cargar, parsear y subir recursos a la GPU
  3. Crear un grafo de escena
    • GameObjects, componentes, controladores
    • Camaras, Luces, Colisiones, Particulas
  4. Rendering, Shaders, UIs
  5. AI, Gameplay

Aprendiendo desde cero

Trabajos presentados por los alumnos.

Los tiempos estan cambiando

Ahora la gente empieza directamente usando un motor existente:

Merece la pena empezar desde cero?

No se puede entender una solución si primero no se entiende el problema.

Si dependes de una pieza que no comprendes, no tienes el control.

Si tus competidores tienen una libertad de la que tu careces, estas jugando en desventaja.

Aquella herramienta pensada para solucionar todos los problemas, no soluciona ninguno.

Realmente merece la pena tanto trabajo?

Por donde empezar?

  1. Qué tipo de lenguaje de programación? De bajo nivel (C++), con Garbage Collector (C#, Java) o usar scripting (LUA, JS) o mutaciones raras (emscripten)
  2. Qué APIs gráficos? OpenGL, DirectX, qué version, Fixed o no Fixed pipeline?
  3. Que librerias externas usar? SDL o SFML? Bullet o PhysX? OpenAL o BASS?

Por donde empezar?

  1. Que arquitectura desarrollar (Grafo de Escena, Componentes, Modulos, Eventos )
  2. Que herramientas emplear (editores de escena, de particulas, de animaciones)
  3. Qué formatos, qué licencias, etc...

Para qué plataforma, qué sistema de distribución, ...

Mi propuesta: la WEB

1. Es fácil

Es muy facil empezar, solo necesitas un editor de texto y un navegador, y eso ya incluye el debugger y el profiler.

No hace falta instalar nada, da igual en qué sistema operativo trabajes.

2. Es universal

Tu juego funcionará en TODAS las plataformas actuales, ya sea escritorio, moviles, tablets o consolas(*) y tambien en las que estan por venir. Los estandares web avanzan lento pero precisamente porque tienen que asegurarse de que duren muchos y muchos años.

La plataforma web no es una moda pasajera como lo fué Flash en su momento (o Unity ahora).

3. Es muy accesible

Hay tanta ayuda… la web está plagada de tutoriales, cursos online, foros de preguntas sobre el desarrollo web.

Basta mirar esta gráfica.

4. Es muy completo

El API estandar tiene de todo, viene con funciones para reproducir audio (incluso generarlo), video, pintar en 2D (canvas) o acceder a la GPU (WebGL), para acceder a la red (TCP o UDP), soporte para Oculus Rift, Gamepads, Fullscreen, ... sin olvidar que viene con la libreria de interfaces más completa que existe (HTML+CSS)

5. Es gigante

La cantidad de código público existente en Javascript es monstruosa, mirad la tabla de github: JS tiene un 60% más que el segundo! Si piensas en una libreria para Javascript, seguramente ya exista.

"Any application that can be written in JavaScript, will eventually be written in JavaScript. - Jeff Atwood (2007)

6. Es rápido

JS ha experimentado un salto en eficiencia brutal en los ultimos 5 años gracias sobretodo a Google, usando tecnicas de JIT es capaz de convertir fragmentos de código a lenguaje nativo, y ademas tenemos Threads (Workers) y aun quedan muchas cosas por venir, como SIMD.js o WebCL.

7. Es muy cómodo

Javascript es un lenguaje que te da muchisimas libertades para programar, gracias a su alto nivel de introspeccion, y dentro de poco sale la nueva version ES6 que añadirá muchisimas mejoras, lo que lo convertirá en un lenguaje de referencia. Y si no te gusta JS puedes usar CoffeScript, TypeScript o Dart.

8. Es ubicuo

Puedes programar tanto en cliente como en servidor, con el mismo lenguaje gracias a node.js (o io.js). Algo muy cómodo cuando haces juegos online.

9. Es estable

No hay plataforma más testeada que la web.

10. Es libre y gratis

Y siempre lo será. Ninguna(*) empresa lo controla.

(*) Microsoft, Google, Mozilla, Facebook, Apple...

Aun puede mejorar

Aun hay algunos problemas que tienen que ir solucionandose:

Librerias

Algunas librerias utiles


Y qué pása con WebGL?

Algunos ejemplos

Gracias :)

javi.agenjo@gmail.com