<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Felice Pollano Blog - XNA</title>
    <link>http://www.felicepollano.com/</link>
    <description>The official Fatica Labs Blog!</description>
    <language>en-us</language>
    <copyright>Felice Pollano</copyright>
    <lastBuildDate>Sat, 14 Aug 2010 19:47:49 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>felice@felicepollano.com</managingEditor>
    <webMaster>felice@felicepollano.com</webMaster>
    <item>
      <trackback:ping>http://www.felicepollano.com/Trackback.aspx?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</trackback:ping>
      <pingback:server>http://www.felicepollano.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.felicepollano.com/PermaLink.aspx?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</pingback:target>
      <dc:creator>Felice Pollano</dc:creator>
      <wfw:comment>http://www.felicepollano.com/CommentView.aspx?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</wfw:comment>
      <wfw:commentRss>http://www.felicepollano.com/SyndicationService.asmx/GetEntryCommentsRss?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Fine delle vacanze, e fine del “<a href="http://www.felicepollano.com/2010/07/29/NonSoloCodice.aspx">giochino</a>”
passatempo fatto con <a href="http://creators.xna.com/en-US/">Microsoft XNA Game Studio</a>.
In pratica ho aggiunto la possibilità di avere un modo match o un modo “training”,
e finalmete c’è un sistema di punteggi ed una certa “Game logic” in termini di palle
da giocare, punti moltiplicati per sponda, penalità se si tocca il computer o la sedia,
etc. Il gioco è giocabile.
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Summersalmostgone_1323C/point_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="point" border="0" alt="point" src="http://www.felicepollano.com/public/WindowsLiveWriter/Summersalmostgone_1323C/point_thumb.png" width="367" height="288" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=eb5cfbfe-5ca0-4259-b401-38c3182907b1" />
      </body>
      <title>Summer’s almost gone</title>
      <guid isPermaLink="false">http://www.felicepollano.com/PermaLink.aspx?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</guid>
      <link>http://www.felicepollano.com/2010/08/14/SummersAlmostGone.aspx</link>
      <pubDate>Sat, 14 Aug 2010 19:47:49 GMT</pubDate>
      <description>&lt;p&gt;
Fine delle vacanze, e fine del “&lt;a href="http://www.felicepollano.com/2010/07/29/NonSoloCodice.aspx"&gt;giochino&lt;/a&gt;”
passatempo fatto con &lt;a href="http://creators.xna.com/en-US/"&gt;Microsoft XNA Game Studio&lt;/a&gt;.
In pratica ho aggiunto la possibilità di avere un modo match o un modo “training”,
e finalmete c’è un sistema di punteggi ed una certa “Game logic” in termini di palle
da giocare, punti moltiplicati per sponda, penalità se si tocca il computer o la sedia,
etc. Il gioco è giocabile.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Summersalmostgone_1323C/point_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="point" border="0" alt="point" src="http://www.felicepollano.com/public/WindowsLiveWriter/Summersalmostgone_1323C/point_thumb.png" width="367" height="288"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=eb5cfbfe-5ca0-4259-b401-38c3182907b1" /&gt;</description>
      <comments>http://www.felicepollano.com/CommentView.aspx?guid=eb5cfbfe-5ca0-4259-b401-38c3182907b1</comments>
      <category>Games</category>
      <category>XNA</category>
    </item>
    <item>
      <trackback:ping>http://www.felicepollano.com/Trackback.aspx?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</trackback:ping>
      <pingback:server>http://www.felicepollano.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.felicepollano.com/PermaLink.aspx?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</pingback:target>
      <dc:creator>Felice Pollano</dc:creator>
      <wfw:comment>http://www.felicepollano.com/CommentView.aspx?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</wfw:comment>
      <wfw:commentRss>http://www.felicepollano.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="justify">
La cosa bella di saper programmare è che la vastità di cose che si possono fare non
ha praticamente limiti. Uno dei task più divertenti è sicuramente la scrittura di
un videogioco: si spazia dalla conoscenza pura di un linguaggio, alla matematica 3d,
all’arte e, ovviamente l’idea. La parte matematica, per chi si interessa dell’argomento,
è ben definita, basta leggere uno o più classici, tra i quali segnalerei, per averne
usato ed abusato <a href="http://www.starstonesoftware.com/OpenGL/" target="_blank">OpenGL
SuperBible</a>, <a href="http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Development/dp/1584500379" target="_blank">Mathematics
for 3D Game Programming &amp; Computer Graphics</a>, ed altri che per legami con qualche
particolare framework sono oggi anacronistici. Dal punto di vista artistico, un gioco
ha texture, modelli suoni, musiche… tutte risorse facilmente reperibili, anche in
Open Source, anche gratuitamente – se non si vuole fare un gioco da vendere – in rete.
Il problema di quasi tutti i framework era che nessuno forniva metodi per caricare
diversi tipi di “asset”. Fortunatamente questo gap è stato colmato da <a href="http://msdn.microsoft.com/en-us/aa937791.aspx" target="_blank">XNA
Game Studio</a>. Basato su DirectX – Direct3d è facile ed intuitivo da usare per chiunque
abbia visto un po’ di grafica 3d, ma offre veramente dei grandi vantaggi in termini
di import di risorse  (texture, suoni, modelli 3d in svariati formati, etc ).
In pratica basta “compilare” l’asset e poi chiamare Load&lt;tipodellasset&gt;(“Nome”)
ed il gioco è fatto. 
</p>
        <p align="justify">
Ciò detto, per fare un gioco ( che per il programmatore è più divertente che giocarlo
), serve un idea: o si fa il solito clone, o si trae ispirazione da qualcosa… nel
mio caso, negli uffici di una delle ditte in cui ho lavorato, c’erano delle putrelle
a vista: a qualcuno venne l’idea di lanciare una pallina da tennis e di bloccarla
con bello stile nello spazio che la putrella crea con la sua doppia “T”. Al dil à
dell’idiozia della cosa, e di quanto ancor più idiota sia pensare di creare un videogame
con quell’argomento, ecco nascere “Putrella ! ( The Game)”. La stanza è un po’ claustrofobica,
il monitor è anch’esso allietato dallo stesso videogame, <a href="http://www.google.it/imgres?imgurl=http://diskoduck.cz/shop/images/Pink_Floyd-Ummagumma-Frontal.jpg&amp;imgrefurl=http://diskoduck.cz/shop/index.php%3Fmain_page%3Dproduct_info%26cPath%3D18_26%26products_id%3D2732&amp;usg=__qqhBd_NDxlP2hlFqRCpVmWolvQM=&amp;h=953&amp;w=953&amp;sz=177&amp;hl=it&amp;start=0&amp;tbnid=iYnj_LzMtK5jFM:&amp;tbnh=127&amp;tbnw=123&amp;prev=/images%3Fq%3DUmmagumma%26hl%3Dit%26client%3Dfirefox-a%26sa%3DG%26rls%3Dorg.mozilla:it:official%26biw%3D1385%26bih%3D682%26gbv%3D2%26tbs%3Disch:1&amp;itbs=1&amp;iact=hc&amp;vpx=282&amp;vpy=87&amp;dur=1066&amp;hovh=167&amp;hovw=167&amp;tx=101&amp;ty=98&amp;page=1&amp;ndsp=32&amp;ved=1t:429,r:1,s:0" target="_blank">quasi
a citare una più famosa scena che compariva su un disco del 1969…</a> 
</p>
        <p align="justify">
Difficile da spiegare… ma vediamo qualche screenshot:
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s1_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s1" border="0" alt="s1" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s1_thumb.png" width="244" height="191" />
          </a>
        </p>
        <p>
Un bel freccione verde fosforescente per scegliere dove tirare la pallina. Per inciso
la pallina è una mesh sferica disegnata con <a href="http://chumbalum.swissquake.ch/" target="_blank">Milkshape</a>,
e la texture invece è gentilmente offerta da google maps. La strana scriita in greco
sulla pallina invece…
</p>
        <p>
Ovviamente si può modificare la posizione di lancio e anche lo “Ziembolo” che è un
piemontesismo per dire “Spin”
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s2" border="0" alt="s2" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2_thumb.png" width="244" height="191" />
          </a>
        </p>
        <p>
Beh, con lo spazio si decide la forza, e in altro a destra compare un decanewtonmetro
un po’ old fashion: si tratta in realtà di una immagine di un milliamperometro corretta,
la lancetta invece è una texture di una linea che viene fatta ruotare per simulare
uno strumento analogico. Con due stupidaggini l’effetto è alquanto realistico.
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2a_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s2a" border="0" alt="s2a" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2a_thumb.png" width="244" height="191" />
          </a>
        </p>
        <p>
Non sempre si fa putrella, anzi per la verità non lo si fa quasi mai: di solito la
pallina cade, fa qualche rimbalzo e la storia finisce li… Già, ma come rimbalza una
pallina ? Per questo ci viene in aiuto quello che si chiama <a href="http://en.wikipedia.org/wiki/Physics_engine" target="_blank">engine
fisico</a>, ovvero uno strumento software che ci permette di simulare un mondo di
corpi rigidi, data una descrizione del suo stato iniziale e delle forze applicate
ai vari elementi. Io ho scelto <a href="http://oopsframework.codeplex.com/" target="_blank">OOPS</a>.
In realtà è ancora un progetto giovane, ha qualche problemino, ma è fully managed,
facilissimo da usare, e per quello che dovevo fare bastava. Come è modellato il mondo
? Niente di speciale, la pallina è, nella “lingua” di OOPS una CollisionSphere, I
muri sono dei CollisionPlane, e tutto il resto, putrella compresa, delle CollisionMesh.
Ah, dimenticavo, la putrella l’ho disegnata con MilkShape, mentre le altre paccottiglie
( sedia, scrivania, computer ) sono modelli free presi in rete.
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s4_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s4" border="0" alt="s4" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s4_thumb.png" width="244" height="191" />
          </a>
        </p>
        <p>
 
</p>
        <p>
E’ difficile fare putrella, un po’ più facile è fare il cesto ( bin ). Anche questo
è fatto con MilkShape. Visto che Milkshape non supporta la CSG ( Constructive Solid
Geometry, ammazza che parolone ) bisogna ingegnarsi , facciamo due tronchi di cono,
li infiliamo uno dentro l’altro, e a quello + interno cambiamo l’ordine dei vertici,
semplice e banale, nonchè funzionante.
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s3_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s3" border="0" alt="s3" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s3_thumb.png" width="244" height="191" />
          </a>
        </p>
        <p>
Ancorchè difficile, prima o poi ci si riesce. Ma chi cambia l’inquadratura ? Molto
semplicemente, quando la pallina rallenta, la Camera ( anche qui un concetto 3D, la
camera è l’unione della ViewMatrix e della ProjectionMatrix ) da fissa si trasforma
in una chasing camera. Per evitare movimenti troppo bruschi, I vettori sono interpolati
in modo da avere una prospettiva che gradualmente si avvicina alla palla.
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
Bene in pratica cosa ho dovuto scrivere per fare questo gioco ? Molto, molto poco.
Sempre di più nella programmazione bisogna saper scegliere e fare leva sulle cose
buone già costruite, ed aggiungere un piccolo contributo di qualità, che altri possano
usare. In questo caso la cosa che ho aggiunto <a href="http://oopsframework.codeplex.com/Thread/View.aspx?ThreadId=221297" target="_blank">penso
possa essere questa</a>. 
</p>
        <img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=cf8fb39e-efdc-4051-b226-10cdd94144bc" />
      </body>
      <title>Non solo codice …</title>
      <guid isPermaLink="false">http://www.felicepollano.com/PermaLink.aspx?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</guid>
      <link>http://www.felicepollano.com/2010/07/29/NonSoloCodice.aspx</link>
      <pubDate>Thu, 29 Jul 2010 21:24:17 GMT</pubDate>
      <description>&lt;p align="justify"&gt;
La cosa bella di saper programmare è che la vastità di cose che si possono fare non
ha praticamente limiti. Uno dei task più divertenti è sicuramente la scrittura di
un videogioco: si spazia dalla conoscenza pura di un linguaggio, alla matematica 3d,
all’arte e, ovviamente l’idea. La parte matematica, per chi si interessa dell’argomento,
è ben definita, basta leggere uno o più classici, tra i quali segnalerei, per averne
usato ed abusato &lt;a href="http://www.starstonesoftware.com/OpenGL/" target="_blank"&gt;OpenGL
SuperBible&lt;/a&gt;, &lt;a href="http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Development/dp/1584500379" target="_blank"&gt;Mathematics
for 3D Game Programming &amp;amp; Computer Graphics&lt;/a&gt;, ed altri che per legami con qualche
particolare framework sono oggi anacronistici. Dal punto di vista artistico, un gioco
ha texture, modelli suoni, musiche… tutte risorse facilmente reperibili, anche in
Open Source, anche gratuitamente – se non si vuole fare un gioco da vendere – in rete.
Il problema di quasi tutti i framework era che nessuno forniva metodi per caricare
diversi tipi di “asset”. Fortunatamente questo gap è stato colmato da &lt;a href="http://msdn.microsoft.com/en-us/aa937791.aspx" target="_blank"&gt;XNA
Game Studio&lt;/a&gt;. Basato su DirectX – Direct3d è facile ed intuitivo da usare per chiunque
abbia visto un po’ di grafica 3d, ma offre veramente dei grandi vantaggi in termini
di import di risorse&amp;nbsp; (texture, suoni, modelli 3d in svariati formati, etc ).
In pratica basta “compilare” l’asset e poi chiamare Load&amp;lt;tipodellasset&amp;gt;(“Nome”)
ed il gioco è fatto. 
&lt;/p&gt;
&lt;p align="justify"&gt;
Ciò detto, per fare un gioco ( che per il programmatore è più divertente che giocarlo
), serve un idea: o si fa il solito clone, o si trae ispirazione da qualcosa… nel
mio caso, negli uffici di una delle ditte in cui ho lavorato, c’erano delle putrelle
a vista: a qualcuno venne l’idea di lanciare una pallina da tennis e di bloccarla
con bello stile nello spazio che la putrella crea con la sua doppia “T”. Al dil à
dell’idiozia della cosa, e di quanto ancor più idiota sia pensare di creare un videogame
con quell’argomento, ecco nascere “Putrella ! ( The Game)”. La stanza è un po’ claustrofobica,
il monitor è anch’esso allietato dallo stesso videogame, &lt;a href="http://www.google.it/imgres?imgurl=http://diskoduck.cz/shop/images/Pink_Floyd-Ummagumma-Frontal.jpg&amp;amp;imgrefurl=http://diskoduck.cz/shop/index.php%3Fmain_page%3Dproduct_info%26cPath%3D18_26%26products_id%3D2732&amp;amp;usg=__qqhBd_NDxlP2hlFqRCpVmWolvQM=&amp;amp;h=953&amp;amp;w=953&amp;amp;sz=177&amp;amp;hl=it&amp;amp;start=0&amp;amp;tbnid=iYnj_LzMtK5jFM:&amp;amp;tbnh=127&amp;amp;tbnw=123&amp;amp;prev=/images%3Fq%3DUmmagumma%26hl%3Dit%26client%3Dfirefox-a%26sa%3DG%26rls%3Dorg.mozilla:it:official%26biw%3D1385%26bih%3D682%26gbv%3D2%26tbs%3Disch:1&amp;amp;itbs=1&amp;amp;iact=hc&amp;amp;vpx=282&amp;amp;vpy=87&amp;amp;dur=1066&amp;amp;hovh=167&amp;amp;hovw=167&amp;amp;tx=101&amp;amp;ty=98&amp;amp;page=1&amp;amp;ndsp=32&amp;amp;ved=1t:429,r:1,s:0" target="_blank"&gt;quasi
a citare una più famosa scena che compariva su un disco del 1969…&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p align="justify"&gt;
Difficile da spiegare… ma vediamo qualche screenshot:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s1_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s1" border="0" alt="s1" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s1_thumb.png" width="244" height="191"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Un bel freccione verde fosforescente per scegliere dove tirare la pallina. Per inciso
la pallina è una mesh sferica disegnata con &lt;a href="http://chumbalum.swissquake.ch/" target="_blank"&gt;Milkshape&lt;/a&gt;,
e la texture invece è gentilmente offerta da google maps. La strana scriita in greco
sulla pallina invece…
&lt;/p&gt;
&lt;p&gt;
Ovviamente si può modificare la posizione di lancio e anche lo “Ziembolo” che è un
piemontesismo per dire “Spin”
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s2" border="0" alt="s2" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2_thumb.png" width="244" height="191"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Beh, con lo spazio si decide la forza, e in altro a destra compare un decanewtonmetro
un po’ old fashion: si tratta in realtà di una immagine di un milliamperometro corretta,
la lancetta invece è una texture di una linea che viene fatta ruotare per simulare
uno strumento analogico. Con due stupidaggini l’effetto è alquanto realistico.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2a_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s2a" border="0" alt="s2a" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s2a_thumb.png" width="244" height="191"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Non sempre si fa putrella, anzi per la verità non lo si fa quasi mai: di solito la
pallina cade, fa qualche rimbalzo e la storia finisce li… Già, ma come rimbalza una
pallina ? Per questo ci viene in aiuto quello che si chiama &lt;a href="http://en.wikipedia.org/wiki/Physics_engine" target="_blank"&gt;engine
fisico&lt;/a&gt;, ovvero uno strumento software che ci permette di simulare un mondo di
corpi rigidi, data una descrizione del suo stato iniziale e delle forze applicate
ai vari elementi. Io ho scelto &lt;a href="http://oopsframework.codeplex.com/" target="_blank"&gt;OOPS&lt;/a&gt;.
In realtà è ancora un progetto giovane, ha qualche problemino, ma è fully managed,
facilissimo da usare, e per quello che dovevo fare bastava. Come è modellato il mondo
? Niente di speciale, la pallina è, nella “lingua” di OOPS una CollisionSphere, I
muri sono dei CollisionPlane, e tutto il resto, putrella compresa, delle CollisionMesh.
Ah, dimenticavo, la putrella l’ho disegnata con MilkShape, mentre le altre paccottiglie
( sedia, scrivania, computer ) sono modelli free presi in rete.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s4_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s4" border="0" alt="s4" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s4_thumb.png" width="244" height="191"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
E’ difficile fare putrella, un po’ più facile è fare il cesto ( bin ). Anche questo
è fatto con MilkShape. Visto che Milkshape non supporta la CSG ( Constructive Solid
Geometry, ammazza che parolone ) bisogna ingegnarsi , facciamo due tronchi di cono,
li infiliamo uno dentro l’altro, e a quello + interno cambiamo l’ordine dei vertici,
semplice e banale, nonchè funzionante.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s3_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="s3" border="0" alt="s3" align="left" src="http://www.felicepollano.com/public/WindowsLiveWriter/Nonsolocodice_14889/s3_thumb.png" width="244" height="191"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ancorchè difficile, prima o poi ci si riesce. Ma chi cambia l’inquadratura ? Molto
semplicemente, quando la pallina rallenta, la Camera ( anche qui un concetto 3D, la
camera è l’unione della ViewMatrix e della ProjectionMatrix ) da fissa si trasforma
in una chasing camera. Per evitare movimenti troppo bruschi, I vettori sono interpolati
in modo da avere una prospettiva che gradualmente si avvicina alla palla.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Bene in pratica cosa ho dovuto scrivere per fare questo gioco ? Molto, molto poco.
Sempre di più nella programmazione bisogna saper scegliere e fare leva sulle cose
buone già costruite, ed aggiungere un piccolo contributo di qualità, che altri possano
usare. In questo caso la cosa che ho aggiunto &lt;a href="http://oopsframework.codeplex.com/Thread/View.aspx?ThreadId=221297" target="_blank"&gt;penso
possa essere questa&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=cf8fb39e-efdc-4051-b226-10cdd94144bc" /&gt;</description>
      <comments>http://www.felicepollano.com/CommentView.aspx?guid=cf8fb39e-efdc-4051-b226-10cdd94144bc</comments>
      <category>Games</category>
      <category>XNA</category>
    </item>
  </channel>
</rss>