Projet iPhone #1 – Day 4

Petit weekend de développement :

  • 3 types de bombes différentes (explosion + ou – rapide, points rapportés)
  • les points rapportés pour avoir désamorcé une bombe apparaissent au bon moment (+ animation)
  • menu principal avec une option pour activer/désactiver la caméra en 3D et un accès aux High Scores

L’air de rien il y’a eu beaucoup de travail derrière ces 3 points.

 

[youtube]http://www.youtube.com/watch?v=tUXOMhbMqH0[/youtube]

Version “HD” dispo sur la page youtube

 

Je suis assez impressionné par la gestion du GUI (ici dans le menu) par le Unity. C’est vachement simple à mettre en place, grosso modo tout mon menu est géré avec ca :

[code lang= »javascript »]

function OnGUI(){ 
 

// fenetre des scores
if(scoresToggle){

GUI.backgroundColor = Color.black;
GUI.Window (0, windowScores, DoMyWindow, « My Window »);

// menu
}else{

GUI.Box (Rect (50, 50, Screen.width-100, 220), « Menu »);

// lancer une partie
if( GUI.Button(Rect(Screen.width / 2 – 50, 100, 100, 40), « Play ») )
{
Application.LoadLevel (« BomberCloneGame »);
}

// voir les scores
if( GUI.Button(Rect(Screen.width / 2 – 50, 160, 100, 40), « Scores ») )
{
scoresToggle = true;
}

// toggle pour Camera 3D
GameManager.optionCamera3D = GUI.Toggle (
Rect (Screen.width / 2 – 40, 220, 80, 40),
GameManager.optionCamera3D,
 » 3D camera »);

}

GUI.Label (Rect (150, 330, 128, 128), logoTexture);

 

// Make the contents of the window

function DoMyWindow (windowID : int) {

    if (GUI.Button (Rect (windowScores.width / 2 – 50, windowScores.height – 40,100,20), « close »))
        scoresToggle = false;

    ShowLocalScores();
}[/code]

Ce qu’il faut comprendre c’est que la fonction OnGUI tourne en permanence et que les bouton « GUI.Button » retourne true lorsqu’il sont touchés. Bref c’est simple comme tout.

Projet iPhone #1 – Day 3

Mardi j’ai passé pas mal de temps à essayer de comprendre comment optimiser correctement un jeu Unity pour l’iPhone.

  • Par défault le Unity tourne à 60fps sur l’iPhone et à tendance a se synchroniser avec le taux de rafraîchissement du LCD (16ms). On saute donc très vite par paliers : 60fps, 30fps, 20fps, 15fps…
  • Contrairement à ce qu’on pourrait penser la première limitation sur laquelle on bute n’est pas le nombre de polygones affichés mais le nombre de Draw Calls. Un objet avec un Material (texture) prend 1 draw call pour être affiché, une source lumineuse double les DC des objets qu’elle illumine… ca monte donc très vite.
  • L’iPhone tient bien la charge jusqu’à 22-26 DC. Après les fps s’effondrent très rapidement à 30 voir 20.
  • On peut grouper les objets semblables (et proche) pour limiter les DC, et cela soit dans 3DS soit via un script dans le Unity qui va combiner ces objets et leurs DC. Cette dernière solution n’est envisageable que pour des objets qui n’ont aucune action indépendante (mouvement, changement d’état…)
  • Une Skybox classique prends déjà 6 DC ! (1 par face)

Il faut donc être efficace et malin pour avoir un jeu qui tourne correctement !

Hier soir j’ai bataillé (dur) pour intégrer le premier modèle animé de Christophe et lancer les animations au bon moment (spawn, idle, delete). Avec ces 12 petits objets animés je reste à 30 fps.

[youtube]http://www.youtube.com/watch?v=tZGv5WH0UDo[/youtube]

Version « HD » dispo sur la page youtube.

Projet iPhone #1 – Day 2

2 petites heures de boulot hier soir après avoir passé la soirée chez Christophe à débuger Penguins Arena.

Les « bombes » sont placées aléatoirement sur la surface de jeu (modulable à souhait dans l’éditeur du Unity). Je fais en sorte qu’elle ne soient pas trop près les unes des autres.

[youtube]http://www.youtube.com/watch?v=swLPJ9Lw4Ao[/youtube]

Notez mes progrès pour filmer mon iPod Touch. Version « HD » dispo sur la page youtube.

Projet iPhone #1 – Day 1

On a le Unity depuis un peu moins d’une semaine. J’ai pris le temps qu’il fallait pour ingurgiter l’ensemble des vidéos/tutorials/docs sur lesquels je suis tombé… il faut bien compter 3 jours à temps plein pour y arriver.

Dactyl

Aujourd’hui j’ai commencé à prototyper le premier jeu que l’on veux faire avec Christophe : un clone de Dactyl (lien iTunes), un wak-a-mole simple mais efficace.

Le plus dur lorsque l’on commence à travailler avec un nouveau moteur c’est de ce lancer dans un nouveau projet en partant de zéro. On ne sait jamais par quoi commencer !

Finalement la meilleure chose à faire dans ce cas là c’est d’y aller avec ses grosse bottes, tel un warrior.

olol

Bref après 6-7 heures de boulot j’ai enfin quelque chose qui tourne sur mon iPod et qui réagit quand on le titille.

[youtube width= »480″ height= »395″]http://www.youtube.com/watch?v=4f_rCGqtLgA[/youtube]

Oui, faut que j’apprenne à utiliser mon appareil photo en mode vidéo.

Piratage de Penguins Arena

Quelques jours avant Noël il s’ets passé quelque chose d’étrange avec Penguins Arena : le nombre de joueurs quotidien à été multiplié par 10-15 en 48 heures.

Stats du Flux RSS de Penguins Arena
Stats du Flux RSS ingame (menu principal) de Penguins Arena

Normalement on a entre 200 et 400 joueurs quotidien depuis quelques mois. Depuis le 23 décembre on est passé à 3000-3500.

J’avais vu ca il y’a quelques jours mais je pensais que ca pouvait venir d’un journal PC qui avait inséré la démo de PA dans leur CD de compléments…

Aujourd’hui je lance PA dans Steam, recherche des serveurs online et j’en trouve une quinzaine au lieu des 2 ou 3 habituels ! En cherchant un peu dans mes Logs je trouve qu’il y’a actuellement plus de 75 personnes qui jouent à PA !

Après avoir un peu fouillé j’en déduis qu’il s’agit d’une version pirate de notre version Steam (v 1.0). Un peu avant Noël j’avais trouvé quelques liens RS vers notre jeu craqué mais rien de particulièrement affolant (loin de pouvoir générer autant de trafic sur notre jeu). Visiblement Penguins Arena s’échange d’une façon ou d’une autre mais impossible de mettre le main sur la source exacte de la propagation.

Si vous avez une idée un peu d’aide serait la bienvenue. Le réel problème n’est pas le piratage du jeu : c’était inévitable du moment où on est passé sur Steam) mais j’aimerais vraiment comprendre ce qui se passe.

L’ironie dans l’histoire c’est que si ils avaient piraté la dernière version de PA (v1.01) ca ne me poserait pas tant de problème : ca ferait du monde pour jouer sur le net. Mais là les deux versions sont incompatibles et font planter les joueurs honnêtes qui tentent de ce connecter à ces serveurs 🙁