Créer des jeux 2D avec Tiniest2D
Exportation et meilleures pratiques
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.
Exportation de Votre Jeu
- Cliquez sur l'icône Export dans la barre supérieure
- Choisissez un emplacement et un nom de fichier pour votre jeu
- Le moteur crée un
.exeautonome avec votre projet intégré - Distribuez ce fichier unique - aucun autre fichier nécessaire !
Le jeu exporté :
- Fonctionne sans l'interface de l'éditeur
- Contient toutes les images, scènes et codes
- Est chiffré pour protéger vos actifs
Astuces et Meilleures Pratiques
Performance
- Gardez les tailles d'image raisonnables (pixels, pas haute résolution)
- Supprimez les objets dont vous n'avez plus besoin avec
removeObject() - Utilisez des calques pour organiser l'ordre de rendu
Organisation
- Donnez des noms significatifs aux objets et aux images
- Utilisez des commentaires pour documenter votre code
- Regroupez les variables connexes
Débogage
- Utilisez
print()pour afficher les valeurs des variables - Les messages d'impression apparaissent dans la fenêtre du jeu
- Vérifiez les types de collision si les objets passent à travers les murs
Problèmes Courants
Objets ne se collant pas :
- Vérifiez les types de collision (les deux objets doivent avoir des types appropriés)
- Assurez-vous que les objets sont ajoutés à la scène
- Vérifiez que le sprite a un collisionneur activé
Les objets passent à travers les murs :
- Les murs devraient être
COLLISION_STATIC() - Les objets mobiles devraient être
COLLISION_DYNAMIC() - Les objets très rapides pourraient passer à travers - réduisez la vitesse ou augmentez les limites de collision
La caméra ne suit pas le joueur :
- Mettez à jour la position de la caméra dans
onUpdate(), pas seulement dansstart() - N'oubliez pas que la position de la caméra est le centre de la vue
Carte de Référence Rapide
// Créer des actifs
var img = Sprite(16, 16)
var scene = Scene()
var sfx = Audio()
var obj = Object("Nom")
// Manipulation d'objets
setX(obj, 100)
setY(obj, 100)
setSprite(obj, img)
setCollisionType(obj, COLLISION_DYNAMIC())
addObject(scene, obj)
// Manipulation de sprites
fillSprite(img, 255, 0, 0, 255) // Remplir de rouge
setPixel(img, 0, 5, 5, 0, 255, 0, 255) // Définir le pixel à (5,5) sur la trame 0
var color = getPixel(img, 0, 5, 5) // Obtenir [r,g,b,a] à (5,5)
setAnimationFPS(img, 24) // Définir la vitesse d'animation
var fps = getAnimationFPS(img) // Obtenir la vitesse d'animation
// Physique (vitesse + gravité)
setGravityY(scene, 300) // Définir la gravité de la scène
setVelocityX(obj, 100) // Déplacer à droite
setVelocityY(obj, -200) // Sauter vers le haut
// Contrôle d'animation
setFrame(obj, 0) // Définir à un cadre spécifique
var frame = getFrame(obj) // Obtenir le cadre actuel
var count = getFrameCount(obj) // Nombre total de cadres
// Contrôle de scène
setScene(scene)
resetScene(scene)
setBackgroundColor(scene, 135, 206, 235) // Bleu ciel
// Requêtes de scène
var obj = getObjectAt(scene, mx, my) // Objet au point
var hits = getObjectsInBox(scene, x, y, 32, 32) // Objets dans la zone
var enemy = getObjectByName(scene, "ennemi") // Trouver par nom
var all = getAllObjects(scene) // Obtenir tous les objets
var count = getObjectCount(scene) // Compter les objets
var coins = getObjectsBySprite(scene, coinSprite) // Par sprite
var enemies = getObjectsByCollisionType(scene, COLLISION_DYNAMIC())
// Audio
var handle = playAudio(sfx)
if (isAudioPlaying(handle)) { }
stopAudio(handle)
// Caméra (position = centre de la vue)
setCameraX(scene, x)
setCameraY(scene, y)
setCameraZoom(scene, 3.0) // Affiche 240 unités du monde verticalement
// Écran et conversion de coordonnées
var w = getScreenWidth()
var h = getScreenHeight()
var worldPos = screenToWorld(mouseX, mouseY) // [worldX, worldY]
var screenPos = worldToScreen(objX, objY) // [screenX, screenY]
// Mode fenêtre (n'affecte que les jeux exportés)
setWindowMode(WINDOW_MAXIMIZED()) // Par défaut
setWindowMode(WINDOW_FULLSCREEN()) // Plein écran sans bordure
setWindowMode(WINDOW_WINDOWED()) // Fenêtre régulière
// Entrée clavier
if (isKeyPressed(KEY_SPACE())) { }
if (isKeyHeld(KEY_LEFT())) { }
// Entrée souris
if (isMouseButtonPressed(MOUSE_LEFT())) { }
var mx = getMouseX()
var my = getMouseY()
// Nombres aléatoires et mathématiques
var r = random() // 0.0 à 1.0
var n = randomInt(1, 10) // 1 à 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... radians
var bob = sin(angle) // La trigonométrie utilise des radians
var deg = rad2deg(angle) // 90 degrés
// Piles de style UI
uiPushElementColor(28, 40, 70, 220)
uiPushFontColor(255, 220, 120)
uiLabel("PRÊT", 4, 4)
uiPopFontColor()
uiPopElementColor()
// Stockage (sauvegarde/chargement des données de jeu)
var data = [100, "Joueur", true]
save(getAppDataPath() + "/MonJeu/save.dat", data)
var loaded = load(getAppDataPath() + "/MonJeu/save.dat")
if (fileExists(getAppDataPath() + "/MonJeu/save.dat")) { }
deleteFile(getAppDataPath() + "/MonJeu/ancien.dat")
// Contrôle du jeu
quitGame() // Quitter le jeu
// Boucle de jeu
func start() { }
func onUpdate(dt) { }
func onCollision(a, b) { }
func end() { }
Tiniest 2D Pixel Engine - Faites des jeux, pas des moteurs.