{"id":1125,"date":"2024-12-04T16:44:04","date_gmt":"2024-12-04T15:44:04","guid":{"rendered":"https:\/\/palocatelli.com\/?p=1125"},"modified":"2025-01-02T17:29:54","modified_gmt":"2025-01-02T16:29:54","slug":"sand-breaker","status":"publish","type":"post","link":"https:\/\/palocatelli.com\/index.php\/2024\/12\/04\/sand-breaker\/","title":{"rendered":"Sand Breaker"},"content":{"rendered":"\n<p>Sand Breaker (ou Cassable) est un prototype d&#8217;un jeu de casse-brique en 2D, incluant un syst\u00e8me de progression, et dans lequel vous incarnez un crabe voulant se frayer un chemin jusqu&#8217;\u00e0 la mer.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/LukiolPA\/Sand_Breaker\" target=\"_blank\" rel=\"noreferrer noopener\">Testez le projet Sand Breaker<\/a><\/div>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Contexte du projet<\/h2>\n\n\n\n<p>Cod\u00e9 en C# avec le framework Monogame, j&#8217;y ai travaill\u00e9 seul pendant 3 semaines en automne 2024, lors du second module de ma <a href=\"https:\/\/gamingcampus.fr\/pro\/developpement-jeux-video.html\">formation professionnelle de Game Developpement<\/a> aupr\u00e8s de l&#8217;\u00e9cole Gaming Campus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cahier des charges impos\u00e9<\/h2>\n\n\n\n<p>Cr\u00e9er en un mois un jeu vid\u00e9o avec le framework Monogame. Ce devait \u00eatre un Casse-briques en 2D, incluant plusieurs niveaux, et au moins une originalit\u00e9 de gameplay.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Game Design<\/h2>\n\n\n\n<p>Au d\u00e9but de ce second projet, j&#8217;ai pris le temps de r\u00e9diger un <a href=\"https:\/\/drive.google.com\/file\/d\/1dLR8BCtIyVpHgaXj3NBdalWexOSsPus7\/view?usp=sharing\">Game Concept Document (ou GCD)<\/a>, afin de donner une certaine coh\u00e9rence au jeu, de garder \u00e0 l&#8217;esprit ma vision artistique, et d&#8217;anticiper les t\u00e2ches \u00e0 faire et l&#8217;architecture souhait\u00e9e. Si la plupart des id\u00e9es sont rest\u00e9es, vous pourrez constater en testant le jeu que certains d\u00e9tails ont \u00e9t\u00e9 modifi\u00e9s au cours du d\u00e9veloppement. Il n&#8217;emp\u00eache que, certainement gr\u00e2ce \u00e0 cette \u00e9tape de conception pr\u00e9alable, Sand Breaker est le jeu que j&#8217;ai cr\u00e9\u00e9 pendant ma formation de Game Developpement dont je suis le plus fier.<\/p>\n\n\n\n<p>Afin d&#8217;apporter un peu d&#8217;originalit\u00e9 au concept tr\u00e8s convenu du casse-brique, j&#8217;ai voulu exploiter plusieurs id\u00e9es :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Changer la condition de victoire<\/strong>. La satisfaction d&#8217;un casse-briques vient de la destruction des bloques, et du mur qu&#8217;on voit dispara\u00eetre progressivement. Mais les derni\u00e8res minutes d&#8217;un casse-brique traditionnel, alors qu&#8217;il ne reste que quelques briques \u00e0 toucher, sont souvent plus ennuyeuses. En ajoutant une limite de temps, et une n\u00e9cessit\u00e9 de s&#8217;enfuir, je rend la progression de la partie plus dynamique, peut-\u00eatre plus stressante, mais avec un meilleur sentiment de d\u00e9fi.<\/li>\n\n\n\n<li><strong>Ajouter une coh\u00e9rence narrative<\/strong>. La di\u00e9g\u00e8se des jeux de casse-briques m&#8217;a toujours \u00e9chapp\u00e9 : pourquoi casse-t-on des briques ? pourquoi une balle ? que repr\u00e9sente la raquette ? que cherche-t-on \u00e0 faire en v\u00e9rit\u00e9 ? Alors que je cherchais \u00e0 changer la raquette en un \u00e9l\u00e9ment qui ne pourrait se d\u00e9placer que sur une ligne, je me suis rappel\u00e9 l&#8217;id\u00e9e re\u00e7ue selon laquelle les crabes ne peuvent pas tourner (exploit\u00e9e par Arthur de Pins dans l&#8217;excellent court m\u00e9trage &#8220;<a href=\"https:\/\/www.youtube.com\/results?search_query=la+r%C3%A9volution+des+crabes\">La R\u00e9volution des crabes<\/a>&#8220;). Tout les autres choix narratifs ont naturellement d\u00e9roul\u00e9 de cette id\u00e9e.<\/li>\n\n\n\n<li><strong>Ajouter un syst\u00e8me de progression. <\/strong>Quitte \u00e0 faire plusieurs niveaux cons\u00e9cutif, autant ajouter un vraiment sentiment de progression pour le joueur. Avec un casse-briques traditionnel, cela passerait par le level design. Mais pourquoi ne pas r\u00e9compenser vraiment les victoires du joueur en lui proposant d&#8217;am\u00e9liorer sa force par des bonus ? J&#8217;ai notamment impl\u00e9ment\u00e9 quelques bonus qui pourraient se retourner contre le joueur : en augmentant la vitesse des projectiles, il gagne du temps, mais aura plus de difficult\u00e9 \u00e0 rattraper les rattraper. Autre exemple, en augmentant la taille du crabe, il aura plus de facilit\u00e9 \u00e0 rattraper les projectiles, mais plus de mal \u00e0 se frayer un chemin \u00e0 travers les bloques de sable.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Notions informatiques utilis\u00e9es<\/h2>\n\n\n\n<p>Monogame est un framework en C# qui int\u00e8gre d\u00e9j\u00e0 quelques \u00e9l\u00e9ments hauts niveau pour faciliter l&#8217;utilisation de sa Game Loop et de , j&#8217;ai donc pu me concentrer moins sur l&#8217;impl\u00e9mentation de la physique et de la boucle de jeu, et plus sur des \u00e9l\u00e9ments de gameplay.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Programmation orient\u00e9e objets<\/li>\n\n\n\n<li>Chargement et lecture de fichiers<\/li>\n\n\n\n<li>G\u00e9n\u00e9ration de niveaux \u00e0 partir de fichiers<\/li>\n\n\n\n<li>Cr\u00e9ation d&#8217;un Scene Manager pour passer d&#8217;un niveau \u00e0 l&#8217;autre<\/li>\n\n\n\n<li>Cr\u00e9ation d&#8217;un Input Manager, pour g\u00e9rer la souris et le clavier<\/li>\n\n\n\n<li>Cr\u00e9ation d&#8217;un Service Locator, pour charger et r\u00e9cup\u00e9rer efficacement les assets, les managers, etc.<\/li>\n\n\n\n<li>Cr\u00e9ation d&#8217;une interface basique de s\u00e9lection de bonus<\/li>\n\n\n\n<li>Animation de personnages avec Gimp, notamment le crabe lorsqu&#8217;il renvoie une balle, puis impl\u00e9mentation dans Monogame.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Toujours plus d&#8217;ensoleillement<\/h2>\n\n\n\n<p>Je suis tr\u00e8s satisfait de ce qu&#8217;a donn\u00e9 ce projet compte tenu du temps que j&#8217;ai pu y passer. Cependant, comme dit pr\u00e9c\u00e9demment, je n&#8217;ai pas pu int\u00e9grer toutes les m\u00e9caniques secondaires que j&#8217;avais envisag\u00e9 dans le GCD.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Plus de niveaux diff\u00e9rents, voire une g\u00e9n\u00e9ration proc\u00e9durale de niveaux avec une difficult\u00e9 infiniment croissante.<\/li>\n\n\n\n<li>Des niveaux plus longs, avec une cam\u00e9ra qui suit le crabe \u00e0 mesure qu&#8217;il progresse vers le haut de sa grotte. \u00c9ventuellement un mode infini ou le crabe ramasse des bonus en chemin et doit parcourir le plus de chemin possible sans \u00eatre rattrap\u00e9 par le sable.<\/li>\n\n\n\n<li>\u00c9ventuellement un syst\u00e8me de scoring, si le joueur a besoin d&#8217;une meilleure sensation de succ\u00e8s et de progression.<\/li>\n\n\n\n<li>Plus de bonus diff\u00e9rents, passifs ou activables. Certaines id\u00e9es sont donn\u00e9es dans le GCD.<\/li>\n\n\n\n<li>Une interface pour choisir son bonus \u00e0 activer.<\/li>\n\n\n\n<li>Des obstacles et des types de projectiles diff\u00e9rents.<\/li>\n\n\n\n<li>Un ou plusieurs boss, toujours dans l&#8217;univers de la plage.<\/li>\n\n\n\n<li>Des graphismes, sprites et logos mieux faits, je suis un pi\u00e8tre dessinateur.<\/li>\n\n\n\n<li>Plus de feedbacks, notamment des sons, des animations et des FX !<\/li>\n\n\n\n<li>Des musiques, pour l&#8217;ambiance et l&#8217;immersion du joueur.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Sand Breaker (ou Cassable) est un prototype d&#8217;un jeu de casse-brique en 2D, incluant un syst\u00e8me de progression, et dans lequel vous incarnez un crabe voulant se frayer un chemin jusqu&#8217;\u00e0 la mer. Contexte du projet Cod\u00e9 en C# avec le framework Monogame, j&#8217;y ai travaill\u00e9 seul pendant 3 semaines en automne 2024, lors du &hellip; <\/p>\n","protected":false},"author":1,"featured_media":1133,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,23,24,21],"tags":[14,17,20],"class_list":["post-1125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-design","category-game-dev","category-informatique","category-jeu-video","tag-game-design","tag-gamedev","tag-jeu-video"],"_links":{"self":[{"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts\/1125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/comments?post=1125"}],"version-history":[{"count":6,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts\/1125\/revisions"}],"predecessor-version":[{"id":1194,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts\/1125\/revisions\/1194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/media\/1133"}],"wp:attachment":[{"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/media?parent=1125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/categories?post=1125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/tags?post=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}