Myrne 6312

Un shooter en vue du haut et en coop, développé en 72h dans le cadre du 26e Ludum Dare

Song of the Myrne: What Lies Beneath

Un action-RPG en pixel-art

mercredi 26 décembre 2012

Quick Review: Maldita Castilla

Salut à tous !

Désolé de l’absence de Quick Review de la semaine passée et du retard de celle-ci, à l'avenir je vais essayer de mieux respecter mes horaires ^^.

J'espère que vous avez passé un bon Noel et que vous avez bien mangé. Et si vous n'êtes pas encore gavés, voila de quoi vous satisfaire !

Le jeu d'aujourd'hui est gratuit, donc ne vous en privez pas, ça s'appelle Maldita Castilla et c'est vraiment sympa. Voila pourquoi:



La bonne vieille époque



Il y a pas mal d'années, en 1985 plus exactement, sortait sur bornes d'arcade Ghosts'n Goblins. Un plateformer considéré par beaucoup comme le jeu le plus difficile de tous les temps. Dans ce jeu on devait tuer moult démons, zombies et toute la clique. Il a connu trois suites officielles.

Ghosts'n Goblins, l'ancêtre de Maldita Castilla

Mais pourquoi je vous parle de ça?
Et bien parce que Maldita Castilla en est directement inspiré et partage énormément de points communs avec ce jeu, si vous avez aimé G'n'G vous devriez adorer Maldita Castilla, et si, comme moi, vous n'y avez jamais joué, et bien c'est l'occasion de découvrir le genre.


Tient, c'est moins facile que Call of



On m'a présenté le jeu comme étant facile et des phrases telles que "le principal intérêt c'est le speedrun" ou encore "le truc c'est d'essayer de le finir sans utiliser de continues" résonnent encore en moi. Alors soit je suis complètement nul, soit on m'a menti... Le type ayant fait la review que j'ai vu avait déjà joué aux anciens, ça doit venir de ça...

Mes premières impressions ont étés de cet ordre là:
- Ah ben ça va c'est pas spécialement difficile...
*Dix minutes plus tard*
- How the fuck I am suppose to do that ?!!
- Ah bah tient ça va en fait, c'était pas si difficile
*20 minutes plus tard*
- Bon, ok, j'arrête, je vais dormir, de toute façon ce boss n'est pas humainement battable...

Sans déconner ce jeu est dur. Ça vient sans doute du fait qu'on ne soit plus habitué à cette difficulté aujourd'hui. En gros, vous avez 3 vies de 3 coeurs chacune. et trois coeurs ça part vite, très vite. Surtout que bien souvent vous mourrez de toute façon du premier coup puisque vous êtes projeté un peu plus loin quand vous prenez des dégâts et que vous avez de fortes chances de vous manger un piège/trou.

Le premier boss, jusque là rien de difficile

Alors, comment moi, le type le moins patient de toute la planète, ai-je pu être capable d'apprécier ce jeu? me direz-vous.

Et bien c'est très simple, vous possédez en plus de vos vies, des continues à l'infini. Mais que les puristes se consolent, au quatrième continue perdu on vous fait clairement comprendre que vous êtes une sous-merde en vous annonçant que vous ne pourrez continuer qu'au prix de votre âme. C'est à dire que vous n'aurez pas la "bonne fin" du jeu j'imagine.

Enfin, moi je m'en fous parce que je serai déjà bien content quand je verrai une seule des fin... Parce que oui, il n'y a PAS de sauvegarde ! That's right bitches, retour aux bonnes vielles valeurs. Sur son site, l'auteur explique que pour lui un jeu doit se terminer en une seule session, parce qu'il aime terminer ces sessions de jeux. Ses jeux (j'y reviendrai) se finissent donc tous en 20-60 minutes (sauf si comme moi vous êtes un handicapé du clavier).

Pourquoi est-ce que ça ne me fait pas crier au scandale? Simplement parce que, même si personnellement  les sauvegardes ne me gênent pas, je prend énormément de plaisir à terminer un jeu lorsque la fin se mérite. Dire à ses potes qu'on a terminé Oblivion, c'est une chose, mais leur dire qu'on a terminé Maldita Castilla avec la vraie fin, c'en est une toute autre et ça a beaucoup plus de mérite et de classe (même si vos potes ne sauront pas du tout de quoi vous êtes en train de leur parler).

Pour terminer avec la difficulté j'ajouterai qu'il y a de nombreux checkpoints (à chaque changement d'écran en fait), pour moi, difficulté et niveaux très courts sont la recette gagnante pour faire un jeu difficile sans perdre les 3/4 de ses joueurs en route. il suffit de voir le succès de Super Meat Boy pour voir que j'ai raison (de toute façon j'ai toujours raison). Donc, tant que vous n'éteignez pas le jeu c'est impossible de reculer, vous ne faites que progresser (au pire stagner) et c'est plutôt plaisant.


Try and die



J'aurais pu mettre ça dans le point difficulté mais il était déjà trop long et j'ai pas mal à dire sur cet aspect.

Si vous pensez, comme beaucoup de gens, que le try and die est de la fausse difficulté et que c'est juste un moyen pour gonfler la durée de vie d'un jeu. Je ne pourrai pas tout a fait vous donner tort (de toute façon je ne possède pas ce film merdique) et je vous laisserez même fermer cette page web sans tenter de vous en empêcher. Mais vous passerez sans doute à côté d'excellents titres à cause de ça.

Ces archers ont l'air inofenssifs au premier abord... Mais à plusieurs et bien placés, ils peuvent vite vous faire perdre un précieux coeur

Donc, oui, Maldita Castilla est clairement un jeu "Try and Die". Vous commencez un niveau, vous faites 10 pas, vous mourrez stupidement. Vous recommencez, vous faites dix pas, évitez le piège, faites 2 pas et mourrez. Etc, etc...

Pourquoi est-ce que j'aime ce type de jeu?

Parce que ça me donne l'impression d'évoluer. Une fois le jeu terminé une fois je sais que je pourrai le recommencer beaucoup plus facilement. Est-ce que j'aurai gagné en skill ou est-ce simplement parce que je connaîtrai tout par coeur? Chacun se fera sa propre idée, moi je pense que c'est un peu des deux et que ce type de jeu développe les réflexes et la mémorisation. Sortir grandi d'un jeu, c'est un must !


Des choix !



Le jeu offre quelques choix. Pas le genre de choix qu'on trouve dans Mass Effect ou dans Song of the Myrne (je me fais de la pub oui^^), non, de vrais choix.

Un exemple simple, arrivé à un certain niveau, une flèche m'indique le tableau suivant, il faut sauter dans un trou. Mais le niveau continue par la droite. M'attendant donc à trouver un simple secret dans la pièce à côté, je m'y engage (en vendant un divan au passage). Tient, curieux ça continue vraiment loin. Je fais des trucs de foufous, je meurs pas mal de fois, je choppe une clé qui ouvre dieu sait quoi, le chemin du retour a un peu changé, je re-re-re-re-meurs. Je retente plein de fois, je ré-arrive à la fin du tableau dans le trou, avec la clé, victoire !

La faucille, mon arme préférée (elle agit comme un boomerang)

Un nouveau choix, aller à gauche ou à droite? Disons droite... Je meurs ! (il ne me restait plus qu'un coeur). Je retente de choper la clé et aller à droite. Je meurs, meurs meurs et re-re-meurs plein de fois. Rebelle que je suis, je me dis "fuck this key" (quand je passe en mode rebelle j'en oublie le français). Et fuck la droite je vais à gauche voter communisme. Le jeu continue, je ne sais toujours pas à quoi servait cette clé. C'est ça un vrai choix !

D'ailleurs sur son site, l'auteur nous dit: "I always try to keep the hardest parts optional or near the end of the game, when the player already know how to deal with dangers"


Conclusion



C'est donc un jeu gratuit, beau et amusant (et aussi frustrant à souhait mais chuuut) que je vous propose. Si la bonne vieille époque de la Megadrive et des Castlevania vous manque, n'hésitez pas à y jouer. Maldita Castilla est une pure merveille rétro.

Je vous invite à le télécharger ici.

Si vous aimez bien lire un peu des trucs écrits par des développeurs et que l'anglais n'est pas un problème pour vous, je vous conseille aussi la lecture de la "Philosophie" de l'auteur, qui vous aidera à comprendre pourquoi vous devriez jouer à tous ses jeux et lui construire un temple.

Voila voila, je ferai sans doute une ou deux Quick Review (plus courtes que celle-ci^^) de ses autres jeux, j'en ai téléchargé quelques uns que j'essayerai à l'occasion.

Amusez-vous bien, et à la prochaine.


lundi 24 décembre 2012

Song of the Myrne: Ajout de la localisation anglaise à la démo


Salut tout le monde !

Le titre dit tout, je viens de terminer la traduction anglaise de la démo de SotM. Si vous avez déjà joué à la première démo cette nouvelle version présente peu d’intérêt.

Il y a quelques bugs en moins, les sauvegardes devraient moins souvent (plus du tout j'espère^^) être corrompues, j'ai ajouté une musique au menu principal (merci à RedSam) et deux trois petits détails par-ci par-là (on peut enfin configurer le volume du son et de la musique !).

Mais globalement rien de nouveau à part la traduction anglaise (merci à Côte d'Or pour la grosse aide au niveau des trads).

Cette nouvelle démo se télécharge par-ici.

Comme toujours je suis à l'écoute de vos avis et reports de bugs.

Have fun :)

vendredi 21 décembre 2012

Quelques news sur Song of the Myrne

Salut tout le monde !

Non, je ne suis pas mort. Tout d'abord désolé de ne pas avoir fait de Quick Review cette semaine. Je voulais que la démo de Song of the Myrne reste quelques temps en premier post du blog.

La prochaine QR sortira donc bien mardi.

A part ça j'ai repris le développement de SotM après une petite pause de quelques jours (principalement le temps de terminer Hitman: Absolution, que je vous conseille^^). J'ai réglé quelques petits bugs, renforcé la sauvegarde qui posais parfois (souvent^^') problème à certains d'entre vous (et surtout à moi) et j'ai ajouté deux trois petits détails par-ci par-là ainsi qu'un menu options pour notamment régler le volume du son.

Et puis surtout, j'ai commencé la traduction de la démo en anglais. Etant donné que cette tâche est chiantissime je ne serais pas contre un peu d'aide, donc si vous vous ennuyez et que vous maîtrisez bien l'anglais, n'hésitez pas à me le faire savoir et je vous ferai traduire un ou deux dialogues ;)

Oui, j'ai volé le menu options de Cold World, je sais c'est scandaleux

Une fois que ce seras fait je releaserai cette nouvelle version de la démo (qui aura peu d’intérêt pour les francophones l'ayant déjà finie) puis je pourrai continuer le développement de la suite du jeu.

Il y aura éventuellement une nouvelle démo un peu plus longue et plus complète qui ira jusqu'à la prochaine ville du jeu et qui sera très probablement la dernière démo mise à disposition du publique.

Voila voila. Tout ça pour dire que: "pas d’inquiétude si je donne peu d'infos sur le jeu actuellement, c'est juste qu'il n'y a pas de nouvelles feature en développement" (j'essayerai de créer l'inventaire et les coffres pour la nouvelle démo mais je ne promet rien).

A plus et bonne fin du monde à tous...

lundi 17 décembre 2012

Song of the Myrne: la démo !

Edit 24/12/12: Nouvelle version ici.

Salut tout le monde !

Elle est enfin là, la démo de mon jeu: "Song of the Myrne".

Si vous ne savez pas ce que c'est je vous invite à lire ce billet dans lequel j'avais fait la présentation du jeu ou bien tout simplement à l'essayer puisque c'est maintenant possible.

Vous pouvez télécharger la démo en cliquant sur ce lien. Elle n'est pas très longue et certaines features ne sont pas encore présente (les skills, l'inventaire, les magasins, etc) mais les retours que j'en ai eu sont bons et je pense qu'il y a déjà moyen de bien s'amuser avec (c'est un jeu qui ne se prend pas au sérieux)^^.

Enjoy ;)

Et bien-sûr n'hésitez pas à me signaler si vous rencontrez des bugs ou problèmes. A ce propos je déconseille de lancer le jeu en dessous de la résolution par défaut si vous voulez éviter les problèmes d'interface (au dessus il n'y a aucun problème).

mardi 11 décembre 2012

Quick Review: Corneroids

Hello tout le monde !

Une petite parenthèse avant de commencer la Quick Review. J'ai bientôt terminé la démo de "Song of the Myrne" (soit, le début du jeu). Je devrais la poster ici cette semaine (il reste deux petits trucs à implémenter et évidemment pleins de tests à faire pour ne pas fournir une démo pleine de bugs).

Voila, on peut commencer cette Quick Review qui n'est pas courte du tout en fait ;)

Corneroids, qu'est-ce qui se cache derrière ce nom bizarre? Corneroids c'est Minecraft mais dans l'espace.

Suuuper :/
Encore un plagiat de Minecraft...

Ahah, petits sceptiques que vous êtes, si l'influence de Minecraft est claire et nette et que le gameplay est à première vue le même, le jeu est par contre totalement différent. Ici le but n'est pas de faire sa petite maison puis sont petit village, tout en survivant à des monstres. Non, ici le but principal (actuellement en tout cas), c'est de faire son propre vaisseau spatial puis pourquoi pas une navette de reconnaissance et une méga station spatiale tant qu'on est dans une bonne lancée...

Mais arrête de mythonner, c'est fracking la même chose !!

Hé bien non ! Et voila les raisons du pourquoi du comment. Au passage, je précise que le jeu est encore en alpha et qu'il y a donc très très peu de contenu actuellement, il n'en reste pas moins un énorme dévoreur de temps.

6DOF


A tes souhaits !

Mais non, 6DOF: pour "Six Degrees Of Freedom". Puisque le jeu se déroule dans l'espace, vous êtes libres de vous diriger comme vous le souhaitez dans toutes les directions. C'est un peu perturbant au début mais ça va surtout complexifier, et donc rendre plus intéressante, la construction de vaisseaux puisqu'ils devront non seulement pourvoir tourner à gauche et à droite mais en plus être capable de "regarder" en haut et en bas. Les plus perfectionnistes prendront sans doute beaucoup de plaisir à ajouter la possibilité de rouler ("Do a barrel roll !") et de straffer.

Le centre de commande de mon vaisseau

Pourquoi est-ce si important me direz-vous?


Physic mothafucka' !



Le jeu se base sur la physique newtonienne (celle du monde réel donc, pour ceux qui ne suivraient pas^^). Si vous ne comprenez rien à ce point ou qu'il est trop long, n'hésitez pas à passer au point suivant, j'explique simplement à quel point le jeu est bien foutu niveau physique et je donne deux trois conseils pour ne pas foirer son premier vaisseau.

Ça signifie non seulement que vous devrez faire un vaisseau qui ait la classe (non, ne cherchez pas, aucun rapport avec Newton. Mais personne ne veut être vu aux commandes d'un "Survivaure") mais en plus celui-ci devra être cohérent avec la physique.

L'Helvetica, mon fantastique vaisseau^^

Par exemple, si vous mettez tous vos réacteurs sur le côté gauche de votre vaisseau et que vous construisez tout l'habitacle à droite, votre vaisseau va dévier vers la droite dès que vous tenterez d'avancer.

Un truc qui peut surprendre au début c'est qu'on ne pense pas forcément à la direction lorsqu'on crée son premier vaisseau. J'ai personnellement passé quelques minutes à chercher comment crafter un module de direction avant de me rendre compte que ça n'existait pas.

Comment est-ce qu'on tourne alors? Et bien avec des réacteurs. Réacteurs qui doivent être alimentés en courant d'ailleurs, on est pas dans "Hello Kitty à la conquête de l'espace" ici. Mais les générateurs électriques fournissent du courant à l'infini, il faut pas trop déconner non plus sinon c'est chiant^^").

Et c'est là que j'ai fait ma deuxième bourde du jeu. J'ai collé un réacteur à gauche de mon vaisseau qui pousse sur la carlingue pour aller à droite, et un à droite qui fait l'inverse. Fail !
Les plus doués en physique l'auront peut-être compris, mon vaisseau (qui était en fait une "moto de l'espace" :D) tournais bien à droite et à gauche comme il fallait, sauf qu'en plus il se déplaçait latéralement lorsque je tournais... Logique puisque comme je l'ai dit, les réacteurs appliquaient une force sur le vaisseau.

C'est ballot, comment qu'on fait alors? C'est tout simple, vous voyez ces voitures téléguidées qui ont deux sticks allant de haut en bas? Celles où le stick droit contrôle les roues droite et le gauche les roues gauches. Et bien on utilise un fonctionnement similaire (mais sans les forces de frottement de la route donc c'est adapté).

En fait, si je veux par exemple tourner à droite sans que mon vaisseau ne se déplace (je veux juste qu'il tourne sur lui-même), je vais mettre un réacteur à l'avant-gauche qui poussera vers la droite, et un à l'arrière-droite qui poussera vers la gauche. Magie de la physique ça fonctionne ;)

Vue du dessous avec le binding des touches sur les réacteurs. On voit une partie de ce que j'appelle le "module 6DOF" à droite mais j'ai ajouté des réacteurs plus puissant à l'avant du vaisseau (gauche de l'image) pour qu'il tourne un peu plus vite. 

Voila, ça à l'air un peu compliqué comme ça mais c'est en fait tout à fait logique et une fois qu'on l'a fait une fois on peut le refaire plein de fois. Mon premier vaisseau (qui une fois fini n'avait plus rien d'une moto de l'espace) était un gros tas de réacteurs. Celui que j'ai fait ensuite possédais simplement un module de direction sous la carlingue (c'est un petit amas de 8 réacteurs qui se chargent du 6DOF et que je place le plus au centre possible du vaisseau).

Si ce petit cours de physique n'a pas eu raison de vous, on peut continuer ;)


Du multijoueur



Vous voila en possession d'un super vaisseau de la mort (ou d'un astéroïde sur lequel vous avez fixé des réacteurs, soyons fous !), probablement incontrôlable (j'aime à dire que mon vaisseau "possède des mouvements imprécis" plutôt que d'avouer qu'il a la mobilité d'une vieille à qui on a coupé une jambe).

Il est temps de partir à la conquête de l'univeeeeeeers !

Ah mais euh... c'est à dire qu'en fait mon vaisseau fait 100 tonnes et que j'ai des réacteurs tout pourris, il est pas vraiment fait pour la survie et pour ce qui est de la fuite il faut pas y penser.

Pas de problème, on va y ajouter de l'armement. Hop, c'est parti, on ajoute une console d'armes, quelques armes basiques (et une caméra bien positionnée pour l’armement vu que la caméra de contrôle du vaisseau n'est peut-être pas la plus adaptée pour des tirs précis)

Piou piou !

...et je pourrai couvrir ma fuite en tirant sur les petits vaisseaux plus rapides mais peu armés qui me poursuivront !

Ou pas...

Je résume ce qu'on a:
  •  Une console pour diriger le vaisseau (on assigne des touches aux réacteurs, une touche peut-être assignée à plusieurs réacteurs bien-sûr sinon ce serait impossible à diriger avec "mon" module 6DOF). Cette console affiche aussi la vue d'une éventuelle caméra bien positionnée (j'aime bien l'avoir à l'arrière du vaisseau).
  • Une ou plusieurs consoles d'armement avec des caméras liées (ou pas mais viser quand on est dans un vaisseau et qu'on ne voit donc pas les armes à l'extérieur ça reste difficile^^. après on peut mettre des fenêtres partout mais bon...).
Ah ben, comment je fais pour tirer et avancer en même temps?

Et BOOOOM c'est là que le potentiel de ce jeu m'a frappé de plein fouet. Il faut être plusieurs pour avoir le plein contrôle de son vaisseau !

Après on peut toujours jongler entre l'armement et la direction en lançant le vaisseau à pleine vitesse en ligne droite le temps de tirer un peu puis revenir à la console de contrôle avant que le vaisseau ne perde trop de vitesse ou pour manœuvrer.

Le mode multi n'est actuellement pas disponible MAIS, le développeur du jeu (Mikko) a annoncé il y a quelques jours que ce mode était presque terminé, il reste quelques ajustements à faire mais c'est déjà jouable.

Donc je vais vite fait vous parler du contenu actuellement disponible et ensuite je vous donnerai ma vision prophétique de l'avenir du jeu^^.


Le contenu



Le jeu est actuellement en alpha et très pauvre en contenu. Mais Mikko a annoncé qu'une fois le multijoueur terminé, il se focaliserait sur l'ajout de contenu.

Donc ce qu'on a, c'est déjà la possibilité de créer son propre vaisseau et de l'améliorer avec de meilleurs composants. C'est déjà pas mal, les jeux où on peut créer son propre vaisseau, du design au fonctionnement, sont rares.

Il n'y a actuellement que deux types d'ennemis et ils sont vraiment sans danger.

Houuu la vilaine bêbête !

Pour ce qui est de l'exploration c'est très limité, il y a juste des astéroïdes tous plus ou moins les mêmes.

Un pack d'objets supplémentaires est ajoutable (le jeu est ouvert au modding), le DarthNox's Itemset. Il ajoute quelques objets et nerfe certains des items de base pour ne pas avoir tout trop vite. Je vous le conseille, par contre il fait planter les coffres (qui sont pas plus utiles que ça actuellement).

Il n'y a pas encore de gravité ce qui est assez gênant (j'aimerais bien pouvoir marcher pour me déplacer dans mon vaisseau sans trop galérer^^) mais le (les?) développeur y travaille il me semble.

Voila. Ne jugez pas trop le jeu sur ce faible contenu, ça va changer très prochainement apparemment et n'oubliez pas que Minecraft, un jour, c'était ça.

Donc quand on voit ce que c'est devenu aujourd'hui... ça promet !


Ma vision de l'avenir



- Capitaine McBeldarak: Holy shit ! Une flotte de l'evil "Guilde dé RoxorDu42" ! Je veux tout le monde à son poste !

- La blonde qui sert à rien: Oh mon dieu capitaine ! On va tous mourir ! Je ne veux pas mourir vie~ vilipendée par ces salauds !

- Capitaine McBeldarak: Ne craint rien Blondie, on va s'en sortir ! Monsieur Speedy ! Aux cannons ! Commencez par les vaisseaux les plus faibles !

- Monsieur Speedy: Ça marche capitaine ! Bring it on maudits RoxorDu42's !

- Capitaine McBeldarak: Monsieur Spok ! Je vous vois sur les caméras de contrôle, je ne sais pas ce que vous faites dans la salle du module de direction mais à votre place je sortirais tout de suite de l~

* Venant de la salle du Module-6DOF * : ARRRRHHHH CA BRUUUUUULE ! MON VISAAAAAGEGLARGLLL....

#Spok est mort#

- Mativer, dans la salle de contrôle: Désolé ! Je pensais que la salle avait été évacuée...

- Capitaine McBeldarak: ...Maintenant elle l'est... Où est le Sergent Torticoli d'ailleurs?

- La blonde qui sert à rien: Il à pris un pistolet laser et un couteau et est parti à l'assaut d'un des vaisseaux !


- Capitaine McBeldarak: Ah... Je... Rappelez-moi pourquoi j'ai engagé ces mecs?

#Torticoli est mort#

- La blonde qui sert à rien: Ils étaient bon marché...

* BOOOOOM *

#Speedy est mort#

- Capitaine McBeldarak: Ok. Mativer, affrétez mon fighter et préparez vous à ouvrir le hangar numéro 2, je pense que je vais prendre les choses en main.

* Plus tard, alors que la bataille est terminée (et contre toute attente, gagnée) *

- Capitaine McBeldarak: Bon dieu ! Ces enfoirés ont pas mal amoché mon fighter. Heureusement qu'ils avaient refait leur vaisseau de commandement sur le modèle Star Wars, avec la salle la plus critique juste à côtés des hangars et aucune surveillance...

- La blonde qui sert à rien: Oh, vous alors, hihihihi.

- Capitaine McBeldarak: Bon, si c'est la guerre qu'ils veulent, ils l'auront ! Azolol, contactez toute la flotte, on part à l'assaut de leur vaisseau-mère !

A la base:
- Commandant ! C'est encore ce boulet de McBeldarak. 
- On l'avait pas renvoyé? 
- Heu, bah si... Apparemment il part en mission suicide, bon débarras !
____________________________________

Voila voila. J'exagère sans doute mais je pense qu'il y a un potentiel absolument énorme. Avec Minecraft, on assiste à la naissance d'un genre nouveau, et si Minecraft est à ce genre ce que Doom est au FPS, je n'ose imaginer ce que sera le Half-Life² du Minecraft-like...

Personnellement j'ai hâte de monter un serveur entre potes et de voir un empire galactique se construire petit à petit.


Conclusion



Corneroids c'est bon. Vous pouvez y jouer gratuitement en téléchargeant la version alpha à cette adresse. Et si le contenu actuel n'est pas énorme, ça reste un chouette jeu qui vous occupera pas mal d'heures. Et surtout, il y a un potentiel absolument hallucinant pour son avenir.

Conseil: si votre vaisseau est correctement construit mais qu'il n'avance pas, c'est probablement que vous l'avez construit trop près d'un astéroïde (qui du coup fait partie du vaisseau et ajoute un max de poids). Quand vous posez le premier bloc de votre vaisseau, vérifiez bien que la flèche rouge sur le bloc ne soit pas lié à un astéroïde.

Je vous en reparlerai sans doute de temps en temps.

Amusez-vous bien d'ici-là :)


mercredi 5 décembre 2012

Quick Review: Eschalon: Book I

Salut les gens (et les autres aussi) !

Non, vous ne rêvez pas, une Quick Review qui sort dans les temps, ça faisait longtemps^^. Aujourd'hui je vais vous parler d'un excellent RPG qui conviendra sans doute aux hardcores gamers mais aussi aux moins hardcores.

Il s'agit d'Eschalon. Il y en a deux de disponibles et un troisième en développement et ils sont tous très semblables. Je ne parlerai que du Book I vu que je n'ai pas encore joué à Eschalon: Book II.



Il s'agit donc d'un RPG old-school en vue isométrique. C'est au tour par tour mais ça ne se sent pas vraiment en dehors des combats, parce que le système est bien foutu.

Et voila les raisons pour lesquelles vous devriez déjà être en train d'y jouer plutôt que de lire cette Quick Review.


Un monde ouvert


Ouep, un monde ouvert... Je dois le redire où vous êtes déjà en train de l'acheter?^^

Bon, c'est pas aussi ouvert que peut l'être un Elder Scrolls vu que le jeu fonctionne par cartes avec chaque fois quelques points de passages permettant de changer de carte mais c'est déjà pas mal.

Vous pouvez dormir n'importe où mais certains réveils seront plus difficiles (voir mortels^^) que d'autres.

Ça offre pas mal de libertés ce qui est vachement sympa. un exemple simple, pour une quête je devais traverser une forteresse. Arrivé à la forteresse on m'annonce qu'elle est tombée aux mains des gobelins et qu'ils ont bloqué le mécanisme permettant d'ouvrir le passage entre la partie Ouest et Est de la forteresse.

Je peux soit aller dans les sous-terrains de la forteresse pour débloquer la porte, soit faire un détour par la forêt en allant vers le Nord. Et bien j'ai finalement choisi de n'en rien faire et de passer par le Sud. Je suis trop un rebelle de la forêt... Arrivé de l'autre côté j'ai bien entendu pris soin de libérer la forteresse en débloquant le mécanisme d’ouverture, plus proche de ce côté que de l'autre.

Bref, il y a moyen de s'amuser.


C'est hardcore... mais pas hardcore...



J'adore les RPG qui sont complets. En général je lis pleins de trucs sur internet, je deviens tout fébrile face à la complexité du titre et au fait qu'il permette pas mal de liberté sur ce qu'on fera de son perso. 

Ensuite j'y joue dix minutes et j'arrête pour ne plus jamais y rejouer parce que je ne comprend rien ou que je ne sais pas trop où aller pour commencer... (parfois j'y revient un an après et j'y joue des heures et des heures /hi Arcanum)

Mais pas de ça ici. Le jeu est très complet avec un cycle jour/nuit, une feuille de personnage très complète et  très libre (j'y reviens après). Et pourtant la prise en main du titre est incroyablement facile. Facile au point que ça en est déconcertant.

Certes, la création du personnage est un peu ardue, c'est toujours difficile de construire son perso sans avoir joué au jeu avant. Mais pas de panique, on ne peux pas vraiment "rater" un personnage je pense.

La feuille de création de personnage. Super complète et offrant plein de libertés

Passé ce cap la prise en main sera vraiment super évidente: 
Clic gauche pour taper/observer/utiliser
Clic droit pour lancer un sort.

On vous prend aussi un peu par la main au tout début pour vous donner une piste d'où aller, mais on vous lâche très vite, on est pas dans un Call of Duty ici.

Et malgré l'apparente facilité du début, vous chopperez des maladies, vous galérerez, vous devrez souvent vous replier pour revenir après dans un combat,... Parce que la difficulté est bien réelle... Mais jamais vous ne serez perdu à cause de l'interface, d'une mécanique du jeu ou quoi que ce soit de ce style.

Pour terminer je ne pense pas qu'il y ait vraiment moyen de bousiller sa partie comme dans la plupart des RPG (je te mauuuuudit Baldur's Gate 2 !!!!). Tant que vous faites plusieurs sauvegardes pour ne pas vous retrouvez coincé dans un combat que vous n'avez pas vu venir et que vous ne faites pas totalement n'importe quoi ("Tient, je vais massacrer tous les PNJ de cette ville, hihihi"), il ne devrait pas y avoir de problème.


Libertééééé



C'est un jeu dans lequel on est très libre. Ce serait difficile de tout détailler mais voila quelques exemples en plus de la map ouverte dont j'ai déjà parlé:
  • Style de jeu non imposé par la classe
Personnellement je joue un mage en armure lourde qui n'a pas peur de sortir l'épée du fourreau quand l'ennemi est un peu trop près. Il m'arrive même parfois de tirer à l'arc (mais un peu comme l'elfe dans Naheulbeuk^^).

Il y a vraiment moyen de s'amuser à ce niveau là puisque vous pouvez apprendre de nouveau skill à chaque level (attention ça coûte beaucoup plus de points d'apprendre une nouvelle compétence que d'en améliorer une déjà apprise).

J'aime beaucoup le style graphique des bâtiments
  • Subtil?, pas subtil?
Un truc qui m'a toujours ennuyé dans pas mal de jeux c'est d'être un méga bourrin craint par tout l'univers et de n'avoir d'autre choix que de me rouler en boule pour pleurer lorsque je tombe face à un petit coffre en bois fermé à clef...

Hé bien ici non ! Si vous êtes un mec pas subtil vous pouvez très bien défoncer tout ce qui passe (ce n'est pas sale) à gros coups de hache ou avec des boules de feu (à la dague ça marche moins bien.. Aie, l'oeil de mon perso. True story). En plus, entrer dans une pièce en défonçant la porte est toujours la plus classe des entrées possibles je trouve.

Vous pouvez aussi ouvrir la porte/coffre en crochetant la serrure ou bien en trouvant la clé tout simplement (ou avec un sort d'ouverture). A vous de voir.

Enfin, vous aurez aussi l'occasion de parfois utiliser l’environnement pour éviter des combats (c'est rare je ne vais pas vous mentir). Il y a parfois des tonneaux explosifs près des mobs qui vous faciliteront le boulot si vous prenez la peine d'observer l'environnement avant de foncer dans le tas.


Ces petits détails qui font tout



Ça peut paraître anodins mais c'est tous ces petits détails qui au final rendent ce jeu unique.

Même si le jeu est en 2D, on peut voir l'équipement sur notre perso. Pour moi c'est vraiment LE détail qui peut renforcer ou pourrir l'immersion dans un jeu. En tout cas c'est toujours très plaisant à voir... surtout quand il y a des capes ! Ce qui est le cas ici.

C'est pas Crysis 3 mais le jeu est plutôt joli je trouve.

Ensuite, la carte... Là ça tient du génie. Les développeurs ont eut l'excellente idée de mettre une compétence cartographie. Plus vous êtes bons dans cette compétence, plus votre minimap sera précise. Et attention parce que c'est pas tout. Lorsque vous ajoutez un point en cartographie, toutes vos minimaps déjà explorées ne vont pas devenir plus précises par magie, non non non. C'est seulement si vous repassez aux mêmes endroits que vous verrez la carte s'améliorer. Immerssiiiiiiioooooooooooonnnn.

Concernant les cartes, je précise que la cartographie n'influence pas la carte du monde... Parce qu'il n'y en a pas... Dans l'histoire, votre personnage se réveille en ayant perdu tous ses souvenirs (pas très original je sais) et sans rien connaitre de la région où il a atterri. Donc il ne va pas sortir une carte du monde de son inventaire comme par magie et comme c'est souvent le cas dans ce genre de jeux. Non, ici on va simplement acheter une carte à un marchand... Et ne vous attendez pas à y voir un point clignoter avec écrit "Vous êtes ici", non, vous allez réellement lire la carte. "Bon, je suis où là, je viens de passer telle forêt, je dois donc être à peu près ici. Ah ! Il y a une ville toute proche".

... Je n'ai jamais trouvé cette ville :/

Autre skill intéressant  la connaissance du "lore" (qui peut se traduire par "traditions", en gros c'est ce qui constitue un univers: bestiaire, légendes, géographie, etc etc). Si ce skill est élevé votre perso pourra éventuellement reconnaître des objets normalement non-identifiés par exemple.

Un petit avant dernier, celui-là est mééééga classe. Vous pouvez écraser les ennemis avec les herses quand elles sont contrôlées par un levier. On ne s'en lasse jamais.

Et pour terminer, un détail tout con mais... Les torches sont réellement utiles. Y'a pas mal de RPG où on peut équiper une torche et où au final ça ne sert à rien. Ici, dans un donjon, sans torche ni vision nocturne ni rien, on n'y voit quasiment rien. Dès lors la gestion des torches devient quelque chose de crucial. Franchement je plains le mec qui se retrouvera au milieu d'un donjon avec sa dernière torche qui s'éteint. Mais on peut ramasser les torches qui sont aux murs, ce qui est assez cool (ou en acheter évidemment).


Conclusion


Voila, je pourrais continuer des heures et vous spoiler tout le jeu (bien que je ne sois pas très loin dans l'histoire) mais je vais plutôt vous laisser l'essayer vous-même.

J'ai campé trois jours devant la porte de la crypte pour la défoncer :D

Ce jeu est génial et si les bons vieux RPG old school vous manquent, je vous le conseille un millier de fois. Il est complet, on sent qu'il est fait par des passionnés, les musiques sont très jolies, les graphismes aussi bien qu'ils soient d'un autre âge (mais ça ne pique pas les yeux^^),...

Et la bonne nouvelle c'est que vous pouvez vous le procurer pour pas cher du tout puisqu'il est actuellement dans le Be Mine Bundle 6. Pour minimum un dollar vous avez le jeu avec une clé Steam et d'autres jeux plus des musiques. Donc n'hésitez pas, ça se passe par-là.

Si vous arrivez un peu tard il est disponible sur Steam par-ici. Une démo est disponible si vous ne me faites pas confiance^^.

Je rappelle qu'il y a une suite, Eschalon: Book II. Apparemment c'est la suite niveau histoire mais on peut y jouer sans avoir fait le premier. Il fait quelques apports, notamment au niveau de l'interface et ajoute des skills (prend en de la graine Bethesda ! On ne retire pas à la pelle des skills d'un RPG quand on sort une suite !!).

Enfin, un Book III est prévu pour l'été 2013 avec la fin de l'histoire (mais une fois encore on pourra y jouer sans avoir joué aux deux autres), des améliorations graphiques, un éditeur de levels, des features en plus et surtout des combats plus tactiques (je dois avouer que dans le Book I les combats sont pas terribles).

Voila voila. Il me reste à lui donner une note donc je dirais un bon 8/10 (j'enlève un point pour les combats trop nombreux/longs :/ ).

A la prochaine et amusez-vous bien d'ici-là.

Et pour ceux que ça intéresse, Song of the Myrne est toujours en développement, si je ne poste plus rien dessus c'est parce que je n'ai rien de neuf à montrer, le "coeur" du jeu est terminé pour la démo (je n'ajouterai pas de feature avant de la sortir, bien que d'autres trucs soient prévus ensuite). Mais ça avance ! Lentement, mais surement.


mercredi 28 novembre 2012

Tutorial: La mise en réseau sous Unity3D - Partie 4


Salut tout le monde !

Quatrième et dernière partie du tutorial. Si vous arrivez en cours de route, ça commence par-là.
Dans cette partie on va apprendre à déclencher un évènement sur le réseau. En l’occurrence l'activation d'un ascenseur.

Vous vous demandez peut-être pourquoi on ne se contente pas de synchroniser la position de l'ascenseur via une NetworkView. Si on fait ça, l'ascenseur ne saura pas s'il est en position haute ou en position basse. Le mouvement de l'ascenseur sera également plus fluide avec notre façon de faire et ça économisera de précieuses ressources réseau. Mais il y aurait bien entendu moyen d'obtenir le même résultat en jouant avec une NetworkView et en observant la position.y de l'ascenseur pour savoir s'il est en haut ou en bas.

Mise en place de la scène



On va améliorer un peu notre arène. Je vous laisse faire ça comme vous voulez mais en gros il faut une partie surélevée qu'on ne pourra atteindre qu'avec l'ascenseur.

Placez au moins un ascenseur (un simple cube plat) muni d'un levier/bouton ou truc quelconque pour l'activer. Je vous conseille de lui mettre un pied de support comme moi, ça nous permettra d’appeler l'ascenseur si on est en bas et lui en haut.

Voila à quoi ressemble ma map:



Et voila mon ascenseur pour ceux qui veulent:
lift.fbx

Si vous l'utilisez voila comment régler les options d'importation.


Désactivez aussi l'animation de l'objet. et placez une BoxCollider sur chacune des parties.

Bien, on va régler rapidement l'ascenseur:
  • Placez une BoxCollider en mode isTrigger qui englobe tout l'ascenseur (nacelle et pilier). C'est cette box qu'on activera.
  • Créez un nouveau script en javascript et nommez-le Lift.js
  • Assignez le script à votre/vos ascenseur(s)

Ça devrait ressembler à ça

On va aussi ajouter un composant essentiel à notre Cuby, un champs d'action. Voyez ça comme un espèce de bras virtuel, ça lui permettra d'activer les objets qui sont devant lui.
  • Créez un nouvel Empty GameObject et appelez-le "ActionField".
  • Ajoutez-lui une CollisionBox en mode isTrigger et donnez-lui une forme de lame verticale qui s'étendra devant Cuby. 
  • Attachez-là à Cuby.




Scripting


  • Ouvrez le script Lift.js dans votre éditeur de code
On va commencer par l'écrire sans tenir compte du réseau.

var down:boolean; //L'ascenseur est il en position basse ou en haut?
var latence:float = 0.1; //plus elle est grande, plus l'ascenseur ira lentement
private var isMoving:boolean; //si l'ascenseur est en mouvement, on ne peux pas l'activer

var upPosition:float; //coordonnée y de la position haut de l'ascenseur
var downPosition:float; //idem mais position basse


function OnSwitched()
{
if(!isMoving)
{
isMoving = true;
if(down)
{
//monte
while(transform.localPosition.y < upPosition)
{
yield new WaitForSeconds(latence);
transform.position.y += 0.1;
}
down = false;
}
else
{
//descend
while(transform.localPosition.y > downPosition)
{
yield new WaitForSeconds(latence);
transform.position.y -= 0.1;
}
down = true;
}
isMoving = false;
}
}

function OnTriggerStay(col:Collider)
{
if(col.transform.name == "ActionField")
{
if(col.transform.root.networkView.isMine) //Evite de pouvoir activer l'ascenseur si c'est l'ennemi qui est dans la bonne position pour l'activer
{
if(Input.GetKeyDown(KeyCode.E) || Input.GetKeyDown(KeyCode.Return))
    {
    OnSwitched();
    }
    }
    }
}

  • Configurez ensuite le script dans l'inspector. Voila ma config, les coordonnées seront très probablement différentes dans votre projet.


Normalement, votre ascenseur doit fonctionner en local ("E" ou "Enter" pour l'activer).

Quelques conseils:
    • Le script n'est pas très précis, c'est pourquoi la downPosition de l'ascenseur est différente de sa position de départ.
    • Le mouvement de l'ascenseur n'est pas du tout fluide (si on vous demande, dites que c'est pour un effet ascenseur antique^^). Ça peut s'arranger en jouant avec la variable latence et le changement de position (ex: transform.position.y -= 0.1; ).
    • Vous pouvez aussi utiliser la fonction transform.Translate plutôt que de changer directement la position.y

La partie réseau



Si vous avez testé le jeu en multi, vous avez du vous rendre compte que l'ascenseur ne s'active pas sur les autres clients.

On va remédier à ça très facilement.
  • Commencez par ajouter une NetworkView à votre ascenseur. Cette NetworkView ne doit rien observer ("none").
Pour que l'ascenseur se synchronise entre les clients on va utiliser ce qu'on appelle un RPC (Remote Procedure Call). Comme le nom l'indique, on va appeler (call) une fonction (une procédure) à distance (remote). Vous allez voir, c'est très facile.

On va d'abord préciser à Unity que notre fonction OnSwitched() est une RPC. Pour ça, on ajoute "@RPC" devant la déclaration de la fonction.


On va ensuite simplement changer la manière dont on appelle cette fonction.

Au lieu de:

if ( Input.GetKeyDown(KeyCode.E) || Input.GetKeyDown(KeyCode.Return))
{
 OnSwitched();
}

Tapez:

if ( Input.GetKeyDown(KeyCode.E) || Input.GetKeyDown(KeyCode.Return))
{
networkView.RPC("OnSwitched", RPCMode.All);
}

Rien de bien neuf ici, comme pour l'instanciation en réseau, le RPCMode détermine sur quel groupe de clients on doit appeler la fonction.

Chez moi les joueurs non-serveurs ne décollent pas avec l'ascenseur, je vous conseille donc de tout de même synchroniser la position (le Transform) de l'ascenseur avec la NetworkView. De cette façon, il n'y aura aucun problème et l'état up ou down de l'ascenseur sera bien synchronisé par notre RPC.

Voici le script final:

Cliquez pour le voir en grand

Vos ascenseurs devraient maintenant fonctionner comme prévu.


Conclusion



Comme promis, cette partie du tutorial était très courte. Les RPC sont simples a utiliser mais c'est un outil vraiment puissant que vous utiliserez très régulièrement.

On a passé en revue tous les éléments de base de la mise en réseau et vous devriez maintenant être aptes à réaliser vos propres petits jeux en réseau puisque vous savez désormais:
  • Synchroniser la position et l'orientation d'objets
  • Instancier des objets tels que les joueurs ou les projectiles sur le réseau
  • Appeler des fonctions locales à distance sur toutes les machines connectées
Vous remarquerez qu'il manque le quatrième pilier d'un jeu en réseau: la synchronisation de variables (ex: synchroniser le contenu de deux coffres dans un jeu où leur contenu est sélectionné au hasard en début de partie). Je ne maîtrise malheureusement pas assez le sujet que pour écrire un tutorial là dessus. Je vous donne quelques pistes un peu plus loin.

On a également créé un véritable jeu qui bien que très basique et à des années lumières d'un Unreal Tournament par exemple, pourra vous occuper un petit moment avec des amis. N'hésitez pas à le peaufiner et à y ajouter des features le temps de vous familiariser avec le réseau. Je serai ravi de voir ce que vous en faites donc n'hésitez surtout pas à poster vos versions modifiées dans les commentaires.

J'espère que ce tutorial vous a plût et que je ne vous ai pas donné trop de mauvais conseils. Je posterai des annexes si je fais des découvertes intéressantes.

Voila mon projet Unity terminé:
Télécharger


Aller plus loin



Je vous parlais de la synchronisation de variables, cela se fait via la fonction OnSerializeNetworkView().

Voila le passage de la documentation Unity parlant de ça. Et bien entendu voici le Network Reference Guide d'Unity où vous trouverez pas mal d'informations importantes.

Il ne me reste plus qu'à vous donner un dernier conseil: pratiquez ! Pratiquez, pratiquez et pratiquez encore. Rome ne s'est pas faites en un jour donc ne vous découragez pas si vous n'arrivez pas tout de suite aux résultats escomptés. Faire un jeu en réseau n'est pas la chose la plus simple du monde mais avec un peu de persévérance vous devriez y arriver.

N'hésitez pas non plus à demander de l'aide sur les forums où des gens plus qualifiés pourront vous aider. A ce propos je vous déconseille Unity Answers vu que vos messages doivent être validés pour apparaître  ce qui vous fera perdre un temps précieux. Personnellement je demande généralement de l'aide sur Reddit/r/Unity3D. La communauté est très sympa et généralement de bon conseil.

Bonne continuation :)


Tutorial: La mise en réseau sous Unity3D - Annexe 1

Salut tout le monde !

Désolé pour le retard pris dans mes publications du tutorial. Avant de passer à la partie 4 du tuto j'aimerais vous faire partager une petite découverte faite par Pascal Monnier, un grand merci à lui.

Si, contrairement à moi, vous avez testé le projet en réseau, vous aurez probablement constaté pas mal de problèmes de lags. Cela est dû, entre autre, au fait que nous déplaçons notre personnage en touchant directement à sa position plutôt qu'en lui appliquant des forces.

Du coup, sa position est envoyée régulièrement sur le réseau, mais entre chaque envoi, le personnage est tout simplement immobile tant qu'il ne reçoit pas de nouvelles instructions  Si un retard survient dans l'envoi ou que des packets se perdent sur le réseau, votre personnage recevra une position beaucoup plus éloignée que la sienne et fera un petit bond de téléportation. C'est moche et surtout ça ruine le gameplay.

Notez qu'on a pas ce problème avec les projectiles tirés puisqu'on synchronise leur rigidbody et donc leur vitesse. Entre deux reçus de données, le projectile continue donc son chemin.

Mais on va remédier à ce problème en "trichant" un peu. Entre deux reçus de position, on va tenter de deviner la prochaine position du player adverse, avant de la recevoir et de corriger les quelques imprécisions.

Ce processus s'appelle l'interpolation et vu qu'il est assez compliqué on va se contenter de copier/coller un script donné dans le tutorial réseau d'Unity. Je vous recommande la lecture de cet article pour mieux comprendre le principe. C'est expliqué de manière totalement accessible et en français donc ne vous en privez pas.

Je vous encourage aussi à lire le script et à essayer de le comprendre quand vous aurez le skill pour. Mais il y a de fortes chances que ce soit du chinois pour vous actuellement.

Vous pouvez le télécharger ici: NetworkRigidbody.cs

Je vous le copie en fin d'article au cas où le lien viendrait à mourir.

Je m'excuse pour la mise en page un peu moisie, j'ai copier/coller le truc du PDF Unity et évidemment c'est pas super.

La suite est simple. On va simplement placer le script sur notre "Player" et l'assigner à la NetworkView à la place du Transform de l'objet.


Et voila, en principe c'est bon :)

Une fois encore je n'ai pas le matériel pour tester ça sur un réseau donc faites moi savoir s'il manque une étape ou si ça ne fonctionne pas correctement.

Et comme promis voici le script. Attention, c'est à coller dans un script en C#:

______________________________________


using UnityEngine;
using System.Collections;

public class NetworkRigidbody : MonoBehaviour
{
public double m_InterpolationBackTime = 0.1;
public double m_ExtrapolationLimit = 0.5;
internal struct  State
  {
internal double timestamp;
internal Vector3 pos;
internal Vector3 velocity;
internal Quaternion rot;
internal Vector3 angularVelocity;
  }
  // We store twenty states with "playback" information
  State[] m_BufferedState = new State[20];
  // Keep track of what slots are used
  int m_TimestampCount;
  void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info) {
  // Send data to server
  if (stream.isWriting)
  {
Vector3 pos = rigidbody.position;
Quaternion rot = rigidbody.rotation;
Vector3 velocity = rigidbody.velocity;
Vector3 angularVelocity = rigidbody.angularVelocity;
stream.Serialize(ref pos);
stream.Serialize(ref velocity);
stream.Serialize(ref rot);
stream.Serialize(ref angularVelocity);
  }
  // Read data from remote client
else
{
  Vector3 pos = Vector3.zero;
  Vector3 velocity = Vector3.zero;
  Quaternion rot = Quaternion.identity;
  Vector3 angularVelocity = Vector3.zero;
  stream.Serialize(ref pos);
  stream.Serialize(ref velocity);
  stream.Serialize(ref rot);
  stream.Serialize(ref angularVelocity);
 
  // Shift the buffer sideways, deleting state 20
  for (int i = m_BufferedState.Length-1; i >= 1; i--)
  {
    m_BufferedState[i] = m_BufferedState[i-1];
  }
 
  // Record current state in slot 0
  State state;
  state.timestamp = info.timestamp;
  state.pos = pos;
  state.velocity = velocity;
  state.rot = rot;
  state.angularVelocity = angularVelocity;
  m_BufferedState[0] = state;
 
  // Update used slot count, however never exceed the buffer size
  // Slots aren't actually freed so this just makes sure the buffer is
  // filled up and that uninitalized slots aren't used.
  m_TimestampCount = Mathf.Min(m_TimestampCount + 1, m_BufferedState.Length);
  // Check if states are in order, if it is inconsistent you could reshuffel or
  // drop the out-of-order state. Nothing is done here
  for (int i=0;i   {
   if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
    Debug.Log("State inconsistent");
  }
  }
  }

 // We have a window of interpolationBackTime where we basically play
 // By having interpolationBackTime the average ping, you will usually use interpolation.
 // And only if no more data arrives we will use extra polation
 void Update () {
  // This is the target playback time of the rigid body
  double interpolationTime = Network.time - m_InterpolationBackTime;
 
  // Use interpolation if the target playback time is present in the buffer
  if (m_BufferedState[0].timestamp > interpolationTime)
  {
   // Go through buffer and find correct state to play back
   for (int i=0;i   {
    if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
    {
     // The state one slot newer (<100ms best="best" p="p" playback="playback" state="state" than="than" the="the">     State rhs = m_BufferedState[Mathf.Max(i-1, 0)];
     // The best playback state (closest to 100 ms old (default time))
     State lhs = m_BufferedState[i];
   
     // Use the time between the two slots to determine if interpolation is necessary
     double length = rhs.timestamp - lhs.timestamp;
     float t = 0.0F;
     // As the time difference gets closer to 100 ms t gets closer to 1 in
     // which case rhs is only used
     // Example:
     // Time is 10.000, so sampleTime is 9.900
     // lhs.time is 9.910 rhs.time is 9.980 length is 0.070
     // t is 9.900 - 9.910 / 0.070 = 0.14. So it uses 14% of rhs, 86% of lhs
     if (length > 0.0001)
      t = (float)((interpolationTime - lhs.timestamp) / length);
   
     // if t=0 => lhs is used directly
     transform.localPosition = Vector3.Lerp(lhs.pos, rhs.pos, t);
     transform.localRotation = Quaternion.Slerp(lhs.rot, rhs.rot, t);
     return;
    }
   }
  }
  // Use extrapolation
  else
  {
  State latest = m_BufferedState[0];

  float extrapolationLength = (float)(interpolationTime - latest.timestamp);
  // Don't extrapolation for more than 500 ms, you would need to do that carefully
  if (extrapolationLength < m_ExtrapolationLimit)
  {
   float axisLength = extrapolationLength * latest.angularVelocity.magnitude * Mathf.Rad2Deg;
   Quaternion angularRotation = Quaternion.AngleAxis(axisLength, latest.angularVelocity);
 
   rigidbody.position = latest.pos + latest.velocity * extrapolationLength;
   rigidbody.rotation = angularRotation * latest.rot;
   rigidbody.velocity = latest.velocity;
   rigidbody.angularVelocity = latest.angularVelocity;
    }
  }
  }
}

______________________________________

Nous voila armés pour la partie 4, hiaaarrr !


mardi 27 novembre 2012

Quick Review: Cargo Commander

Salut tout le monde !

Je sais ce que vous vous dites, oui il n'y a finalement pas eu de QR la semaine passée, je sais c'est scandaleux^^.

Pour me faire pardonner je vous ai dégoté un excellent jeu (c'est pas l'avis de jeuxvideo.com, ce qui prouve que j'ai sans doute raison^^) cette semaine, qui possède un gros potentiel de rejouabilité. Si vous savez lire un titre vous savez déjà qu'il s'agit de Cargo Commander^^.



Alors, de quoi s'agit-il? Ce jeu est assez original et si je devais lui donner un genre je dirais qu'il s'agit d'un "Roguelike-ish Gravity-Plateformer". Ne cherchez pas sur Wikipedia, je viens d’inventer ce terme.

Donc à la base il s'agit d'un plateformer... dans l'espace... avec pas mal d'éléments Rogue-like tels que la génération aléatoire des levels (rejouabilité !) et un genre de permadeath (sauf qu'on ne perd pas tout).

Vous saupoudrer le tout avec un bon humour à la Portal et vous obtenez Cargo Commander.


Gravity



Dans Cargo Commander vous incarnez un type chargé de récupérer du matériel (genre des pulls en poils de chats et autres nains de jardins) dans des conteneurs abandonnés dans l'espace.

Le schéma est toujours le même. Depuis votre cargo (un conteneur qui vous sert de maison) vous actionnez un gros aimant qui va attirer des conteneurs (qui détruiront à moitié votre maison en la percutant^^). Vous explorez ce conteneur puis vous vous lancer dans le vide et la non-gravité de l'espace en retenant votre respiration (on est badass ou on ne l'est pas) jusqu'au prochain conteneur que vous ouvrez avec votre laser (le décor est destructible) avant de le fouiller, etc.

Cliquez pour agrandir les images
Votre "charmante" petite maison

Au bout d'un moment un vortex s'ouvre et vous devrez alors rapidement rejoindre votre maison en retraversant les conteneurs qui s'effondrent autour de vous, c'est jouissif !

Bien entendu il y a généralement des monstres dans les conteneurs (et certains dans l'espace) qui ne vous faciliteront pas la tâche, surtout que les cartouches sont assez limitées (surtout au début).



Addictif


Ce jeu possède lui-aussi le syndrome du "allez, une dernière partie ne peux pas faire de mal". Ici aussi chaque partie vous fera progressivement évoluer et débloquer des améliorations pour votre maison ou votre personnage.

De plus, si le jeu n'offre malheureusement pas de mode multi, il y a par contre un bon système de scoring en place. Vous évoluez dans des zones, chaque zone est générée aléatoirement selon son nom et vous pouvez "créez" vos propres zones.

Chaque zone possède son propre tableau de scores, partagé sur internet. Ça signifie que vous pouvez par exemple vous mesurez à vos amis dans une zone pseudo-privée (elle est publique mais qui ira taper "Blqsfjdfhsq" comme nom de zone si vous ne lui dites pas de le faire. N'hésitez pas à venir dans la zone "Beldarak" d'ailleurs ;)

Lorsque vous terminez une zone, il faut trouver un laisser-passer de zone dans un conteneur spécial (un genre de puzzle à résoudre, arène à terminer, etc) qui apparaît au bout d'un moment. Vous pourrez alors en débloquer une nouvelle (avec de nouveaux objets à trouver). Vous aurez le choix entre une zone aléatoire populaire (où beaucoup de gens s’affrontent pour voir qui a la plus grosse), impopulaire (pour avoir une chance d'avoir la plus grosse), une zone de vos amis aléatoire, une secteur totalement aléatoire ou bien d'entrer un nom de zone pour vous mesurez à vos amis ou être tranquillou tout seul.

Un des conteneurs spéciaux


Un mode bonus qui est bien plus que ça


Après un certain temps vous débloquerez le mode "Voyage", ce mode est bien plus qu'un mode bonus puisqu'il rapproche énormément le jeu d'un Rogue-like.

Dans le mode voyage, il n'y a pas de vortex cassant les conteneurs (vous avez donc tout votre temps) et vous n'avez pas de maison. De nouveaux conteneurs arrivent au fur et à mesure de votre progression.



Ce qui est vraiment un coup de maître dans ce mode c'est qu'il fait avancer l'histoire (j'y reviens après), qu'il ne possède pas toutes les limitations de zones: tous les objets sont présents ainsi que tous les conteneurs (sinon chaque zone à ses propres conteneurs); mais qu'il n'est pourtant pas cheaté.

D'abord parce qu'il est plus difficile (vous devez trouver des ateliers, etc pour améliorer votre perso ou acheter des cartouches et de la vie), ensuite parce qu'au final la progression se fait à la même vitesse que si vous débloquiez des zones dans le mode normal.



Un vrai scénario


Si le gameplay est au final assez répétitif (comme dans tout roguelike), l'histoire, elle, progresse via des mails que vous recevez de votre femme (ça me rappelle un peu le film "Moon") et de vos patrons lors de vos progression (chaque nouvel objet trouvé fait avancer une barre d'xp).
Le tout est très drôle et pousse vraiment à avancer dans le jeu, ne fut-ce que pour voir les horribles dessins que vous envoie votre gamin :D

J'en profite pour parler de l'ambiance qui est vraiment bien foutue, on oscille tout le temps entre la musique country de notre maison à celle angoissante des conteneurs en passant par le silence de l'espace (une option permet d'ailleurs de ne pas avoir de son du tout quand vous êtes dans l'espace, pour plus de réalisme).

La direction artistique est impeccable et on ressent bien la solitude de l'espace

La musique est un peu répétitive à force mais je l'aime bien quand-même et on peut toujours la couper une fois le panneau de contrôle du vaisseau débloqué.



Go go l'acheter


Voila voila ;)

Je vous conseille de l'acheter rapidement, il est à 1,74 € pour les soldes Steam pour encore 2 petites heures, n'hésitez pas ça les vaut très largement. Et si vous arrivez trop tard bah il vaut encore le coût pour 7 euros. Sinon j'imagine qu'il finira bien par se retrouver en pay what you want sur IndiegameStand, je vous ferez savoir si c'est un jour le cas.

Pour les pirates (bande de vils), je pense que ça peut-être intéressant de le télécharger pour l'essayer mais seul le mode en ligne permet d'avancer dans l'histoire. Donc sortez votre porte-monnaie pour une fois^^.

Si je devais lui donner une note, je donnerais un bon 7/10 qui passe à 8 parce que je vais probablement y rejouer régulièrement.

Cargo Commander est disponible sur Steam.

Bon amusement et à la prochaine les ragondins.