Premiers pas préalables

Le but ici est de lister les préalables nécessaires pour commencer un projet. Il n’y a là rien de très compliqué, mais cela mérite tout de même précision. Tout n’est pas absolument nécessaire dans la liste, mais tout est utile.

Installer Git (ou un autre SCM)

Le mode opératoire pour installer git dépend de l’OS que vous utilisez, mais les différents options se trouvent sur la page de téléchargement. Puis vous pouvez lire l’introduction rapide à Git.

Télécharger Corona

Allez sur le site de Corona Labs, créez un compte et téléchargez Corona. C’est gratuit ! NB : Il vous faudra un Mac pour publier des applications iOS. C’est Apple qui impose cette restriction. Vous pouvez toutefois coder sur PC (même s’il faudra tester l’application sur des terminaux, et donc passer par un Mac, à un moment du processus).

Téléchargez un éditeur de texte

Par exemple SublimeText, qui a un plugin spécifique pour Corona, ou Atom  (qui a aussi un package spécifique) ou Notepad++ (sur windows)

Commencez avec une base initiale

Créez votre dossier de travail,  vous pouvez récupérer tout ce qui suite en clonant le repo git adéquat :

git clone https://github.com/Kodaps/Starter.git

Sinon, si vous voulez tout faire à la main, vous pouvez éventuellement lancer dans le dossier que vous avez créé un :

git init

Si vous avez cloné le repo Starter, vous pouvez lire la suite mais vous n’avez pas besoin de modifier les fichiers comme décrit ci-dessous.

A présent nous allons créer cinq fichiers texte vides :

  • main.lua : le fichier que lance Corona
  • config.lua : le fichier de configuration de l’application
  • build.settings : le fichier de configuration pour compiler l’application
  • constants.lua : des constantes diverses
  • utils.lua : des utilitaires

Seul le premier est réellement requis pour lancer le simulateur. Les deux suivants sont nécessaires pour compiler l’application. Les deux derniers comportent des bouts de code utiles et utilisées par toutes les applications.

main.lua

Pour le moment, nous allons limiter main.lua à son expression la plus simple, à savoir :

require("constants")
require("utils")

Ceci chargera les fichiers utils.lua et constants.lua

config.lua

Le fichier config.lua est un peu plus compliqué :

local aspectRatio = display.pixelHeight / display.pixelWidth
application = {
  content={
   width= (aspectRatio<1.5 and 800 or math.floor(1200/aspectRatio+1),
   height= (aspectRatio>1.5 and 1200 or math.floor(800*aspectRatio+1),
   scale = "letterBox",
   fps = 30,
   imageSuffix = {
     ["@2x"] = 1.3,
   },
  }
}

build.settings

Le fichier build settings est un fichier quasi vide, qui ne contient pour le moment que des données d’orientation. (ici, il force l’orientation en portrait)

-- Supported values for orientation:
-- portrait, portraitUpsideDown, landscapeLeft, landscapeRight
settings = {
 orientation = {
   default="portrait", 
   supported = {"portrait", "portraitUpsideDown"}
 },
 plugins = {},
 iphone = { 
   plist = {}
 },
 android = {    
 }
}

constants.lua

Le fichier constants.lua contient des constantes de base en global (oui, je sais, c’est mal).

platformCode = system.getInfo("platform")
screenW, screenH = display.contentWidth, display.contentHeight
halfW, halfH = display.contentWidth*0.5, display.contentHeight*.5

Ceci nous permet d’utiliser screenW ou screenH dans le code, pour désigner la largeur ou la hauteur de l’écran.

utils.lua

Ce fichier contiendra les fonctions utilitaires globales, qui serviront à travers le programme.

function _log(message, emittor)
  emittor = emittor or "NONE"
  print("["..emittor.."]"..tostring(message))
end

Introduction (rapide) à git

Git est un SCM (source code management) qui permet de « sauvegarder » les changements que vous faites. Il permet aussi de transférer vos changements entre plusieurs ordinateurs, en passant par un service git hébergé comme GitHub  ou BitBucket (le premier est plus populaire, le deuxième est moins cher).

Pour télécharger git, c’est ici.

Git enregistre le code (en réalité, n’importe quel type de fichier, mais le système a plus de sens avec des fichiers texte) dans ce qu’on appelle un « Repository » (ou « Repo »), qui est grosso-modo une base de donnée. Celle-ci enregistre l’ensemble des changements apportés aux fichiers au cours du temps.  Un enregistrement de changements est un « commit ».  Par example si je change une ligne d’un fichier texte, git ne sauvegardera pas tout le fichier, mais notera simplement le changement qui a été fait.

L’apprentissage complet de git est un sujet un peu complexe, le site de git (https://git-scm.com) est très bien documenté et contient même un livre qui explique git et les concepts sous-jascents en détail, mais voici quelques commandes utiles.

  • git init : crée un repo local vide dans le dossier en cours.
  • git clone &lt;url_du_repos&gt; : récupère du code depuis un serveur (ou repos distant) situé à  &lt;url_du_serveur&gt;, et le copie pour faire un repository local.
  • git add . : ceci enregistre les changements locaux dans une zone d’enregistrement appelée l’index, prêts à être « committés ».
  • git commit - m "&lt;insert message&gt;" : sauvegarde tous les changements de la zone de sauvegarde dans un commit dans le repository local.
  • git push : essaie d’envoyer les commits du repository local vers le repository distant par défault (en général celui qui a servi pour cloner le repo, initialement).
  • git pull :  récupère tous les nouveaux changements depuis le repo distant par défaut, et essaie de mettre à jour le repository local avec ses changements. Si des changements ont eu lieux à la fois localement et à distance, git essaie de les combiner (ou « merger ») au mieux, créant un nouveau commit (le « merge ») qui combine les deux changements. Si un même fichier a été changé (de manière différente) au même endroit localement et à distance, git ne saura pas quelle version prendre, et détectera donc un « conflit » qu’il vous faudra résoudre manuellement (il vous faudra choisir la bonne modif, ou éditer le fichier manuellement, sauvegarder les modifs, et commiter le résultat)

« Coucou tout le monde ! » avec Corona SDK

Traditionnellement, pour commencer à apprendre à coder dans un langage ou avec un moteur, on commence par un programme qui affiche « Hello World! » ou « Coucou tout le monde ! »

Ici nous allons voir comment faire ça avec Corona. Vous allez voir, c’est très simple.

Commencez par créer un dossier, qu’on va appeler « Projet » pour les besoins de la cause mais que vous pouvez nommer comme vous le souhaitez. (vous pouvez faire « git init » dedans pour bien suivre tous les changements)

A présent nous allons y créer un fichier appelé « main.lua ». Le fichier sera codé dans un langage de script appelé LUA, qui est assez répandu dans l’industrie du jeu. Ce langage est léger, flexible et rapide à apprendre ce convient bien ici. Vous pouvez en apprendre plus ici : http://www.lua.org/.

Le programme

A présent, ouvrons « main.lua » et écrivons:

-- programme hello world basique
local options =
{
text = "Coucou !",
x = 300,
y = 300,
fontSize = 50,
}

local textobject = display.newText(options)

A présent, ouvrez Corona, et dans le menu File (Fichier) sélectionnez Open... (Ouvrir) et sélectionnez le dossier que vous avez créé et dans lequel se trouve le fichier « main.lua ». Vous devriez voir un écran noir (entouré d’un cadre qui représente un téléphone ou une tablette) avec le texte « Coucou ! ». Bravo, vous avez créé votre premier programme sous Corona !

A présent nous allons regarder ce que fait le code. Il y a trois « morceaux » dans le code : un commentaire, la déclaration d’une table et la création d’un objet d’affichage (un « DisplayObject ») texte.

Le commentaire

La première ligne dit

-- programme hello world basique

Le -- signifie que tout ce qui suit sera ignoré. Ceci permet de mettre des commentaires dans le code, ce qui est recommandé si vous faites quelque chose de complexe et voulez le comprendre ultérieurement, ou si quelqu’un d’autre va devoir relire votre code et comprendre ce que vous avez fait. C’est une bonne pratique de bien commenter votre code, même si c’est encore mieux si votre code est tellement propre et clair qu’il n’a pas besoin de commentaire explicatif !

Il y a une autre façon de commenter en LUA, en utilisant --[[ suivi par ]], pour créer un commentaire sur plusieurs lignes, comme suit :

--[[ 
Ceci est un commentaire multilignes
Je peux écrire ce que je veux 
Le programme l'ignorera
]]

la table des options

local options = 
{
 text = "Coucou !", 
 x = 300,
 y = 300,
 fontSize = 50,
}

Ici nous définissons une variable locale appelée « options », et nous lui affectons une table. Cette table comporte quatre clefs : « text », « x », « y » et « fontSize », et elle associe à ces clefs soit une chaîne de caractères (« Coucou ! », qui est associé à « text »), soit des valeurs numériques.

La table associative est un des « types » de variables de LUA (comme le sont les nombres, les chaînes, et les fonctions)

le DisplayObject texte

local textobject = display.newText(options)

Ici nous passons la table « options » à la fonction « display.newText » (en réalité, à la fonction « newText » contenue dans l’objet « display »). Cette fonction lit la table « options » et crée un DisplayObject texte en fonction des valeurs trouvées dans la table.