Retrogaming et scène-indé à Concarneau !!!

Fan de retrogaming, amateur de jeu indé ?

Venez retrouver les habitués du magasin et tout la communauté Ouest Coast Gaming sur http://www.breizhgames.net/

Vous pourrez également y suivre le développement de mon premier jeu à vocation sérieuse (pas de simple démo technique cette fois). Un RPG old-school (type Dragon Quest III en gros) qui sera distribué par épisodes en version boite dédicacée en magasin et diffusé ici même.
Les dons seront les bienvenus si vous trouvez le résultat digne de votre soutien.

Affaire à suivre !!!

Ecoute du clavier en JAVA

J’ai longtemps été confronté à un soucis en programmation de jeux en JAVA.

En effet, lorsque vous écoutez le clavier avec une implémentation de l’interface java.awt.event.KeyListener, vous obtenez des déclenchement par de système des évènements keyPressed keyTyped et keyReleased dont les noms sont suffisamment explicites pour la plupart des usages (KeyTyped n’étant pas vraiment utile en fait, juste un petit raccourcis).

Le problème se pose lorsque vous maintenez une touche enfoncée, vous vous attendez à n’avoir que l’événement keyPressed de déclenché et pensez que le keyReleased sera déclenché au moment ou vous relâcherez la touche.
C’est sans compter sur la répétition automatique de frappe qui est gérée par votre système et non pas par la machine virtuelle JAVA.

Sous Windows et MAC (et surement d’autres) vous obtenez une répétition des évènements keyPressed et keyTyped tant que la touche est enfoncée puis un unique keyReleased au moment du relachement.

Sous Linux (au moins avec Xorg) l’évènement keyReleased est lui aussi répété tant que la touche est enfoncée. Ce qui pose un problème tout particulier dans le cas de développement de jeux-vidéos dans lesquels le maintient de touche est monnaie courante.

J’ai longtemps cherché à contourné ce problème en vain, mes recherche me menaient à chaque fois vers un « Impossible à contourné en JAVA, le problème est au niveau natif ».

Et pourtant, découverte aujourd’hui un peu par hasard, un petit détail tout bête.
Le moment ou les évènements keyReleased superflus sont déclenchés ont une particularité que JAVA peut exploiter : Ils sont simultanés par rapport aux keyPressed.

En comparant les valeurs retournées par e.getWhen() on peut facilement distinguer un relâchement simulé par la répétition de frappe du système d’un réél relâchement de la touche.

J’ai honte, j’ai publié cette information un peu trop vite, dans l’euphorie du moment. Il est effet plus compliqué que je ne le pensais car ils ne sont pas toujours déclenchés dans le même ordre. Ce qui pose un gros problème lorsque l’évènement que l’on veut vérifié est déclenché avant celui qui devrait servir de référence.

Pour contourner le problème, voici donc une class abstraite dont vous devrez implémenter les méthodes :

public abstract void keyPressedOrRepeated(java.awt.event.KeyEvent e);
public abstract void keyReleasedOrRepeated(java.awt.event.KeyEvent e);
public abstract void keyReleasedReally(java.awt.event.KeyEvent e);

AbstractKeyAdapterAntiRepeat.java.tar
(Mis à jour le 28 juillet 2012 pour supprimer le bug en cas de relâchement simultané de plusieurs touches)

Son seul défaut connu est qu’elle peut introduire une latence pouvant aller jusqu’à trois millisecondes entre le relâchement réel d’une touche et le déclenchement de l’évènement.

Avis aux testeurs, merci d’avance pour les retours sur différentes plateformes.

Ubuntu, lancement d’une nouvelle série de 4 releases avant la prochaine LTS

Ubuntu 12.04 « Precise Pangolin » est sur le point de sortir et nous connaissons déjà le nom de la prochaine édition qui entamera le nouveau cycle de développement vers la prochaine LTS (14.04)

Ubuntu 12.10 se nommera donc : « Quantal Quetzal »

Source : Mark Shuttleworth

Fran6 #4 : Résultats de la GameCompo :

Coder un jeu vidéo en moins de 12 heures à partir de rien ?

Défi relevé par moi même durant la Fran6 #4 à Gouesnac’h

Malgré des débuts difficiles et quelques heures passées à divers dépannages pendant l’Install Party, j’ai le plaisir de vous présenter ma création de ce jour : BitFlow, un shoot’em up pur scoring à défilement horizontal intégralement codé en JAVA.

Le jeu est téléchargeable ici : http://jumbef.net/dl/BitFlow/BitFlow.jar

vous aurez besoin d’une machine virtuelle JAVA pour le faire fonctionner. Celle ci est installée par défaut sur la plupart des ordinateurs, si ça n’est pas le cas, vous pouvez vous la procurer à cette adresse : http://www.java.com/ ou dans les dépôts de votre distribution si vous êtes sous Linux.

Raspberry Pi : An ARM GNU/Linux box

Alors oui il est peut-être un peu tard pour diffuser cette info vu depuis combien de temps le projet est en route, mais puisque les ventes vont bientôt commencer, parlons-en :

http://www.raspberrypi.org/

La fondation Raspberry Pi nous propose un ordinateur minimaliste pour 25$ avec des distributions Linux adaptée à ses caractéristiques.

Je vous laisse consulter leur site pour les détails.

En attendant en ce qui me concerne j’en commande un dés que possible.

GameCompo à la Fran6 #4 de Gouesnach ?

Bonjour tout le monde, en tant que membre de linux quimper, je propose ici à tous ceux qui le souhaite de ce pointer à la Fran6 pour un concours amicale de codage (language/outil au choix) pour réaliser un jeu dans un temps imparti (6 ou 12 heures à voir) lors d’une install/Lan partie.

Voici les infos actuelles sur l’évènement (la GameCompo n’est pas encore sûre)

http://www.linuxquimper.org/1244/fran6-4/
http://www.facebook.com/events/273298792735170/

PS : pour coder, venez avec votre machine et votre doc (risque d’internet très lent sur place) ^^

Vieux matos

Dans la série « Mince le vieux 486DX 33Mhz sur lequel je faisait tourner mon application Turbo-Pascal de gestion de temps de cuisson de mes nouilles m’a fait un Kernel Panic hier et la casserole à débordée. » voici un tout nouveau site de vente de matériel informatique sur lequel vous pourrez peut-être trouver des pièces détachées pour vos bébés de collection.

http://www.mwyann.biz/