Sprite Kit y Swift: Introducción a Sprite Kit

Login to Access Code

Spritekit, para mí al menos, es una de las librerías más divertidas en Cocoa. Hace que el 2D parezca muy simple y con poco esfuerzo, con frecuencia, provee una tremenda satisfacción. En esta entrada vamos a explicar los componentes de Sprite Kit antes de comenzar a crear un juego en nuestras próximas entradas.

¿Qué es Sprite Kit?

Lanzado junto iOS 7, Sprite Kit le ofrece un marco para la prestación de graficas y la animación en 2D para iOS and OS X. Sprite Kit cabe junto a dos otros marcos de animación en iOS: Core Animation y Scene Kit. Mientras que Core Animation es demasiado básico para juegos y Scene Kit es para juegos más avanzados (como en 3D), Sprite Kit maneja juegos en 2D muy bien. Sprite Kit genera cada cuadro con contenido meintras optimiza la prestación, animación, y memoria en cada cuadro. Es bien adaptado para muchos juegos en 2D porque soporta sprites, formas, texturas, letras, sonido, simulaciones de física y video. Sprite Kit también soporta efectos especiales para su contenido como recortes y manipulaciones de imágenes.

En breve, Sprite Kit provee una infraestructura de prestación que maneja todos los procesos de bajos niveles entre OpenGL. Esto permite que desarrolladores se enfoquen in crear las dinámicas y diseños del juego.

Ciclo Vital de Sprite Kit

Como muchas librerías Cocoa, Sprite Kit contiene un ciclo vital y un bucle de procesamiento. En Sprite Kit, este bucle permite que cuadros individuales sean creados y apilados como azulejos entre una ventana que se mueve entre ambos. El ciclo vital funciona así:

Sprite Kit Life Cycle

El ‘viewport’

Una ventana es creada como un ‘viewport’ y contenedor para escenas del juego. Cada ventana típicamente contiene una sección específica del juego. Por ejemplo, usted quizás tendrá el juego jugable en una ventana, un marcador de puntuación en otra ventana, y compras en una tercera ventana. Para crear una ventana de juegos típica, la aplicación primero crea un objeto SKView para el juego que se pueda colocar dentro de una ventana. El objeto SKView después es capaz de recibir escenas para animar los contenidos. En muchas ocasiones, SKView actúa como un gerente de escenas, permitiendo que las escenas pasen por él y preparando la próxima escena mientras la actual se está jugando.

Típicamente, un controlador usaría los métodos didMoveToView y update en esta fase para alocar y actualizar lo que se ha guardado. Por ejemplo el estado, puntuación, y otra data global que se comparte entre escenas.

Creando una Escena

Escenas son creadas para actuar como cuadros entre la ventana. Estos cuadros se pueden posicionar a largo de una rejilla para crear un fondo desplazable y en movimiento entre cuales los objetos se mueven. Estas escenas son una colección de objetos SKScene. Las escenas tienen una vida y definición finita, haciendo la creación de objetos mas fácil de calcular y animar. Además, esto hace más fácil el gestión de memoria. Cuando una escena este visible, todos las animaciones y la lógica son continuamente ejecutadas hasta que la prestación de próxima escena termine. Esta compartimentación permite que las interacciones complejas y varios aspectos del diseño sean flexibles y abundantes. Al mismo tiempo, la compartimentación permite que la aplicación asigne recursos a la escena y que purgue esos recursos cuando la escena se termine.

SKScene nos provea con los métodos didEvaluateActions y didSimulatePhysics para actualizar las propiedades del juegos según las interacciones dentro de la escena.

Añadiendo nodos

Dentro de cada escena hay una colección de varios nodos. Nodos simplemente son objetos que sirven como los bloques fundamentales del contenido, trabajando colectivamente para determinar el dibujo y la prestación del contenido. La clase SKScene es en realidad un descendiente de la clases SKNode, que sirve como el pariente nodo con hijos nodos contenido dentro. Semejante a nodos DOM en la web, SKNode tiene semejante características, propiedades, y herencia. Nodos comparten estado y pasan propiedades a sus hijos semejante a la manera en que los nodos DOM heredan los atributos CSS. La clase SKNode sola no dibuja nade, sino gestiona la las propiedades y el estado de sus hijos nodos. Esto permite que la prestación cambie simplemente por aplicando diferentes propiedades a los nodos o cambiando su orden o posición. Como ejemplo de herencia, mire a la figura de la cara de bajo. La cara esta echa de cuatro nodos: un circulo amarillo (el nodo pariente) que tiene dos ojos y una boca que también son nodos. Si el nodo pariente es rotando 45 grados, los hijos nodos también se rotan. Pero, se el color de fondo del pariente fuera cambiar, los hijos no serían afectos.

node tree example

Propiedades, Atributos, y Texturas de Nodos

Como dicho anteriormente, la clase SKNode no dibuja nada. Nodos simplemente son objetos con propiedades que pueden ser manipuladas. Al principio esto puede ser un poco confuso porque las propiedades de los nodos pueden ser manipuladas para dibujar, pero es importante darse cuenta de que una nodo no tiene figura ni apariencia por defecto.

Texturas se usan a menú para darle un propósito visual a un nodo. En muchos casos, una textura es creada usando imágenes para crear ‘sprites’. De esta manera, estas imágenes se pueden reusar y son fácilmente modificadas por solamente cambiando las imágenes. Texturas también se pueden crear al tiempo de educación usando la librería Core Graphics o simplemente modificando las propiedades del nodo.