Todos mis proyectos, detalladamente.
Destacados
2026
Rod and Reef
Juego de pesca en Roblox con historia y 530 quests repartidas en cuatro islas. Soy su lead developer: me encargo del backend (datos del jugador, suerte, quests, diálogos, temporadas) y hago UI. Esta página enlaza al artículo técnico de cada sistema.
Spray
ParticleEmitters de Roblox dibujados en la GUI con ImageLabels. Cada partícula se calcula en forma cerrada desde un reloj, así que el efecto se puede pausar, adelantar y rebobinar, y con la misma semilla sale idéntico.
Más
2026
OpenRAHS
Librería de código abierto en Luau para la fila de hints de botones en la esquina de un juego de Roblox. Elige el glifo según lo que el jugador tenga en las manos, sigue la distribución del teclado y los cambios de tecla del Input Action System, nunca toca el input y dibuja a través de un frontend que se puede reemplazar evento por evento.
Monociclo Autosuficiente de Mastedore
Monociclo para Roblox que vive en un solo modelo y se pega en cualquier juego. No usa VehicleSeat ni ruedas físicas: el Humanoid del jugador hace el movimiento y un modelo cinemático de rueda decide cómo.
Rod and Reef: Quests
El sistema de quests de Rod and Reef: 530 definiciones como datos, un mismo perfil que corre en servidor y cliente, un grafo de prerequisitos que sobrevive a quests desactivadas, espacios de quest derivados de los objetivos y un estimador de dificultad en lances esperados.
Rod and Reef: Minijuego de pesca
Cada pez de Rod and Reef se pelea en un dial donde una aguja y un objetivo giran en sentidos opuestos. La dificultad sale de la caña contra la rareza y el tamaño del pez, la puntuación es un tira y afloja, y los efectos se dibujan con Spray, mi librería de partículas para GUI.
Rod and Reef: Datos del jugador
Cómo Rod and Reef guarda los datos de cada jugador con sesiones de ProfileStore, cómo le llega al cliente una copia que se mantiene al día con una foto inicial más cambios por ruta, y cómo viajan los regalos entre servidores sin perderse.
Rod and Reef: Diálogos
Las conversaciones de los NPCs de Rod and Reef son tablas de Luau que se convierten en grafos, se arman por capas y se recorren dos veces: una en el cliente para mostrarlas y otra en el servidor para que nadie pueda cobrar una quest que no le ofrecieron.
Rod and Reef: Sistema de suerte
Cada lance de Rod and Reef pasa por cinco tiradas y varias capas de suerte: caña, cebo, amigos cerca, bote, multiplicadores, techos, pity y un empujón hacia los peces de tus quests. Este artículo explica la matemática de cada capa y cómo se compone.
Rod and Reef: Temporadas
Temporadas de 45 días contadas desde una época fija, cuatro leaderboards por temporada sobre OrderedDataStores y títulos permanentes para el top 50. Ningún servidor coordina con otro: la temporada es una función del reloj y el cierre es una tarea idempotente.
Rod and Reef: Subtítulos
Un pipeline en Python que transcribe las voces de Rod and Reef con OpenAI Whisper, identifica qué línea del guion es cada toma improvisada, genera los subtítulos palabra por palabra como módulos de Luau y los sube a Roblox. En el juego, un reproductor guiado por reloj los muestra sin desfasarse de la voz.
Rod and Reef: Ambient Barks
El protagonista de Rod and Reef comenta lo que haces mientras juegas. Por debajo hay varias máquinas de estados en paralelo con pesos, un catálogo de 73 líneas grabadas y un director que decide cuándo hablar sin repetirse.
QueueService
Fila FIFO para Roblox que se arma en el mapa con partes numeradas. Congela a los jugadores, los hace caminar a su puesto sobre una polilínea y la rellena con NPCs para que siempre se vea llena.
Owake
Reloj despertador retro, cronómetro y reloj digital para AVR. Construido sobre una máquina de estados finitos jerárquica y un driver propio para LCD HD44780.
SolidCrystalI2C
Driver moderno, de alto rendimiento y facilidad de uso para controlar pantallas LCD basadas en el HD44780 en sistemas AVR/Arduino
2024
Sword Masters
Juego de espadas por rondas en Roblox que me contrataron para rehacer desde cero en 2024: PvP, cacerías de zombies y una pelea contra un jefe, votación de mapa entre rondas, siete habilidades y una tienda rotativa. Esta página enlaza al artículo técnico de cada sistema.
Sword Masters: Dash
Dash, la habilidad gratis con la que empieza todo jugador, te lanza hasta 50 studs hacia adelante. Por debajo hay un AlignPosition que tira de la raíz hacia un punto delante, un AlignOrientation que fija hacia dónde miras, y dos formas de parar: tocar un marcador invisible en el destino o que pasen 0.4 segundos.
Sword Masters: Fireball
Fireball crece en tu mano, te deja elegir un punto a menos de 75 studs y doblar el arco arrastrando el mouse, y después vuela por ese arco un punto por frame hasta explotar contra el mapa con 80 de daño.
Sword Masters: Habilidades
Cada jugador de Sword Masters equipa una habilidad de siete. Cada habilidad es un módulo del servidor con las mismas cuatro funciones, y unos pocos remotes dejan que las largas le pidan input al cliente a la mitad, como hacia dónde apuntar o cuándo disparar.
Sword Masters: Jefe
La pelea contra el Mountain Guardian venía de la versión anterior de Sword Masters, y mi trabajo fue integrarla. Decide con varios bucles en temporizadores independientes, un conjunto de banderas en atributos y cooldowns que cuentan hacia atrás, y elige sus ataques como una cadena de Markov que nunca repite un movimiento dos veces seguidas.
Sword Masters: Laser beam
Laser beam encoge tu espada, saca un láser de tu brazo y lo dispara durante ocho segundos. Apuntas girando la cámara, el largo del rayo sale de un blockcast contra el mapa y el volumen de golpe es una caja alineada con el rayo que se revisa en cada frame.
Sword Masters: Rondas
El ciclo que corre cada servidor de Sword Masters: intermedio, votación de mapa, carga, teletransporte, cuenta regresiva, la ronda y sus recompensas. Es una máquina de cinco estados movida por una tabla de handlers, un tick por segundo, dentro de una promesa que se reinicia una vez antes de cerrar el servidor.
Sword Masters: Tienda de habilidades
La tienda de habilidades de Sword Masters muestra tres ofertas sorteadas por rareza que rotan según un reloj. La oferta actual vive en un DataStore y las nuevas se anuncian por MessagingService, para que todos los servidores muestren las mismas tres.
Sword Masters: Zombies
Las cacerías de zombies de Sword Masters sacan oleadas de ocho tipos de enemigos. Cada zombie persigue en saltos de a lo sumo 12 studs sobre SimplePath, vuelve a planear al final de cada salto y tiene un watchdog de un segundo que convierte cualquier falla silenciosa del pathfinding en un reintento.
2022
Blocks Simulator: Rotate
La herramienta de rotar gira un bloque alrededor de sus propios ejes con arcos y ajusta el ángulo al incremento más cercano. Este artículo cubre el orden de multiplicación que elige los ejes, el redondeo, por qué al servidor le bastan tres números y por qué los tres campos de ángulo son tres tipos distintos de rotación.
Blocks Simulator: Color
La herramienta de color tiene una rueda, campos RGB, HSV y hexadecimal, cinco colores guardados y un cuentagotas, y pinta lo que le hagas clic. Este artículo cubre la matemática polar de la rueda, por qué teñir la imagen de la rueda es una forma exacta de mostrar el valor, cómo se mantienen sincronizados los campos y algunos bugs, dos de los cuales se cancelan entre sí.
2021
Blocks Simulator: Move
La herramienta de mover desliza un bloque sobre sus propios ejes en pasos ajustados de hasta 255 studs. Este artículo cubre la única línea que lo hace, por qué redondear hacia arriba hace asimétricos el avance y el retroceso, un bug en los campos de posición y lo que cambió la reescritura de mayo de 2022.
Blocks Simulator: Scale
La herramienta de escalar hace crecer o encoger un bloque desde la cara que arrastras y deja la cara opuesta donde estaba, también en bloques rotados. Este artículo cubre el corrimiento a la mitad que lo hace funcionar, los seis vectores de dirección, la fórmula de ajuste y la primera versión, a la que reemplazó.
Blocks Simulator: Build
La herramienta de construir tiene una ventana de ajustes con vista previa en 3D y un bloque fantasma que se ajusta a la cuadrícula contra la cara que apuntas. Este artículo cubre el almacén de atributos detrás de la ventana, la vista previa, la regla de ajuste y por qué queda al ras en unas caras y se mete en otras, y cómo crea el bloque el servidor.