{"id":4086,"date":"2024-02-23T09:12:15","date_gmt":"2024-02-23T14:12:15","guid":{"rendered":"https:\/\/elligno.com\/?p=4086"},"modified":"2024-02-23T09:12:17","modified_gmt":"2024-02-23T14:12:17","slug":"programmeur-math3d","status":"publish","type":"post","link":"https:\/\/elligno.com\/fr\/programmeur-math3d\/","title":{"rendered":"Programmeur Math 3D"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Mise \u00e0 niveau majeure (programmation Math3D)&nbsp;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Objectifs du mandat<\/h3>\n\n\n\n<p>L\u2019objectif g\u00e9n\u00e9ral de la consultation est la mise \u00e0 niveau majeur de la biblioth\u00e8que de math3D. D\u00e9velopper des outils et proc\u00e9dures relatives \u00e0 l\u2019automatisation et la validation de la mise \u00e0 jour.&nbsp;<\/p>\n\n\n\n<p>&nbsp;A titre de programmeur math3D, effectuer les changements de code migration d\u2019une version \u00e0 une autre.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2014 Programmation scientifique d&rsquo;une bibliotheque Math3D (mise \u00e0 niveau)<\/h3>\n\n\n\n<p><strong>EA Vancouver<\/strong> est un studio majeur du g\u00e9ant am\u00e9ricain de jeux Electronic Arts (EA) qui poss\u00e8de de nombreux studios dans le monde entier.&nbsp;<\/p>\n\n\n\n<p><strong>Frostbite <\/strong>est une \u00e9quipe centralis\u00e9e, c\u2019est le moteur de d\u00e9veloppement de jeux multiplateforme de pointe d\u2019EA.&nbsp;<\/p>\n\n\n\n<p><strong>But<\/strong>: restructurer le moteur <strong>Frostbite <\/strong>pour permettre la d\u00e9pr\u00e9ciation des anciennes biblioth\u00e8ques Math3D qui sont toujours prises en charge dans le code.&nbsp;<\/p>\n\n\n\n<p>Le projet consiste \u00e0 nettoyer le code existant, \u00e0 r\u00e9\u00e9crire certains algorithmes, types math\u00e9matiques et \u00e0 fusionner plusieurs versions (3 versions de la biblioth\u00e8que sont utilis\u00e9es par les diff\u00e9rents groupes). Il s\u2019agit de convertir le type math\u00e9matique d&rsquo;une API math\u00e9matique \u00e0 un autre.&nbsp;<\/p>\n\n\n\n<p>La biblioth\u00e8que math\u00e9matique est le c\u0153ur du jeu vid\u00e9o et est utilis\u00e9e par tous les composants du jeu (Animation, rendu, physique, cam\u00e9ra, etc.).&nbsp;<\/p>\n\n\n\n<p>Ce projet n\u00e9cessite de solides comp\u00e9tences en math\u00e9matiques (alg\u00e8bre lin\u00e9aire) mais \u00e9galement de bonnes comp\u00e9tences en programmation, techniques C++ modernes et de la programmation math\u00e9matique 3D.<\/p>\n\n\n\n<p><strong>Processus<\/strong>&nbsp;<\/p>\n\n\n\n<p>En raison de la grande quantit\u00e9 de code \u00e0 analyser, la refactorisation serait impossible avec une m\u00e9thode traditionnelle de recherche et de remplacement.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Automatisation<\/strong> mise \u00e0 niveau se fait en deux parties: d\u2019abord un ensemble de scripts <strong>Clang AST<\/strong> (traverse le code et effectue les modifications) et faire les modifications.&nbsp;<\/p>\n\n\n\n<p><strong>Deuxi\u00e8me \u00e9tape (manuel)<\/strong> (plusieurs changements qui ne sont pas pris en compte par les scripts) n\u00e9cessite une investigation approfondie du code et d\u2019effectuer des modifications&nbsp;qui demandent des astuces math\u00e9matiques mais \u00e9galement une bonne connaissance en programmation C++ (metaprogramming, &#8230;).&nbsp;&nbsp;<\/p>\n\n\n\n<p>&nbsp;Finalement, fixer des bugs (par exemple d\u00e9pendances avec d\u2019autres composantes, \u00e9galement types ou fonctions n\u2019ont pas \u00e9t\u00e9 modifi\u00e9s, etc. ..), de r\u00e9\u00e9crire certaines fonctions ou de les adapter, et quelque fois de modifier les scripts une conversion de type assez complexe est requise dans le script. La conversion, par exemple, des syst\u00e8mes d&rsquo;animation Frostbite d&rsquo;une API math\u00e9matique \u00e0 une autre n&rsquo;est pas triviale.&nbsp;<\/p>\n\n\n\n<p><strong>A propos de<\/strong> <\/p>\n\n\n\n<p><strong><strong>Frostbite<\/strong><\/strong> est le moteur de d\u00e9veloppement de jeux multiplateforme de pointe d\u2019EA. Frostbite propulse certains des jeux les plus \u00e9poustouflants de l&rsquo;industrie ainsi que des exp\u00e9riences de jeu approfondies<\/p>\n\n\n\n<p><a href=\"https:\/\/www.ea.com\/frostbite\">en savoir plus <\/a><\/p>\n\n\n\n<p>Jean B\u00e9langer est un programmeur scientifique qui agit comme entrepreneur et consultant dans l&rsquo;industrie informatique depuis 25 ans. Il est \u00e9galement responsable du d\u00e9veloppement de <strong>DamBreak++<\/strong>, un environnement de programmation visant \u00e0 comprendre la physique via des techniques de mod\u00e9lisation modernes et en utilisant de nouveaux paradigmes de d\u00e9veloppement logiciel.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/elligno.com\/profile\/consultant-work\/\">DAMBREAK++<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mise \u00e0 niveau majeure (programmation Math3D)&nbsp; Objectifs du mandat L\u2019objectif g\u00e9n\u00e9ral de la consultation est la mise \u00e0 niveau majeur de la biblioth\u00e8que de math3D. D\u00e9velopper des outils et proc\u00e9dures relatives \u00e0 l\u2019automatisation et la validation de la mise \u00e0 jour.&nbsp; &nbsp;A titre de programmeur math3D, effectuer les changements de code migration d\u2019une version \u00e0 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-4086","post","type-post","status-publish","format-standard","hentry","category-nouvelles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programmeur Math 3D - Elligno<\/title>\n<meta name=\"description\" content=\"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d&#039;une biblioth\u00e8que math\u00e9matique haute performance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elligno.com\/fr\/programmeur-math3d\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programmeur Math 3D - Elligno\" \/>\n<meta property=\"og:description\" content=\"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d&#039;une biblioth\u00e8que math\u00e9matique haute performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elligno.com\/fr\/programmeur-math3d\/\" \/>\n<meta property=\"og:site_name\" content=\"Elligno\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-23T14:12:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-23T14:12:17+00:00\" \/>\n<meta name=\"author\" content=\"Jean B\u00e9langer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jean B\u00e9langer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/\"},\"author\":{\"name\":\"Jean B\u00e9langer\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/1129358366bfe88ea0feee16d1850da9\"},\"headline\":\"Programmeur Math 3D\",\"datePublished\":\"2024-02-23T14:12:15+00:00\",\"dateModified\":\"2024-02-23T14:12:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/\"},\"wordCount\":532,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"articleSection\":[\"Nouvelles\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/\",\"name\":\"Programmeur Math 3D - Elligno\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\"},\"datePublished\":\"2024-02-23T14:12:15+00:00\",\"dateModified\":\"2024-02-23T14:12:17+00:00\",\"description\":\"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d'une biblioth\u00e8que math\u00e9matique haute performance.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/programmeur-math3d\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmeur Math 3D\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"name\":\"Elligno\",\"description\":\"Site dev elligno\",\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/elligno.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\",\"name\":\"Elligno Inc\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"contentUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"width\":256,\"height\":256,\"caption\":\"Elligno Inc\"},\"image\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/1129358366bfe88ea0feee16d1850da9\",\"name\":\"Jean B\u00e9langer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"caption\":\"Jean B\u00e9langer\"},\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/author\\\/elligno-panel-xr3w\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programmeur Math 3D - Elligno","description":"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d'une biblioth\u00e8que math\u00e9matique haute performance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/elligno.com\/fr\/programmeur-math3d\/","og_locale":"fr_FR","og_type":"article","og_title":"Programmeur Math 3D - Elligno","og_description":"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d'une biblioth\u00e8que math\u00e9matique haute performance.","og_url":"https:\/\/elligno.com\/fr\/programmeur-math3d\/","og_site_name":"Elligno","article_published_time":"2024-02-23T14:12:15+00:00","article_modified_time":"2024-02-23T14:12:17+00:00","author":"Jean B\u00e9langer","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Jean B\u00e9langer","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/#article","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/"},"author":{"name":"Jean B\u00e9langer","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/1129358366bfe88ea0feee16d1850da9"},"headline":"Programmeur Math 3D","datePublished":"2024-02-23T14:12:15+00:00","dateModified":"2024-02-23T14:12:17+00:00","mainEntityOfPage":{"@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/"},"wordCount":532,"commentCount":0,"publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"articleSection":["Nouvelles"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/elligno.com\/fr\/programmeur-math3d\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/","url":"https:\/\/elligno.com\/fr\/programmeur-math3d\/","name":"Programmeur Math 3D - Elligno","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/#website"},"datePublished":"2024-02-23T14:12:15+00:00","dateModified":"2024-02-23T14:12:17+00:00","description":"Projet en tant que programmeur math3D dans le domaine du jeu vid\u00e9o. Re factoring d'une biblioth\u00e8que math\u00e9matique haute performance.","breadcrumb":{"@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elligno.com\/fr\/programmeur-math3d\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/elligno.com\/fr\/programmeur-math3d\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elligno.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Programmeur Math 3D"}]},{"@type":"WebSite","@id":"https:\/\/elligno.com\/fr\/#website","url":"https:\/\/elligno.com\/fr\/","name":"Elligno","description":"Site dev elligno","publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elligno.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/elligno.com\/fr\/#organization","name":"Elligno Inc","url":"https:\/\/elligno.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","contentUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","width":256,"height":256,"caption":"Elligno Inc"},"image":{"@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/1129358366bfe88ea0feee16d1850da9","name":"Jean B\u00e9langer","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","caption":"Jean B\u00e9langer"},"url":"https:\/\/elligno.com\/fr\/author\/elligno-panel-xr3w\/"}]}},"_links":{"self":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/4086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/comments?post=4086"}],"version-history":[{"count":0,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/4086\/revisions"}],"wp:attachment":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/media?parent=4086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/categories?post=4086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/tags?post=4086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}