CS
Coki Studios Docs loopize++ & 3D
loopize++ v1.0.0 Wavefront .OBJ C# MonoBehaviour

loopize++, Wavefront .OBJ & C#

Suite oficial de adiciones para juegos 3D y 2D sobre Looping Engine: carga de mallas .obj, raycasting por triángulo (Möller–Trumbore), scripts C# con MonoBehaviour y sistemas de juego integrados en C++17, C# SDK y Web.

Abrir Web Loopize Kit Studio → Probar Preset en REPL

Pipeline Wavefront .OBJ

Carga archivos externos o modelos embebidos con soporte para vértices (v), normales (vn), coordenadas UV (vt), caras triangulares y n-gonales (f), normalización de escala, subdivisión catmull-style y exportación a .obj.

val mesh := obj3d.load("assets/models/starfighter.obj", "starfighter")
obj3d.normalize("starfighter", 2.4)
val subdiv_faces := obj3d.subdivide("starfighter")

spawn3d.obj(
    "AngelHero",
    obj: "starfighter.obj",
    at: (0, 2.2, 6),
    scale: 1.6,
    color: "#38bdf8",
    cs: "StarfighterPilot"
)
Función Uso principal
obj3d.load(path, alias?) Carga y parsea un .obj local o incorporado; retorna conteo de vértices, triángulos y radio envolvente.
obj3d.parse(raw_text, alias) Compila geometría .obj generada dinámicamente en memoria.
obj3d.subdivide(key) / obj3d.normalize(key, radius) Duplica detalle poligonal o normaliza escala al radio indicado.
obj3d.spawn(...) / spawn3d.obj(...) Instancia una entidad 3D con la malla y script C# opcional en la escena.
physics3d.raycast_scene(origin, dir) Disparo exacto por triángulo (Möller–Trumbore) contra las mallas activas.

Modelos 3D Incorporados (assets/models/)

El runtime nativo y el intérprete web incluyen 5 mallas .obj listas para usarse sin configuración adicional:

  • starfighter.obj — Caza interceptor principal con cabina, alas en flecha y propulsores.
  • valkyrie_drone.obj — Dron centinela para escuadrones y oleadas.
  • omega_titan.obj — Crucero jefe multipolígono de alta presencia.
  • cyber_crystal.obj — Cristal energético flotante para coleccionables y objetivos.
  • star_gate.obj — Portal dimensional orbital de doble cara.

C# MonoBehaviour Bridge & Exportación

Escribe clases C# directamente dentro de archivos .loop con cs! { ... }. La VM C# embebida funciona sin dependencias externas y detecta automáticamente dotnet / mcs+mono cuando están presentes en el sistema.

use "csharp"

cs! {
    public class StarfighterPilot : MonoBehaviour {
        public float Shield = 100.0f;

        public void Start() {
            LoopingBridge.Set("cs_pilot_ready", true);
        }

        public void Update(float dt) {
            Scene3D.Rotate("Starfighter01", 0.0f, dt * 42.0f, 0.0f);
            Shield = Mathf.Clamp(Shield + dt * 4.0f, 0.0f, 100.0f);
        }
    }
}

val cs_code := csharp.export("StarfighterPilot")

También puedes transpilar un proyecto Looping 3D a código fuente C# independiente mediante CLI:

looping compile mi_juego.loop --target csharp -o GameExport.cs

ECS, Wave Director y FSM (loopize++)

Importa la librería híbrida con use "loopize++" para acceder a las utilidades lz_* y las primitivas de núcleo loopize.*:

use "loopize++"

lz_banner("Orbit Sector 7")
lz_spawn_obj("TitanBoss", "omega_titan.obj", 0, 5, 36, 1.8, "#f43f5e", "StarfighterPilot")

// Director de oleadas con enemigos .obj
val spawned := lz_wave_rush(1, "valkyrie", 4, 90, "valkyrie_drone.obj")

// Máquinas de estado finitas & ECS
lz_fsm("boss_ai", "patrol")
val eid := loopize.ecs_spawn("Escort", "ally", [4, 2, 10], 120, "starfighter.obj", "")
val nearby := loopize.spatial_radius([0, 2, 10], 15.0, "ally")

Combos, Camera Shake, Tweens, Misiones & Reporte

  • Combos & Sacudida de Cámara: lz_hit_combo(puntos, trauma) acumula multiplicadores hasta x8 y aplica trauma shake a la cámara spring-arm.
  • Curvas & Tweens: lz_ease("out_cubic", t) y lz_tween(key, from, to, dur, curve) con curvas linear, in_quad, out_quad, in_out_quad, out_cubic, in_out_cubic y out_back.
  • Misiones XP & Inventario: lz_mission(id, titulo, meta, xp), loopize.quest_progress(id, delta), loopize.inventory_add y loopize.inventory_has.
  • Paso Físico y Telemetría: lz_step(dt), lz_collide(a, b) y lz_report().

Web Loopize Kit (Web Components)

Embeds 3D de cero dependencias usando /web-loopize-kit.js directamente en cualquier página web:

<script type="module" src="https://cokistudios.com/web-loopize-kit.js"></script>

<loopize-obj-viewer model="starfighter" color="#38bdf8" autorotate="true"></loopize-obj-viewer>
<loopize-stage preset="orbital_arena" title="Orbit Sector 7"></loopize-stage>
Abrir Sandbox Web Loopize Kit →