Aug 05 2010

Grafitti Analysis : WIP

J’espère que vous connaissez déjà graffiti Analysis (un super projet d’Evan Roth) qui tente de mémoriser et d’archiver des données de “tag”. La base de données est ouverte et on peut donc charger les tags au format “GML” (graffiti mark up language). Je vais essayer de terminer une appli de lecture de tags et écriture de tag. J’ai déjà réussi à lire de tags, la j’en crée. Il ne me reste plus qu’a tout mettre ensemble pour faire une appli finie. Je balancerai bien sûr toutes les sources.


Jul 21 2010

Turboconnard AGD : Exemple 2 Connard jump

Tag: android,Eclipse,Jeux indépendants,jeux vidéoTurbo Connard @ 14:16

Je continue peinard les tests du framework. Hier j’ai essayé de faire “Connard Jump”. Un peu plus de 100 lignes de code pour un gameplay bien connu des détenteurs de webphones (comme ils disent) :

J’ai ajouté un schtroumpfeur de textures qui charge tout les ressources de R.drawable en texture opengl. Du coup on a plus à se soucier de charger les textures on peut directement faire :

Bitmap b = new Bitmap(R.drawable.machin);
 stage.addChild(b);

Voila donc la source de Connard Jump :

 

 

package com.hello;

import java.util.Vector;

import com.turboconnard.core.Agd;
import com.turboconnard.display.Bitmap;
import com.turboconnard.display.Sprite;
import com.turboconnard.events.AccelerometerEvent;
import com.turboconnard.events.Event;
import com.turboconnard.geom.Point3D;
import com.turboconnard.hardware.Accelerometer;

public class HelloWorld2D extends Agd {
        private static final float MINISPACE = 40;
        private static final double SPACE = 50;
        private Bitmap hero;
        private float vitY;
        private float vitX = 0;
        private float cibleX = 0;
        private Sprite decors;
        private Vector<Sprite> pfCheck;
        private float _y;
        private float _lastY;

        public HelloWorld2D() {
                super();
                Bitmap b = new Bitmap(R.drawable.background);
                b.x = stage.width / 2;
                b.y = stage.height / 2;
                vitY = -10;
               
                hero = new Bitmap(R.drawable.test);
                hero.x = stage.width / 2;
                hero.y = stage.height5;
                decors = new Sprite();
                decors.z = 0;//1;

                hero.z =  0;//-1;
                stage.addChild(b);
                stage.addChild(decors);
                stage.addChild(hero);
               
                Accelerometer.getInstance().addEventListener(AccelerometerEvent.ON_CHANGE, this);
                generateLevel();
        }
        /**
         * create FirstPlatforms
         */

        private void generateLevel() {
                _y = stage.height;
                while (_y > 0) {
                        _y = _y – (float) (Math.random() * SPACE) – MINISPACE;
                        addPlateform(_y);
                }
        }

        private void addPlateform(float pY) {
                _lastY = pY;
                Bitmap pf = new Bitmap(R.drawable.plate);
                pf.y = pY;
                pf.x = (float) Math.random() * stage.width;
                decors.addChild(pf);
        }

        public void update() {
                //gravity
                vitY += 0.3;
                //acceleration x
                cibleX += (vitX – cibleX) / 5;
                //if we go up
                if (vitY < 0) {
                        checkAddPF();          
                } else {
                        //if we go down
                        checkPF();
                        testColision();
                }
                //move x
                hero.x += cibleX;
                //bounce against walls
                if (hero.x > stage.width) {
                        hero.x = stage.width;
                        cibleX *= -1;
                }else if (hero.x < 0) {
                        hero.x = 0;
                        cibleX *= -1;
                }
                //loose !
                if (hero.y > stage.height) {
                        vitY *= -0.5;
                        /*
                        hero.y = stage.height;
                        */

                }
        }
       
        private void checkAddPF() {
                //if hero.y <250 move level
                if (hero.y < 250){
                        _y += vitY;
                        //addPlateform if offset is > MINISPACE
                        if( (_lastY – _y )> MINISPACE ) addPlateform(_y –  (float) (Math.random() * SPACE) );
                        decors.y -= vitY;              
                }else{
                        //if hero.y >250 move hero
                        hero.y += vitY;
                }
        }

        private void checkPF() {
                pfCheck = new Vector<Sprite>();
                for (Sprite b : decors.getDisplayList()) {
                        if ((b.y + decors.y) > hero.y)
                                pfCheck.add(b);
                        if (b.y + decors.y > stage.height)
                                decors.removeChild(b);
                }
                hero.y += vitY;
        }

        private void testColision() {
                for (Sprite b : pfCheck) {
                        if ((b.x50) < hero.x && (b.x + 50) > hero.x && (hero.y+hero.height/2) > (b.y + decors.y) ) {
                                hero.y = (b.y + decors.y -hero.height/2);
                                vitY = -10;
                                return;                        
                        }
                }
        }
        public void event(Event e) {
                if (e.name == AccelerometerEvent.ON_CHANGE) {
                        Point3D p = (Point3D) e.param;
                        vitX = p.x;
                }
        }
}
 

hop la :


Jul 04 2010

Flying Saucer Android release

Tag: android,Eclipse,Jeux indépendants,jeux vidéoTurbo Connard @ 19:39

Je viens de poster dans les downloads de agd une première version de “flying saucer” : le super mini jeu qui se termine en 20 secondes.

J’ai développé ce prototype pour être confronté à de vrais problèmes lors de sa réalisation et ça a porté ces fruits, j’ai dû ajouter plein de trucs relous. Je pense que ce jeu en restera la. Certes, douze ennemis à tuer c’est pas forcément le jeu le plus fun de la terre mais il permet d’appréhender des logiques simple de développement. C’est pourquoi bien sûr, je fournis les sources.

Voilà vous pouvez essayer de compiler ce jeu et de vous amuser pendant au moins une minute !

 

 

 

 


Jun 27 2010

Turboconnard Android Game Developpement

Tag: android,Eclipse,Jeux indépendantsTurbo Connard @ 16:52

Bon, c’est un peu pompeux comme nom mais c’est la seule chose qui me soit venue…

J’ai donc commencé un petit framework pour développer des jeux sur android. Flash ressemble énormément au java dans sa syntaxe mais les logiques de développement sont un peu différentes. J’avoue avoir des automatismes de flasheurs et n’arrive pas trop à concevoir des applications différemment qu’en pensant “Flash”. Le concept d’imbrication de clips, sprites est quand même pas mal. J’ai donc recréé ce système d’imbrication pour ne pas m’emmerder à recalculer à chaque fois les translations et rotations de canvas avant les “draw”. J’ai aussi complètement pompé le système événementiel qui me plait bien… Bref, pour l’instant ça me convient pas mal et je vais surement ajouter des choses à ce framework au fur et à mesure de mes avancées dans le monde magique d’android.

C’est par ici : http://code.google.com/p/turboconnard-agd/

mini proto :


Nov 12 2009

eyewriter : outil de création graphique pour personnes à mobilité réduite

Tag: Eclipse,openFrameworksTurbo Connard @ 14:24

Eyewriter est un projet open source -logiciel et matériel- d’interface pilotable à la rétine !
Quelques très bons collectifs ont mis ça au point pour permettre à un ancien grapheur totalement paralysé de continuer à dessiner.

Le projet me plait pas mal -j’ai déjà découpé une webcam hier- et dès que j’arrive à compiler une application Open Frameworks sous Karmic Koala / eclipse je tenterai un “HelloWorld”

les bons collectifs c’est :
Free Art and Technology (FAT)
OpenFrameworks
the Graffiti Research Lab
The Ebeling Group

merci monsieur le gros chat pour l’info.


Apr 12 2009

Un premier pas vers openFrameworks

Tag: Eclipse,openFrameworksTurbo Connard @ 23:59

Bon alors pourquoi passer à openFrameworks ? J’ai tenté de lancer un premier “vrai projet” en processing et dès le début j’ai souffert des performances de java.

Bref, j’ai tenté de descendre “plus bas” pour bénéficier des avantages du c /c++. Comme je partais de zéro en c/c++ j’ai suivi les tutoriels du site du zero ! Un très bon et gros tutorial qui raconte beaucoup de choses. Ca vaut vraiment la peine de la parcourir pour se rendre compte de l’organisation en c/c++ . Même s’il est possible de créer des classes, je déplore l’absence de packages…

Avec mes bases en c++ j’ai essayé de faire un petit jeu et la pof ! problème avec la bibliothèque SDL : impossible d’avoir 3 touches enfoncées en même temps. Donc je ne pouvais même pas tirer avec un vaisseau et me déplacer en diagonale ! La documentation ne donne rien la dessus, exit SDL…

J’ai donc refait une passe sur openFrameworks et le premier essai est concluant ! on peut bouger un vaisseau en diagonale et tirer… Et on peut faire plein d’autres trucs marrants biensûr encore faut il réussir à compiler. Et c’est la que ça se complique, il existe très peu de documentation pour compiler de l’openFrameworks sous eclipse. OpenFrameworks est pulbié en plusieurs versions (xcode pour mac, codeblocks pour linux et codebock et visual pour windows) mais pas de version eclipse : les boules.

J’ai donc entrepris de compiler les exemples openFrameworks sous eclipse et c’était pas une mince affaire mais ça m’a appris pas mal de chose sur l’organisation d’OF et j’ai finalement réussi.

J’ai même développé un petit fichier .bat qui transforme les exemples OF en projet eclipse. Il suffit ensuite d’importer “import an existing project into workspace” les projets après avoir lancé le .bat.

donc

  1. Télécharger / installer mingw (compilateur open source)
  2. Ajouter le chemin c:\mingw\bin dans la variable PATH de windows (clic droit poste de travail, propriétés, avancé, variables d’environnements)
  3. Télécharger OpenFrameworks version codeblocks.
  4. Déziper le tout quelque part (c:\of)
  5. Déziper le eclipsofy.zip à la racine du répertoire d’OpenFrameworks
  6. Lancer le eclipsofy.bat
  7. Créer un workspace à la racine du répertoire d’OpenFrameworks (c:\of\workspace par exemple)
  8. Lancer eclipse, choisir le workspace nouvellement créé
  9. Installer CDT sous eclipse (Help, software update, environement C++)
  10. Importer un projet et voila !

Jan 20 2009

Mouse gesture recognition

Tag: EclipseTurbo Connard @ 15:04

Je cherchais un moyen sympa d’écrire sans clavier sans utiliser de clavier visuel (clavier présent sur l’écran où on clique les lettres).

Si pointer des lettres avec la wiimote ou un stylet est plutôt pas mal (quoi que je deviens régulièrement fou quand il faut saisir les mots dans Entrainement cérébral sur DS),  je trouve que saisir un texte au joypad est un enfer. A chaque nouveau jeu il faut ré-apprendre la console de saisie : alors pour les caps ? c’est triangle ou L2 ? Bref, j’avais envie d’essayer un truc plus intuitif : écrire la lettre qu’on veut.  Je sais pas si en terme de rapidité c’est mieux, par contre ça a le mérite de moins frustrer parceque ya pas -trop- d’apprentissage.

Je me rappelai très bien du “MouseGesture” de Didier et j’avais déjà songé à l’adapter. Sauf que j’étais trop teubé et j’avais pas trop réussi.

C’est désormais chose faite. J’ai au passage rajouté la possibilité de faire des pauses entre les mouvements histoire d’écrire des lettres qui ressemblent à des vraies…


MouseGesture Recognition Processing from Turbo Connard on Vimeo.

ça marche plutôt pas mal, faut que j’essaie au joypad pour voir si c’est user friendly.


Jul 17 2008

Apprendre avec Michel

Tag: EclipseTurbo Connard @ 22:47

Ok, ça faisait un petit moment que j’avais rien posté… mais en même vu que personne ne lit mon blog (hein arthy ?). Bref, j’ai quand même joué un peu avec ce “sketch”.

J’ai appris plein de choses rigolotes… comme “Comment faire des rendus”, “comment jouer avec Pgraphics pour créer des bitmaps en mémoire”, “comment jouer avec les caméras” ou encore “comment jouer avec des textures” ou encpore plus simplement comment manipuler des Strings.

J’étais tombé sur www.whiteglovetracking.com et ça m’avait bien plu.
Bref, voici la vidéo :


White glove tracking for testing from Turbo Connard on Vimeo.

et les sources : http://www.turboconnard.com/sources/wgt3d/WGT3D_project.zip


Jun 16 2008

Tranche de rigolade

Tag: Eclipse,MatosTurbo Connard @ 13:24

J’avais vu une vidéo marrante sur vimeo.com et comme tester la vidéo temps réel était dans mes projets je me suis lancé.

Rien de très compliqué :
Je stocke autant d’images que de “tranche de vidéo” et je recompose avec les tranches décalées dans le temps. Tranche du bas t0, la tranche d’au dessus t-1, etc…


Testing GSCapture for Processing on Ubuntu from Turbo Connard on Vimeo.


Jun 12 2008

“Nice Flocking Effect”

Tag: Eclipse,le site,WiimoteTurbo Connard @ 14:39

Bon alors en continuant mes “expérimentations” j’ai remarqué qu’il est bien plus hype de poster ses vidéos sur Vimeo… C’est bien plus classe.
Bref pour faire comme tout le monde j’ai créé un compte

et j’ai posté une première vidéo :


Testing wiimote on processing from Turbo Connard on Vimeo.


Next Page »