Updated Articles
[sdlgit/SDL-Site.git] / pages / blog-0002.html-inc
index 706ea53..bb24c57 100644 (file)
@@ -1,77 +1,70 @@
 <div class="blog">
 <h1 id="NAME">
-SDL RC 2.5 decides to play with PDL
+The SDL Perl Game Contest!
 </h1>
 <div class="CONTENT">
-<i>PDL provides great number crunching capabilities to Perl and SDL provides game-developer quality real-time bitmapping and sound.<br />
-You can use PDL and SDL together to create real-time,<br />
-responsive animations and simulations.<br />
-In this section we will go through the pleasures and pitfalls of working with both powerhouse libraries.</i> <b>-- David Mertnes</b><br />
-<br />
-<br />
-<h1>Creating a SDL Surface piddle</h1><br />
-PDL's core type is a piddle.<br />
-Once a piddle is provided to PDL it can go do a numerous amounts of things.<br />
-Please see the example in '<a href="http://github.com/kthakore/SDL_perl/blob/master/examples/cookbook/pdl.pl">examples/cookbook/pdl.pl</a>' in github.<br />
-<br />
-<h3>Creating a simple piddle</h3><br />
-First lets get the right modules.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'>  <span style='color:#e66170; font-weight:bold; '>use</span> <span style='color:#b060b0; '>PDL;</span>
-  <span style='color:#e66170; font-weight:bold; '>use</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Rect</span><span style='color:#b060b0; '>;</span>
-  <span style='color:#e66170; font-weight:bold; '>use</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Video</span><span style='color:#b060b0; '>;</span>
-  <span style='color:#e66170; font-weight:bold; '>use</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Surface</span><span style='color:#b060b0; '>;</span>
-  <span style='color:#e66170; font-weight:bold; '>use</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>PixelFormat</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Suppose you want a surface of size (200,400) and 32 bit (RGBA).<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>my</span> <span style='color:#d2cd86; '>(</span> $bytes_per_pixel<span style='color:#d2cd86; '>,</span> $width<span style='color:#d2cd86; '>,</span> $height <span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>=</span> <span style='color:#d2cd86; '>(</span> <span style='color:#00a800; '>4</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>200</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>400</span> <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Define the <b>$width</b>, <b>$height</b> and <b>$bytes_per_pixel</b>. Your <b>$bytes_per_pixel</b> is the number of bits (in this case 32) divided by 8 bits per byte. Therefore for our 32 bpp we have 4 Bpp;<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>my</span> $piddle  <span style='color:#d2cd86; '>=</span> zeros<span style='color:#d2cd86; '>(</span> byte<span style='color:#d2cd86; '>,</span> $bytes_per_pixel<span style='color:#d2cd86; '>,</span> $width<span style='color:#d2cd86; '>,</span> $height <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Create a normal $piddle with zeros, byte format and the Bpp x width x height dimensions.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>my</span> $pointer <span style='color:#d2cd86; '>=</span> $piddle<span style='color:#d2cd86; '>-></span>get_dataref<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Here is where we get the acutal data the piddle is pointing to. We will have SDL create a new surface from this function.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>my</span> $surface <span style='color:#d2cd86; '>=</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Surface</span><span style='color:#d2cd86; '>-></span>new_from<span style='color:#d2cd86; '>(</span> $pointer<span style='color:#d2cd86; '>,</span> $width<span style='color:#d2cd86; '>,</span> $height<span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>32</span><span style='color:#d2cd86; '>,</span>
-        $width <span style='color:#d2cd86; '>*</span> $bytes_per_pixel <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Using the same dimensions we create the surface using <b>SDL::Surface->new_form()</b>. The <b>$width * $Bpp</b> is the scanline (pitch) of the surface in bytes.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>warn</span> <span style='color:#00c4c4; '>"Made surface of </span><span style='color:#00c4c4; '>$width</span><span style='color:#00c4c4; '>, </span><span style='color:#00c4c4; '>$height</span><span style='color:#00c4c4; '> and "</span><span style='color:#d2cd86; '>.</span> $surface<span style='color:#d2cd86; '>-></span>format<span style='color:#d2cd86; '>-></span>BytesPerPixel<span style='color:#b060b0; '>;</span>
-   <span style='color:#e66170; font-weight:bold; '>return</span> <span style='color:#d2cd86; '>(</span> $piddle<span style='color:#d2cd86; '>,</span> $surface <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-Finally make sure that the surface acutally has the correct dimensions we gave.<br />
-<br />
-<b>NOTE:</b> <b>$surface->format->BytesPerPixel</b> must return 1,2,3,4. !!<br />
-<br />
-Now you can blit and use the surface as needed; and do PDL operations as required.<br />
-<br />
-<h3>Operating on the Surface safely</h3><br />
-To make sure SDL is in sync with the data. You must call SDL::Video::lock <b>before</b> doing PDL operations on the piddle.<br />
-<br />
-<pre><pre style='color:#d1d1d1;background:#000000;'><span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Video</span><span style='color:#d2cd86; '>:</span><span style='color:#d2cd86; '>:</span>lock_surface<span style='color:#d2cd86; '>(</span>$surface<span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-    $piddle <span style='color:#d2cd86; '>(</span> <span style='color:#d2cd86; '>:</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>0</span> <span style='color:#d2cd86; '>:</span> <span style='color:#e66170; font-weight:bold; '>rand</span><span style='color:#d2cd86; '>(</span><span style='color:#00a800; '>400</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>0</span> <span style='color:#d2cd86; '>:</span> <span style='color:#e66170; font-weight:bold; '>rand</span><span style='color:#d2cd86; '>(</span><span style='color:#00a800; '>200</span><span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>.</span><span style='color:#d2cd86; '>=</span>   pdl<span style='color:#d2cd86; '>(</span> <span style='color:#e66170; font-weight:bold; '>rand</span><span style='color:#d2cd86; '>(</span><span style='color:#00a800; '>225</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>,</span> <span style='color:#e66170; font-weight:bold; '>rand</span><span style='color:#d2cd86; '>(</span><span style='color:#00a800; '>225</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>,</span> <span style='color:#e66170; font-weight:bold; '>rand</span><span style='color:#d2cd86; '>(</span><span style='color:#00a800; '>255</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>255</span> <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre></pre><br />
-After that you can unlock the surface to blit.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Video</span><span style='color:#d2cd86; '>:</span><span style='color:#d2cd86; '>:</span>unlock_surface<span style='color:#d2cd86; '>(</span>$surface<span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-<h3>Errors due to BPP at blitting</h3><br />
-When blitting the new surface check for the return value to see if there has been a problem.<br />
-<br />
-<pre style='color:#d1d1d1;background:#000000;'><span style='color:#e66170; font-weight:bold; '>my</span> $b <span style='color:#d2cd86; '>=</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Video</span><span style='color:#d2cd86; '>:</span><span style='color:#d2cd86; '>:</span>blit_surface<span style='color:#d2cd86; '>(</span>
-        $surface<span style='color:#d2cd86; '>,</span>  <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Rect</span><span style='color:#d2cd86; '>-></span>new<span style='color:#d2cd86; '>(</span> <span style='color:#00a800; '>0</span><span style='color:#d2cd86; '>,</span> <span style='color:#00a800; '>0</span><span style='color:#d2cd86; '>,</span> $surface<span style='color:#d2cd86; '>-></span>w<span style='color:#d2cd86; '>,</span> $surface<span style='color:#d2cd86; '>-></span>h <span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>,</span>
-        $app<span style='color:#d2cd86; '>,</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>Rect</span><span style='color:#d2cd86; '>-></span>new<span style='color:#d2cd86; '>(</span>  <span style='color:#d2cd86; '>(</span> $app<span style='color:#d2cd86; '>-></span>w <span style='color:#d2cd86; '>-</span> $surface<span style='color:#d2cd86; '>-></span>w <span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>/</span> <span style='color:#00a800; '>2</span><span style='color:#d2cd86; '>,</span> <span style='color:#d2cd86; '>(</span> $app<span style='color:#d2cd86; '>-></span>h <span style='color:#d2cd86; '>-</span> $surface<span style='color:#d2cd86; '>-></span>h <span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>/</span> <span style='color:#00a800; '>2</span><span style='color:#d2cd86; '>,</span> $app<span style='color:#d2cd86; '>-></span>w<span style='color:#d2cd86; '>,</span> $app<span style='color:#d2cd86; '>-></span>h <span style='color:#d2cd86; '>)</span>
-       <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-    <span style='color:#e66170; font-weight:bold; '>die</span> <span style='color:#00c4c4; '>"Could not blit: "</span> <span style='color:#d2cd86; '>.</span> <span style='color:#904050; '>SDL</span><span style='color:#d2cd86; '>::</span><span style='color:#904050; '>get_error</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#e66170; font-weight:bold; '>if</span> <span style='color:#d2cd86; '>(</span> $b <span style='color:#d2cd86; '>=</span><span style='color:#d2cd86; '>=</span> <span style='color:#d2cd86; '>-</span><span style='color:#00a800; '>1</span> <span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span>
-</pre><br />
-If the error message is 'Blit combination not supported' that means that the BPP is incorrect or incosistent with the dimensions. After that a simple update_rect will so your new surface on the screen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-3580429408870545769?l=yapgh.blogspot.com' alt='' /></div>
-<p><a href="http://feedads.g.doubleclick.net/~a/HRpCokqdJ-wzrP1ZXUvgwcUNL_s/0/da"><img src="http://feedads.g.doubleclick.net/~a/HRpCokqdJ-wzrP1ZXUvgwcUNL_s/0/di" border="0" ismap="true"></img></a><br/>
-<a href="http://feedads.g.doubleclick.net/~a/HRpCokqdJ-wzrP1ZXUvgwcUNL_s/1/da"><img src="http://feedads.g.doubleclick.net/~a/HRpCokqdJ-wzrP1ZXUvgwcUNL_s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/KBG0kvzZCFo" height="1" width="1"/></div></div>
\ No newline at end of file
+<h2>Let's get a Party Started </h2><br />
+Sure, you know what <a href="http://libsdl.org/">SDL</a> is, right? Well, SDL has <a href="http://search.cpan.org/perldoc?SDL">very nice Perl <br />
+bindings</a> that let you use the power and flexibility of Perl to write <br />
+awesome games in no time!<br />
+<br />
+There's even a <a href="http://sdlperl.ath.cx/releases/SDL_Manual.pdf">manual to help you get started</a>, including full game<br />
+tutorials and a list of free/open-source resources for your games,<br />
+like sprites, sound effects and music.<br />
+<br />
+<h2>The Premise </h2><br />
+Everyone know that by far the Coolest Game Everâ„¢ is the one *you*<br />
+write, from that silly idea you had the other day to a playable game<br />
+you and your friends can enjoy.<br />
+<br />
+This march, the SDL Perl team is going to help you take that project<br />
+out of your dusty drawer of "TODO"s and turn it into a reality, with<br />
+the "SDL Perl Game Contest!"<br />
+<br />
+The rules are simple, and much like the Perl Ironman contest:<br />
+<br />
+"One game per week. Every week of march."<br />
+<br />
+This means by the end of march you'll have not one, but FOUR games to<br />
+show for. How cool is that?!<br />
+<br />
+In fact, you can even make your weekly game the subject of your<br />
+Ironman posts this month, and take out two birds with one stone<br />
+(hmm... more game ideas)!<br />
+<br />
+So this monday (feb. 28), start writing your game! You have until the<br />
+following monday to make it playable ("complete") and start all over<br />
+again with a brand new game for the next week.<br />
+<br />
+** But what if I miss a deadline? What if I can't start this monday?<br />
+<br />
+It doesn't really matter - just join the party and have some fun! Even<br />
+if you only get to do one game, it's still a great opportunity to<br />
+improve your skills and learn a bit about game design and development.<br />
+<br />
+If you need any assistance writing your game, from ideas to code, WE<br />
+WILL HELP! Just send an email to the SDL Perl mailing list with your<br />
+questions (you know, this one) or, better yet, join us live in #sdl<br />
+over at irc.perl.org and we'll be more than happy to assist you and<br />
+try your game out. If you never used irc before, please keep in mind<br />
+people might be busy or in different timezones than you, so you may<br />
+get instant responses or have to wait a few of hours before you get a<br />
+reply. Be patient!<br />
+<br />
+It can be a game about anything. Just make sure it's doable in a week.<br />
+Some games take years to be complete, but you might be surprised at<br />
+how much you can accomplish in just a few hours with SDL Perl :)<br />
+<br />
+Oh, there's one extra rule, actually, and that's mandatory - HAVE FUN!! :)<br />
+<br />
+<h2>Where to submit </h2>Send your games code an all in an email to sdl-devel@perl.org with the <br />
+subject "SDL Perl Game Contest #1: Submission". After a period of entries<br />
+a voting subject will be opened. See <a href="http://sdl.perl.org/"> SDL Perl Site</a> <br />
+on how to join the mailing list. <br />
+<br />
+<br />
+Cheers,<br />
+<br />
+breno (garu)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-1888888875968281171?l=yapgh.blogspot.com' alt='' /></div>
+<p><a href="http://feedads.g.doubleclick.net/~a/fGMY9Em4lBwcwH1-Rd6t1OVCxYs/0/da"><img src="http://feedads.g.doubleclick.net/~a/fGMY9Em4lBwcwH1-Rd6t1OVCxYs/0/di" border="0" ismap="true"></img></a><br/>
+<a href="http://feedads.g.doubleclick.net/~a/fGMY9Em4lBwcwH1-Rd6t1OVCxYs/1/da"><img src="http://feedads.g.doubleclick.net/~a/fGMY9Em4lBwcwH1-Rd6t1OVCxYs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/Lo-XCZ8R3Mo" height="1" width="1"/></div></div>
\ No newline at end of file