<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flashroom dev</title>
	<atom:link href="http://www.flashroom.pl/szymon/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flashroom.pl/szymon</link>
	<description></description>
	<lastBuildDate>Mon, 19 Jul 2010 19:11:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Curved Lines</title>
		<link>http://www.flashroom.pl/szymon/2009/11/curved-lines/</link>
		<comments>http://www.flashroom.pl/szymon/2009/11/curved-lines/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 12:52:43 +0000</pubDate>
		<dc:creator>Szymon Adamczyk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[curved]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[line]]></category>

		<guid isPermaLink="false">http://www.flashroom.pl/szymon/?p=107</guid>
		<description><![CDATA[Bawię się teraz trochę krzywymi liniami… Potrzebny mi jest kształt który będzie mógł być dowolnie zmieniany przez użytkownika. Trudne nie jest… zainspiruje się postem starego znajomego Granta i jeszcze trochę skubnę z innych blogów. Już planuje jakiś bardziej zawansowane narzędzie niż sketchpad. Mam tylko nadzieje że na planach się nie skończy. Źródła:Algorithmist, Cartogrammar, Gludion]]></description>
			<content:encoded><![CDATA[<p>Bawię się teraz trochę krzywymi liniami… Potrzebny mi jest kształt który będzie mógł być dowolnie zmieniany przez użytkownika. Trudne nie jest…  zainspiruje się postem starego znajomego <a href="http://www.gskinner.com/blog/archives/2008/05/drawing_curved.html">Granta</a> i jeszcze trochę skubnę z innych blogów.  </p>

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_0" width="300" height="300" align="none">
      <param name="movie" value="http://www.flashroom.pl/szymon/wp-content/uploads/2009/11/CurvedLines_Encrypt.swf" />
      <param name="align" value="none" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="http://www.flashroom.pl/szymon/wp-content/uploads/2009/11/CurvedLines_Encrypt.swf" width="300" height="300" align="none">
      <!--<![endif]-->
        <p>The Flash plugin is required to view this object.</p>
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p>Już planuje jakiś bardziej zawansowane narzędzie niż <a href="http://www.smason.com/flash/sketch">sketchpad</a>.  Mam tylko nadzieje że na planach się nie skończy.</p>
<p>Źródła:<a href="http://algorithmist.wordpress.com/online-demos/">Algorithmist</a>, <a href="http://www.cartogrammar.com/blog/continuous-curves-with-actionscript-3/">Cartogrammar</a>, <a href="http://blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html">Gludion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashroom.pl/szymon/2009/11/curved-lines/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wysyłanie zaszyfrowanych danych do php</title>
		<link>http://www.flashroom.pl/szymon/2009/09/wysylanie-zaszyfrowanych-danych/</link>
		<comments>http://www.flashroom.pl/szymon/2009/09/wysylanie-zaszyfrowanych-danych/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 15:54:22 +0000</pubDate>
		<dc:creator>Szymon Adamczyk</dc:creator>
				<category><![CDATA[Szyfrowanie]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[as3crypto]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[crypt]]></category>
		<category><![CDATA[crypto]]></category>

		<guid isPermaLink="false">http://www.flashroom.pl/szymon/?p=85</guid>
		<description><![CDATA[Wypuszczona jakiś czas temu biblioteka as3crypto pozwala na szyfrowanie tekstu. Z wysyłaniem danych do php jest jednak parę problemów – funkcje w as3crypto przeważnie nie wyrzucają danych które mcrypt w php mógł dobrze odkodować. Bardzo źle jednak nie jest… udało mi się skłonić do współpracy as3crypto i php ze sobą przy zastosowaniu standardów szyfrowania DES [...]]]></description>
			<content:encoded><![CDATA[<p>Wypuszczona jakiś czas temu biblioteka <a href="http://code.google.com/p/as3crypto/">as3crypto</a> pozwala na szyfrowanie tekstu.   Z wysyłaniem danych do php jest jednak parę problemów – funkcje w as3crypto przeważnie nie wyrzucają danych które  mcrypt w php mógł dobrze odkodować.  </p>
<p>Bardzo źle jednak nie jest…  udało mi się skłonić do współpracy as3crypto i php ze sobą przy zastosowaniu standardów szyfrowania DES i Blowfish w trybie CBC:</p>

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_1" width="500" height="520" align="none">
      <param name="movie" value="http://www.flashroom.pl/szymon/wp-content/uploads/2009/09/crypt_encrypt.swf" />
      <param name="align" value="none" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="http://www.flashroom.pl/szymon/wp-content/uploads/2009/09/crypt_encrypt.swf" width="500" height="520" align="none">
      <!--<![endif]-->
        <p>The Flash plugin is required to view this object.</p>
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p>Znalazłem jeszcze kodowanie AES i udostępnione do niego pliki(php, air i flex) na <a href="http://code.google.com/p/as3-to-php-aes-dataservice/">goole code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashroom.pl/szymon/2009/09/wysylanie-zaszyfrowanych-danych/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spatial Hashing &#8211; grupowanie obiektów</title>
		<link>http://www.flashroom.pl/szymon/2009/09/spatial-hashing/</link>
		<comments>http://www.flashroom.pl/szymon/2009/09/spatial-hashing/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 11:36:10 +0000</pubDate>
		<dc:creator>Szymon Adamczyk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Collision Detection]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[Grupowanie obiektów]]></category>
		<category><![CDATA[kolizje]]></category>
		<category><![CDATA[optymalizaja]]></category>
		<category><![CDATA[silnik]]></category>
		<category><![CDATA[Spatial Hashing]]></category>

		<guid isPermaLink="false">http://www.flashroom.pl/szymon/?p=65</guid>
		<description><![CDATA[Kolizje w grach to ważna sprawa. Często są to dość żrące CPU algorytmy i w co większych grach trzeba zastosować mechanizm ograniczenia ilości badany obiektów. Zanim zaczniemy jednak sortować czy grupować obiekty – trzeba się zastanowić czy warto… Dla małej ilość elementów algorytm „brute force” jest bardzo efektywny. Nieskomplikowany, polegający na tym że bada się [...]]]></description>
			<content:encoded><![CDATA[<p>Kolizje w grach to ważna sprawa.  Często są to dość żrące CPU algorytmy i w co większych grach trzeba zastosować mechanizm ograniczenia ilości badany obiektów. Zanim zaczniemy jednak sortować czy grupować obiekty – trzeba się zastanowić czy warto… </p>
<p>Dla małej ilość elementów algorytm „brute force” jest bardzo efektywny. Nieskomplikowany, polegający na tym że bada się kolizje każdego z każdym.</p>
<div class="codecolorer-container actionscript3 default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="actionscript3 codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span>i = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> &nbsp;n<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; a = obj<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span>j = i <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> j <span style="color: #000066; font-weight: bold;">&lt;</span> &nbsp;n<span style="color: #000066; font-weight: bold;">;</span> j<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #004993;">b</span> = obj<span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; checkCollision<span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">b</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<span style="color: #000000;">&#125;</span></div></div>
<p>Problem jednak powstaje przy większej ilości obiektów dla których kolizje musimy sprawdzić. Ilość wywołań metody checkCollision() dla n liczby obiektów rośnie dość szybko  O((n2-n)/2). Brute force zaczyna tak obciążać procesor że fps odczuwalnie spada.  Trzeba poszukać rozwiązania… a tych wcale nie jest mało…</p>
<p><strong>Spatial Hashing</strong></p>
<p>Chyba najprostsza metoda grupowania obiektów.  Na obszar gry „nakładamy” siatkę i zapamiętujemy referencję do obiektu w każdej komórce siatki nad którą obiekt się znajduje.  </p>
<p><img src="http://www.flashroom.pl/szymon/wp-content/uploads/2009/09/spatialhashing.gif" alt="spatialhashing" title="spatialhashing" width="289" height="232" class="alignnone size-full wp-image-68" /></p>
<p>Jest trochę problemów z optymalnym dopasowaniem wielkości komórki, ale zysk i tak będzie spory. Badamy kolizje tylko tych obiektów które znajdują się w tych samych komórkach. </p>
<p>Test dla 500 obiektów i porównanie z algorytmem brute force:</p>

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_2" width="481" height="481">
      <param name="movie" value="http://www.flashroom.pl/szymon/wp-content/uploads/2009/09/test.swf" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="http://www.flashroom.pl/szymon/wp-content/uploads/2009/09/test.swf" width="481" height="481">
      <!--<![endif]-->
        <p>The Flash plugin is required to view this object.</p>
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p>Dobra – źle nie jest…  ale i tak nie czułem pełni satysfakcji po napisaniu… otóż Michaela Baczynski na potrzeby silnika motor2 napisał quadtree – też algorytm do grupowania obiektów.  I cholera… jego jest szybszy… i to dużo. </p>
<p>Nie jestem tak dobry jak myślałem…  Tylko że do zwykłych gier quadtree średnio się nadaje.  Ma tą wadę iż dla obiektu będącego na środku i tak musimy zbadać kolizje z wszystkimi innymi obiektami – a gry robię tak że postać (dla której badam kolizje) przeważnie jest na środku. Czyli tak średnio&#8230;</p>
<p>No nić pozostaje mi tylko zoptymalizowanie silnika „spatial hashing”… bo przecież szybszy być musi… </p>
<p>Skorzystałem do budowy struktury danych udostępnione przez Michaela Baczynskiego. Zresztą test też jest jego pomysłu.</p>
<p>Źródła:<br />
<a href="http://lab.polygonal.de/ds/">Struktury danych</a><br />
<a href="http://www.ddj.com/184409694;jsessionid=I0GV0X3T3UA2KQSNDLPCKH0CJUNN2JVN?pgno=3">Collision Detection</a><br />
<a href="http://conkerjo.wordpress.com/2009/06/13/spatial-hashing-implementation-for-fast-2d-collisions/">Spatial hashing implementation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashroom.pl/szymon/2009/09/spatial-hashing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
