mardi 28 décembre 2010

Du nouveau.

Bonjour tout le monde !
Après cette pause de Noël, je repars pour de nouvelles aventures. Tout d'abord, commençons par quelque chose qui devient habituel, voici la listes des fonctionnalités ajoutées aujourd'hui :
- Le système de visée a été totalement revu (mon frère ayant testé le jeu, il ne trouvait pas ça très naturel). C'est maintenant beaucoup plus intuitif.
- La première arme a été faite (tous les modèles 3D sont susceptibles d'être modifiés/améliorés d'ici la version finale) et intégrée au jeu.
- Le système d'arme est bientôt terminé. Je continue de le peaufiner. Bientôt la possibilité de ramasser des armes sera ajoutée !

Demain, je vais essayer de m'attaquer aux particules (de les approcher du moins), et de terminer le système d'arme. Avec ça je vais commencer la GUI, pour indiquer les munitions restantes, l'arme possédée et la vie de Lil'Gus.

De plus, je voulais vous parler du système de chargement de scène ! En effet, grâce au langage XML, je peux charger le level, avec les différents ennemies etc.. Pour me rattraper de la vidéo que je promet depuis longtemps, j'ai décidé de vous montrer comment je procédais.

Voici en exemple la map de test que j'utilise :

<?xml version="1.0" ?>
<level>
    <scene ambientLight = "0.4"/>
    <player file = "gus2.mesh"
        posX = "0" posY = "5" posZ = "-20"
        scaleX = "1" scaleY = "1" scaleZ = "1"
        life = "100"/>
    <geometry name = "map1" file = "MapTest2"
                  posX = "0" posY = "0" posZ = "0"
              dat1X = "0" dat1Y = "0" dat1Z = "0"
          dat2X = "10" dat2Y = "10" dat2Z = "10"
          dataBool = "0">
    </geometry>
    <light type = "2"
        posX = "-0.5" posY = "-1" posZ = "-0.5"
        dataX = "0.6" dataY = "0.6" dataZ = "0.6"/>
    <spawn ID = "0" posX = "0" posY = "5" posZ = "0" />
    <enemyID ID = "0" file = "enemy1.mesh" speed = "75"
        scaleX = "1" scaleY = "1" scaleZ = "1"
        life = "20"/>
    <enemyID ID = "1" file = "enemy1.mesh" speed = "25"
        scaleX = "2" scaleY = "3" scaleZ = "2"
        life = "50"/>
    <enemy ID = "0" spawn = "0" wave = "1" spawnTime = "0"/>
    <enemy ID = "0" spawn = "0" wave = "2" spawnTime = "0"/>
    <enemy ID = "0" spawn = "0" wave = "2" spawnTime = "1"/>
    <enemy ID = "1" spawn = "0" wave = "3" spawnTime = "0"/>
</level>


Pour ceux qui ne sont pas habitué au XML, ça peut sembler compliqué mais en réalité c'est tout simple. Je vais vous l'expliquer ligne par ligne :
Tout d'abord, <level> signifie que nous entrons dans la description de la map, qui se termine à </level>.

<player file = "gus2.mesh"
        posX = "0" posY = "5" posZ = "-20"
        scaleX = "1" scaleY = "1" scaleZ = "1"
        life = "100"/>

Cette balise permet de créer notre joueur. "file" représente le fichier qui permettra de représenter Lil'Gus, "posX/Y/Z" sa position dans le monde 3D, "scaleX/Y/Z" permet de grandir ou de réduire son modèel 3D. Quant à "life", c'est tout simplement la vie initiale de notre héros.



<geometry name = "map1" file = "MapTest2"
          posX = "0" posY = "0" posZ = "0"
          dat1X = "0" dat1Y = "0" dat1Z = "0"
          dat2X = "10" dat2Y = "10" dat2Z = "10"
          dataBool = "0">

Grâce à ce code, je crée une "Geometry", qui est en fait une entité physique immobile, comme une maison, ou tout simplement le sol de la map. Les données Pos permettent de la placer, Dat1 de lui faire subir des rotations, dat2 d'en changer la taille, et dataBool est une variable nécessaire à la gestion des ombres.

<light type = "2"
        posX = "-0.5" posY = "-1" posZ = "-0.5"
        dataX = "0.6" dataY = "0.6" dataZ = "0.6"/>

Comme vous pouvez vous en douter, ceci permet de créer une lumière, de la placer et de lui assigner une couleur. La variable "type" indique de quel type de lumière il s'agit (un spot, une lumière directionnelle ou une lumière ponctuelle). 


<spawn ID = "0" posX = "0" posY = "5" posZ = "0" />
Les spawn sont les points d'apparition des monstres. Ainsi, je peux en placer autant que je veux sur ma map. Sa variable "ID" permet de l'enregistrer. Lors de la création d'un ennemi je n'aurai qu'à indiquer l'ID de son point d'apparition. 
 
<enemyID ID = "0" file = "enemy1.mesh" speed = "75"
        scaleX = "1" scaleY = "1" scaleZ = "1"
        life = "20"/>

Les enemyID et weaponID (qui viendra prochainement) sont en fait des types propres à la map de monstres ou d'armes. Un ennemi ne sera qu'une représentation d'un des enemyID, qui ne sont en réalités que des modèles que l'on reproduira. Ici, j'indique quel sera le modèle 3D de l'ennemi, sa vitesse de déplacement, sa vie initiale et sa taille. 

<enemy ID = "0" spawn = "0" wave = "1" spawnTime = "0"/>
Voici donc la façon dont je crée un ennemi. J'indique d'abord l'enemyID que je vais utiliser (la variable ID), l'ID de son point de spawn. Viennent ensuite les variables "wave" et "spawnTime". La première indique la vague d'ennemis à laquelle appartient celui-ci. Une nouvelle vague apparaît quand la précédente est achevée. Le spawnTime indique le temps en seconde avant que l'ennemi apparaisse lors de sa vague. 


Voilà ! J'espère que c'est assez clair. Vous savez maintenant comment je procède pour créer mes maps ! Je peux vraiment mettre de tout et n'importe quoi (même si il manque encore certains éléments, et c'est la façon que j'utiliserai pour créer les maps finales. 

J'espère que vous m'excuserez pour la vidéo, elle arrivera bientôt. Je préfère vous donner quelque chose de potable, plutôt qu'un truc bâclé. 

Ah ciao bonsoir !

mercredi 22 décembre 2010

Joyeuses fêtes !

Je pars demain très tôt jusqu'à dimanche soir très tard à Paris, je ne serais donc pas en train de m'occuper de mon projet ! Les animations de morts sont terminées, et le premiers ennemis aussi. Je pars donc le coeur léger !

En espérant que vous ne m'oublierez pas d'ici là, je vous souhaite de joyeuses fêtes de Noël !

mardi 21 décembre 2010

Quelques avancées

Me revoilà ! Je vais vous tenir informés des avancées de la journée.
J'ai fait plusieurs choses que je n'avais pas fait auparavant avec Ogre3D, je rencontre donc des erreurs que j'aurais pu facilement éviter et qui me ralentissent un peu.. Mais ça fait partie du jeu :)

Voici la liste non exhaustive de ce qui a été réalisé aujourd'hui :
- En plus de pouvoir porter l'arme au poing, Lil'Gus peut maintenant tirer à partir de celle-ci !
- L'animation de tir est mise en place, et ça m'a d'ailleurs permis de corriger de grosses lacunes dans les animations
- Le nouveau système d'arme a été codé (il manque encore un ou deux éléments, mais qui ne sont pas indispensables pour le moment). Les armes ont maintenant leur propre skin, une cadence de tir, et leur propres munitions. C'est-à-dire que l'on peut créer deux armes avec la même apparence, mais avec une puissance de feu différente, et dont les balles ne vont pas à la même vitesse. Ca me sera utile pour gérer les Bonus, je n'en dis pas plus mouahaha !
- Avant les ennemis mouraient d'une seule et unique balle. Ceci a été revu ! En effet, tous les combattants ont maintenant leur propre vie, leur propre vitesse de marche, leurs propres armes...

Coming soon :
- Finition des textures de Lil'Gus, et création du premier ennemi
- Création de l'animation de mort
- Implantation de cette animation dans le jeu, avec une disparition progressive d'un combattant après sa mort
- Nouveau skin pour les balles (vous ne le voyez pas, mais il est horrible), avec la mise en place du système de particules

Et d'autres choses que je garde pour moi...

Voilà ce qu'a été ma journée, qui n'est d'ailleurs pas finie ! Avec un peu de chance j'aurai peut-être fait l'anim' de mort et les textures :)

dimanche 19 décembre 2010

Faire le point.

Je vous l'avez dit hier sur le SdZ, je vais faire un petit point d'où j'en suis et de ce qu'il me reste à faire. Vous savez probablement déjà que je suis tout seul sur ce projet, j'ai donc énormément de choses à faire, je vous écris entre deux compil' et pour faire une petite pause (j'en suis sûr, ma tête commençait à fumer !).
Sachez tout d'abord que la vidéo prendra un peu plus de temps... J'ai sous-estimé les animations sous Ogre3D, et je me suis battu une bonne partie de la journée. Même si j'ai finalement réussi à en venir à bout je n'ai pas fini ce que je comptais faire aujourd'hui.
Je vais commencer par ce qui a déjà été réalisé en général, en voici une liste :
- Définition du Gameplay, bien qu'il manque quelques parties obscures, que je ne peux encore choisir suivant mes capacités de programmation.
- Définition de l'univers
- Choix d'une charte graphique pour les graphismes 2D et 3D.
- Mise en place de la structure du code (graphique et physique)
- Caméra placée, suivant le personnage
- Gestion des NormalMap et du Glow
- Apparition des ennemies
- Déplacements du personnage et des ennemies (une IA très très simplifiée)
- Chargement de tout ça par fichier XML, ainsi que les options générales du jeu
- Possibilité de tirer, les balles ont une puissance et une vitesse
- Gestion de la mort des ennemies
- Les ennemies apparaissent chacun à un point de réapparition. Ils viennent par vagues, un ennemies peut avoir un délai d'apparition dans sa vague. Une nouvelle vague apparait quand les ennemies de la précédente sont tués
- Réalisation 3D du personnage (des bugs d'animation persistent...) et d'une map de test

C'est à peu près tout, j'espère ne rien oublier.
En ce moment je me débats pour implanter la gestion d'arme, et la réalisation du premier pistolet. Voici la liste des choses à faire dans un avenir proche :
- Création du premier ennemie (assez rapide, je reprends l'armature de Lil'Gus et ne fait que le modifier un peu pour qu'il ressemble à un Lonkonnien)
- Gestion des armes et des munitions
- Gestion des Power-Box et du changement d'arme
- Le menu est encore à faire
- Terminer le dossier en y ajoutant encore un ou deux articles et des graphismes présentant l'univers

Toutes ces choses seront terminées avant fin janvier je l'espère (le dossier passant avant tout bien sûr). A long terme j'ai encore beaucoup beaucoup d'autres choses à faire, mais j'ai encore bien le temps pour y penser.

Je voulais que vous voyiez un peu mieux ce qui a été réalisé et ce qu'il reste à faire, j'espère que vous êtes à présent situés dans la liste des tâches qu'il me reste à accomplir.

J'y retourne !

samedi 18 décembre 2010

Enfin...

La réalisation de Lil'Gus en 3D est quasiment terminée. Il ne reste qu'à faire les textures et l'export du modèle.
Le problème auquel j'étais confronté et qui m'a beaucoup ralenti était le suivant :
- Dans le jeu, on peut courir et tirer dans n'importe quelle direction. On peut alors tirer dans la direction inverse de la direction de course. J'obtiens donc parfois un personnage qui tire par exemple vers la droite de l'écran, et qui est orienté dans cette direction, alors qu'il court vers le bas (j'espère être assez clair).
Il m'a donc fallu faire une animation de course de côté en plus, ce qui est maintenant fait.

Aujourd'hui je finis le personnage et l'import dans le jeu.
Demain sera consacré à la réalisation de la première arme et de quelques modifications des tirs dans le moteur de jeu. J'espère donc pouvoir faire une vidéo demain soir.


Encore désolé pour le manque de nouvelles et le petit retard de cette semaine !

lundi 13 décembre 2010

Quelques bonnes nouvelles !

Après m'être acharné sur Blender, j'ai enfin trouvé d'où venait les problèmes que je rencontrais... Même si je dois refaire les animations (qui seront mieux réaliser de toute façon), je pense pouvoir assurer une petite vidéo ce week-end, en espérant avoir fini le premier pistolet.
Même si c'est pas grand chose, je peux enfin commencer les modèles sereinement, et avancer plus vite !


C'est tout, j'y retourne !

dimanche 12 décembre 2010

Lil'Gus, "un petit être incompris"

Lil'Gus, notre petit héros, est comme je vous l'ai dit le fils du roi et seul prétendant à la couronne, ce qui ne rend pas très joyeux notre roi. En effet, sa couleur de peau et sa petite taille font de lui un être méprisé dans tout Lonkon-city, les railleries se répercutant ensuite sur la famille royale. Heureusement que le roi est l'organisateur du Lonkonfaïte, qui lui permet de garder sa notoriété. Lil'Gus a cependant une rare intelligence dans ce monde de brutes, ce qui lui permettra peut-être de prouver à la population sa véritable valeur, aidé par sa détermination de prouver que la taille ne signifie rien.


Pendant sa tendre enfance, les jeunes Lonkonniens ne l'ont jamais accepté. Du poutching-ball, au larbin, en passant par la victime de la classe, Lil'Gus n'a jamais vécu paisiblement.
L'école où il a été envoyé, HEC, lui a permis de développer son intelligence, et en plus d'apprendre le maniement des armes tout en côtoyant des être eux-aussi rejetés de la société. Il n'était donc plus cet être repoussant et méprisé, mais un simple camarade de classe. Mais sa force naturelle proche de la mouche ne font pas de lui un très bon combattant. Il pourra cependant ce défendre avec son pistolet laser fétiche, que tout esclave combattant est autorisé à utiliser, sous réserve que le roi n'est pas à lui fournir (je vous ai déjà dit que le budget royal allait très mal ?).

Vous serez donc maître de la destiné de Lil'Gus, petit être incompris, pour le mener peut-être à la fin de la première épreuve du Lonkonfaïte...

J'espère que vous voyiez maintenant un peu mieux qui est Lil'Gus, le personnage principal de ce jeu. Sa représentation 3D a déjà été commencée, mais l'animation rencontre quelques problèmes... le script d'exportation (comme dit dans le billet précédent) est défaillant sur les animations, il va donc falloir que je trouve un moyen de résoudre ce soucis. En attendant, voici quelques images !


Quelques petits problèmes...

Bon, comme le titre l'annonce, j'ai rencontré quelques petits problèmes, notamment avec blender. Le passage à la version 2.55 n'a pas été facile, donc je ne sais pas si je pourrais présenter le personnage ce soir... je ne promets rien. Il a fallu retrouver un script d'exportation en .mesh (le format utilisé par Ogre3D) fonctionnel avec cette version. Maintenant que c'est fait il faut que je m'adapte à un nouveau système d'animations, tout ça avec le boulot pour demain.


J'espère quand même pouvoir vous montrer quelque chose ce soir !

samedi 11 décembre 2010

Le Lonkonfaïte, quelques précisions

Le Lonkonfaïte est le plus gros tournoi annuel organisé par le roi lui-même. Comme vous le savez déjà, participent à ce tournoi des volontaires inscrits, des mercenaires mais aussi des esclaves et prisonniers voulant racheter leur liberté. Le gagnant de ce tournoi se verra attribuer une somme d'argent à en rendre doux le Dieu Lonkon, et pourra s'il le désire faire partie de la prestigieuse garde royale. Il est composé de plusieurs épreuves, réparties dans plusieurs lieux différents. Ces lieux sont choisis par sa royauté, et sont fermés au public. En effet, le peuple ne verra les combats que par rediffusion. Ces nouvelles mesures de sécurités visent à empêcher le public à participer au combat, ou alors de tout simplement se prendre une ou plusieurs balles perdues.
Nos combattants s'entretuent donc dans des jungles hostiles, quartiers abandonnés ou encore déserts arides... Tout cela pour le plus grand bonheur des chaînes TV qui se remplissent les poches à chaque publicité.
Plus précisément, le tournoi se déroule selon plusieurs épreuves. Les premières sont les phases de qualifications, ou épreuves des esclaves. Chaque esclave est placé seul dans une des arènes. Il subit alors des vagues de soldats auxquelles il doit survivre. De plus, sortir d'une arène en vie ne veux pas dire être qualifié. En effet le sujet devra réaliser cette exploit plusieurs fois, dans plusieurs arènes différentes... Plus il tuera de soldats, plus il gagnera de points. Les esclaves possédant le plus de points participent alors à la finale des esclaves alors que les autres sont pendus sur la place publique : honte à ceux qui n'ont pas su combattre. Mais ce n'est que le début du cauchemar pour ces serviteurs qui n'en n'ont pas fini de se battre pour leur survie...

lundi 6 décembre 2010

Un peu plus de précisions sur le jeu...

Voilà quelques précisions sur le jeu ! Tout d'abord, sachez que Lonkon est jeu jeu d'action-shoot en 3D dont le gameplay se rapproche de Zombi apocalypse. Il est développé en C++ grâce à Ogre3D et de son wrapper NxOgre.

Vu que je suis le seul sur le projet, je m'occupe seul du développement ainsi que des graphismes aussi bien 3D que 2D. Un prochain billet sera d'ailleurs consacré à la présentation du personnage principal.

Voici maintenant le synopsis du jeu, qui pourra cependant être modifié jusqu'à la remise du dossier en janvier 2011 :

 Il était déjà tard quand Lil'Gus rentra chez lui. Encore une journée harassante à HEC, la Haute École des Calamités de Lonkon-city qui rassemblait les gens différents comme lui... mais j'y reviendrai plus tard. Il faut d'abord que vous compreniez que la principale caractéristique des habitants de Lonkon-city était leur adoration en Lonkon, dieu de la guerre dont la principale parole dicte encore le mode de vie des Lonkonniens : « L'Amour rend fou, la guerre Rambo ». Peu de monde comprit son allusion, mais ils purent tous en déduire que la tendresse et la douceur n'était pas dans les manières de leur Dieu, la violence étant la seule marche à suivre pour lui ressembler et lui faire hommage. Ainsi l'amour laissa places aux combats... cependant les Lonkonniens étant seuls sur leur petite planète, ils ne pouvaient que s'entre-tuer.

Des combats furent donc organisés à la gloire de Lonkon, dans des lieux conçus pour ce genre de divertissements sanguinaires dans lesquels s'affrontaient à coup de lasers esclaves et prisonniers. Le plus grand tournoi, le Lonkonfaïte était le seul tournoi de l'année dont les inscriptions étaient ouvertes au public, et dont la victoire accordait aux prisonniers la liberté. C'était le tournoi du roi, par le roi et pour le roi ... Quiconque en sortait indemne se voyait attribuer une magnifique médaille en chocolat (restrictions budgetaires obligent). Il réunissait donc les guerriers les plus suicidaires et les détenus voulant se racheter. Vous voilà donc un peu mieux situé dans cette farouche ville de Lonkon-city.

Revenons-en maintenant à Lil'Gus, qui comme vous le savez est élève à HEC. Cette école a été spécialement conçue pour les rejetés de la sociétés, voulant éviter toute sorte de discrimination et suivre une vie à peu près normale, dans l'établissement du moins. En effet, les Lonkonniens, peuple à la peau bleue et à la grande taille, étaient très regardant de l'aspect extérieur des autres qui, pour eux, représentait le guerrier lui-même. Ainsi un être de petite taille n'était qu'un vaut-rien, une mauviette, un être sans défense qui ne méritait que d'être piétiné par la masse infâme de brutes et de truands, tous exempts du moindre centimètre carré d'encéphale. Mais cette petite taille n'était que le cadet des soucis de Lil'Gus qui en plus, avait la peau violette. Le sort s'acharnait sur un être qui aurait déjà subit des méprises et des violences tout au long de son existence sans qu'il ait besoin de cette difficulté supplémentaire. Lil'Gus, lui, devait craindre pour sa propre vie à cause de cette petite enveloppe de chair violette qui attirait tous les regards. Heureusement, la machine à penser de notre ami fonctionnait un peu mieux que celle de ses congénères. C'est ce qui lui a permis d'éviter la plupart des problèmes et accrochages qu'il aurait pus rencontrer jusqu'à ce jour. Et si ce n'était pas suffisant, il était le prince héritier, fils du Roi... dont la honte grandissait à la moindre seconde se rapprochant du début du règne de sa progéniture. Et c'était ce roi qui était le principale organisateur du tournoi annuel, le Lonkonfaïte.

Lil'Gus rentra donc chez lui après cette journée éreintante, accueilli par son père exaspéré de cette humiliation incessante :
- Fils, cette couleur repoussante et cette taille minuscule sont un affront à la famille royale ! Je suis obligé de te retirer ton héritage, et de te renier... Tu es dès à présent considéré comme esclave de celle-ci, et participera donc au Lonkonfaïte. La moindre parole pourra être retenu contre toi, bien qu'il ne puisse y avoir pire châtiment que d'être envoyé dans l'arène. Ta mort nous attristera tous, crois-moi, mais c'est pour le bien de mon peuple, j'espère que tu me comprends.
Lil'Gus était habitué à recevoir des insultes de tout genre, mais même son propre père le rejetait à son tour. Cependant ce n'était que la plus infime inquiétude qui pouvait le préoccuper à ce moment-là. Il allait participer à un combat qui le mènera probablement jusqu'à la mort...

dimanche 5 décembre 2010

Bienvenue !

Bienvenue sur le blog de Lonkon ! Ce jeu est développé dans l'optique du concours Innov'game 2011. Il s'inscrira dans la partie software, le thème de cette année étant "A la gloire de...". Vous pourrez voir sur le lien ci-contre plus d'info sur Innov'Game 2011.
Lonkon (A la gloire de Lonkon), est un jeu d'action en 3D, dont le développement grâce à Ogre3D à déjà débuté, et dont quelques screenshots seront postés très bientôt !  So stay tuned !