Crie Jogos 2D com Tiniest2D
Exportando e Melhores Práticas
Lesson 11 of 11 • 10 XP
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
- Clique no ícone Exportar na barra superior
- Escolha um local e nome para seu jogo
- O engine cria um
.exeindependente com seu projeto incorporado - 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 emstart() - 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.