ShimStar : l'aventure est dans les étoiles

Une nouvelle aventure commence : venez jouer dans les étoiles, dans un jeu multijoueur

Aller au contenu | Aller au menu | Aller à la recherche

mardi, décembre 6 2011

6 12 2011

Voilà déjà quelques temps que je n'ai pas donné de nouvelles. Le projet est toujours en cours, mais je travaille sur des sujets très techniques, et ne sont pas très démonstratifs. Le sujet principal est le changement de moteur physique. Mais me direz vous qu'est ce qu'un moteur physique. Dans un jeu, le moteur physique gère la physique au sens propre du mot gravité, collision, mouvement, forces appliquées...

Vous créez un certain nombre d'objet (astéroids, station, vaisseau, etcetc), vous leur définissez une taille et une masse. Vous définissez,ensuite, quelques paramètres physiques telle que la gravité. Et ensuite, vous déclarez une poussée à l'arrière du vaisseau pour le faire avancer, et le vaisseau réagit en fonction de cette poussée (il avance à une certaine vitesse dépendant de la force de la poussée, et de sa propre masse). Si votre vaisseau rencontre un obstacle (asteroid par exemple), alors automatiquement, votre vaisseau subit une force de rotation et une force de mouvement correspondant au rebond. Quant à l'asteroid, en fonction de l'angle par lequel le vaisseau l'a touché, il peut également partir en rotation, et être "poussé" dans la direction du mouvement du vaisseau. Tout cela est soumis aux règles physiques standards, et tiennent compte d'un certain nombre de paramètre dont la gravité (bon ici dans l'espace, elle n'est pas prise en compte), et de la masse des objets. Si votre vaisseau rencontre un astéroid qui fait mille fois sa masse, globalement l'astéroid ne bougera pas, par contre votre vaisseau rebondira en sens inverse.

Jusqu'à présent, j'utilisais le moteur gratuit ODE, qui est un standard dans le monde du développement de jeu amateur. Je me suis rendu compte qu'il était très lourd, et gourmand en calcul, et qu'il était plus adapté à un monde scientifique, car il essayait d'atteindre un réalisme qui ne m'était pas utile. Du coup, si je dépassais les 30 objets à gérer dan une zone (astéroids, vaisseaux, etc), je descendais à 10 FPS, ce qui est vraiement peu.

J'ai découvert bullet qui est un moteur physique adapté au monde du jeu vidéo et qui a fait ses preuves dans de gros titres (cars2 le jeu, dragons le film, shrek le dernier film). Mes premiers tests m'ont laissés pantois, car avec un millier d'objets je restais aux alentours de 30 fps, ce qui est très acceptable au vu du nombre d'objets.

Du coup, mes dernières semaines ont été consacrées à migrer mon serveur vers bullet, et même si globalement, la simplicité de bullet m'a rendu bien des services, j'ai beaucoup de choses à revoir, et à ce jour l'intégration est finie.

Comme le moteur physique est au coeur de tout le jeu (déplacement, collision, tirs, ...), cela impacte beaucoup d'éléments, et j'ai quelques correctifs à apporter de ci de là, pour stabiliser cette intégration. J'ai du revoir également la première mouture d'intelligence artificielle que j'avais créé, et qui consistais à créer un ennemi qui patrouille dans un secteur. Une fois cette mouture terminée, je pourrai passer aux combats "intelligents".

A bientot pour de nouvelles aventures.

vendredi, novembre 4 2011

04 11 2011

Gros travail de conception toujours. La création de Npc intervenant dans l'espace n'est pas une mince affaire. Entre le fait qu'il faille déclarer des templates de NPCs, de vaisseaux, et de comportements, il y a toute la partie réseau également à finaliser. Le modèle de données s'étoffent, en voici un aperçu:

bdd.jpg

En parallèle, j'ai commencé à définir un 2e comportement autour de la défense d'objectif : Défense d'objectif

Par contre, même si je mets de temps en temps de belles images, je suis loin d'avoir un jeu en état de fonctionner, et prêt à être joué. Pour rappel, je désire mettre en ligne un jeu en mode client serveur, qui soit multijoueur, et qui contienne un monde persistant. Cela demande un travail colossal, et j'ai fait déjà un gros travail purement technique, mais il me reste un chemin à parcourir.

Dans les fonctionnalités manquantes :

  • gestion réel des compétences (apprentissage et utilisation)
  • mining et crafting (pas du tout commencer, et pas encore de design de comment cela marchera)
  • combat
  • intelligence artificielle
  • commerce
  • quêtes/missions
  • évolution

Voilà, donc ne soyez pas trop impatient. Comme tout jeu, il faut une période de développement, et de maturation. Dès que j'aurai l'occasion d'ouvrir la porte à des joueurs je le ferai. Cela me permettra d'avoir des premiers retours, et de soigner la conception et le design en conséquence.

Merci en tous les cas, à ceux qui suivent le projet.

dimanche, octobre 30 2011

30 10 2011

J'ai travaillé récemment sur un nouveau pan du jeu. Des choses un peu visuelles et qui apportent du contenu dans le jeu : les dialogues.

Cela a nécessité pas mal de réflexions pour adopter une conception permettant une grande souplesse dans l'élaboration des dialogues. Typiquement, il faut que certains dialogues puissent permettre d'accéder à d'autres dialogues, que des dialogues permettent d'accéder à des missions etcetc. Voici l'état de réflexion : Dialogues.

Pour illustrer cela, j'ai créé un premier NPC, avec un certains nombre de dialogue : Nina.

ninadiag.JPG

J'ai également commencé à travailler sur les compétences. Pour l'instant, je n'ai travaillé que sur l'affichage de l'arbre des compétences.

skills.JPG

Next step : faire en sorte que les compétences soient utilisés dans les pré requis d'équipement, mais également pour calculer les bonus attribués aux joueurs.

vendredi, octobre 14 2011

14 10 2011

Je suis encore en réécriture de code, pour apporter les adaptations à la mise en place de la Base de données. Cela prend du temps. Mais cela avance assez bien.

Pendant le même temps, j'ai fait un premier jet de comment seront conçus les dialogues, pour avoir une grande souplesse dans leur gestion, et leur apparition: Dialogues.

jeudi, septembre 29 2011

29092011

Histoire de se donner un peu de travail, oi de prévoir de l'alléger dans le futur, je fais un changement technologique. En concevant de nouveaux éléments dans Shimstar (les PNJs, mais également les dialogues), il s'avère que les données se complexifient énormément, et ont de plus en plus de relations entre elles.

Pour pouvoir travailler sereinement, et avoir un référentiel de données propres et utilisables, je passe d'une configuration minimaliste basée sur des fichiers xml, à une configuration utilisant les bases de données (Mysql).

Ce changement technologique implique un travail important de réécriture, notamment sur le chargement des données, mais également sur la sauvegarde des données, et la recherche/tri des données.

La partie technique reprend un peu le dessus, et je n'ai pas de nouvelles fonctionnalités de ce fait dans les tuyaux.

Néanmoins les quelques prochaines étapes sont les suivantes: -- comportement de fuite/poursuite sur les IA -- mise en place des premiers pnjs/dialogues -- missions.

dimanche, septembre 18 2011

18 09 2011

Un petit mot pour indiquer que mes expériences autour d'une première intelligence artificielle avancent assez bien, même si elle restera assez mécanique.

Qu'ai je développé? Pour l'instant, mon IA peut aller d'un point à un autre. En effet, on peut lui donner une série de points à atteindre, et elle naviguera d'un point à un autre, en se tournant, et faisant les virages appropriés pour atteindre son objectif.

En plus de cela, j'ai développé une première version permettant d'éviter les obstacles sur le chemin. Si un astéroid se trouve sur le passage, l'IA va faire un détour autour pour l'esquiver et reprendre sa route par la suite. Ce comportement pourra être utilisé également en cas de poursuite, ou de fuite, qui sont les prochains comportements à développer.

Dans le même temps je suis en train de décrire sur le wiki , les différents comportements à développer. Je suis également en train de décrire la conception d'une mission. Qu'est ce qu'une mission? Quand? où? Récompenses...

Voilà cela avance toujours.

jeudi, septembre 8 2011

08 09 2011

Ca y est l'inventaire est fait. Vous pouvez désormais glisser déposer dans votre inventaire, vous pouvez également déplacer les objets de votre inventaire, pour les classer ou les trier à votre guise. Du coup, on peut aussi ouvrir un container laissé par votre ennemi que vous avez détruit, et glisser déposer dans votre inventaire.

Prochaine étape : finir les quelques fenêtres qu'il me reste, mais également commencer à tester la partie intelligence artificielle de panda. Cela me paraît plutôt bien parti pour l'instant, les premiers tests sont concluants.

Bientôt des ennemis dans shimstar.

vendredi, août 26 2011

26 08 2011

Quelques avancées. Ca y est, j'ai fait l'ensemble des fenêtres vous permettant de créer un nouveau compte, et de vous connecter. Vous pouvez également choisir le personnage avec lequel vous souhaitez jouer, en créer de nouveaux, ou supprimer des avatars.

Je suis en train de faire un gros travail également sur la gestion de l'inventaire. Au delà, de son affichage, qui est somme toute assez simple, il faut gérer le drag & drop. Je prends un objet dans un inventaire, et je le fais glisser ailleurs (chez le marchand, dans un autre inventaire....).

J'ai fait un premier test, et j'ai un résultat très concluant. Je n'ai plus qu'à l'intégrer dans Shimstar, et notamment permettre par exemple de récupérer les éléments droppés par un adversaire.

samedi, août 20 2011

20 08 2011

Bonjour,

J'ai finalisé un paquet de développement, nommé 0.2.1, qui concerne l'amélioration des déplacements, ainsi que la gestion des tirs, et de la destruction d'un ennemi (ecran de mort, gestion de la mort, création de loots, ...).

Prochaine étape, refaire l'ensemble des écrans du jeu (chat, menu de sélection sur les objets sélectionnés (asteroid, station, vaisseau, ...), et refaire l'intérieur de la station, et la gestion du fenêtrage (inventaire, équipement de vaisseau). Un peu de visuel, et peu de prise de tête, quoique.

dimanche, août 14 2011

14 08 2011

Voilà le nouveau thème de shimstar, que vous pouvez voir sur l'écran de connexion de shimstar: connexion2

Une petite image du jeu, où vous pouvez voir l'interface de chat, la barre de vie, et l'ouverture d'un drop, avec les loots qu'il contient:

enjeu

jeudi, août 4 2011

04 08 2011

Nouvelle release intermédaire. La gestion du monde physique est opérationnelle, même si pas parfaite, il reste certaines choses à régler. A ce jour, la release s'est concentrée sur la gestion des mouvements du joueur, la gestion des collisions avec les différents objets présents (rebond sur asteroid, etc), et la gestion des tirs.

Il est possible à présent de prendre en chasse un autre joueur et de le détruire.

Les 3 prochaines étapes seront :

  • stabiliser cette release
  • refaire toutes les fenêtres en utilisant le thème shimstar, et toutes les possibilités ouvertes par CEGUI (dont les animations,...)
  • réussir à faire fonctionner une IA dans ce monde physique.

A Bientot!

dimanche, juillet 24 2011

23 07 2011

Ouh ca fait longtemps.

Beaucoup de problèmes et de difficultés sur l'intégration du moteur physique. Il semble que je vois le bout du tunnel, et je commence à avoir un résultat satisfaisant.

Les problématiques étaient sur différents points:

  • gestion des forces et des torques, plutôt que de l'affectation d'une vitesse relative directement. Cette gestion utilisée par l'addition de force et de torque me permet de profiter au mieux des possibilités ODE, et notamment des collisions, rebonds occasionnés, rotations engendrés...
  • synchronisation client/Server : de gros soucis, pour que les moteurs physiques soient synchros. Finalement, le client ne possède plus de moteur physique et n'affiche que des images selon les positions mises à jour par le client. Je n'abandonne pas l'idée qu'un jour, je prenne plus de temps pour quels moteurs physiques soient synchrones. Mais là, de guerre lasse, et par mon manque de compétence, je vais au plus simple.

J'ai un moteur sastisfaisant, et je vais avancer vers l'intégration d'une intelligence artificielle, en utilisant les déplacements par force et torque. La conversion d'hpr/mouvement en force et torque risque d'être assez joyeuse.

A côté de cela, on a commencé à redessiner le gui (connexion), et intégrer de vrais skybox, voici des : screenshots

jeudi, juillet 7 2011

07 07 2011

Petit à petit le monde devient moins petit.

Bon comme d'hab, 3 pas en avant, pour 2 en arrière. J'ai rechangé d'épaule mon fusil sur la gestion physique. Je suis revenu à l'idée de départ, qui est de gérer les déplacements, et rotations en affectant des torques (rotations) et des forces aux éléments. De ce fait, le monde physique est plus cohérent, et donne des réponses bien meilleures. Mon vaisseau qui rencontre un autre objet, va le percuter et partir en rotation par exemple.

Par contre, cela induit qu'il faut réécrire une grosse partie du réseau, et cela me demande pas mal de travail. Je m'étais donné jusqu'au 31 juillet, pour finir l'intégration du moteur physique et ma première IA simple (poursuite). Cela avance, plus que cela ne recule, et ça c'est déjà une bonne chose :p

dimanche, juin 26 2011

26 06 2011

Comme promis, un screen du nouvel écran et donc du nouveau thème de shimstar. (Merci àChriskang d'ailleurs:)

connexion

vendredi, juin 24 2011

24 06 2011

Un petit point d'avancement.

Cette semaine, j'ai pas mal avancé sur l'intégration CEgui. Si j'ai le temps, je vous mettrai un petit screenshot. Je suis assez content de ce travail, car cela permettra d'avoir une gestion de fenêtre bien meilleure, avec aussi des fenêtres mieux dessinées (grâce à un éditeur de fenêtre), et la possibilité de créer notre propre thème shimstar. Cela va être un boulot important de revoir toutes les fenêtres, néanmoins, il fallait le faire, car elle n'était vraiment pas belle.

Une autre avancée est sur le moteur physique. Je suis en train de gérer les collisions, et cela avance bien. La prochaine étape, est quand on tire sur un vaisseau ennemi, il change d'attitude et se mette à vous attaquer. Gestion IA à faire, et des tirs ennemis. Attention à vos fesses, ca va être chaud.

A suivre

mercredi, juin 15 2011

15 06 2011

J'ai installé un outil de gestion de projet, qui comporte un certain nombre de fonctionnalité, que j'avais déjà, mais de manière éparpillé. Il a fallu que je me frotte aux installations de Ruby et Ruby on Rails, et l'intégration de ceci avec Apache, mais ça y est, c'est opérationnel. Vous pouvez le consulter Site de Shimstar.

J'avance également sur la partie prog. Moins rapidement que prévu, car j'ai refait pas mal de choses, et là je me confronte de nouveau aux problématiques de collision, vis à vis des armes. Mais cela devrait être vite être réglé.

Je suis en train également de remplir le wiki du jeu, pour décrire l'univers, l'histoire et autres.

Ca commence à prendre forme tout ça...

samedi, juin 11 2011

11 06 2011

Bonjour, J'ai pas mal bossé ces derniers jours, étant en vacances. J'ai testé l'intégration de PandaAI, qui est une librairie permettant le PathFinding, et différents comportements IA de base, qui sont pas mal du tout, et suffisants en l'état pour l'instant. Maintenant, il n'y a plus qu'à... l'intégrer, et faire en sorte que cela marche.

J'ai également benché l'intégration CEGUI, qui permet de gérer les fenêtres dans le jeu (menu, inventaire,...). Cela marche bien. Pareil, il n'y a plus qu'à...

J'ai également utilisé un générateur de site en ruby, pour gérer shimstar de manière centralisée. On peut y trouver désormais, le wiki, les demandes et anomalies, les releases, la roadmap, des actus,...

mercredi, juin 8 2011

08 06 2011

Quelques news en filigrane. Ca y est j'ai intégré le moteur libre ODE dans mon jeu. l'intégration existe dans Panda, ce qui a largement facilité son intégration. Il me reste à gérer correctement mes IAs désormais et les flux réseaux correspondants.

Ensuite j'essayerai d'intégrer Cegui, pour gérer les fenetres de manière plus ergonomiques...

lundi, mai 23 2011

23 05 2011

Hello,

Que n'ai je fait un jeu 2D....!!! Plus j'avance, plus je me rends compte que les besoins en 3D sont importants. Maintenant que j'ai passé X jours sur mes problématiques de collision, il faut que je refasse un pas en arrière pour mieux re sauter.

Détecter les collisions c'est bien, et notamment pour gérer le tir des vaisseaux et autre. Par contre, quand 2 corps importants se rencontrent (vaisseaux, asteroids, ...) que se passe-t-il?

Pour gérer cela, il est inutile de réinventer la poudre. Il existe des moteurs physiques gratuits, et un nativement pluggé à Panda : ODE. Ce moteur est très connu, et n'a plus rien à prouver. Sauf à moi :p

Après moults essais, j'ai réussi (et pas seul), à intégrer ces notions. Par contre, là où le bât blesse sont mes compétences en mathématiques appliqué à l'espace, et notamment la gestion de matrice et de vecteur. Que de lointains souvenirs!

Je suis en train de démonter une partie du code source de shimstar, pour intégrer le moteur physique. Une fois cela fait, encore une fois, je pense pouvoir avancer plus facilement.

jeudi, avril 28 2011

28 04 2011

Quelques news... Beaucoup de choses se sont réglées depuis un certain temps. J'avance énormément. Mais par contre, des problèmes soulèvent d'autres problèmes, et je stabilise le noyau. J'ai eu d'abord des gros problèmes réseaux. J'envoyais 10 fois plus que le client pouvait absorber. En réécrivant une partie du code, j'ai aujourd'hui un client qui tourne suffisamment vite pour absorber tous les messages réseaux. CEla m'a permis également de revoir un certain nombre de communication et de stabiliser certaines choses. Aujourd'hui je demeure sur ce problème de collision côté serveur qui me pourrit la vie. J'ai enfin trouvé la raison pour laquelle. Je gère plusieurs zones à la fois, avec des objets différents (asteroids, stations, etc). J'ai instancié des objets de gestion de collision pour chacune des zones, afin de séparer la gestion des collisions, et avoir quelque chose de réaliste mais sur un seul serveur. Il s'avère que l'instanciation des colliders ne s'est pas fait comme je l'espéré, et au lieu d'avoir des objets séparés, j'ai des objets communs, et du coup, un tir dans une zone va heurter des objets quelque soit sa zone. Une fois, cela résolu (j'attends l'aide du forum...), je pourrai enfin continuer et passer à des choses plus intéressantes.

Des membres honorables participent désormais à l'élaboration du jeu, en participant activement au forum, et en essayant d'imaginer les règles du jeu. J'ai également un bon ami qui est en train de tester le jeu, dans sa version instable et me remonter les bugs dans un bug tracker. Cela me donne aussi les pistes vers lesquelles me dirigeai.

Merci à eux!

- page 2 de 4 -