Sobre el revisor técnico
Introducción
1. El estado de los juegos en Web abierta
Breve presentación
¿Qué tienen de interesante los juegos en Web abierta?
Es fácil empezar
Excelente documentación
Una comunidad grande y agradable
Se escribe una vez, se utiliza en cualquier parte
Sin compilar y abierto
Todo el mundo tiene control
Acceso a la mayor audiencia del mundo
¿Cuál es el estado actual de los juegos en Web abierta?
Ya existen tecnologías de navegador relacionadas con juegos
Gráficos 2D con SVG y canvas de HTML5
Gráficos 3D con WebGL
Mejor rendimiento de aplicaciones con requestAnimationFrame
Música y sonido con audio de HTML5 y las API de datos de audio
Estilo de juego multijugador en tiempo real con WebSockets
Almacenar datos de manera local con IndexedDB, Local Storage y otras API
Jugar sin conexión con la caché de aplicaciones
Estilo de juego de inmersión con la API FullScreen
Domar al ratón con la API Mouse Lock
Experiencia similar a las consolas con la API Gamepad
Identificar jugadores con servicios como BrowserID
Crear aplicaciones nativas para sistemas operativos con entornos como WebRT
Mucho por llegar
Existen muchos juegos buenos en Web abierta
Bejeweled
Angry Birds
Robots Are People Too
Runfield
TF2 WebGL demo
Ya existen opciones de distribución y monetización
El proyecto Mozilla Labs Apps
Chrome Web Store
Facebook
iOS App Store
Muchas más opciones
El lado no tan bueno de los juegos en Web abierta
¿Qué nos depara el futuro y qué queda por hacer?
2. La complejidad a partir de la simplicidad
¿Quién soy?
Antecedentes en el diseño de juegos
A to B
Influencia e inspiración
Fase creativa
Preproducción
Producción
Postproducción y lanzamiento
Aceptación
Reglas de simplicidad
Por qué funciona A to B
Processing.js
¿Cómo funciona Processing.js?
¿Quién debería usar Processing.js?
Puntos fuertes y debilidades
¿Es una buena opción para juegos?
Ejemplos e integración de Processing.js
Sintaxis básica de Processing
Incrustar un sketch
Procesamiento en línea
Integrar JavaScript
Utilizar audio
Importar y cargar imágenes
Tabla de máximas puntuaciones con jQuery
Resumen
Otros recursos
3. Cómo crear juegos multiplataforma en HTML5 desde cero
Introducción
Organización de código en tres partes
HTML, un lenguaje de contenido
Iniciar nuestro juego
CSS, un lenguaje de hoja de estilo descriptivo
Sintaxis de CSS
Algunas propiedades CSS significativas
Lenguajes de hoja de estilo por encima de CSS
Crear los efectos de transición de las páginas
JavaScript, un lenguaje dinámico de alto nivel
Codificar el controlador de juegos
Escribir el código de nuestro juego de ajedrez
Especificación del juego
Estilos de juego
Lógica del juego
Ámbito y uso de espacio de nombres
La clase Game
La clase Renderer
La clase Storage
Implementar nuestro controlador
El resultado
Marcos de móviles
jQuery y Zepto
PhoneGap
PhoneGap Build
Configuración de nuestro juego de ajedrez
WebAppBuilder
Makefile para nuestro juego de ajedrez
Internacionalización
El ejemplo
Código HTML
Código básico i18n de JavaScript
Pure DOM frente a juego basado en canvas
Visión general de la API Canvas
Comparación de soluciones: Canvas
Comparación de soluciones: Pure DOM
Podemos mezclar
Resumen
Otros recursos
4. Crear, guardar y cargar pistas
¿Quiénes somos, qué haremos y por qué?
La aplicación y su sentido
¿Por qué son importantes los niveles?
Dividir en componentes pequeños
El marcado HTML
Añadir un poco de estilo
La estructura JavaScript
El bucle de dibujo
Los ladrillos
Cuadrado
Círculo
Curva
Triángulo
Añadir ladrillos a la cuadrícula
Implementar la rotación
Implementar el botón Clear
El almacenamiento
Guardar las pistas
Recuperar pistas
Implementar el botón Save
Crear una lista de pistas guardadas
Resumen
5. Tutorial de 3D CSS
Introducción
Visión general de los elementos
Variables del juego
Propiedades 3D del contenedor
Temporizador de bucles de juego y eventos
Visión general del bucle de juego
Crear peces nuevos
Actualización de los peces
Renderizar los peces
Crear peces
Configurar las propiedades de los peces
Reciclar los peces
Explotar los peces
Partículas
Capas de paralaje
Deshabilitar el comportamiento predeterminado del toque/ratón
Resumen
6. Sistemas de partículas
Introducción
Matemáticas
Vectores
Añadir comprobaciones
Valores aleatorios
Componentes
Partículas
Emisores
Fuerzas
Renderizador
Sistema
Hola, fuegos artificiales
Diseñar la chispa
Implementar el bucle principal
Implementar el emisor
Fuerzas
Vida y muerte
Renderización
Fuego
Crear las texturas
Cargar las texturas
Implementar el emisor
Implementar las fuerzas
Implementar el bucle principal
Rotación
Apagado
Humo
Crear las texturas
Implementar el emisor
Implementar el bucle principal
Optimizaciones
Partículas sencillas
Matrices tipificadas
requestAnimationFrame
Microoptimizaciones
Encadenar expresiones
Redondear
Fuegos artificiales optimizados
Resumen
7. Empezar con WebGL
El origen de WebGL
¿Cómo funciona WebGL?
Usos y limitaciones
Demostraciones
Sistema operativo, tarjeta gráfica y compatibilidad del navegador
Probar la compatibilidad de WebGL
Bibliotecas
Bibliotecas de matrices
API de nivel alto
Herramientas de depuración
Actualizador 3D
Sistema de coordenadas
Transformaciones
Componer la vista de la escena
Transformación del modelo en mundo
Transformación del mundo en vista
Transformación de proyección
Viewport
GLSL
Utilizar WebGL
Dibujar una forma sencilla
Configurar un programa sombreador
Animación y profundidad
Entrada del usuario
Utilizar requestAnimationFrame
Crear movimiento
Utilizar un búfer de índices
Cargar un modelo complejo
Un juego básico
Planificación
Añadir una textura
Dibujar nuestro dardo
Eventos de ratón
Detección de colisiones básica
Puntuación
Resumen
8. CycleBlob: Un juego WebGL de ciclo de luz
¿Qué es WebGL?
Empezar con WebGL
Configuración del entorno de trabajo
El problema con los archivos de disco local
Depurar JavaScript
Un editor mejor
Geometría y modelos en 3D
Clasificación de modelos
Modelos estáticos
Modelos dinámicos
Procesamiento geométrico
Movimiento y posición
Situación en una cuadrícula
Componentes de la transformación
Posición de la cámara
Motor de animación
Velocidad y medidas
Temporización de la animación
Control de la velocidad de fotogramas
Estructura del código
Inicio
La función tick()
Estructuras de datos
Resumen
Referencia
9. Un juego multijugador en tiempo real utilizando WebSockets
Filosofía de netcode
Diseñar el juego de coches de choque
La lógica del juego
El cliente del juego, parte 1
El servidor del juego
El cliente del juego, parte 2
Resumen
Apéndice: Configurar node.js
Windows
UNIX
10. La difícil elección de tecnologías
¿Por qué es tan difícil elegir?
Renderización
SVG
¿Qué ventajas ofrece SVG?
¿Cuáles son las desventajas de SVG?
Canvas
¿Qué ventajas ofrece canvas?
¿Cuáles son las desventajas de canvas?
Elegir una tecnología de renderización
Audio
Conexión
Eventos enviados por el servidor
¿Qué ventajas ofrecen los Eventos enviados por el servidor?
¿Qué desventajas presentan los Eventos enviados por el servidor?
WebSocket
¿Qué ventajas ofrece WebSocket?
¿Cuáles son las desventajas de WebSocket?
Elegir una tecnología de conexión
Bases de datos clientes
Fuentes Web
Resumen alfabético