jueves 9 de diciembre de 2010

Voxels Optimized!

Hellooooooooou, I made a coplanar face merging algorithm to simplify my extracted polyvox meshes and I wanted to share some pics with you all :)

This mesh here was composed of 3120 triangles, now it's made of 501 quads. (16% ratio)



This other mesh was composed of 5274 triangles, now it's made of 947 quads. (17% ratio)

miércoles 8 de diciembre de 2010

Voxels are What Dreams are Made Of

Two more pics, que lo parió!
Me gusta el efecto de luz que le quedó a este :)



Nótese el sistema de "chunks" (O "pedazos" si se quiere), similar al usado en Minecraft pero mucho más onisciente. Este volumen tiene casi 9 millones de voxels y tardó 44 segundos en generarse la primra vez y 20 segundos en cargarse de ahí en más.

martes 7 de diciembre de 2010

Voxels are fun!

Hola! =)

Hace mucho que no posteo acá, no creo que nadie recuerde este blog a esta altura.
Sin embargo, quería compartir un chiche en el que estoy trabajando.



Esta es una pequeña muestra del motor 3d basado en voxels que vengo haciendo desde hace un rato. Tenemos ganas de usarlo para hacer un juego bastante original con una estética inspirada en cierto juego indie que me tiene mal =p

Que lo pasen copaaaaaaaaado (No se que pasó ahí)


Oni

sábado 14 de agosto de 2010

Lone Star v0.7a

Bon jour! =D

Seis meses después, cumplo un año con la razón de mi casi total falta de arranques psicóticos.
Seis meses después y gracias a que el trabajo aflojó un poco este último mes, les presento la nueva versión del Lone Star.

Esta versión se puede resumir en una línea:
Scripting, consola ingame con autocompletado, multiplayer y gráficos vectoriales.

Me voy a seguirle agregando features para que la siguiente versión no tarde otros seis meses.

Bon Appétit!

Lone Star v0.7a
- Descarga


+ Added networking (Server/Client)
Por ahora, permite la colaboración a la hora de construir un universo y el chat entre los jugadores. Es el primer paso hacia un MMO xD

+ Added SVG rendering (Vectorial eyecandy =D)
Ahora podés crear las naves con el Illustrator!

+ Added 3D sound (But no sounds, mind you! xD)
Agregué Irrklang para la reproducción de música y efectos sonoros en 3D.

+ Added scripting (Binding != Fun)
Agregué Game Monkey al proyecto, permitiendo la creación de comunicaciones con NPCs guionadas y la posibilidad de crear eventos scripteables.

+ Added ingame console & chat (Press BACKSPACE)
Ahora el Lone Star no tiene nada que envidiarle a los productos de ID o Valve. La consola permite scriptear en tiempo real el universo y, al mismo tiempo, permite chatear con los amigos con los que jugás.

+ Added autocomplete and help features to ingame console
Haciendo que scriptear con la consola sea bastante más sencillo y llevadero.

+ Added Main Menu
Un menú principal con el que vas a poder cargar un universo a elección o configurar las opciones de red del juego.

+ Added ugly HP bars
Barras de HP (Hull Points). Son feas, pero sirven como feedback a la hora de saber cuanto falta para esa explosión :p

+ Added ship's subsystems
Simplificando mucho las tareas de mantenimiento de código =)

+ Added factions (Currently not in use)
Facciones. Completamente inútiles todavía, pero servirán para el futuro del proyecto.

+ Added debris and weapon/cargo dropping on ship destruction
Ahora las naves y estaciones explotan al perder todos los HP (Hull Points), dejando atrás parte de lo que llevaban en el inventario.


Saludos a todos!

jueves 11 de febrero de 2010

Lone Star v0.6m (Sixmonthary version)

Mis queridísimos tapires en celo:

El día de hoy cumplo 6 meses con mi fugazzeta, la fuerza que le aplica un torque a mi inspiración y me lubrica el ventilador de pie con aceite de cocina xD

Por esta razón, les presento una nueva etapa en el desarrollo del Lone Star.
(Y te dedico esta versión también, amor <3)


("Redoblantes")

Lone Star v0.6m (LS)
- Descarga


+ Added compass
Agregué un sistema de radar para dar información de objetos próximos que se encuentren fuera de pantalla y, eventualmente, objetivos de misión.

+ Added grid metrics
Incluí un texto indicando la escala a la que está dibujada la retícula, por si quieren medir distancias y el ojímetro se quedó sin kerosene.

+ Added code line counting
Esto es más para mi que para ustedes pero, como curiosidad, el Lone Star lleva 27 mil líneas de código sin contar código de third parties.

+ Added zoom oculling
Y así, los objetos fuera de pantalla no cortan ni pinchan y la performance no disminuye.

* Fixed object interpenetration at startup
Para no volver a tener yuxtaposición al crear objetos muy juntos =D

+ Added procedural_universe helper
Un generador de universos, que lo disfruten!

+ Added progress messages
Porque generando universos con más de 15000 cuerpos (15-60 segundos), un indicador de progreso no viene mal.

+ Added universe stats
Para showoffear las nuevas capacidades del juego =)

+ Added space management
Y con esto, la cantidad de objetos ya no es un problema.
Separo el universo físico en sectores y activo solo los cercanos a la nave =D

+ Added dev ship =B
Me agregué una nave -horrible, por cierto- para mi uso personal xD

+ Finished trading gui
Terminé la ventana de comercio con las estaciones!

Y eso fue todo, espero que disfruten esta versión porque la próxima puede tardar un pedazo en venir =)

Saludos a todos!


PD: Todos los planetas generados proceduralmente se llaman Verónica.
Voy a enganchar minita! (Una, y la mejor <3)

jueves 4 de febrero de 2010

Lone Star v0.55.1 -- Nebulosas!

Porque mi coeficiente intelectual es inversamente proporcional a la sensación térmica =D

Acá la tienen:

v0.55.1 - Descarga

v0.55.1 (LS)
+ Added 1D and 2D perlin noise generators
+ Added hash functions
* Upgraded cLogWindow
+ Added nebulae

Prueben cambiando los valores de seed de las nebulosas en universe.xml ^^

miércoles 3 de febrero de 2010

Lone Star Nebulae =)

Hoy o mañana veré de subir la v0.55.1 (Siguiendo con el plan de lanzar versiones más seguido con menos cambios.

Mientras tanto, los dejo con este "cuadro" que surgió de crear 3x3 nebulosas contiguas.
Lo del medio es un planeta de 250 unidades de tamaño con un anillo de asteroides de 2000 unidades de diámetro, como para mostrar la escala de este bicho.

(Clickeen que se hace grande!)

martes 26 de enero de 2010

Lone Star... demorado nuevamente =D

Hola!

La hago corta:

Con este calor de mierda ni en pedo me pongo a programar en casa sin un aire acondicionado y muchos snacks varios =)


No lo toqué desde la 0.55 :p


Un saludo a todos!


PD: Mentira, lo toqué: Estoy generado nebulosas proceduralmente para agregarle algunos elementos nuevos de gameplay al juego (O de última, fondos un poco menos repetitivos).

PD2: En serio, mirá que quedarse programando bajo tierra cuando me puedo ir a la terraza con mi novia a ver la Luna con el telescopio que compré el viernes pasado XD

miércoles 23 de diciembre de 2009

Lone Star v0.55 -- Finalmente!

Bue, creo que estoy conforme con como quedó la versión =)

Acá la tienen:

v0.55 - Descarga

v0.55 (LS)
* Caught and patched all memory leaks
+ Added PID controller for AI purposes :)
+ Added asteroid_ring
* Rounded asteroid_field
+ Added "orbit" function
* Updated station to new framework
+ Added XML hierarchy orbiting system
+ Added resource production to stations =D
+ Added solar_cell
+ Added weapon ammo
+ Added player object
+ Added player window (Hotkey C, new cGuiShip hotkey V)
+ Added TradeShip and TradeStation windows
* Optimized path
+ Added hashing functions
+ Added event system (It was time, right? :P)
* Made grid autosizeable
+ Added targeting system (Just click stuff)
+ Added velocity vector for target object :)
+ Added target marker
+ Added target match velocity vector
+ Added target match velocity vector autopilot (Hotkey: F1)
+ Fractal asteroid generator =)
+ Added Binary Stars
+ Added orbiting helper autopilot (Hotkey: F2)
+ Added Go To autopilot
* Injected HFSM into AI system
+ Added Trader personality
+ Added Miner personality
+ Added obstacle avoidance algorithm =)
+ Added "Go here" option to Context Menu



Felices fiestas!!! =D

martes 22 de diciembre de 2009

Lone Star v0.55 -- Update

Ea =)

Siendo que pasado mañana desaparezco en una nube de humo vacacional, aprovecho la relativa calma de esta noche para contarles de que la va la nueva versión del juego.

Antes que nada, conseguí implementar un sencillo memory debugger y arreglé alrededor de 100 memory leaks, consiguiendo estabilidad real por primera vez desde la versión 0.32 =)

También agregué un nuevo helper, asteroid_ring, que produce anillos de asteroides como el que tenemos acá entre Marte y Júpiter. El resultado es muy "chido" según fuentes mexicanas (Hay más feedback desde allá que desde acá, vergüenza debería darles XDDDD). Como siempre, en la documentación está incluída la información sobre como agregar uno en su universe.xml.
A su vez, el asteroid_field recibió un cambio interesante: ahora tiene límites circulares y difusos, haciéndolo ver mucho más natural. Y hablando de natural, los asteroides ahora se generan fractalmente, haciéndolos más... "rocosos" :p

También hay un nuevo helper, binary_star, que permite la creación de sistemas multiestrella (Ambas estrellas orbitando el baricentro común, como debe ser).

Acabo de terminar uno de los módulos de personalidad para la IA (Aunque es como dicen, el código nunca termina de escribirse). Es la personalidad "trader" (Comerciante) y aplica a cualquier nave que tenga los motores standard (Trasero, delantero, laterales y de giro).
Hay una personalidad "Miner", pero por el momento solo recoge pedazos de asteroide del tamaño mínimo (Cuando se ponen verdes).

Gracias a esto, ahora tenemos la posibilidad de agregar pilotos autónomos que busquen "buenos tratos" en estaciones cercanas y se dediquen a comerciar. Si bien es bastante simple y un poco ingenuo en su implementación, el resultado se acerca a mis metas para esta versión del juego:
Un universo más dinámico, una primera aproximación al combate y una muestra mínima de lo que quiero conseguir con respecto a las entidades autónomas y su interacción con el universo.

A nivel técnico, implementé los conocidos algoritmos de steering behaviors básicos, integrándolos con el core del sandbox, el motor de física y la mar en coche.
Con un sistema de lógica difusa para la toma de decisiones y una máquina de estados jerárquica sirviendo de organizador del estado mental de cada entidad (A través de un árbol personalidad->motivación->comportamiento->locomoción), las entidades pueden interactuar con el universo en el que están incorporadas siguiendo reglas sencillas y fáciles de debuggear.
Lo más complicado fue el desarrollar fórmulas que permitiesen aproximar soluciones para la maniobrabilidad de todos los tipos de naves.
Por otro lado, no estoy muy conforme con el algorítmo de evasión de obstáculos... pero en CNTP, con viento sudeste y sin muchas formas cóncavas funciona aceptablemente XD

Para ser mi primer sistema de IA, estoy más que contento. hace dos semanas no existía nada de todo esto =D

Las estaciones fueron rehechas y llevadas al framework nuevo (Nuevo como en v0.5).
Ahora son capaces de producir items a partir de items, tienen la capacidad de comerciar con las naves "trader" y eventualmente van a poseer un sistema de comunicación para hacer del docking algo más realista (Algo así como tienen los aeropuertos acá en la Tierra).
De todas formas, a través del menú contextual pueden tener acceso a la información de la producción de recursos (Pueden ver como comercian los "traders") y en stations.xml pueden crear cualquier tipo de estación y hacerla que comercie cualquier tipo de recursos :D

La carga del universe.xml ahora tiene en cuenta un factor más:

Al meter nodos de XML dentro de otros nodos, automáticamente se calcula la velocidad instantánea con la que tienen que aparecer para orbitar el cuerpo definido en el nodo padre.
Por si no se entendió, les dejo un ejemplo:

<star name="Sol" x="0.0" y="0.0" radius="10000" density="1500" h="100" hspeed="0.0" vspeed="0.0" centercolora="255" centercolorr="240" centercolorg="95" centercolorb="20" surfacecolora="255" surfacecolorr="250" surfacecolorg="35" surfacecolorb="5">
<ship name="Rabbit I" model="fighter" x="40000.0" y="0.0" hspeed="0.0" vspeed="0.0" rotation="0.000000">
</ship>
</star>



Al hacer esto, Rabbit I va a aparecer orbitando a Sol.

Esto es recursivo, haciendo que un nodo dentro de un nodo dentro de otro nodo funcione como un sistema Sol-Tierra-Luna. Esto es realmente cómodo para describir sistemas solares con lunas :)

Ahora el jugador esta ligado a un "piloto" genérico, que mantiene información como el dinero que lleva acumulado o el nombre que decidió ponerse. Por ahora no tiene mucho sentido, pero es mucho muy importante a mediano plazo tener algo así implementado.

También construí un autopiloto que va de la mano del nuevo sistema de targeting, haciendo muchísimo más fácil el orbitar un cuerpo o emparejar vectores de velocidad para mantener una posición relativa a un cuerpo de forma automática (Respectivamente F1 y F2 después de clickear un objeto o elegirlo apretando T las veces que sea necesario).
El autopiloto también tiene un comportamiento más: A través del menú contextual en cualquier punto vacío del espacio, es posible ordenarle a la propia nave a moverse hacia ese punto esquivando obstáculos.


Para esta versión, falta actualizar la documentación bilingüe para incluir todos los cambios (Lo cual es un garrón :D), testear un poco más el algoritmo de evasión de colisiones, empujar el cuchunflo(tm) hasta que haga "click" y armar un universo interesante conteniendo las nuevas mejoras. Si no está mañana, está pasado =)

Para la próxima versión, planeo finalizar el sistema de comercio con las estaciones espaciales, agregar un sistema de waypoints para las IAs (Permitiendo cursos de dockeo predefinidos con las estaciones), puntos de dockeo con las estaciones y una mejor abstracción en la comunicación con el jugador... porque si no lo hago LAN el juego nunca va a ser realmente divertido :p
De todas formas, con un poco de intervención divina, no volveré a tener un teclado entre mis atléticos y pulidos dedos hasta después de mi cumpleaños (Es el 18 de enero BTW, manden regalos xD).
Si esto sucede, la 0.56 va a aparecer en febrero recién. Después no digan que no les avisé :p
También estoy pensando seriamente en liberar versiones más seguido (Una semana, 10 días) con menos cambios. Me rompe MUCHO tener que reescribir la documentación entera mes a mes u_u

Me gustaría saber que piensan de estructuras que descansen en la circunferencia de los planetas (Torretas, pads de aterrizaje para comercio, poblaciones para bombardear desde el espacio, elevadores espaciales que conecten a anillos orbitales como los de Larry Niven o Arthur Clarke, etc, etc, etc ad nauseam xD).

Y ya que estamos, acepto feedback como regalo de navidad.
La última versión del LS fue bajada 314 veces según el contador loco este, media pila señores/damas :p

Me voy a dormir, un saludo grande a todos y que pasen unas muy ebrias fiestas (A mi me quieren hacer cantar karaoke, así que voy a tomar la autopista del ridículo hasta la salida del ananá fizz, ahí bajo a la colectora del coma etílico y termino empotrado en el barco pirata del Parque de la Costa con muchas ganas de que la tierra me trague íntegro y de un saque xD).