Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Exportando Tu Juego

  1. Haz clic en el ícono de Exportar en la barra superior
  2. Elige una ubicación y un nombre de archivo para tu juego
  3. El motor crea un archivo .exe independiente con tu proyecto incrustado
  4. ¡Distribuye este único archivo - no se necesitan otros archivos!

El juego exportado:

  • Se ejecuta sin la interfaz del editor
  • Contiene todas las imágenes, escenas y código
  • Está encriptado para proteger tus activos

Consejos y Mejores Prácticas

Rendimiento

  • Mantén tamaños de imagen razonables (píxeles, no alta resolución)
  • Elimina objetos que ya no necesitas con removeObject()
  • Usa capas para organizar el orden de renderizado

Organización

  • Asigna nombres significativos a objetos e imágenes
  • Usa comentarios para documentar tu código
  • Agrupa variables relacionadas

Depuración

  • Usa print() para mostrar valores de variables
  • Los mensajes de impresión aparecen en la ventana del juego
  • Verifica los tipos de colisión si los objetos atraviesan paredes

Problemas Comunes

Objetos no colisionan:

  • Verifica los tipos de colisión (ambos objetos necesitan tipos apropiados)
  • Asegúrate de que los objetos estén añadidos a la escena
  • Verifica que el sprite tenga un colisionador habilitado

Los objetos atraviesan paredes:

  • Las paredes deben ser COLLISION_STATIC()
  • Los objetos en movimiento deben ser COLLISION_DYNAMIC()
  • Los objetos muy rápidos pueden atravesar - reduce la velocidad o aumenta los límites de colisión

La cámara no sigue al jugador:

  • Actualiza la posición de la cámara en onUpdate(), no solo en start()
  • Recuerda que la posición de la cámara es el centro de la vista

Tarjeta de Referencia Rápida

// Crear activos
var img = Sprite(16, 16)
var scene = Scene()
var sfx = Audio()
var obj = Object("Nombre")

// Manipulación de objetos
setX(obj, 100)
setY(obj, 100)
setSprite(obj, img)
setCollisionType(obj, COLLISION_DYNAMIC())
addObject(scene, obj)

// Manipulación de sprites
fillSprite(img, 255, 0, 0, 255)  // Rellenar con rojo
setPixel(img, 0, 5, 5, 0, 255, 0, 255)  // Establecer píxel en (5,5) en el marco 0
var color = getPixel(img, 0, 5, 5)      // Obtener [r,g,b,a] en (5,5)
setAnimationFPS(img, 24)         // Establecer velocidad de animación
var fps = getAnimationFPS(img)   // Obtener velocidad de animación

// Física (velocidad + gravedad)
setGravityY(scene, 300)         // Establecer gravedad de la escena
setVelocityX(obj, 100)          // Mover a la derecha
setVelocityY(obj, -200)         // Saltar hacia arriba

// Control de animación
setFrame(obj, 0)           // Establecer a un marco específico
var frame = getFrame(obj)  // Obtener marco actual
var count = getFrameCount(obj)  // Total de marcos

// Control de escena
setScene(scene)
resetScene(scene)
setBackgroundColor(scene, 135, 206, 235)  // Azul del cielo

// Consultas de escena
var obj = getObjectAt(scene, mx, my)       // Objeto en el punto
var hits = getObjectsInBox(scene, x, y, 32, 32)  // Objetos en el área
var enemy = getObjectByName(scene, "enemigo")     // Encontrar por nombre
var all = getAllObjects(scene)             // Obtener todos los objetos
var count = getObjectCount(scene)          // Contar objetos
var coins = getObjectsBySprite(scene, coinSprite)  // Por sprite
var enemies = getObjectsByCollisionType(scene, COLLISION_DYNAMIC())

// Audio
var handle = playAudio(sfx)
if (isAudioPlaying(handle)) { }
stopAudio(handle)

// Cámara (posición = centro de la vista)
setCameraX(scene, x)
setCameraY(scene, y)
setCameraZoom(scene, 3.0)  // Muestra 240 unidades del mundo verticalmente

// Conversión de pantalla y coordenadas
var w = getScreenWidth()
var h = getScreenHeight()
var worldPos = screenToWorld(mouseX, mouseY)  // [worldX, worldY]
var screenPos = worldToScreen(objX, objY)     // [screenX, screenY]

// Modo de ventana (solo afecta a juegos exportados)
setWindowMode(WINDOW_MAXIMIZED())  // Predeterminado
setWindowMode(WINDOW_FULLSCREEN()) // Pantalla completa sin bordes
setWindowMode(WINDOW_WINDOWED())   // Ventana regular

// Entrada del teclado
if (isKeyPressed(KEY_SPACE())) { }
if (isKeyHeld(KEY_LEFT())) { }

// Entrada del ratón
if (isMouseButtonPressed(MOUSE_LEFT())) { }
var mx = getMouseX()
var my = getMouseY()

// Números aleatorios y matemáticas
var r = random()              // 0.0 a 1.0
var n = randomInt(1, 10)      // 1 a 10
var x = clamp(14, 0, 10)      // 10
var y = lerp(0, 100, 0.5)     // 50
var snapped = round(15.7)     // 16
var dir = sign(-8)            // -1
var power = pow(2, 3)         // 8
var angle = PI() / 2          // 1.5708... radianes
var bob = sin(angle)          // El trigonometría usa radianes
var deg = rad2deg(angle)      // 90 grados

// Pilas de estilo de UI
uiPushElementColor(28, 40, 70, 220)
uiPushFontColor(255, 220, 120)
uiLabel("LISTO", 4, 4)
uiPopFontColor()
uiPopElementColor()

// Almacenamiento (guardar/cargar datos del juego)
var data = [100, "Jugador", true]
save(getAppDataPath() + "/MiJuego/save.dat", data)
var loaded = load(getAppDataPath() + "/MiJuego/save.dat")
if (fileExists(getAppDataPath() + "/MiJuego/save.dat")) { }
deleteFile(getAppDataPath() + "/MiJuego/old.dat")

// Control del juego
quitGame()  // Salir del juego

// Bucle del juego
func start() { }
func onUpdate(dt) { }
func onCollision(a, b) { }
func end() { }

Tiniest 2D Pixel Engine - Crea juegos, no motores.