vendredi, janvier 15, 2010

Migration vers WeAreSync.net

C'est mon dernier billet sur links-of-power.blogspot.com

Tout mes autres blogs ont été centralisés sur WeAreSync.net que je vous encourage à visiter dès maintenant !

A bientôt,

Damien

samedi, juillet 14, 2007

Genesis : Les débuts d'Harden'evi

Hier soir, nous avons organisé une petite soirée de réflexion sur la description des univers de Links of Power. Le but était d'imaginer un monde, de détailler les lieux, les climats, les zones géographiques. Puis nous nous sommes lancés dans la création d'une flore et d'une faune en tenant compte des interactions entre les différents protagoniste. Enfin, nous avons décris les civilisations qui peuplent ce monde. Hier nous avons posé les premières pierres d'une civilisation en insufflant sur ce monde des croyances, des modes de vies, un style d'architecture, une histoire...

Nous avons réalisé tout cela dans le but de mettre sur pied un univers cohérent et complet. Nous voulions innover et trouver par quels moyens d'autres civilisation que la nôtre avaient pu trouver leur voie et s'adapter aux contraintes de leur environnement.

Pour tout cela, je me suis inspiré de très bon article de Kevin Carter : Living Worlds: The Ecology of Game Design. Il m'as permis de comprendre que tout les éléments d'un univers étaient liés d'une façon ou d'un autres. De subtiles interactions les unissent et assurent la cohérence du jeu. De plus, faire ce travail m'a donné un plan de travail que je vais pouvoir compléter en enrichir jusqu'à obtenir un univers complet.


Nous nous sommes particulièrement attaché à la planète Harden'evi. Migrant au coeur d'un système à deux étoiles, la planète souffre d'un jour éternel sur sa ceinture équatoriale. Dans toute cette zone, un désert sulfureux sépare les deux hémisphères. C'est une région aride et rocailleuse où les lacs acides et les geysers sont maîtres. Balayés par de violentes tempêtes, les voyages dans cette région sont périlleux et seul les meilleurs caravaniers pourront entreprendre une traversée.

Au nord, une zone continentale abrite une civilisation technologiquement avancée et en parfaite harmonie avec la nature. Les grandes steppes verdoyante abritent de-ci, de-là des petits villages épars qui feraient presque oublier les imposantes tours de verres qui culminent les centres urbains.

Au sud, un essaim d'îles de toutes tailles baigne dans un agréable climat océanique. Une troublante civilisation habite les lieux et de grandioses constructions, ornée des jardins voluptueux, s'érigent en l'honneur des shteen, l'envoûtante élite féminine de ce peuple.

La prochaine étape consiste à développer l'histoire de ces peuples, créer des relations et nouer des liens subtils entre les personnages clefs de ce monde. En attendant, je vous invite à découvrir l'organisation planétaire tel que vous la retrouverez prochainement dans Links of Power.

dimanche, juillet 08, 2007

2D ou 3D ?

Il y a quelques temps, je parlais ici de la possibilité d'avoir un client en 2D pour Links of Power employant Silverlight. Il y a deux avantages à majeurs à concevoir un client 2D avec cette technologie :

  • C'est rapide à développer
  • C'est utilisable en ligne immédiatement
Silverlight 1.1 en est encore à sa version alpha, ce qui signifie qu'il existe encore de nombreux bogues et qu'il manque encore beaucoup de choses utiles aux développeurs. Le plus grand manque jusqu'à récemment était l'absence de contrôles pour l'interface. Microsoft avait bien fournit quelque chose se rapprochant avec son SDK pour SilverLight 1.1, mais celui-ci est plus que rudimentaire.

Cela limitait grandement le développement à ce stade du projet puisque j'étais dans l'impossibilité de créer le moindre formulaire. Heureusement, NetikaTech vient juste de combler le manque avec GOA, un framework très prometteur dédié à Silverlight.

Mais revenons en au projet, je m'étais entre temps tourné vers WPF pour la réalisation d'un client 2D. WPF est bien plus complet que SilverLight, mais n'est pas exploitable en ligne.. sauf peut-être en utilisant un ActiveX, mais cela reste barbare. WPF m'a permis très rapidement d'avoir un design intéressant et j'ai voulu aller plus loin en intégrant une carte en 3D isométrique pour la représentation du monde. J'étais sur le point de réaliser un mélange 2D/3D avec WPF qui aurait ressemblé à Ragnarok et je me suis alors rendu compte que ce travail devenait de plus en plus complexe et de plus en plus long.

Alors, j'ai décidé de stopper ici le développement du client WPF car j'avais perdu les deux avantages majeurs dont je fais au début de cet article. Aujourd'hui, j'ai repris le développement du client 3D avec DirectX .

lundi, juin 18, 2007

Intégration d'un langage de script : LUA


LUA qu'est-ce que c'est ?

Il s'agit d'un langage de script libre qui a été inventé en dans le but d'être rapide et compact (95 à 185 Ko pour la version 5.0.2, selon le compilateur utilisé et le système cible).

De nombreuses applications l'intègrent, dont notamment des jeux comme World of Warcraft et des applications comme Adobe Photoshop Lightroom. LUA rempli des tâches aussi variées que définir des variables d'environnement, associer des évènements aux composants d'une interface ou gérer l'I.A. des personnages non joueurs.

LUA est un langage extensible. Le système de meta-tables permet de créer des structures de données complexes et de gérer les relations qui les lient entre elles. Ainsi, certaines extensions de LUA gèrent les classes, l'héritage et permettent de les lier à des instances d'un programme.

Ainsi, on peut définir ses classes en C++ et les passer en paramètres à une fonction LUA qui les traitera avant de les retourner au programme appelant.

Procéder ainsi à plussieures avantages :

  • L'écriture d'un script LUA est facile et réalisable par tous.
  • Il n'y a pas de compilation nécessaire.
  • Un script peut être généré à la volée par une application tierce et être chargée à chaud dans un programme en cours d'exécution.
  • Combiné au Xml, il permet de réaliser des interfaces très souples.

Il existe de nombreuses implémentations de LUA pour les différent langages de programmation dont LuaNET pour le C# et LuaBinaries pour C/C++.

Et Links of Power dans tout ça ?

J'ai décidé d'utiliser LUA pour l'implémentation du serveur de jeu. Sa souplesse me permet de créer des relations logique avancées entres les éléments du jeu sans avoir à redéfinir la structure même du serveur. Avec cette approche, l'évolution du gameplay est sans limite.

Actuellement, LUA gère :
  • La création des comptes
  • La création des avatars
  • Les déplacements autorisés sur la carte
  • Les interactions de joueurs à joueurs
.. et très bientôt,
  • Le commerce
  • L'I.A. des personnages non joueurs
  • Et plus généralement, toutes les règles du jeu..
Pour aller un peu plus loin.

Il existe de nombreux tutorials pour apprendre à employer LUA dont ceux de Daniel Schuller ( en anglais ) que vous pouvez trouver ici :


jeudi, juin 07, 2007

Comment rendre le craft intéressant ?

Introduction

La plupart des jeux de rôles actuels permettent aux joueurs de créer eux-même des objets. Armes, potions, vêtements et véhicules sont autant d'éléments qui participent à la cohérence d'un jeu. Lorsqu'un joueur a la possibilité de réaliser lui-même ces objets et d'évoluer dans sa compétence, cela apporte une nouvelle dimension au jeu. L'économie et le marché s'élargissent et deviennent plus intéressant à découvrir. Des relations de confiance et de respect se forgent entre les joueurs.

En tant que crafteur, on débute généralement avec un minimum de savoir faire. Au fil des essais et des réalisations, la compétence évolue et donne accès à d'autres objets, plus beaux, plus puissants... plus recherchés.

Les limitations actuelles du craft

Le problème vient de là. Beaucoup de joueur recherchent le meilleur objet et dénigrent complètement les objets intermédiaires. Les crafteurs en ont bien conscience et se dépêchent de faire grimper leur compétence pour créer des objets qui, enfin, seront fructueux.

Une fois les objets débloqués, ils peuvent produire des objets de grande valeur en grande quantité. Puisque l'offre est souvent supérieure à la demande, les prix baissent chez tous ceux qui sont capables de produire mieux. Cela contribue à dévaloriser une bonne moitié des objets bas niveaux du jeu.

En conséquence, le marché est souvent inondé d'objet dont personne ne voudrait, ce qui a tendance à faire chuter leur prix, alors que des objets similaires sont vendus à un prix plus élevé chez les PNJ. Cette incohérence est difficile à prendre en compte et demande parfois de nombreux ajustement de la part des développeurs. Il ne s'agit pas à mon sens de la meilleure façon de stabiliser une économie. J'y reviendrais dans un prochain article.

De plus, tous les objets sont identiques. Et l'aspect redondant de la création qui est nécessaire pour évoluer est souvent rébarbative et peu ludique. A cause de tout cela, le craft perd énormément d'intérêt.

Comment rendre au craft toute sa beauté et permettre au crafteur de libérer sa créativité ?

L'apparence des objets est capitale. Le choix des couleurs est certainement plus facile à permettre que le choix des formes, mais certains jeux qui ont abordé la question dès le début ont très bien géré la question.

Il faut permettre au joueur créer des modèles. Une fois le modèle établi, l'artisan peut créer autant d'objet de ce type qu'il le désire, s'il possède les composants. La recherche des composant doit être une tâche complexe, mais très réalisable. Il ne s'agit pas de rendre certains composants introuvable, mais d'organiser l'univers pour que chaque lieu ai ses spécificités. Le crafteur ne pouvant pas forcement atteindre ces lieux devra se reposer sur d'autres joueurs dont la profession est clairement celle d'un commerçant. Il faut favoriser les relations de longue durée entre les crafteurs et leur fournisseurs. Les achats "en passant" sont une perte de temps et c'est trop souvent sur cet aspect que les concepteurs de jeux vidéo se basent pour complexifier la tâche lors de la fabrication d'objets de valeur.

La complexité de la tâche et la valeur de l'objet devraient dépendre des matériaux à transformer et du savoir faire de l'artisan. Deux objets similaires réalisé à partir de matériaux différents doivent avoir des différences qui les rendent plus spécifique aux cas d'utilisation. Dans un jeu idéal, tous les objets devraient être craftable ou transformable.

Cycle de vie des objets

Maintenant que le joueur peut exprimer sa créativité, il faut lui permettre de se faire connaître ! Un objet fabriqué doit posséder plusieurs marques. Le nom de l'artisan crafteur d'abord. Puis de la guilde ou les guildes auquel il appartient et enfin, le nom de l'échoppe ou cet objet est vendu. Le cycle de la vie des personnages qui en ont usé resterait également inscrit. Le cycle de vie de l'objet est transmissible par la tradition orale. Un joueur qui désir, le désire peut demander à un autre ce qu'il sait de tel ou tel objet. Un joueur qui a déjà vu un objet similaire saura donner certaines informations sur sa provenance... s'il en a disposé. Certaines informations sont transmises par la tradition orale sur la place publique et lors des échanges privés...

De cette façon, les artisans peuvent être reconnu et recherché pour leur travail.

Conclusion

Le craft est un élément central des jeux de rôles actuels. Il permet une immersion du joueur dans la société virtuelle et lui offre des buts de jeu supplémentaires à atteindre. Mais le craft est trop souvent mal conçut. Redondance et dévalorisation des objets de bases marchent souvent de paire. Les concepteurs espèrent mettre au point une économie de marché stable en prévoyant tous les aspects possibles, mais cela conduit le plus souvent à une économie fragile.

Ce qui est réellement intéressant dans le craft n'est pas tant l'objet produit en lui-même, mais la conception de cet objet et la marche à suivre pour le fabriquer. Trop souvent cet aspect est négligé alors qu'il suffirait de laisser un peu de place à la personnalisation des objets pour que les crafteurs se distinguent en style autant qu'en compétence.

Dans un prochain article, j'aborderais à question de la stabilité économique dans un jeu.

mardi, juin 05, 2007

Mise à jour du scénario

J'ai effectué une mise à jour du scénario de Links of Power. De très belles images ornent les périodes différentes sections. J'ai mis l'accent sur la succession des évènements décisifs qui ont transformé le monde et ont ouvert la voie de la conquête spatiale. Au cours du récit, j'ai parsemé de nombreuses traces du passé qui resurgiront lorsque le joueur explorera le monde. La dernière section pose le décor de l'univers dans lequel les joueurs évolueront en début de partie. J'y décrit les causes qui ont engendré le rapprochement des plans multidimensionnels. L'incompréhension et les mystères qui en résultent participeront à l'immersion du joueur dans ce monde unique ou technologie et fantasy se rencontrent.

Voici un extrait :

L'exploitation des voyages instantanés à dramatiquement rapproché les peuples et de nombreux conflits ont éclatés. Certaines guerres se sont même déroulées à l'intérieur du sous-espace-temps . Depuis cela, des fluctuations incompréhensibles apparaissent partout dans l'univers. Des créatures inconnues surgissent de nulle part et ravagent les villes. Des objets étranges sont trouvés et des individus disparaissent sans laisser de traces. Certaines rumeurs parlent de lieux fantastiques où les lois traditionnelles de la physique n'ont plus cours. Un ennemi aussi sournois qu'invincible baptisé le "Mangeur de monde" englouti progressivement toutes les parcelles de l'univers connu.

lundi, juin 04, 2007

Quelques ScreenShoots..

Cela fait un petit moment que je n'ai pas publié, alors rien que pour vous, voici quelques uns des derniers screenshoots du moteur 3d.

Le premier donne un aperçut du shader qui gère les reflets de l'eau, la transparence, les réflections de Fresnel, le flou de mouvement...



L'autre met en avant un effet de post-processing ( ici la surexposition ) . Ces effets sont de divers types ( flou, bloom, contraste, teinte, détection de contours, couleurs inversés ... ) et peuvent être combinés autant de fois que désiré.

SilverLight



Voila encore une nouvelle technologie de microsoft qui fais son entrée. SilverLight est un FlashLike qui a le grand avantage de s'intégrer parfaitement au framework.NET. Il repose sur WPF/E et sur Xaml qui sont les fondements des nouvelles applications pour Vista. Ainsi Microsoft étend sont influence jusque sur la toile alors qu'Adobe avais la main mise sur le marché des applications riches en contenu multimédia jusqu'à maintenant.

L'occasion est trop belle pour la laissée passer juste au moment où je développe le client Web de Links of Power. Alors que je l'interrogeais justement sur la meilleur support, Microsoft m'apporte une solution de choix avec SilverLight :

  • Affichage vectoriel 2D et 3D
  • Contenu dynamique qui supporte Ajax
  • Support des web services et serialisation XML, du RSS
  • Contenu multimédia embarqué
  • ... plus tout les autres avantages du framework 3.5 !
Bref, une véritable merveille. Et c'est sans parler du Studio Expression qui est disponible lui aussi depuis peu et supporte nativement l'exportation en Xaml.

C'est sur cette base que je développe actuellement la prochaine interface de Links of Power. Des nouvelles très bientôt..

lundi, mai 30, 2005

MultiTextures


Petit aperçut du multi-textures

Couché de soleil


Couché de soleil

Reprise du travail

Après une période assez longue sans réelles évolutions, je reviens en force ! Une grande partie du moteur graphique et de l'éditeur de niveau ont été complétés :

* Editeur de monde infini
* Chargement automatique de cartes en fonction de la position du joueur
* Prise en charge d'un nombre infini de textures pour le terrain

Je travaille actuellement à optimiser ce nouveau système afin de rendre a navigation plus fluide que jamais. Je prévois d'alléger le moteur en effectuant de nombreux pré-calcul au niveau de l'éditeur de cartes.

Une fois ce travail accompli, je travaillerais soit à la mise en place réseau, soit sur un générateur de terrain à base de fractales.

samedi, juin 26, 2004

First Post !

Et bien voila, c'est fait.. A l'origine, ce n'est pas vraiment un blog que je voulais faire, mais c'est tout aussi bien comme ca !

Donc, vous allez trouver ici toutes grandes étapes du développement de MechaWars. Alors tout de suite je vous préviens, MechaWars est un passe temps ! J'ai un boulot à coté, et je passe souvent mes temps libre à faire autre choses que coder :) Mais je me suis donné pour but de faire quelque chose de bien, et surtout, de le terminer un jour ! Alors ne désespérez pas si vous ne voyez pas de posts tout les jours, mais venez me rendre une petite visite de temps en temps :)

Au programme, un maximum de screenshoot, l'histoire du monde et les principes du jeu.

Régalez vous ;)


Premiers essais avec plus de 5000 arbres


Et si on ajoutais un peu de verdure ?


Vision nocturne.. ok, on vois pas grand chose finalement ;)


Enfin du multitextures !!


J'adore les shaders !!! =)


Première importation d'un terrain


La lumière ambiante influe sur tout les éléments du jeu, même le ciel !!


Premières feuilles


Petit délire =) La ville sous les arbres géants étais sympas


Encore des arbres géants =)


Génération de plusieurs arbres


Premiers essais de génération d'arbres aléatoires