Jeux vidéo indépendants [Mac, PC, iPhone]

Développement de jeux vidéo & actualité sur les jeux vidéo indépendants - Frogames.com le blog de MathieuFROG.

Articles taggés avec ‘iPhone’

« Articles plus anciens

Just a Button [iPhone - Free] dispo !

Vendredi 28 août 2009

Juste au moment où je rentre de vacances Apple valide le petit jeu dont je parlais la dernière fois.

Vous pouvez donc télécharger Just a Button gratuitement sur l’App Store.

Petit rappel, c’est plus un exercice de style qu’un vrai jeu : j’ai essayé de trouver différentes façon de jouer à plusieurs avec comme seul élément d’interaction un bouton. Le jeu a été fait en seulement 7 jours pour le Experimental Gameplay Project. Ne vous attendez pas au jeu du siècle hein !

Le design du bouton a été réalisé avec brio par notre QQQ préféré !

Voilà une vidéo d’une ancienne version :

YouTube Preview Image

Strasbourg, dev iPhone, Twitts

Lundi 18 mai 2009

Voilà plus d’un an que ma chérie prépare son Examen National Classant (ENC), concours d’entrée en internat de médecine. Dans deux semaines nous allons donc nous retrouver à Strasbourg pour les 3/4 jours que durent l’examen (avant d’aller prendre un peu de repos en Belgique puis à Amsterdam).

Autant ma chère et tendre sera bien occupée pendant ces quelques jours autant moi, ma bite, mon couteau et mon Macbook seront libres d’explorer cette belle ville qu’est Strasbourg.

D’où ma question : que faut il ne surtout pas rater à Strasbourg ? Musée, bar, resto, bar, parc, bar…

=====================================================================

Voilà bientôt deux semaines qu’on attends la validation de notre jeu iPhone par Apple. Visiblement l’arrivée imminente de l’OS en version 3 a foutu le bronx dans le process des test/validation. En attendant je prototype des idées de petits jeux.

=====================================================================
LAST TWEETS FROM @MathieuFrogames
——————————————————————————————————————————————————————-

=====================================================================
= Favorites
=====================================================================

  • [5 days ago] Netsabes: En hommage à Hadopi, TBBT sera renommé en The Big Brother Theory pour ses prochaines diffusions françaises.
  • [5 days ago] Netsabes: The Big Bang Theory dans twitter : @sheldoncooper & @leonardhofstadt @pennyin4B @wolowizard @theraj
  • [6 days ago] AlexHervaud: D’après une source qui traîne dans leur bureau, l’équipe belge du film Panique au Village va monter les marches cannoises en tracteur. Lol.
  • [9 days ago] mwegner: Integrated Pivotal Tracker into our network Growl system today! Everyone gets growls on story added/started/finished.
  • [9 days ago] maxime: Dropzone sort demain ! \o/ http://aptonic.com/
  • [10 days ago] jarrold: Very good Mac SVN Client http://www.zennaware.com/cornerstone/
  • [10 days ago] mrchrisallen: @keyframer you don’t need Vista to use SVN. Take a look at http://versionsapp.com/ for Mac, it’s a decent GUI for SVN.
  • [16 days ago] Blurst: New blog post: Paper Moon is Live! http://blurst.com/blog/paper-moon/

=====================================================================

Décidément ces derniers semaines n’ont pas été très productives. On attends TOUJOURS qu’Apple se bouge les fesses pour corriger des informations sur notre compte pour qu’on puisse publier Penguins Invasion. En attendant Christophe se met au Unity et moi je suis parti sur un nouveau prototype : Zombie Penguins.

Dans mon précédant billet/twit j’avais dit que ce jeu serait un FPS mais après moultes tests je me suis arrêté au contrôle de la caméra, il n’y a donc pas de déplacement et comme me l’a fait remarqué Netsabes “c’est plus du Boom Blox que du fps”. Soit. A la limite je préfère qu’on n’aille pas plus loin du côté des FPS si les contrôles ne suivent pas. Quoi qu’il en soit on en a même pas encore parlé avec Christophe…

Assez de blabla, voilà une vidéo du prototype actuel.

YouTube Preview Image

.

.

J’ai dans l’idée que chaque arme soit achetable et upgradable comme dans tout bon jeu à base de zombies.

Si vous avez des idées d’armes je suis preneur. Pour l’instant on a : une boule de neige normale, une boule explosive, une rafale et un “slow motion”.

☀ Projet iPhone #1 - Day 9

Jeudi 19 mars 2009

Beaucoup de temps passé sur l’optimisation du jeu. J’arrive enfin a quelque chose qui me satisfait.

J’ai aussi passé pas mal de soirées à convertir mon script PHP/MySQL de gestion des scores en ligne en application Google App Engine. Finalement je crois que je vais revenir en arrière : je découvre Python et l’environnement de développement Google App Engine, j’y perds beaucoup de temps et certaines limitations me demandent trop de travail par rapport à la version PHP/MySQL où je suis complètement à l’aise. Pas sûr que ca vaille le coup au final…

Changements depuis la dernière fois :

  • Musique (menu + ingame)
  • Eléments traduits ajoutés (fr/en/de/jp/es)
  • Online scores now use Google App Engine
  • Beaucoup de temps passé sur l’optimisation. Ceux intéressé par le développement Unity pour iPhone peuvent télécharger mon “cheat sheet” (optimisations.rtf).

YouTube Preview Image

☀ Projet iPhone #1 - Day 8

Lundi 9 mars 2009

Le dernier article sur notre Projet iPhone #1 était il y’a presque un mois. A l’époque on pensait être en mesure d’envoyer le jeu à Apple une semaine plus tard… c’est raté.

En fait il y’a une étape qui est bloquante et qui nous évite de culpabiliser : le changement de statut légal pour Frogames. Apple bloque tout, le temps de vérifier les nouvelles infos, et ca prend du temps.

Depuis la dernière fois il y’a eu beaucoup de changements :

  • Nom du jeu : Penguins Invasion
  • Système de localisation
  • Traductions (fr/en/de/jp/es) en cours
  • Scène unique (plus de loading entre le menu et le jeu !)
  • Système d’achievements
  • Nouvelle gestion pour l’écran de fin de partie
  • Améliorations des shaders
  • Ajout de l’Unity iPhone Enhancement kit
  • Saisie du pseudo possible
  • Deuxième écran de loading (avec logo Frogames)
  • Bugs divers corrigés + amélioration des performances
Que reste-il à faire ? Il va falloir ajouter les traductions, faire l’écran et les icones des achievements, tenter de grignoter encore quelques FPS et tester la difficulté du jeu.

YouTube Preview Image

☀ Projet iPhone #1 - Day 7

Vendredi 13 février 2009

On commence à voir le bout. L’objectif étant d’envoyer l’application à Apple la semaine prochaine.

Entre la dernière vidéo et celle-ci :

  • Changement de la visualisation des clics sur les bombes
  • Ecran de loading (final)
  • Affichage des scores offline (local) et online (worldwide)
  • Nouvelle bombe : piège (image à droite ->). Ne pas cliquer dessus !
  • Nouveau bonus : vie supplémentaire
  • Légère transparence pour les bombes cliquées (et poussée un peu en arrière pour ne pas gêner la visibilité)
  • Bugs divers corrigés
Reste à augmenter encore un peu la difficulté, gérer l’écran de fin de partie avec la saisie du pseudo (ca va être chiant), vérifier les textes et les faire traduire.

YouTube Preview Image

Histoire d’utiliser un peu la balise CODE voilà ma fonction de spawn des bombes. C’est bien dégeulasse mais c’est suffisamment simple comme code… donc ca me plaît.


// *** spawner une nouvelle bombe au hasard

function spawnBombes(){

spawningBombes = true;

// chances de spawner 1, 2 ou 3 bombes (sur 100)

var spawnBombe1Potential : int = Random.Range(90+difficulty*2, 101);

var spawnBombe2Potential : int = Random.Range(10+difficulty*2, 21+difficulty*2);

var spawnBombe3Potential : int = Random.Range(0+difficulty*2, 6+difficulty*2);

var potentialBombes : int = Random.Range(0, 101);

// chances de spawner un piege (sur 100)

var spawnPiegePotential : int = Random.Range(5+difficulty*2, 15+difficulty*2);

var potentialPiege : int = Random.Range(0, 101);

// chances de spawner une vie (sur 100)

var spawnViePotential : int = Random.Range(4-difficulty*2, 14-difficulty*2);

var potentialVie : int = Random.Range(0, 101);

var bombesType : int = Random.Range(1, 4);

var delayToSpawn : float;

if(difficulty < 10)

delayToSpawn = Random.Range(0.3, 1.4-(difficulty/10));

else

delayToSpawn = Random.Range(0.3, 0.4);

yield new WaitForSeconds (delayToSpawn);

if( potentialBombes < spawnBombe1Potential ) newBombe(bombesType);

if( potentialBombes < spawnBombe2Potential ) newBombe(bombesType);

if( potentialBombes < spawnBombe3Potential ) newBombe(bombesType);

if( potentialPiege < spawnPiegePotential ) newBombe(10);

if( potentialVie < spawnViePotential ) newBombe(20);

spawningBombes = false;

}

PS : ca marche pas tellement la balise CODE, y’a une astuce pour pas être obligé de reformater tout le texte à la main ?

☀ Projet iPhone #1 - Day 6 + Bonus

Jeudi 12 février 2009

Entre la dernière vidéo et celle-ci :

  • Visualisation des clics sur les bombes (ca marche très bien même si les cercles sont peut être un peu gros au début)
  • Ecran de loading (temporaire)
  • Scores offline et online (faut encore que je fasse la récupération et l’affichage des meilleurs scores online)
  • Nouveaux écrans et textes pour le menu
  • Images pour les vies restantes

YouTube Preview Image

(PS : les vidéos marchent à nouveau ! Vilain Wordpress.)

———————————————————————————

Quelle bande d’idiots, c’est décidé en juin ce sera Cohn-Bendit.

———————————————————————————

iPhone Developer Quits Day Job After ‘iShoot’ Hits Number One

For an app to reach number one and remain there, some 10,000 plus downloads per day are required. That’s roughly $21,000 a day for this $2.99 app after Apple takes its 30-percent stake. Nicholas attributes iShoot’s meteoric rise to the release of his ‘Lite’ version, giving millions a free chance to experience the thrill of launching tank artillery. It’s important to note that a $2.99 price point was no barrier to the ultimate success of iShoot.

Bon OK j’avoue, ca devrait être “Day 6″ voir “Day 7″.

Entre la dernière vidéo et celle-ci :

  • On a changé de thème : exit “le film d’animation pour lequel on nous avait commandé ce jeu iPhone”, re-bonjour les manchots de Penguins Arena !
  • Mis à plat chaque écran du jeu
  • Acheté un “plugin” pour Unity iPhone qui permet de profiter de bon nombre d’ajouts (clavier, insertion de pubs AdMob possible, second startup screen…)
  • Nous sommes passé d’un style très 3D à un style très 2D. La 3D n’avait pas grande utilité et ca nous permet aussi d’avoir moins d’aliasing

YouTube Preview Image

Si la video ne se joue pas il faut aller sur YouTube

En bonus le trailer d’Inglorious Bastard (filmé devant une TV avec un téléphone ?) :

YouTube Preview Image

Hop, grillé le sesk.

Projet iPhone #1 - Day 4

Lundi 12 janvier 2009

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 Preview Image

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 :


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();
}

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

Jeudi 8 janvier 2009

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 Preview Image

Version “HD” dispo sur la page youtube.