Curveball es una herramienta de código abierto escrita en Rust que permite generar geometrías curvas para los niveles del videojuego Neverball, un juego de habilidad de tipo arcade. Su autor la desarrolla como alternativa al antiguo script curve.c, incluido en Neverball, que solo generaba arcos circulares. Curveball resuelve esa limitación combinando varios algoritmos en un único programa con visualizador integrado.
La herramienta parte del formato de mapas de Quake, empleado por Neverball, donde cada "brush" (pieza de geometría) se define como la intersección de varios semiplanos en el espacio. Como los brushes deben ser convexos, Curveball recurre al algoritmo convex hull, implementado en Rust mediante la biblioteca chull, para reconstruir automáticamente piezas convexas a partir de puntos.
El núcleo de la aplicación es una abstracción inspirada en software CAD mecánico como Solidworks: se define un perfil en 2D y se extruye a lo largo de un recorrido 3D. El programa repite el perfil a lo largo del trayecto y, entre cada par de caras adyacentes, genera un brush mediante el algoritmo de casco convexo. Además de la extrusión, Curveball incorpora tres curvas adicionales llamadas Curve Classic, Curve Slope y Rayto. El código está disponible en GitHub y también puede usarse desde el navegador.
