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..