Dungeon Crawl Stone Soup 0.13 est sorti!

Posté par (page perso) . Édité par palm123 et Xavier Claude. Modéré par Benoît Sibaud. Licence CC by-sa
Tags :
33
11
oct.
2013
Jeu

Dungeon Crawl Stone Soup est un jeu libre de type roguelike : un jeu d'exploration tactique de dongeon immergé dans un univers de fantasie. Le joueur a pour mission d'acquérir l'Orbe de Zot et au moins trois runes parmi les quinze qui se trouvent dans le dongeon, et de ressortir vivant de celui-ci avec ces merveilleuses acquisitions.

Le jeu se démarque par une philosophie bien établie concernant le gameplay. On ne trouvera par exemple pas de quêtes, et on ne pourra pas vendre des objets à un commerçant, seulement en acheter (pour éviter que le joueur ne soit tenté de se mettre à ramasser tout ce qui passe sur son chemin), etc… Chaque fonctionnalité doit, pour être intégrée par l'équipe de développeurs, respecter les objectifs majeurs du jeu.

Sommaire

Philosophie du jeu

La section N. du manuel dédiée à la philosophie du jeu cite en introduction quatre points majeurs, qui sont en substance :

  • Le gameplay doit présenter un vrai défi, être randomisé pour la re-jouabilité, et doit faire en sorte que l'habileté crée une vraie différence.
  • Chaque décision prise par le joueur doit être une vraie décision : il s'agit de n'avoir que des choix significatifs à faire, pas de choisir entre plusieurs choix similaires ou de faire un choix illusoire entre plusieurs possibilités parmi lesquelles une est clairement supérieure. C'est d'ailleurs pour cela que souvent des éléments du jeux sont retirés quand ils ressemblent trop à d'autres ou n'apportent rien de substantiel au gameplay.
  • Éviter les tâches répétitives et faciles qui rapportent au final un avantage. C'est pour ça que le besoin de nourriture et d'autres forces poussent le joueur à s'aventurer plus profondément dans le dongeon. Et c'est aussi pour ça que la mort est permanente, quand on est mort on ne recharge pas une partie sauvegardée! Mais pas de panique : tout est fait pour que ce ne soit pas un frein à l'amusement.
  • D'une part une interface simple et ergonomique qui permet d'automatiser toute tâche répétitive en permettant par exemple l'auto-exploration et des voyages de longue distance, et d'autre part une volonté d'être accessible aux débutants (avec en particulier un tutoriel) et un gameplay qui soit ludique pour le débutant comme pour le joueur expérimenté, ce qui implique en particulier que la plupart des mécanismes du jeu sont accessibles dès le début de la partie, pas besoin de survivre longtemps pour s'amuser.

Aperçu de quelques caractéristiques du jeu

Voici quelques caractéristiques du jeu supplémentaires plus ou moins directement liées à ce qui précède.

Interface

L'interface du jeu est simple et pratique et deux versions sont disponibles : une version ncurses en console et une version graphique avec des tuiles utilisant SDL. Les deux sont très similaires au niveau de l'ergonomie. La version avec les tuiles apporte cependant un peu d'immersion et un retour visuel plus intuitif. Les tuiles sont d'ailleurs plutôt réussies et améliorées de version en version, donc à mon avis, à conseiller ! Une bonne façon de se faire une idée est de regarder les autres jouer.

Création du personnage

On trouvera un nombre important d'espèces différentes, certaines plus faciles à jouer que d'autres, mais ça dépend du style et des préférences de chacun. L'espèce est beaucoup plus importante que la classe de départ, qui n'influence que les habiletés et objets de départ du personnage.

Dieux

Un système polythéiste de dieux à la grecque, qui conduit le personnage à choisir un dieu adapté à ses choix stratégiques, vient ajouter un peu de piment à la vie déjà compliquée du dongeon. Mais attention à ne pas trop éveiller le courroux des dieux, chaque dieu ayant ses petits caprices! Certains dieux sont moins contraignants que d'autres, et certains sont carrément imprévisibles comme Xom le dieu du Chaos qui peut choisir par exemple de nous transformer temporairement en dragon ou autre monstre, ou de nous télétransporter quand on s'y attend le moins.

Les branches, portails,…

Un des buts du jeu est de ne jamais devenir trop long, une partie pouvant être finie en juste quelques heures. C'est pour cela que plutôt que d'avoir un dongeon principal interminable, on trouvera plutôt dans celui-ci des entrées à diverses branches thématiques, qui présentent des dangers variés, plus ou moins importants suivant les choix de personnage, dieu, etc… Certaines branches sont présentes dans toutes les parties (comme le temple, l'antre des bêtes ou les mines des orcs), tandis que d'autres alternent parfois avec d'autres, mais dans tous les cas il n'est pas nécessaire de les visiter toutes pour finir le jeu.

On trouve aussi des portails vers quelques niveaux thématiques spéciaux, aucune garantie n'est cependant donnée quant à leur éventuelle apparition. Ces niveaux sont assez variés, allant du labyrinthe au marché de commerçants.

Des configurations spéciales thématiques partiellement randomisées viennent aussi ajouter du piquant de temps en temps à n'importe quel niveau du dongeon, et c'est ainsi par exemple qu'un vaillant ogre peut devenir la proie de choix d'un essaim d'abeilles furieuses.

Les trucs croustillants

Plein de petites choses rendent la vie plus émouvante : la nourriture qui n'est pas toujours abondante, des monstres de niveaux plus profonds qui apparaissent de manière inopinée beaucoup plus tôt que prévu. Et surtout des monstres avec un petit nom dits « uniques » de dangerosité variée et variant un peu parfois d'une partie à une autre. Surtout ne pas hésiter à fuir lors des mauvaises rencontres, même (surtout) si une arme bien brillante se trouve entre les mains de l'ennemi!

Des fois, le personnage rencontrera les fantômes de ses prédécesseurs, c'est l'occasion rêvée de faire le ridicule et de perdre contre soi-même :)

Aussi, il faut savoir que la progression d'un personnage n'est pas toujours auto-bénéfique : tôt ou tard le personnage découvrira les risques mutagéniques qui courent de par le dongeon, et qui sait à quoi il finira peut-être par ressembler!

Une bonne source d'expériences rigolotes est le forum officiel du jeu.

Principales nouveautés de cette version

Une nouvelle espèce a vu le jour : les gargouilles, êtres de pierre avec une affinité pour la terre, avec quelques résistances particulièrement utiles.

Une autre nouveauté immédiatement visible : un nouveau livre de sorts de départ pour la classe Skald, une classe de guerriers-mages qui a été sensiblement améliorée.

Sinon, de nouveaux monstres, d'autres qui ne sont plus, et beaucoup de nouveautés parmi les objets magiques évocables, des améliorations au niveau de la génération des configurations du dongeon, de nouvelles tuiles, etc… Le changelog est très long, et le mieux c'est de découvrir en jouant, donc je n'en dirai pas plus :)

  • # Temps de jeu total

    Posté par . Évalué à 7.

    Voilà un script perl pour compter la somme des durées des parties afin de mesurer le temps perdu ;-)

    #!/bin/perl
    
    use strict;
    use warnings;
    use POSIX;
    
    my $hours = 0;
    my $minutes = 0;
    my $seconds = 0;
    
    my $directory = "$ENV{'HOME'}/.crawl/morgue";
    opendir(DIR, $directory) or die "Error: Cannot read $directory";
    
    while (my $file = readdir(DIR)) {
    
        next unless ($file =~ /^morgue.*\.txt$/);
    
        if (open(FILE, "$directory/$file")) {
            while (<FILE>) {
                next unless ($_ =~ /The game lasted (\d\d):(\d\d):(\d\d)/);
                $hours += $1;
                $minutes += $2;
                $seconds += $3;
                last;
            }
        } else {
            print("Warning: Cannot read $file\n");
        }
    }
    
    closedir(DIR);
    
    if ($seconds >= 60) {
        $minutes += POSIX::floor($seconds / 60);
        $seconds = $seconds % 60;
    }
    
    if ($minutes >= 60) {
        $hours += POSIX::floor($minutes / 60);
        $minutes = $minutes % 60;
    }
    
    print "The game lasted $hours:$minutes:$seconds. Get a life, dude.\n"

    P.S. : C'est mon premier script perl \o/

    • [^] # Re: Temps de jeu total

      Posté par (page perso) . Évalué à 1.

      Héhé, testé, et oui, ça fait un peu peur ;) Pourtant, je joue pas si souvent que ça…

    • [^] # Re: Temps de jeu total

      Posté par (page perso) . Évalué à 2.

      P.S. : C'est mon premier script perl \o/

      Pas mal pour un premier script :) Le seul truc qui est plus trop à la mode c'est les open avec des variables non lexicales. Avec à la place de FILE un my $file :

      open(my $file, "path/to/file");

      tu as l'avantage que quand tu n'est plus dans la portée de la déclaration de $file le close se fait automatiquement (ça veut pas dire que c'est une bonne habitude d'utiliser ça), et aussi de manière générale tu as tous les avantages d'une variable lexicale par rapport à une globale.

      • [^] # Re: Temps de jeu total

        Posté par (page perso) . Évalué à 2.

        Il est préférable de spécifier que l'on souhaite ouvrir en mode lecture seule.

        open(my $file, '<', "path/to/file");
        

        Généralement, on fait un "open() or die…"

        • [^] # Re: Temps de jeu total

          Posté par (page perso) . Évalué à 1.

          est préférable de spécifier que l'on souhaite ouvrir en mode lecture seule.

          Oui, mais rien et '<' c'est la même chose il me semble. Mais c'est vrai que normalment on spécifie, ce qui a l'avantage d'être plus clair en tous cas.

          Généralement, on fait un "open() or die…"

          ou bien un

          use autodie;

          quand le message d'erreur importe peu.

      • [^] # Re: Temps de jeu total

        Posté par . Évalué à 1.

        Merci pour le retour.

        • [^] # Re: Temps de jeu total

          Posté par (page perso) . Évalué à 2.

          next unless ($file =~ /^morgue.*\.txt$/);
          

          Selon certain, le 'unless' est une fonction peu connue en dehors de perl donc il est parfois conseiller d'écrire

          next if not $file =~ /^morgue.*\.txt$/;
          

          En perl, les parenthèses qui ne servent pas, je ne les mets pas ;-)

          • [^] # Re: Temps de jeu total

            Posté par . Évalué à 1.

            Selon certain, le 'unless' est une fonction peu connue en dehors de perl

            C'est vrai que ça peut dérouter. J'avais déjà croisé le unless de ruby, donc j'ai adapté un exemple de code sans me poser plus de questions.

            En perl, les parenthèses qui ne servent pas, je ne les mets pas ;-)

            Je m'en rappellerai :-)

            • [^] # Re: Temps de jeu total

              Posté par (page perso) . Évalué à 2. Dernière modification le 13/10/13 à 10:02.

              En perl, les parenthèses qui ne servent pas, je ne les mets pas ;-)

              Je m'en rappellerai :-)

              D'un autre côté, une phrase qui revient souvent chez les perlistes est : « ce n'est pas parce que tu peux faire une chose, que tu dois le faire » :)

              Si tu veux passer moment rigolo sur ce genre de détails : man perlstyle. Et si tu te sens carrément d'humeur maniaque tu peux aussi regarder du côté de perlcritic (qui est très bien une fois qu'on le configure à son goût).

              Edit : pour les fans d'analyse statique, perlcritic c'est de l'analyse statique à la Perl assez terrible :)

          • [^] # Re: Temps de jeu total

            Posté par (page perso) . Évalué à 5. Dernière modification le 13/10/13 à 01:28.

            Selon certain, le 'unless' est une fonction peu connue en dehors de perl donc il est parfois conseiller d'écrire

            Peut-être mais :
            * c'est du Perl, donc faire des trucs de Perl dedans, c'est bien normal
            * c'est pas parce que les autres langages sont moins bons qu'il faut se mettre à leur niveau
            * unless, c'est quand même très appréciable comme fonction

            Donc, faites du unless ! :D

            It's a fez. I wear a fez now. Fezes are cool !

            • [^] # Re: Temps de jeu total

              Posté par (page perso) . Évalué à 3.

              TIMTOWTDI ;-)

              La proposition a tout de même été porté par Damian Conway, c'est pas de moi. De plus 'unless' et 'if not' ont exactement la même longueur. L'idée est la même qu'en français, éviter si possible les phrases interro-négative et sinon, essayer d'être le plus clair possible.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.