Keep your place in this quest

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

Exportando Seu Jogo

  1. Clique no ícone Exportar na barra superior
  2. Escolha um local e nome para seu jogo
  3. O engine cria um .exe independente com seu projeto incorporado
  4. Distribua este único arquivo - nenhum outro arquivo é necessário!

O jogo exportado:

  • Funciona sem a interface do editor
  • Contém todas as imagens, cenas e código
  • É criptografado para proteger seus ativos

Dicas e Melhores Práticas

Desempenho

  • Mantenha os tamanhos das imagens razoáveis (pixels, não alta resolução)
  • Remova objetos que você não precisa mais com removeObject()
  • Use camadas para organizar a ordem de renderização

Organização

  • Dê nomes significativos a objetos e imagens
  • Use comentários para documentar seu código
  • Agrupe variáveis relacionadas

Depuração

  • Use print() para exibir valores de variáveis
  • As mensagens de impressão aparecem na janela do jogo
  • Verifique os tipos de colisão se os objetos atravessarem paredes

Problemas Comuns

Objetos não colidindo:

  • Verifique os tipos de colisão (ambos os objetos precisam de tipos apropriados)
  • Certifique-se de que os objetos estão adicionados à cena
  • Verifique se o sprite tem um colisor habilitado

Objetos atravessam paredes:

  • As paredes devem ser COLLISION_STATIC()
  • Objetos em movimento devem ser COLLISION_DYNAMIC()
  • Objetos muito rápidos podem perfurar - reduza a velocidade ou aumente os limites de colisão

Câmera não seguindo o jogador:

  • Atualize a posição da câmera em onUpdate(), não apenas em start()
  • Lembre-se de que a posição da câmera é o centro da visão

Cartão de Referência Rápida

// Criar ativos
var img = Sprite(16, 16)
var scene = Scene()
var sfx = Audio()
var obj = Object("Nome")

// Manipulação de objetos
setX(obj, 100)
setY(obj, 100)
setSprite(obj, img)
setCollisionType(obj, COLLISION_DYNAMIC())
addObject(scene, obj)

// Manipulação de sprite
fillSprite(img, 255, 0, 0, 255)  // Preencher com vermelho
setPixel(img, 0, 5, 5, 0, 255, 0, 255)  // Definir pixel em (5,5) no quadro 0
var color = getPixel(img, 0, 5, 5)      // Obter [r,g,b,a] em (5,5)
setAnimationFPS(img, 24)         // Definir velocidade da animação
var fps = getAnimationFPS(img)   // Obter velocidade da animação

// Física (velocidade + gravidade)
setGravityY(scene, 300)         // Definir gravidade da cena
setVelocityX(obj, 100)          // Mover para a direita
setVelocityY(obj, -200)         // Pular para cima

// Controle de animação
setFrame(obj, 0)           // Definir para quadro específico
var frame = getFrame(obj)  // Obter quadro atual
var count = getFrameCount(obj)  // Total de quadros

// Controle de cena
setScene(scene)
resetScene(scene)
setBackgroundColor(scene, 135, 206, 235)  // Azul céu

// Consultas de cena
var obj = getObjectAt(scene, mx, my)       // Objeto no ponto
var hits = getObjectsInBox(scene, x, y, 32, 32)  // Objetos na área
var enemy = getObjectByName(scene, "enemy")     // Encontrar por nome
var all = getAllObjects(scene)             // Obter todos os objetos
var count = getObjectCount(scene)          // Contar objetos
var coins = getObjectsBySprite(scene, coinSprite)  // Por sprite
var enemies = getObjectsByCollisionType(scene, COLLISION_DYNAMIC())

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

// Câmera (posição = centro da visão)
setCameraX(scene, x)
setCameraY(scene, y)
setCameraZoom(scene, 3.0)  // Mostra 240 unidades do mundo verticalmente

// Tela e conversão de coordenadas
var w = getScreenWidth()
var h = getScreenHeight()
var worldPos = screenToWorld(mouseX, mouseY)  // [worldX, worldY]
var screenPos = worldToScreen(objX, objY)     // [screenX, screenY]

// Modo de janela (afeta apenas jogos exportados)
setWindowMode(WINDOW_MAXIMIZED())  // Padrão
setWindowMode(WINDOW_FULLSCREEN()) // Tela cheia sem bordas
setWindowMode(WINDOW_WINDOWED())   // Janela regular

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

// Entrada do mouse
if (isMouseButtonPressed(MOUSE_LEFT())) { }
var mx = getMouseX()
var my = getMouseY()

// Números aleatórios e matemática
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... radianos
var bob = sin(angle)          // Trig usa radianos
var deg = rad2deg(angle)      // 90 graus

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

// Armazenamento (salvar/carregar dados do jogo)
var data = [100, "Jogador", true]
save(getAppDataPath() + "/MeuJogo/save.dat", data)
var loaded = load(getAppDataPath() + "/MeuJogo/save.dat")
if (fileExists(getAppDataPath() + "/MeuJogo/save.dat")) { }
deleteFile(getAppDataPath() + "/MeuJogo/old.dat")

// Controle do jogo
quitGame()  // Sair do jogo

// Loop do jogo
func start() { }
func onUpdate(dt) { }
func onCollision(a, b) { }
func end() { }

Tiniest 2D Pixel Engine - Faça jogos, não motores.