Curlicue Fractal en Unity 5

El otro día estuve comentando con mi colega Patrick sobre las infinitas posibilidades artísticas que ofrecen los “Curlicue Fractal”.
A los que hayáis sufrido en vuestras carnes el estudio de los fundamentos matemáticos más profundos sobre cálculo infinitesimal seguramente os sonará.
A los que no, os lo explico brevemente. Un fractal es un objeto geométrico cuya estructura básica, fragmentada o irregular, se repite a diferentes escalas. Las maneras más comunes de determinar lo que hoy denominamos dimensión fractal fueron establecidas a principios del siglo XX en el seno de la teoría de la medida.(Wikipedia).

Dado que el Universo no son más que infinitas matemáticas, en la naturaleza se dan constantemente formas fractales a nivel molecular, por ejemplo, en un simple brócoli:

Dentro de los fractales existen multitud de familias y tipos. Entre ellos se encuentra el Curlicue Fractal.

El curlicue fractal es una figura obtenida por el siguiente enunciado:

The curlicue fractal is a figure obtained by the following procedure. Let s be an irrational number. Begin with a line segment of unit length, which makes an angle phi_0=0 to the horizontal. Then define theta_n iteratively by  theta_(n+1)=(theta_n+2pis) (mod 2pi),  with theta_0=0. To the end of the previous line segment, draw a line segment of unit length which makes an angle  phi_(n+1)=theta_n+phi_n (mod 2pi),

Dicho de otra forma, un Curlicue Fractal esa hecho por repetidas espirales conectadas entre sí que varían en escala y rotación. Un númerio irracional ‘s’ controla la característica forma y generación de estas espirales del siguiente modo:

theta(0) = 0
phi(0) = 0

theta(n+1) = (theta(n) + 2*PI*s) MOD (2*PI)
phi(n+1) = (phi(n) + theta(n)) MOD (2*PI)

Cuya distribución en un espacio de N2 se da por las coordenadas:
x(n) = cos(phi(n))
y(n) = sin(phi(n))

Como resultado en un espacio de 2 dimensiones, se pueden obtener las siguientes formas artísticas únicas, según qué constante “s”:

Tras todo este rollo paso a la parte que nos interesa, la generación de fractales en Unity 5.

La siguiente función en C# dibuja estos fractales:

void DrawCurlicue(GameObject particle, float s) {
float theta, phi, x0, y0, x1, y1;
theta = 0;
phi = 0;
x0 = 0;
y0 = 0;

for (int i = 1; i <= 10000; i++) {
x1 = x0 + Mathf.Cos(phi);
y1 = y0 + Mathf.Sin(phi);

x0 = x1;
y0 = y1;

phi = (theta + phi) % (2 * Mathf.PI);
theta = (theta + 2 * Mathf.PI * s) % (2 * Mathf.PI);

var new_obj = Instantiate(particle, new Vector3(x1, y1, (i/100f)), Quaternion.identity) as GameObject;
new_obj.transform.parent = particle_in_scene.transform;
}
}

Pasando por parámetro un tipo GameObject que en este caso es una esfera, y una constante real “s”, instancio en un espacio Vector3 hasta 10000 partículas que conforman el Curlicue Fractal.

3 2 11

 

Un impresionante, precioso resultado, único y con infnitas formas (un fractal por cada número float real)

https://dl.dropboxusercontent.com/u/11143518/fractals/curlicue/index.html

The Hotline Miami story

Hotline Miami se convirtió en un auténtico hit cuando se lanzó en 2012. Personalmente el mejor juego indie de 2012 y casi GOTY.

Ahora podemos conocer la historia de sus creadores detrás del juego, cuya secuela vió la luz hace un par de meses. Un documental que merece la pena ser visto por cualquier fan de videojuegos.

Update #5 UnityCity

IT’S ALL ABOUT ROADS!!

Con este breve update me dispongo a mostrar un par de capturas de una versión primitiva de iluminación y texturas de las carreteras que se podrán construir en UnityCity:


Además Me complace anunciar la inestimable y valiosa colaboración de http://mrbadgergames.com/ en la poco a poco, lenta pero insaciable creación de UnityCity.


Aún queda mucho por hacer y de hecho continúo en la creación del sistema de gestión interno del juego, pero no me gustaría mostrar nada por ahora, hasta tener algo más sólido.

 

Update #4 UnityCity

Una vez depurado el código y alcanzado la meta de que el ‘main thread’ en Unity no supere los 18~20ms, me he puesto a trabajar en la generación aleatoria de terreno mediante un único parámetro a elegir por el jugador: nivel de escarpado (entre 1 y 10), además de incluir un elemento básico y vital para el desarrollo del juego: el agua.

Just backed $15 @ Kickstarter

Twin Souls: The Path of Shadows es un proyecto de juego español, creado por el estudio “Lince Works“.

Originalmente creado como proyecto fin de máster de la UPF, los chicos y chicas del grupo del máster se decidieron por montar y bautizar a su grupo de trabajo con el nombre de Lince Works para después ampliar y pulir el maravilloso proyecto inicial Path of Shadows.

Definido por ellos mismos como un 3rd person ninja simulator, la mecánica en 3ª persona y el uso del sigilo recuerdan a la saga Assassin’s Creed, mientras que el uso de superpoderes como el teletransporte o hechizos, puede recordarnos a Dishonored.

Yo ya he aportado mis $15 por: One DRM-free digital copy of Twin Souls (Windows/Mac/Linux) + One Steam Key + Your name in the ‘Souls’ section of Twin Souls’ credits + In-Game Character Skin (Exclusive for Backers); y te animo a que tú también lo hagas.

https://www.kickstarter.com/projects/linceworks/twin-souls