GSH Docs v0.1

Más / Arquitectura

Arquitectura

Cómo está partido el producto. Esta página no documenta el código fuente del motor; describe el contrato que ves al usarlo.

Tres capas

Studio (editor, paneles, Play/Stop)
        │
GSH Script (.gsh) → análisis → ejecución
        │
Runtime 2D (dibujo, física, input, audio, cámara)
        │
Hardware / Raylib

El Studio y el player comparten el runtime. La diferencia es dónde se pinta el juego: ventana completa, o una textura dentro del Stage para no mezclarse con la UI del editor.

Del script a la pantalla

  1. El texto se parte en tokens. La indentación cuenta: no hay llaves.
  2. Se arma un árbol de sentencias y expresiones.
  3. El intérprete camina ese árbol con un entorno de variables y clases.
  4. Las llamadas a Window, Physics, etc. son funciones nativas registradas en el runtime.
  5. spawn pasa un objeto del script al lado que se dibuja cada frame.

Si el parseo falla, el error sale en consola y el runtime de esa sesión no arranca. No hay “compilar el juego” aparte: el análisis ocurre al pulsar Play o al lanzar el player.

Qué hace el runtime

Las texturas y el audio esperan a que exista contexto gráfico. Por eso un load en el momento correcto (al iniciar la escena) es más seguro que asumir handles eternos.

Un fotograma

  1. El host (Studio o player) pasa delta al script.
  2. Corre frame.
  3. Los actores actualizan posición y estado.
  4. Se vacía la cola de dibujo con la cámara activa.
  5. Si hay Studio, la UI del editor se pinta encima, fuera de esa textura.

Dependencias visibles

El render e input de bajo nivel van por Raylib 5.5. El docking del Studio, Dear ImGui. El editor de texto del panel Script es un componente embebido con un perfil de lenguaje GSH (keywords, strings, números, nombres de actores).

CMake las resuelve en configure. No forman parte de GSH Script: el autor del juego no las llama.

Límite de esta guía Nombres de archivos C++, firmas internas y el árbol del compilador no se publican aquí. Si trabajas sobre el motor, usa el repositorio del código; si escribes un juego, quédate en el lenguaje y esta API.