dimanche 23 janvier 2011
dimanche 16 janvier 2011
dimanche 9 janvier 2011
La tête dans le dossier
Salut tout le monde.
Tout d'abord, j'aimerai m'excuser pour le manque de nouvelles, j'ai quand même une petite excuse :
je suis en ce moment en train de finaliser le dossier (dont le contenu ne s'éloigne pas beaucoup du blog), en le complétant par des illustrations. De plus, je réfléchis en ce moment de la façon dont sera présenter le menu principal. J'hésite encore entre une scène 3D, ou un/plusieurs dessins.
Cependant, plusieurs bugs ont été réglés ! Je peux dorénavant ajouter un menu, une cinématique, mettre pause dans le jeu ou autre très facilement. De plus, les ennemis commencent à attaquer le personnage (bientôt ils pourront attaquer au corps à corps et à l'arme).
J'ai ensuite quelques éléments du gameplay à ajouter, le jeu n'étant pas loin de sa version finale (techniquement parlant). Il restera alors à ajouter le contenu, à peaufiner la difficulté...
J'ai décidé d'attendre de montrer la vidéo, pour en faire un trailer dont le contenu sera plus conséquent. Je vais cependant donner prochainement quelques screen pour que vous voyez ce que ça donne en jeu.
A la prochaine !
Tout d'abord, j'aimerai m'excuser pour le manque de nouvelles, j'ai quand même une petite excuse :
je suis en ce moment en train de finaliser le dossier (dont le contenu ne s'éloigne pas beaucoup du blog), en le complétant par des illustrations. De plus, je réfléchis en ce moment de la façon dont sera présenter le menu principal. J'hésite encore entre une scène 3D, ou un/plusieurs dessins.
Cependant, plusieurs bugs ont été réglés ! Je peux dorénavant ajouter un menu, une cinématique, mettre pause dans le jeu ou autre très facilement. De plus, les ennemis commencent à attaquer le personnage (bientôt ils pourront attaquer au corps à corps et à l'arme).
J'ai ensuite quelques éléments du gameplay à ajouter, le jeu n'étant pas loin de sa version finale (techniquement parlant). Il restera alors à ajouter le contenu, à peaufiner la difficulté...
J'ai décidé d'attendre de montrer la vidéo, pour en faire un trailer dont le contenu sera plus conséquent. Je vais cependant donner prochainement quelques screen pour que vous voyez ce que ça donne en jeu.
A la prochaine !
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 !
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 :
<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 !
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 :)
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 !
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 !
Inscription à :
Articles (Atom)





