<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/~blog/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://www.thegiantball.com/~blog/index.php?/feeds/atom10.xml" rel="self" title="Al'Blog" type="application/atom+xml" />
    <link href="http://www.thegiantball.com/~blog/"                        rel="alternate"    title="Al'Blog" type="text/html" />
    <link href="http://www.thegiantball.com/~blog/rss.php?version=2.0"     rel="alternate"    title="Al'Blog" type="application/rss+xml" />
    <title type="html">Al'Blog</title>
    <subtitle type="html">Gotland, Visby, Suède, Roumanie, tranches de vie et tutti quanti</subtitle>
    <icon>http://www.thegiantball.com/~blog/templates/bulletproof/img/s9y_banner_small.png</icon>
    <id>http://www.thegiantball.com/~blog/</id>
    <updated>2009-11-15T16:52:40Z</updated>
    <generator uri="http://www.s9y.org/" version="1.2.1">Serendipity 1.2.1 - http://www.s9y.org/</generator>
    <dc:language>fr</dc:language>

    <entry>
        <link href="http://www.thegiantball.com/~blog/index.php?/archives/72-Un-super-moteur-de-jeu-completement-gratuit,-Unity!.html" rel="alternate" title="Un super moteur de jeu complètement gratuit, Unity!" />
        <author>
            <name>Alain</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-11-15T16:30:08Z</published>
        <updated>2009-11-15T16:52:40Z</updated>
        <wfw:comment>http://www.thegiantball.com/~blog/wfwcomment.php?cid=72</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.thegiantball.com/~blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=72</wfw:commentRss>
    
    
        <id>http://www.thegiantball.com/~blog/index.php?/archives/72-guid.html</id>
        <title type="html">Un super moteur de jeu complètement gratuit, Unity!</title>
        <content type="xhtml" xml:base="http://www.thegiantball.com/~blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                
<p>Quelle bonne surprise, l'environnement de création de jeu et moteur de jeu Unity dont je parlais il y a quelques billets (et quelques siècles) est maintenant gratuit dans sa version Indie, c'est à dire pour les personnes/organisations à faible revenus. La version Pro est toujours au même prix, avec quelques bonus, mais cette version est largement suffisante pour plein de choses...</p><p>Pour le télécharger, c'est <a onclick="javascript: pageTracker._trackPageview('/extlink/unity3d.com');"  title="Unity3D" href="http://unity3d.com">ici</a></p><p>Et pour voir un premier essai par moi même, c'est <a title="Exploration sous-marine" href="http://www.thegiantball.com/~GB/index.php?/archives/14-Undersea-exploration-early-version.html">ici</a>. C'est un &quot;simulateur&quot; de sous-marin d'exploration. Il y a pas grand chose à trouver encore (4 curiosités) et les déplacements sont un peu bizarre, mais j'y ai travaillé moins de 2 après-midi ! J'essayerais de l'avancer petit à petit, si je ne fais pas d'autres jeux.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.thegiantball.com/~blog/index.php?/archives/71-Des-sous-marins-pyrotechniques.html" rel="alternate" title="Des sous-marins pyrotechniques" />
        <author>
            <name>Alain</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-14T20:24:02Z</published>
        <updated>2009-07-14T20:33:10Z</updated>
        <wfw:comment>http://www.thegiantball.com/~blog/wfwcomment.php?cid=71</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.thegiantball.com/~blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    
            <category scheme="http://www.thegiantball.com/~blog/index.php?/categories/8-Game" label="Game" term="Game" />
    
        <id>http://www.thegiantball.com/~blog/index.php?/archives/71-guid.html</id>
        <title type="html">Des sous-marins pyrotechniques</title>
        <content type="xhtml" xml:base="http://www.thegiantball.com/~blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                
Mais où est passé mon moteur de jeu pour les batailles navales ??? En fait, techniquement le premier jeu est fini, et toujours jouable <a title="Sea Wars" href="http://www.thegiantball.com/~GBT/">ici</a>. Pas très évident, et donc à revoir. Mais j'ai transformé le jeu en quelque chose de plus accessible et immédiatement sympa, une sorte de générateur de feux d'artifices... Basé sur les torpilles et les missiles du précédent jeu <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" />. C'est le genre de feu d'artifice où il vaut mieux prendre ses distances... <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><p><br />Pour essayer, c'est <a title="Feux d'artifices" href="http://www.thegiantball.com/~GB">ICI !!!</a></p><a title="The Giant Ball" href="http://www.thegiantball.com/~GB"><p>(sur la future nouvelle page générale)</p></a>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.thegiantball.com/~blog/index.php?/archives/70-Un-moteur-de-jeu-complet-et-pas-cher-Unity3D.html" rel="alternate" title="Un moteur de jeu complet et pas cher : Unity3D" />
        <author>
            <name>Alain</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-05-04T20:56:21Z</published>
        <updated>2009-05-04T20:56:21Z</updated>
        <wfw:comment>http://www.thegiantball.com/~blog/wfwcomment.php?cid=70</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.thegiantball.com/~blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=70</wfw:commentRss>
    
            <category scheme="http://www.thegiantball.com/~blog/index.php?/categories/8-Game" label="Game" term="Game" />
    
        <id>http://www.thegiantball.com/~blog/index.php?/archives/70-guid.html</id>
        <title type="html">Un moteur de jeu complet et pas cher : Unity3D</title>
        <content type="xhtml" xml:base="http://www.thegiantball.com/~blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                
Dans ce billet, à compléter, je vais présenter un moteur de jeu 3D assez extraordinaire, pas gratuit mais pas cher (149€ en version indie), performant et vraiment complet : <a onclick="javascript: pageTracker._trackPageview('/extlink/www.unity3d.com/');"  title="Unity3D" href="http://www.unity3d.com/">Unity3D</a><p> Vous pouvez essayer la démo pendant 30 jours (la version indie complète), qui est compatible avec tout bon soft de 3D (et 2D bien sûr), comme ce satané <a onclick="javascript: pageTracker._trackPageview('/extlink/www.blender.org/');"  title="Blender" href="http://www.blender.org/">Blender</a>. Rassurez-vous, l'interface d'Unity n'est pas la même que dans Blender !</p><p><br />Si vous aimez, mais ne voulez pas passer 149€ dans Unity, vous avez deux solutions au moins pour faire des jeux avec un minimum de code : utiliser <a onclick="javascript: pageTracker._trackPageview('/extlink/www.neoaxisgroup.com/');"  href="http://www.neoaxisgroup.com/" title="Neo Axis Engine">Neo Axis Engine</a> ou des outils de moddings (mais pas de commercialisation alors). Eventuellement Blender.</p><p /> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.thegiantball.com/~blog/index.php?/archives/67-Back-on-track!-Tutoriel-du-jour-idiot-proof-coding!.html" rel="alternate" title="Back on track! &quot;Tutoriel&quot; du jour: idiot-proof coding!" />
        <author>
            <name>Alain</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-10-05T16:00:28Z</published>
        <updated>2008-10-19T11:39:57Z</updated>
        <wfw:comment>http://www.thegiantball.com/~blog/wfwcomment.php?cid=67</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.thegiantball.com/~blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    
            <category scheme="http://www.thegiantball.com/~blog/index.php?/categories/8-Game" label="Game" term="Game" />
    
        <id>http://www.thegiantball.com/~blog/index.php?/archives/67-guid.html</id>
        <title type="html">Back on track! &quot;Tutoriel&quot; du jour: idiot-proof coding!</title>
        <content type="xhtml" xml:base="http://www.thegiantball.com/~blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Un tutoriel assez spécial pour mon retour. Je parlerais aujourd'hui d'une méthode de programmation, et de quelque chose de plutôt méconnu <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p /><p>Plus jeune, quand je programmais, j'essayais de faire du code super propre, qui marche tout le temps. En cas de bug, blocage ou problème. Donc tests très rigoureux et corrections.</p><p>Seulement, ce n'est pas toujours possible de tester suffisamment, et c'est presque impossible, surtout sur des projets conséquents, de corriger tout. J'ai donc évolué pour adopter une autre approche : un code &quot;idiot-proof&quot;, c'est-à-dire qui ne va pas &quot;exploser&quot; s'il y a un problème.</p><p>À éviter : les blocages (boucles infinies, threads interlockés), les leaks trop importants (création d'objet dans boucle, pointeurs perdus/mal détruits (C/C++), référence statiques non nettoyées ou inter-références (que le garbage collector n'aime pas du tout en Java), écriture sur adresse mémoire non initialisé, utilisation d'une fonction membre d'un objet non créé...</p><p><br />L'idée est d'avoir d'une part un code qui va reprendre la main dans la plupart des cas de bug non-bloquants (comme l'utilisation d'un objet non-initialisé), et d'écrire une partie du code de facon à éviter certains cas. Par exemple, j'ai utilisé une API qui décodait des chaines de caractères avec quelque chose comme ça:</p><p><br />
<div class="bb-code-title">CODE:</div><div class="bb-code">while&#160;&#40;true&#41;
{
&#160;&#160;&#160;&#160;if&#160;&#40;str&#91;iIndex&#93;&#160;==&#160;','&#41;
&#160;&#160;&#160;&#160;{
        &#160;break;
&#160;  &#160;}
  &#160;else&#160;if&#160;&#40;str&#91;iIndex&#93;&#160;==&#160;'A'&#160;||&#160;str&#91;iIndex&#93;&#160;==&#160;'B'&#160;||&#160;str&#91;iIndex&#93;&#160;==&#160;'C'&#41;
  &#160;{
        &#160;//&#160;Some&#160;code&#160;here
        &#160;iIndex++;
  &#160;}
}</div></p><p /><p>Inconvénient, s'il existe un caractère autre que celui désiré (comme une fin de chaine), ca boucle à l'infini. En l'occurrence sur une création d'objet, donc crash sévère après un temps. Croyez le ou non, ce bug était tellement simple qu'il m'a fallu plus de 2 mois pour le trouver. Sortir le iIndex++ de la boucle permet déjà de faire mieux: ca risque simplement de lever une exception, lorsqu'on lira en dehors de la chaine. </p><p>Mais idéalement, il faut prévoir la fin de chaine, et tous cas inattendu. Je rajoute une gestion assez large des exceptions (pour exemple et par flemme, il vaudrait mieux mettre des exceptions concernant les éventuels problèmes du bloc, mais ça ne gène pas ici), car ce morceau de code n'est pas important par rapport au reste du programme et, donc, je ne veux pas qu'il plante mon programme en cas de problème :</p><p>
<div class="bb-code-title">CODE:</div><div class="bb-code">try{
&#160;&#160;&#160;&#160;while&#160;&#40;str&#91;iIndex&#93;&#160;!=&#160;EOF&#41;
&#160;&#160;&#160;&#160;{
 &#160;&#160;&#160;&#160; &#160;if&#160;&#40;str&#91;iIndex&#93;&#160;==&#160;','&#41;
 &#160;&#160;&#160;&#160; &#160;{
      &#160;&#160;&#160; &#160;&#160; &#160;break;
 &#160;&#160;&#160;&#160; &#160;}
 &#160;&#160;&#160;&#160; &#160;else&#160;if&#160;&#40;str&#91;iIndex&#93;&#160;==&#160;'A'&#160;||&#160;str&#91;iIndex&#93;&#160;==&#160;'B'&#160;||&#160;str&#91;iIndex&#93;&#160;==&#160;'C'&#41;
 &#160;&#160;&#160;&#160; &#160;{
 &#160;&#160;&#160;&#160;        &#160;//&#160;Some&#160;code&#160;here
 &#160;&#160;&#160;&#160; &#160;}
  &#160;&#160;&#160;&#160;&#160;else
&#160; &#160;&#160;&#160;&#160;{
  &#160;&#160;&#160;&#160;     &#160;theLog.add2Log&#40;&#34;The&#160;letter&#160;&#34;&#160;+&#160;str&#91;iIndex&#93;&#160;+&#160;&#34;&#160;is&#160;not&#160;known&#160;by&#160;the&#160;parser.&#34;&#41;;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  &#160;&#160;&#160;&#160;&#160;iIndex++;
&#160;&#160;&#160;&#160;}
}
catch&#160;&#40;Exception&#160;e&#41;
{
&#160;&#160;&#160;&#160;//&#160;Print&#160;something&#160;about&#160;the&#160;exception
}</div></p><p /><p>C'est juste une facon de faire, pas forcément optimale, mais qui peut minimiser les problèmes ! Pour résumer le principe : &quot;J'assume que je peux faire des bétises, donc j'écris mon code pour y résister&quot; <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> . L'idée est que les portions de codes bien écrites, mais idiot-proof, vont amortir les problèmes des portions buggées et, si possible, me donner des indications me permettant de corriger ces portions ! Bien sûr ça ne marche pas toujours, malheureusement.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.thegiantball.com/~blog/index.php?/archives/66-Waypoints,-weapons-warfare-Ca-commence-a-ressembler-a-un-jeu.html" rel="alternate" title="Waypoints, weapons &amp; warfare - Ça commence à ressembler à un jeu" />
        <author>
            <name>Alain</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-01T17:40:24Z</published>
        <updated>2008-07-01T17:40:24Z</updated>
        <wfw:comment>http://www.thegiantball.com/~blog/wfwcomment.php?cid=66</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.thegiantball.com/~blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    
            <category scheme="http://www.thegiantball.com/~blog/index.php?/categories/8-Game" label="Game" term="Game" />
    
        <id>http://www.thegiantball.com/~blog/index.php?/archives/66-guid.html</id>
        <title type="html">Waypoints, weapons &amp; warfare - Ça commence à ressembler à un jeu</title>
        <content type="xhtml" xml:base="http://www.thegiantball.com/~blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Plein plein plein de lignes de code, mes tutoriels sont très en retards. Mais le jeu ressemble à quelque chose. Le système d'arme est sophistiqué, vous pouvez dessiner avec les torpilles et les missiles <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Et ça a un intérêt stratégique, pour les missiles pour le moment (sans doute pour les torpilles aussi plus tard) : quand une unité repère un missile, elle essaye de l'intercepter. Ces missiles sont spéciaux, et ne vont pas accrocher une unité, seulement des missiles, mais l'interception peut très bien se faire sur votre unité... Avec un chemin, vous diminuez les chances d'interception sur des unités alliés. Bien sûr ce sera aussi bien pratique si je fais une version multijoueur.</p><p>Il devrait bientôt y avoir une version de test en beta (c'est-à-dire correctement jouable), une page web plus complète alors (peut-être sur le forum pour le début, pour des changements fréquents), et sans doute aussi un appel à volontaires: IA, niveaux, systèmes de jeux (paysages statiques, autres armes et unités), gfx, réalisme/tuning, musique et sons. Mais pour l'instant je me débrouille bien tout seul <img src="http://www.thegiantball.com/~blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Tant que je ne suis pas épuisé, ça va !!!</p><p><br />Pour jouer, c'est toujours <a href="http://www.thegiantball.com/~GBT/" title="SubGame déjà avancé">ici</a>.</p><p></p> 
            </div>
        </content>
        
    </entry>

</feed>