Partage
  • Partager sur Facebook
  • Partager sur Twitter

[A-RPG][C++]Neogem

    27 mars 2016 à 21:12:56

    Update du 27/01/2018 :

    Mon projet 

    Tout simplement un A-RPG. Monde fantastique, magie etc...

    Je compte orienter mes efforts sur l'ambiance générale plutôt que sur le gameplay. Disons que je vais miser 50% sur le contenu à proprement parler (jouable+histoire) , 30% sur l'ambiance visuelle et sonore et 20% sur le reste. 

    HUD minimaliste, voire inexistant si possible, beaucoup d'explo et d'histoire, mais des combats moins fréquents que dans les rpg habituels. Pas de level up, pas d'inventaire, juste du skill-learning.

    L'histoire

    Ginka vit sur une île paisible, très éloignée du continent d'Emorel. Un jour, son père est emmené par la Garde Royale afin de participer à l'effort de guerre. Ginka décide de le suivre en s'infiltrant dans le navire de la Garde, qui s'envole en direction de la capitale. 

    Malheureusement, notre héros se retrouvera perdu dans cette grande cité, où il fera une rencontre très particulière et apprendra que le monde est à l'orée d'un changement terrible.

    Voilà voilà, en gros l'intrigue principale c'est que le héros va chercher son père un peu partout :p 

    L'avancement 

    Les bases sont là, le monde en 2D iso est géré graphiquement, les lois physiques de base sont opérationnelles, les events sont programmés pour être utilisés à la RPGMaker.

    Je viens de finir le plus gros du système de dialogues et d'events en général.

    Je scripte les maps avec un interpréteur de texte fait maison pour pas avoir à tout recompiler à chaque fois.

    Je travaille sans ressources graphiques pour l'instant. 

    Mes objectifs 

    Finir le jeu ça sera déjà pas mal.

    Une fois que le moteur sera fait, ça sera juste du contenu à apporter, et pour commencer je vais faire un 'mode campagne' où on suivra l'histoire de Ginka.

    Si je suis pas lassé, je rajouterai au fur et à mesure des morceaux de map, des histoires secondaires etc...

    A court terme, je vais créer quelques scripts, histoire d'avoir une petite map de démo fonctionnelle, et commencer le système de dialogues/menus.

    Voilà où j'en suis au 26/02

    Et le mot de la fin

    J'hésite à recruter au niveau prog parce que mes méthodes de travail sont très strictes, mais si quelqu'un est intéressé on peut en discuter.

    Voilà le (tout nouveau) discord du projet: https://discord.gg/3yUgPm

    -
    Edité par -Ginka 26 février 2018 à 21:45:35

    • Partager sur Facebook
    • Partager sur Twitter
    01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
      28 mars 2016 à 17:47:27

      Hellow,

      Une grossière erreur que tu as faite : vouloir tout planifier. J'en mettrais ma main à couper que ce planning aura du mal à se faire respecter ! Moi même, connaissant mon code par cœur, j'ai du mal à tenir les délais que j'annonce

      • Partager sur Facebook
      • Partager sur Twitter

      GitHub | ArkScript, mon langage

        28 mars 2016 à 19:01:24

        Yep j'y ai pensé, je sais que les dates seront sûrement rallongées , c'est surtout un fil rouge pour moi ;) j'édite tout de suite , merci pour ta remarque !
        • Partager sur Facebook
        • Partager sur Twitter
        01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
          29 mars 2016 à 0:45:13

          Ouah, un A-RPG isométrique sans tile-mapping en C++, utilisant des mesh etc pour commencer, tu fais fort quand même. Tu vas devoir t'accrocher :).

          Tu n'as pas de visuel, c'est dommage. Un projet sans visuel ici ne tient pas une semaine en page 1.

          Maintenant quelque chose m'interpelle dans ton idée : tu parles d'originalité dans le gameplay avant tout ET d'être passionné de musique.

          Et pourquoi pas baser un ARPG sur un gameplay musical ? On a vu des platformers musicaux (je pense notamment à Inside My Radio) mais sans aller dans si extrême, une notion musical peut être sympa (peut-être l'épée du héro ne peut être utilisée qu'en fonction de la "zone musicale" de la musique de fond dans laquelle on se trouve (zone très rythmique/rapide/lente) ?).

          Enfin bref, j'ai hâte de voir la direction que peut prendre ton idée :)

          -
          Edité par Scorbutics 29 mars 2016 à 0:45:30

          • Partager sur Facebook
          • Partager sur Twitter
            29 mars 2016 à 5:25:28

            Au niveau des meshes j'utilise pas ceux qu'on fabrique avec blender ou autres mais des formes simples (en gros des aabb ). 

            Le système de chunks permet de gérer la rapidité d'exécution, et de faire d'autres choses intéressantes. J'ai mis pas mal de temps avant d'y arriver mais j'en suis content ^^ Et une petite précision ce n'est pas mon premier projet donc j'ai eu l'occasion de tester les tiles avant de me décider ;)

            Et pour le gameplay ton idée est très intéressante. Mais en fait j'ai dit que je ne misais pas sur cet aspect du jeu ^^ j'y réfléchirai quand même cela dit .

            • Partager sur Facebook
            • Partager sur Twitter
            01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
              29 mars 2016 à 12:49:14

              Bon, pour ceux que ça intéresse je vais quand même mettre un screenshot de l'avancée du moteur. 

              Vous pourrez y voir un objet actor  (le cercle dégueulasse), ainsi que quelques static meshes dont une plate-forme et un escalier . Le vertex sous l'actor symbolise sa distance par rapport au sol . Le cercle possède deux animations (walking et standing) .Les collisions et la gravité sont opérationnelles et satisfaisantes .Neogem InDev

              • Partager sur Facebook
              • Partager sur Twitter
              01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                30 mars 2016 à 17:12:52

                Hello ! 

                J'ai pas mal avancé au niveau de Luabind, donc le screen que je vous ai montré est maintenant obtenable (obtensible?) depuis un script lua !

                Je dois encore comprendre les mécanismes qui gèrent la passation de propriété du Lua au C++ s'il y en a, mais je pense pas avoir besoin d'une classe wrapper finalement .

                Bonne soirée everybody ! 

                • Partager sur Facebook
                • Partager sur Twitter
                01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                  31 mars 2016 à 20:12:17

                  Bonsoir à tous ! 

                  Aujourd'hui, j'ai encore bien avancé dans ma compréhension de Luabind :) je peux désormais assigner aux entités des fonctions scriptées qui feront office d'events . Un event passif s'activera à la collision avec le héros et un event actif sera juste ... activable avec une touche ^^

                  J'ai aussi testé la rapidité du moteur histoire de voir si j'avais encore de la marge . Résultats plus que satisfaisants !

                  Un petit screen avec environ 360 entités (sachant que ce cas ne devrait pas être très fréquent je pense), le tout créé depuis un fichier lua  :

                  • Partager sur Facebook
                  • Partager sur Twitter
                  01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                    3 avril 2016 à 18:08:50

                    Luabind est maintenant bien implanté, même s'il m'a bien fait galérer parce que la doc est assez mal faite et j'ai trouvé peu de réponses à mes questions . 

                    J'attaque donc la restructuration de ma classe Entity, jusqu'à aujourd'hui le moteur ne faisait la différence entre actor, object etc que grâce à un attribut _entity_type mais ça faisait des opérations inutiles. Maintenant j'ai une classe mère dont héritent toutes les autres .

                    L'objectif pour dimanche prochain est de terminer ça et d'attaquer un remaniement des textures en adéquation avec ces nouvelles classes. 

                    Bonne semaine à tous ! 

                    • Partager sur Facebook
                    • Partager sur Twitter
                    01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                      6 avril 2016 à 19:31:01

                      Bon, je comptais pas poster avant dimanche, mais tant pis.

                      J'ai réussi à refaire en partie ma classe d'entités et à retravailler les textures , j'ai aussi (après de longues heures de galère ) intégré le chargement des images directement dans le fichier lua . 

                      Je suis donc pas trop en retard sur mes objectifs mais à tout hasard j'aimerais savoir si quelqu'un a de l'expérience avec luabind, afin de m'aiguiller sur les erreurs fatales à éviter absolument quand on manipule des images dans des fichiers scripts . J'entends par là des erreurs de gestion de mémoire, de pointeurs, de manipulation des object_cast etc...

                      A part ça tout va bien , j'apprends énormément au fur et à mesure que mon projet se concrétise, mais ça fera l'objet de mes prochaines news dominicales ;)

                      • Partager sur Facebook
                      • Partager sur Twitter
                      01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                        7 avril 2016 à 14:08:39

                        Si jamais luabind te pose trop de problèmes, je te conseille le binding Kaguya, que j'utilise pour mon jeu en C++ et qui marche du feu de Dieu :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          7 avril 2016 à 17:44:45

                          Ou bien le binding lua de nazara engine :p
                          • Partager sur Facebook
                          • Partager sur Twitter

                          GitHub | ArkScript, mon langage

                            7 avril 2016 à 18:46:55

                            Nan je crois pas avoir besoin de changer ^^ à moins que ce soit plus simple et surtout safe 

                            • Partager sur Facebook
                            • Partager sur Twitter
                            01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                              10 avril 2016 à 21:39:41

                              Hello all ! 

                              Cette semaine était mouvementée parce que j'ai dû déménager, donc une bonne et une mauvaise nouvelle sur le projet. 

                              La mauvaise c'est que j'ai moins avancé sur le projet que prévu, mais je suis pas en retard sur mon planning . La bonne c'est que je peux enfin utiliser mon pc fixe et donc reprendre le développement de façon sérieuse :)

                              Donc concernant l'avancée, j'ai refait les classes principales ( entités et textures )moteur Iso. Je peux enfin charger des images depuis lua mais j'ai encore quelques problèmes qui m'embêtent. Donc en gros j'ai un système physique qui fonctionne, scriptable, avec des animations, des collisions etc... Bientôt un screen plus représentatif que les précédents ! 

                              La semaine prochaine je stabilise tout ça et je travaille sur les events. La démo est donc en bonne voie pour mi mai ^^

                              Bonne semaine à tous ! 

                              Édit : j'ai dit une démo mais c'est plutôt une vidéo de présentation :) en tout cas rien de fignolé 

                              -
                              Edité par -Ginka 10 avril 2016 à 21:43:12

                              • Partager sur Facebook
                              • Partager sur Twitter
                              01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                17 avril 2016 à 22:05:33

                                Petite semaine encore une fois !

                                J'ai transféré le projet comme prévu sur mon autre pc, ce qui a pris du temps car je travaillais avec sdl sur mon portable et le code était un peu déstructuré par endroits .

                                Donc une petite factorisation et un portage sdl2 s'imposaient ^^ j'ai aussi créé une classe Image pour wrapper les SDL Texture . En revanche j'ai pas commencé les events scriptés. 

                                Cette semaine l'objectif est donc de m'y mettre afin d'avoir une base solide sur les events communs et scriptés. J'essaierai d'apporter aussi quelques précisions sur le projet, ses ambitions etc dans la semaine en éditant le post principal. 

                                Peut-être un site internet en vue, histoire de centraliser les news pour un futur plan com ;) 

                                Voilà voilà c'est tout pour aujourd'hui, j'espère attirer l'attention de certains , et en attendant vos retours,  je vous souhaite encore une bonne semaine !  

                                • Partager sur Facebook
                                • Partager sur Twitter
                                01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                  18 avril 2016 à 5:45:20

                                  Ouep ça m'avait pas plu bizarrement. Je sais que c'est orienté objet etc mais je suis moins à l'aise avec cette librairie
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                    18 avril 2016 à 7:09:17

                                    Ok :) De toute façon avec SDL2 les perfs sont un peu les mêmes :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 avril 2016 à 19:40:03

                                      Allez un petit screen pour oublier l'affichage infâme du vertex mode ^^ 

                                      Vous reconnaîtrez Sora, de KH Chain Memories , et les cubes je les ai fait à l'arrache sur Paint. Le tout est animé : Sora et tous les meshes qui composent le sol .

                                      En revanche le Z-Order n'est pas implémenté et comme je rangeais les tiles dans un std::set, l'ordre de blittage était anarchique :p

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                        21 avril 2016 à 14:38:18

                                        Post initial édité comme promis ! Avec un nouveau screenshot et quelques précisions ; )

                                        Bonne journée ! 

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                          23 avril 2016 à 18:44:05

                                          Petit screen avant la news de demain ! 

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                            24 avril 2016 à 12:06:30

                                            Ça y est ! 

                                            Un mois déjà que j'ai présenté ce projet , et je dois dire que je suis fier de ce que j'ai fait . J'ai pas avancé de la manière prévue puisque j'ai arrêté de coder en brouillon sur mon portable , mais le code est propre, et ça c'est bon ;)

                                            Voici donc un petit résumé de mon avancée de la semaine :

                                            Mis à part Luabind , tout le code a été porté et amélioré sur SDL2. J'ai retravaillé la classe Animation et son utilisation par les entités. Si vous regardez le screenshot du précédent post,  le personnage se déplace avec des anims sur chaque mouvement , et chaque bloc est animé. En plus de ça j'ai voulu tester l'affichage à chaque frame d'une image de 1024×768(le background fait en 1 minute sur Paint )  et à ma grande surprise je n'ai aucune perte de perf :) 

                                            Mais tout ça c'est qu'un amuse-gueule, car je peux aujourd'hui vous présenter (roulements de tambours...) : les events !!! 

                                            En effet dans ce screen il y a un mesh qui dispose d'un event que j'appelle passif, c'est à dire qu'il s'active automatiquement au passage du héros. Ça sera utilisé par exemple pour les points de téléportation, l'affichage d'actions contextuelles etc... J'ai déjà implémenté un système de switch, à la RPGMAKER, pour créer des conditions d'events. 

                                            C'est tout pour la partie dev! Mais j'en profite pour introduire le concept des cubes : 

                                            Ce concept concerne le gameplay, et en particulier l'évolution du héros. J'ai laissé de côté le classique level up, au profit d'une évolution spécialisable. Les cubes (nom provisoire encore une fois) sont des petits artefacts capable de contenir des skills, des armes, des boosts ou quoi que ce soit d'autre. Ils seront assignables aux touches de combat, mais nécessiteront que le héros ait assez de points de capacité. Par exemple si vous avez 100 CP vous pourrez équiper 5 skills de 20 CP , enfin rien de bien compliqué. 

                                            Chaque cube aura un montant d'AP (un peu comme les matérias), qui se remplira avec l'expérience. Une fois ce montant atteint, le cube ne nécessitera plus, ou peu, de CP. Ce qui laissera de la place pour un cube supplémentaire. La ou ça devient intéressant pour la spécialisation, c'est que si le héros emploie beaucoup de CP sur des cubes de boosts, par exemple boost de force, une fois qu'il aura rempli les AP de ces cubes il sera super balèze et pourra limite se battre à mains nues. 

                                            Cette idée reste bien sûr améliorable , mais le principal est lié au lore, donc c'est quasiment sûr que je ne changerai pas de concept de base .

                                            Voilà, si vous avez pris le temps de lire ce petit pavé, je vous remercie et vous souhaite une bonne semaine !

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                              24 avril 2016 à 12:42:06

                                              Ça avance vite :) Vivement la suite :)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                24 avril 2016 à 12:58:29

                                                Eh bien ! Chouette projet :D! Je compte bien me tenir au courant de son avancement. Par contre je suis triste que tu n'aimes pas la SFML :o. Enfin, chacun ses goûts.

                                                Continue comme ça :pirate:

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Un jour, un compatriote nommé Rubi m'a dit : "Mieux vaut perdre que gagner"
                                                  24 avril 2016 à 20:05:22

                                                  Thanks ; ) 

                                                  Ouep la sfml j'avoue que ça m'attirait mais quand je l'ai testée j'ai pas aimé. Mais si je voulais faire le portage j'aurais aucun mal donc c'est pas un problème 

                                                  Edit : je viens de me pencher sur la question des visual effects  (lights, particules ...) et il semblerait que SDL2 ne va pas être à la hauteur. Je vais peut être devoir remballer mes préférences et apprivoiser sfml. Je me vois pas apprendre Opengl juste pour des lights 

                                                  -
                                                  Edité par -Ginka 24 avril 2016 à 21:49:49

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                                    25 avril 2016 à 3:33:57

                                                    La SFML est vraiment très chouette, elle peut paraître un peu moins accueillante pour faire ses propres classes graphiques vu que tout est déjà fait selon une certaine organisation et ça peut perturber. Ceci dit, le code est vraiment bien foutu, la communauté est super sympa, la documentation est riche et les exemples sont légion.

                                                    Après c'est étonnant que la SDL2 ne permette pas de faire des Lights. 

                                                    Edit :Après avoir regardé je comprends mieux. Là où SFML te permet directement d'utiliser un shader, tu dois utiliser OpenGL manuellement avec SDL2. 

                                                    Si tu passes sur SFML hésites pas si tu as des questions ! 

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      25 avril 2016 à 6:53:49

                                                      Perso j'ai très bien accroché à la SFML car elle est (relativement) simple d'utilisation, et de plus haut niveau que la SDL. Ah et puis elle est orientée objet.

                                                      Mizugola : faut dormir la nuit :)

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Un jour, un compatriote nommé Rubi m'a dit : "Mieux vaut perdre que gagner"
                                                        25 avril 2016 à 17:59:31

                                                        J'ai passé la journée à y réfléchir, et finalement je vais me recentrer sur les objectifs à court terme, à savoir terminer les classes de base du jeu, puisque le moteur graphique ne sera pas affecté. Je remets la décision à plus tard concernant le choix entre sfml , opengl ou SDL_gpu. 

                                                        A vrai dire contrairement à toi jeje, je préfère la gestion de bas niveau ^^ Je veux pas réinventer la roue, mais comme mizugola l'a bien résumé, tout est déjà organisé selon un schéma précis avec sfml. Je suis donc encore hésitant. Mais bon ça reste une décision reportable. 

                                                        À suivre ...

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111
                                                          26 avril 2016 à 7:12:23

                                                          Après c'est ton choix, si tu préfère la SDL, reste dessus, mais réfléchi et étudié bien tout les cas de figure. Si tu maîtrise la SDL, et que tu ne connaît pas trop la SFML, reste dessus, n'hésite pas à tester, te renseigner... Ton choix doit être fait définitivement.

                                                          Tu as du temps encore, mais plus tu attendras, plus ce sera long et compliqué. Tu auras plus de changements à faire si tu attends et que tu choisis la SFML.

                                                          Sur ce, passe une bonne journée :) !

                                                          -
                                                          Edité par jejeleterrible58 26 avril 2016 à 7:12:59

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Un jour, un compatriote nommé Rubi m'a dit : "Mieux vaut perdre que gagner"
                                                            26 avril 2016 à 15:54:40

                                                            Bon admettons que je prenne la sfml ^^

                                                            J'ai besoin de lights , de particules, de gestion ultra rapide de l'affichage(je rappelle que je ne fais aucun tile-mapping donc pas d'optimisation de ce côté là), de gestion des threads. Le tout doit être vraiment fluide. Est-ce que cette lib sera à la hauteur ? 

                                                            Comparé à Opengl, est-ce que je n'y perdrai pas ? Je parle surtout en terme de vitesse d'affichage, d'utilisation du GPU etc... 

                                                            Merci pour vos réponses ;) je sais que c'est un débat sans vraie fin mais je voudrais surtout avoir vos expériences, tests, fin vous me comprenez ...

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            01000011011011110110111001110110011001010111001001110100011001010111001001110011001000000110000101110010011001010010000001110110011001010111001001111001001000000111000001110010011000010110001101110100011010010110001101100001011011000010110000100000011101010110100000111111

                                                            [A-RPG][C++]Neogem

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            • Editeur
                                                            • Markdown