{"id":1056,"date":"2023-03-22T15:01:09","date_gmt":"2023-03-22T14:01:09","guid":{"rendered":"https:\/\/palocatelli.com\/?p=1056"},"modified":"2023-03-22T15:16:33","modified_gmt":"2023-03-22T14:16:33","slug":"bomberman-epic-isaac","status":"publish","type":"post","link":"https:\/\/palocatelli.com\/index.php\/2023\/03\/22\/bomberman-epic-isaac\/","title":{"rendered":"Bomberman Epic (Isaac)"},"content":{"rendered":"\n<p>Lors de mes deux premi\u00e8res ann\u00e9es d&#8217;\u00e9cole d&#8217;ing\u00e9nieur, l&#8217;apprentissage de l&#8217;informatique a eu une place importante dans le cursus, et se fit principalement avec le langage informatique C. Si bien qu&#8217;en troisi\u00e8me ann\u00e9e, quand je suis rentr\u00e9 en sp\u00e9cialit\u00e9 informatique, j&#8217;avais une bonne ma\u00eetrise du C. Il nous a donc \u00e9t\u00e9 demand\u00e9, \u00e0 mes camarades et moi, de mener chacun un projet de logiciel en groupe qui d\u00e9montrerait notre maitrise du langage et de l&#8217;algorithmie. A l&#8217;\u00e9poque, en 2016, j&#8217;avais d\u00e9j\u00e0 pour id\u00e9e de me sp\u00e9cialiser dans le d\u00e9veloppement de jeux vid\u00e9o, et je jouais beaucoup au jeu vid\u00e9o The Binding of Isaac (l&#8217;original, celui fait sur Adobe Flash). Avec mon ami Bryan Vigee, nous avons donc choisis de cr\u00e9er un fan-game dans l&#8217;univers de The Binding of Isaac, avec les r\u00e8gles d&#8217;un Bomberman.<\/p>\n\n\n\n<p>Ainsi est n\u00e9 notre mini-jeu &#8220;Bomberman Epic&#8221;. Il a donc \u00e9t\u00e9 cod\u00e9 avec le langage C, en utilisant la biblioth\u00e8que SDL pour afficher des images et jouer des sons. Il pr\u00e9sente les m\u00e9canismes habituels du jeu Bomberman, en 2D vue de haut, ou chaque joueur pose des bombes pour briser des rochers, obtenir des bonus et blesser ses adversaires.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/Animation-Isaac-2.png\" alt=\"\" class=\"wp-image-1062\" width=\"119\" height=\"453\" srcset=\"https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/Animation-Isaac-2.png 84w, https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/Animation-Isaac-2-79x300.png 79w, https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/Animation-Isaac-2-16x60.png 16w\" sizes=\"auto, (max-width: 119px) 100vw, 119px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><em><sup>Un des personnages dont j&#8217;ai format\u00e9 l&#8217;animation de marche pour la faire fonctionner avec la SDL<\/sup><\/em><\/p>\n\n\n\n<p>Il s&#8217;agit d&#8217;un des premiers jeux vid\u00e9o sur lequel j&#8217;ai travaill\u00e9 \u00e0 chaque \u00e9tape de la production, le temps d&#8217;un semestre. Il reste donc relativement basique, mais il inclus d\u00e9j\u00e0 pas mal de fonctionnalit\u00e9 :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un mode solo et un mode deux joueurs, jouable sur le m\u00eame PC.<\/li>\n\n\n\n<li>Des bots qui jouent tous seul, avec une IA faite maison.<\/li>\n\n\n\n<li>Des murs indestructibles et des murs destructibles.<\/li>\n\n\n\n<li>Plusieurs terrains de jeu, dont un qui est g\u00e9n\u00e9r\u00e9 al\u00e9atoirement \u00e0 chaque partie<\/li>\n\n\n\n<li>Des bonus cach\u00e9 dans les cailloux, pour se d\u00e9placer plus vite, augmenter la port\u00e9e d&#8217;explosion, poser plusieurs bombes en m\u00eame temps, etc.<\/li>\n\n\n\n<li>Deux conditions de fin : une avec limite de temps dans lequel il faut toucher le plus d&#8217;ennemis possible, et une avec des points de vie dans lequel il faut tuer tous les adversaires.<\/li>\n\n\n\n<li>Des musiques, bruitages, images et animations tir\u00e9es du jeu The Binding of Isaac.<\/li>\n<\/ul>\n\n\n\n<p>Parmi ces fonctionnalit\u00e9s, celle dont je suis le plus fier est le fonctionnement des IA des bots, sur lesquelles j&#8217;ai beaucoup travaill\u00e9. Les bots sont presque trop difficiles \u00e0 toucher, ce qui n&#8217;est pas tr\u00e8s grave pour un projet \u00e9tudiant, mais demanderait de l&#8217;\u00e9quilibrage si le jeu devait \u00eatre publi\u00e9. Voici leurs r\u00e8gles de fonctionnement :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Deux modes de fonctionnement : le mode &#8220;danger&#8221; quand les bots sont menac\u00e9s par l&#8217;explosion imminente d&#8217;une bombe, ou le mode &#8220;s\u00e9curit\u00e9&#8221; sinon. Le mode se met \u00e0 jour apr\u00e8s chaque mouvement.<\/li>\n\n\n\n<li>En mode &#8220;danger&#8221;, ils cherchent le chemin le plus court pour se mettre hors de port\u00e9e de toute explosion.<\/li>\n\n\n\n<li>En mode &#8220;s\u00e9curit\u00e9&#8221;, ils se d\u00e9placent al\u00e9atoirement, sans foncer dans les murs, et en \u00e9vitant les zones de danger.<\/li>\n\n\n\n<li>Les bots posent al\u00e9atoirement des bombes, mais plus fr\u00e9quemment s&#8217;ils peuvent toucher un adversaire ou plusieurs rochers. Ils ne posent pas de bombe s&#8217;ils risqueraient de rester eux-m\u00eames coinc\u00e9s et de subir son explosion.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"170\" height=\"170\" src=\"https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/BOOOM.png\" alt=\"\" class=\"wp-image-1064\" srcset=\"https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/BOOOM.png 170w, https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/BOOOM-150x150.png 150w, https:\/\/palocatelli.com\/wp-content\/uploads\/2023\/03\/BOOOM-60x60.png 60w\" sizes=\"auto, (max-width: 170px) 100vw, 170px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><sup><em>Le sprite de l&#8217;explosion, facilement d\u00e9coupable pour augmenter la port\u00e9e.<\/em><\/sup><\/p>\n\n\n\n<p>Je n&#8217;ai plus retouch\u00e9 au projet depuis 2016, mais il garde toutefois une place importante dans mon esprit, avec un certain sentiment de fiert\u00e9. Mais naturellement, comme c&#8217;est l&#8217;un des premiers jeux vid\u00e9o que j&#8217;ai cr\u00e9\u00e9, il souffre de nombreux d\u00e9fauts. Si je devais le retravailler aujourd&#8217;hui, j&#8217;apporterai les modifications suivantes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La correction d&#8217;un bug qui freeze l&#8217;\u00e9cran un petit instant lors de l&#8217;explosion. <\/li>\n\n\n\n<li>Une animation d&#8217;explosion !<\/li>\n\n\n\n<li>Un menu au fonctionnement plus explicite.<\/li>\n\n\n\n<li>Un tutoriel ou une r\u00e8gle du jeu qui indique au moins les contr\u00f4les.<\/li>\n\n\n\n<li>Une interface en jeu plus transparente, qui rend compte du temps restant, des points de vie et des bonus de chaque personnage.<\/li>\n\n\n\n<li>Des feedbacks visuels et sonores notamment quand un personnage est touch\u00e9 par une bombe<\/li>\n\n\n\n<li>Une IA encore plus int\u00e9ressante, avec une difficult\u00e9 r\u00e9glable.<\/li>\n\n\n\n<li>De nouvelles m\u00e9caniques de jeu, par exemple des \u00e9v\u00e8nements al\u00e9atoires, d&#8217;autres bonus, ou de nouveaux objectifs sur la carte. Peut-\u00eatre m\u00eame un boss ?<\/li>\n\n\n\n<li>Une meilleure courbe d&#8217;int\u00e9r\u00eat, autrement dit mieux rythmer les parties.<\/li>\n<\/ul>\n\n\n\n<p>Le mini jeu Bomberman Epic est t\u00e9l\u00e9chargeable gratuitement sur <a rel=\"noreferrer noopener\" href=\"https:\/\/gitlab.com\/Plocate\/bomberman-isaac\" data-type=\"URL\" data-id=\"https:\/\/gitlab.com\/Plocate\/bomberman-isaac\" target=\"_blank\">Gitlab<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lors de mes deux premi\u00e8res ann\u00e9es d&#8217;\u00e9cole d&#8217;ing\u00e9nieur, l&#8217;apprentissage de l&#8217;informatique a eu une place importante dans le cursus, et se fit principalement avec le langage informatique C. Si bien qu&#8217;en troisi\u00e8me ann\u00e9e, quand je suis rentr\u00e9 en sp\u00e9cialit\u00e9 informatique, j&#8217;avais une bonne ma\u00eetrise du C. Il nous a donc \u00e9t\u00e9 demand\u00e9, \u00e0 mes camarades et moi, de mener chacun un projet de logiciel en groupe qui d\u00e9montrerait notre maitrise du langage et de l&#8217;algorithmie. A l&#8217;\u00e9poque, en 2016, j&#8217;avais d\u00e9j\u00e0 pour id\u00e9e de me sp\u00e9cialiser dans le d\u00e9veloppement de jeux vid\u00e9o, et je jouais beaucoup au jeu vid\u00e9o The Binding of Isaac (l&#8217;original, celui fait sur Adobe Flash). Avec mon ami Bryan Vigee, nous avons donc choisis de cr\u00e9er un fan-game dans l&#8217;univers de The Binding of Isaac, avec les r\u00e8gles d&#8217;un Bomberman.<\/p>\n","protected":false},"author":1,"featured_media":1058,"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-1056","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\/1056","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=1056"}],"version-history":[{"count":5,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts\/1056\/revisions"}],"predecessor-version":[{"id":1068,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/posts\/1056\/revisions\/1068"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/media\/1058"}],"wp:attachment":[{"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/media?parent=1056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/categories?post=1056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/palocatelli.com\/index.php\/wp-json\/wp\/v2\/tags?post=1056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}