LimbStudio

Blog de LimbStudio sur le developpement de jeux video en 2d.

Translate this page!

mardi 27 janvier 2015

LimbEscape Alpha 0.9

Dessine-moi un mouton...

Bonjour à tous!

La version 0.9 de LimbEscape est en ligne sur Github depuis ce matin. J'ai surtout réalisé de nouveaux sprites pour le jeu et corrigé quelques bug. Il y a quand même quelques ajouts.

Sans plus attendre voici les nouveaux sprites:



Je ne pose pas le joueur car je ne l'ai pas encore réalisé (j'ai retiré le gabarit pour poser un charset trouvé sur le net pour le personnage).
voila ce que ça donne :

Le reste...

D'autres nouveautés sont aussi présentes:

Ajout Crédit:

Il y a désormais un nouveau bouton sur la première page du menu qui permet d'ouvrir les crédits du jeu, où sont présentes des informations comme la version du logiciel ou encore la licences.

Ajout de bords de cartes:

Un ajout plutôt esthétique ici, des bords ont été ajoutés à la carte. cela évite la sensation de carte "coupée".

Ajout des son et musique générals:

Les sons lorsque l'on clique sur un bouton sont désormais ajoutés. Noté aussi qu'une musique d'ambiance est présente. Le reste des sonorités viendront dans une prochaine mise à jour.

Amélioration chronomètre:

Le chronomètre indique désormais les minutes et secondes.

Réecriture fonction animation personnage:

La fonction qui permet d'animer le personnage à été retravaillé afin de rendre le code plus lisible. Elle est également beaucoup plus courte et permet d'insérer des animations différentes telle que lorsque le personnage est immobile (idle). 


Affichage joueur corrigé:

Le personnage était affiché au dessus de tout , ce qui pouvais rendre la scène incompréhensible.
C'est chose réglé. le personnage est affiché au bon moment sur la carte. 

Il y a également eu la résolutions de quelques bugs mineurs ainsi que l'ajout d'un MakeFile pour ceux qui souhaiterai compiler sur leur plateforme.

Il est à noté aussi que le projet est désormais sous licence CeCILL 2.1 .

Les prochains ajouts:

Je prévois d'ajouter d'autres fonctionnalités comme la messagerie en jeu ( qui est déjà annoncée depuis plusieurs mise à jour!)  ainsi que des élements de gameplay comme des sens uniques. Je suis à l'étude sur une amélioration de la carte qui permettrai de gérer la hauteur sur la carte. ce qui pourrai grandement ajouté des possibilités en jeu. 

Voila comme toujours, n'hésitez pas à suivre le projet sur la page facebook ou même ici via votre compte google plus!
 Le projet est disponible sur Github. (liens dans la colonne de gauche! ) 

A bientôt! 

 

vendredi 23 janvier 2015

Essais 3D Blender

Une Voiture légendaire...

Bonjour à tous, aujourd'hui un poste un peu particulier. Je me suis essayé à blender il y a quelques temps et je voulais vous faire partager mes travaux. J'ai en effet eu l'envie à une certaine époque de me mettre à la modélisation 3D.

Voici une vidéo de la fameuse 205T16 , symbole du groupe B de rallye à l'époque.


Voici quelques photos des travaux :

















Voila qu'en pensez vous?


mardi 20 janvier 2015

Exploding Kittens!


KickStarter permet de réalisé des projets financés par la communauté. Sur ce service il y a du bien et du moins bien.
Ici , à la surprise générale , un projet à atteins son objectif en moins de 20 minutes. Actuellement il est financé à plus de 8000% et il reste encore 30jours.

En effet , demandant 10000$ pour mener à bien son projet, le créateur de ce jeu était loin de s'imaginer qu'en moins de 24h , il serait deja financé à hauteur de presque un  million de dollars.

voici le liens pour suivre...

https://www.kickstarter.com/projects/elanlee/exploding-kittens?ref=category


LimbEscape Alpha 0.8

Au revoir petite zone de saisie...

Bonjour, aujourd'hui je vous annonce que j'ai retiré les zones de saisies (pour le chargement des cartes notamment) au profit de menu plus complet. Sans plus attendre une photo de la bête:
Changement de la disposition...
Nouveau système de menu remplaçant les zones de saisie

Au démarrage,le programme scan le dossier des Cartes afin de récupérer une liste de tous les fichiers .map qu'il trouve. Un fois cela fais , lors de l'entrée dans la fonction qui fabrique ce menu, nous parcourons la liste ci dessus est créons les vignettes. A l'appuie sur l'une d'elle , la fonction retourne la chaine de caractère correspondante au nom de la carte voulue.

Ce menu fonctionne aussi bien pour les cartes, que pour les fichiers de suites de cartes. Je suis assez content du résultat, le programme commence à être vraiment opérationnel, sans compter le nombre de bugs qui diminue malgré tous les ajouts réalisés.

Les suites de niveaux...

Marre de jouer une carte à la fois? ce temps est révolu car j'ai implémenté le système de suite de niveaux. De plus , il sera facile de créer les suites vous même. Pour cela allez dans Cartes/Suites/ , créez un fichier .txt et changez son extension en .ste . Ouvrez le avec un bloc note, et écrivez toutes les cartes (une à chaque ligne) dans l'ordre souhaité. Vous pouvez vous inspirer de "Default.ste" pour voir comment le système fonctionne.

 Une fois cela fait vous pourrez ouvrir le jeu , il détectera automatiquement votre suite. Vous n'aurez plus qu'a faire Jouer -> Suite -> Choisir -> et cliquer sur votre suite.

Menu de sélection des suites

Menu "Choisir" des suites utilisant le nouveau système de menu

 

Autres ajouts en vrac...

En plus de ces nouvelles fonctionnalités, permettez moi de vous présenter les autres qui , bien que plus petites, améliorent  grandement le confort de jeu:

*corrections - ajout sécurité RessourceHolder
Un ajout qui permet de charger le pack de texture par défaut si jamais le pack demandé est introuvable.

*Ajout de fonction restart en jeu (recharger la carte pour retenter le puzzle):
Le bouton était la mais la fonction non implémenté, c'est chose faites maintenant.
 
*Ajout d'un chronomètre:
Le temps que vous mettez à résoudre un puzzle vous est indiqué en fin de partie.
Ecran de fin de niveau affichant le temps écoulé
 L'appuie sur suivant vous ramènera au menu si vous jouiez une carte seule ou si vous arriver en fin de suite. Si vous jouiez une suite, il vous mettra directement la prochaine carte de celle ci.
 
*Ajout des Packs ressources fonctionnels.
 Les pack de ressources sont fonctionnels sur le jeu, il ne reste plus qu'a pouvoir les choisirs dans l'éditeur.

*Ajout d'un dossier Full dans le github , dedans un zip tout prêt pour pouvoir commencer à jouer. Il sera mis à jour à chaque nouvelle update de version. Noté qu'il est en release en non en debug.

 

Prochaines mise à jour...

 Voici ce que je prépare pour la 0.9:
*Ajout d'une mini messagerie ( temps , objectif restants... ).
*Réecriture de l'animation personnage.
*Maj Graphique!

*Maj LimbEditor...
*d'autres corrections... 

Voila c'est tout pour aujourd'hui. Comme d'habitude n'hésitez pas à aller un tour sur le github ( lien LimbStudio dans la barre à gauche! )  ou sur la page Facebook

Bonne soirée!


vendredi 16 janvier 2015

LimbEscape Alpha 0.7

Mise à jour...


Bien le bonsoir!

J'ai bien avancé sur LimbEscape, je vous présentes ça de suite:

Extrait du log: 

Ajout d'une fonction victoire qui fait revenir au menu principal
Ajout d'un bouton retour en jeu
Réecriture du système de collision pour corriger des bugs
Correction de bug d'affichage (caisse affiché sur la bonne couche) 

Le plus long à été de réecriture les collisions, car c'était le bazar! J'ai donc synthétisé toutes les possibilité de déplacement possible.

Plutôt que d'écrire le code pour  chaque direction, j'utilise un code générique utilisable dans toutes les directions ce qui allégé par 4 le texte.

Je procéde comme suit:

En fonction de la direction voulue, j'initialise un vecteur de déplacement (par exemple pour allée en haut à droite = -1 en Y  , je l'initialise à (0,-1).

Ensuite, grâce à ce vecteur je vais pouvoir vérifié mes collisions par rapport à la position du joueur:

si je suis en (5,5) , je verifie que en (5,5) + vecteurDeplacement je n'ai pas d'obstacle.
Si je n'ai pas d'obstacle : 
je me déplace.
 
Si j'ai un obstacle non franchissable:
 et que je sais qu'il est poussable => je vérifie que dans la position (5,5) + vecteurDeplacement*2 je n'ai pas d'obstacle. Si il n'y en à pas , je pousse l'élement et je deplace le joueur.

Dans tout les cas un element ne peut pas être franchissable et poussable à la fois.

 Voila pour la nouvelle mécanique qui est beaucoup plus simple et rapide que l'ancienne.

 Un affichage presque parfait...

 
 Autre nouveauté, l'affichage dans le bon ordre de tous les élements (sauf le joueur mais j'y travail). En effet, dans la 0.6, le problème se posait lorsque l'on déplaçai une caisse, elle finissait soit par être dessiner au dessus d'un mur, ou bien sous un objectif , j'ai donc réglé le problème.

D'une part, les elements sont stockés dans un seul est même vecteur que l'on nommera elementHolder lors du chargement. (mur, caisse, objectifs et depart confondu)
je scinde ensuite ce tableau en 2 parties: d'un coté, les murs et les caisses dans tableauElem (vector à deux dimension), et de l'autre les objectifs dans repereObjectif. (le depart est invisible pour le joueur donc pas besoin de l'utiliser ici.)

Pour tableauElem (un tableau de pointeur), je parcours elementHolder à la recherche des murs et des caisse, dès que j'en trouve un ou une, j'enregistre son adresse dans l'entrée correspondant à sa position sur la carte dans tableauElem. En gros : Si je trouve un caisse qui à pour position (5,4) sur la carte, j'enregistre son adresse  en tableauElem[4][5] dans le tableau.
 le repereObjectif est un vector de nombre entier . Je parcours elementHolder et dès que je trouve un objectif, j'enregistre sa position au sein du tableau dans une nouvelle entrée de repereObjectif.

Une fois c'est deux element correctement initialisés, je dessine en premier le support de la carte, puis tout les objectifs (car collés au sol) et enfin je lis le tableau d’élément dans l'ordre par rangé de Y (d'où l'inversion [Y][X] du tableau . Lorsqu'une caisse est poussée, je la change de position dans le tableau . Pour reprendre l'exemple de toute à l'heure, ou l'on se deplacait de (0,1) , cela veut tout simplement dire que je remonte d'une rangé en Y, si ma caisse était en (5,4)  sur la carte, elle passerai de [4][5] à [3][5] dans tableauElem.Ainsi elle se retouvera dessiné avant les element present sur la rangé Y=4.Donc l'affichage se fera toujours correctement dans cette ordre la.


Après ce beau pavé, voici quelques images des avancées:








Pour expliqué un peu: La fonction de chargement aléatoire à était amélioré. La console montre le nombre d'objectifs restants avant d'avoir terminé.On peut également, si le puzzle actuelle ne plait pas, faire retour en jeu afin de soit chargé une carte en particulier, soit de relancer une carte aléatoire.

Le bouton Recharger n'est pas encore fonctionnelle. Il 'y a pas encore de sécurité concernant le nombre minimum de caisse à avoir. C'est à dire que si vous mettez moins de caisse que d'objectif , vous ne pourrez pas finir le puzzle (logique) , mais l'éditeur n'interdit pas de créer se genre de carte.

Un victoire se traduit par le retour sur l'écran de choix.

Quelques bug connus:
-Lorsque la carte ne possede pas de depart , le joueur est positionné en 0,0  sans tenir compte des élements, de plus il y a un bug d'affichage. Sera régler prochainement grâce à l'éditeur qui placera automatiquement un point de départ si il n'y en a pas.

-SegFault sur la class joueur, lorsque l'on ferme le jeu durant la phase d'intro, (dû aux sprite non chargé de la SFML) sera corrigé.

Fonctionnalités à venir...

Pour alpha 0.8: 

*corrections: ajout sécurité RessourceHolder

*Ajout de fonction restart en jeu (recharger la carte pour retenter le puzzle)
*Ajout d'un profil de joueur.
*Ajout d'un système de liaison de niveau
*Ajout d'un chronométré.
*Ajout des Packs ressources fonctionnels.

 ces ajouts ne seront pas forcement dans la 0.8.

Comme toujours, les sources à jours sont sur Github dans Limbstudio/Limbescape/Source
sinon l'executable est dans le dossier LimbStudio/LimbEscape/bin/ n'oubliez pas de telecharger le dossier Data ainsi que les dll ! (jetez un oeil au lisez-moi.txt!) 

C'est tout pour aujourd'hui!

dimanche 11 janvier 2015

LimbEditor- ça édite!

Bonjour à tous, 
Une nouvelle mise à jour concernant L'éditeur LimbEditor est disponible sur les dépôts github.

Mise à jour 


LimbEditor voit donc (enfin!) ses fonctions d'éditions implémentées. La sauvegarde et le chargement de carte son opérationnels. Il est impossible d'ajouter 2 départs en mêmes temps. 

Etant donnés les nombreux changement opérés au sein même de la gestion de la carte, je dois recoder une partie de LimbEscape. J'ai en effet réaliser également des modification importante au sein de ma librairie LimbGUI ( qui s'occupe de la gestion des boutons et des zones de saisie) qui oblige à adapter également le code.

voici quelques screens:













  

Comment on s'en sert?


 Très simple d'utilisation, voici les differentes commandes:
les croix directionnelles pour bouger la camera (peut être utiles sur les plus grandes cartes).
La souris exclusivement pour positionner et sélectionner les éléments sur la carte.

Ca bug chef...


Il y a quelques bugs qui seront corrigés prochainement:

*L'affichage qui ne se fait pas dans "l'ordre" en fonction de comment on ajoute les elements sur la carte. Je réfléchis à une solutions performante afin de trier efficacement le tableau qui contient ces elements en fonction de leurs position.

*Ne rien entrer dans le champs de nom carte et cliqué sur charger peux provoquer un plantage. En cours de résolution également.

*Créer une cartes sans entrer de dimension peux également provoquer un plantage. Il manque en effet une condition dans le code actuel qui sera résolue prochainement.


Prochaines features:

*Avertissement sur le nombre de caisse et d'objectif.Il faudra en effet au moins autant d'objectif que de caisse pour pouvoir jouer la carte.

*Déjà implémenté dans le code, ajout d'un zone de saisie pour le pack de ressource utilisé par la carte.

*Ajout d'un système de liaison de niveau afin de créer une suite de niveau.

*Ajout de la faculté de pouvoir ressortir de l'éditeur pour charger une autre carte. 

 *Autres fonctionnalités...

C'est tout pour aujourd'hui, à très vite!
 

vendredi 9 janvier 2015

Mystogen

Bonjour à tous, aujourd'hui un billet sur le tout premier projet sérieux que j'ai pu monter...
A la base tout seul, j'ai ensuite recuter une personne avec qui le développement à durée 1 an et demi environ. 

Mystogen, créateur d'histoire...

 Dès le départ, j'avais une idée bien défini concernant l'orientation de Mystogen. Je voulais crée un mini RPG afin de comprendre et de connaitre les subtilités et contraintes liées à un tel jeu.

J'ai donc commencé seul , à réalisé les gestions de carte et personnage. J'ai alors recruter un programmeur C (que j'ai converti au C++ :diable:). Tout s'est accéléré à ce moment là. Le jeu à pris de l'ampleur et s'est vendu à des milliers d'exemplaires a changé d'orientation. Nous avions orienté le logiciel de facon à ce que n'importe qui puisse créer une histoire facilement et la partager.
Ancienne version.

Ajout des pnjs (grand moment à l'époque!)


Mon collégue s'occuper de la version Windows, pendant que je m’affairai  à debugger et fournir la version Linux.
Premier Menu


L'ajout des boutons nous ont permis d'étoffer le programme, ce fût incroyable comment tout de suite le programme faisait plus "sérieux". Nous avions trouvé un rythme assez sympa et le programme grandissait bien. Après l'ajout des boutons, viens l'ajout de l'inventaire:
Les barres d'actions, les objets, les caractéristiques... Beaucoup de nouveauté là encore. l'inventaire est une des fonctionnalités les plus complètes (aujourd'hui encore) du jeu. Il gère les quantités, les équipement portés ainsi que les objets consommable.

D'autre modification comme améliorations des nuages, optimisations de l'affichage de la carte font que le programme, bien qu'il prenne de plus en plus de ressource, tiens malgré tout des fps très haut.

Une premiere vidéo à vus le jour il y a quelques temps...




Elle montre les premières mécaniques du jeu.

La nouvelle SFML est sortie et nous avions décidé de ne pas porter le projet. le projet à fini par ne plus être mis à jour...

Jusqu’à aujourd'hui! , après de (nombreuses!) heure de modifications de code, le projet tourne sur la dernière monture SFML.Il reste encore quelques bug à corriger et le développement pourra reprendre de plus belle!.

voici donc une vidéo qui ressemble à la premieres avec quelques ajouts...


Donc j'ai repris ce projet en parallèle de LimbEscape qui est toujours en développement.J'espère que ce billet vous aura plus. a bientôt!