<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
    <channel>
        <title>FIREking's site</title>
        <link>http://www.byond.com/members/FIREking</link>
        <description></description>
        <lastBuildDate>Thu, 20 Jun 2013 02:39:07 +0000</lastBuildDate>
        <language>en-us</language>
    
                <item>
            <title>500's might be getting back to feature requests; So, what do you want to see?</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1294776</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1294776</guid>
            <pubDate>Mon, 17 Jun 2013 06:07:41 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1294776#comments</comments>
            
            <description>This is just a fun post, let's not get too crazy. The feature requests forum is overflowed when a billion gajillion feature requests and I'm sure it probably is a place Tom and Lummox like to often avoid (rightfully so, they have much more important things to worry about).&lt;br&gt;
&lt;br&gt;
Just for the sake of having a fun and light conversation on the topic at hand: What features would you most like to see in Byond version 500?&lt;br&gt;
&lt;br&gt;
Here's my current list!&lt;br&gt;
&lt;br&gt;
&lt;b&gt;atom/angle and atom/alpha&lt;/b&gt; - these added variables control an atom's current state of rotation and rendered transparency... Both of these would cause appearance updates so they are some-what expensive to add... But currently, if you want to achieve these, you have to do server-to-client icon operations which is SLOW AS HELL... If the BYOND team upgraded DreamSeeker to understand a atom rotation and atom alpha packet command, this could be added fairly easily and extremely useful to developers.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;debug trace&lt;/b&gt; - the ability to trace a list of proc calls in order from oldest to newest... This is the closest thing I think we'd ever get to having a steppable IDE (BYOND will never have that, I don't think). With this, you'd be able to debug some complex code very easily. Its possible to create your own trace with a TON of work but it would result in a TON of overhead. This would only be available in DEBUG compilations and probably a profiler function... not intended to slow down performance on production builds or anything like that.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;particles&lt;/b&gt; - Just watch this entire video: &lt;a href=&quot;http://www.youtube.com/watch?v=Fy0aCDmgnxg&quot;&gt;http://www.youtube.com/watch?v=Fy0aCDmgnxg&lt;/a&gt; and you'll see why this is important (listen to the crowd at 13:27 and 13:55). This has been avoided in fear of &quot;feature creep&quot; as Tom put it, but honestly its 2013 and there's not much of an excuse to not have a simplistic particle engine built in...&lt;br&gt;
&lt;br&gt;
And some less important ones:&lt;br&gt;
&lt;br&gt;
&lt;b&gt;ability to get full file path from input()&lt;/b&gt; - currently its impossible to write really useful utilities that do batch processing without the ability to grab a full file path from an inputted file.. I'd also like an &quot;as directory&quot; type for input() so that you can select a &quot;folder&quot; to look for files in or to do stuff with files.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;server request api&lt;/b&gt; - basically the ability to integrate your website with your game world. show people logged in, grab simple stats, etc... maybe just a simple way to get an HTTP response from the world server with some pre-defined world ?topics.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;prevent the suppression of error messages&lt;/b&gt; - a compile time flag that lets you see every error message in all its glory, for people with some pesky problems that are unsolvable otherwise.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;forced line break for maptext overflow&lt;/b&gt; - if you type the letter a with no spaces enough times in a maptext value to extend past its maptext_width, the engine makes no attempt to force line-break or cut off the text at the width.</description>
        </item>
                <item>
            <title>pixel_projectile</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1294487</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1294487</guid>
            <pubDate>Sun, 16 Jun 2013 23:37:07 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1294487#comments</comments>
            
            <description>Just wanted to plug my new library, the most efficient I've been able to make a fixed angle fixed velocity pixel_projectile for tile-based games:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://www.byond.com/developer/FIREking/pixel_projectile&quot;&gt;http://www.byond.com/developer/FIREking/pixel_projectile&lt;/a&gt;</description>
        </item>
                <item>
            <title>recursive spawn() vs while() sleep()</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1292236</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1292236</guid>
            <pubDate>Fri, 14 Jun 2013 11:17:24 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1292236#comments</comments>
            
            <description>Just searching for some clarification here, I would like to know what happens under the hood for the following code:&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;dmcode&quot;&gt;
&lt;table width=&quot;100%&quot; border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre class=&quot;dmcode&quot;&gt;
&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/test_while()&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;while&lt;/span&gt;(1)&lt;br&gt;        x++&lt;br&gt;        sleep(1)
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
vs&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;dmcode&quot;&gt;
&lt;table width=&quot;100%&quot; border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre class=&quot;dmcode&quot;&gt;
&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/test_spawn()&lt;br&gt;    x++&lt;br&gt;    spawn(1) test_spawn()
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
It is my understanding that the test_while() will never return, but test_spawn() will return after every spawn(1) call. test_spawn() is scheduling a new call every 10th second but is also returning within the tick its called. Also, the object that test_while() belongs to can't be garbage collected unless there's a break case or a return.&lt;br&gt;
&lt;br&gt;
I would like to know a little more about the stack specifically. I've tested situations where recursive spawn() is actually more efficient than while() which is strange considering I think spawn() should have more overhead with the constant stacking.&lt;br&gt;
&lt;br&gt;
It is not clear to me when to choose to use one method over the other.</description>
        </item>
                <item>
            <title>find the angle (in degrees) between two points without atan2, atan, acos, arctan</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1289853</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1289853</guid>
            <pubDate>Tue, 11 Jun 2013 20:26:55 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1289853#comments</comments>
            
            <description>How do you find the angle in degrees between two points without using trig functions?&lt;br&gt;
&lt;br&gt;
I can't, for the life of me, figure out how to compute this raw without trig functions.</description>
        </item>
                <item>
            <title>Donation Club</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1279651</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1279651</guid>
            <pubDate>Fri, 31 May 2013 02:59:48 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1279651#comments</comments>
            
            <description>I am going to donate $50.00 each month to BYOND for the rest of the year because I appreciate what I can do with the development tools, and without it, I'd be writing really boring stuff like packet protocols.&lt;br&gt;
&lt;br&gt;
That said, I'd like to know who else is willing and able to make a commitment like this?&lt;br&gt;
&lt;br&gt;
It's not much but combined, it all helps!</description>
        </item>
                <item>
            <title>Working towards fastest possible pixel projectile</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1276803</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1276803</guid>
            <pubDate>Mon, 27 May 2013 02:27:35 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1276803#comments</comments>
            
            <description>I'm trying to create the fastest (most efficient) possible pixel projectile in DM&lt;br&gt;
&lt;br&gt;
Here's what I've got so far:&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;dmcode&quot;&gt;
&lt;table width=&quot;100%&quot; border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre class=&quot;dmcode&quot;&gt;
&lt;span class=&quot;dmpreprocessor&quot;&gt;#define WORLD_ICON_SIZE 64&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;dmpreprocessor&quot;&gt;#define WORLD_HALF_ICON_SIZE 32&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/&lt;span class=&quot;dmkeyword&quot;&gt;tmp&lt;/span&gt;/projectiles = 0&lt;br&gt;&lt;br&gt;atom/movable/&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/set_pos_px(px, py)&lt;br&gt;    &lt;span class=&quot;dmcomment&quot;&gt;//this sets the tile (x, y) and the pixel(x, y) from absolute coordinates&lt;/span&gt;&lt;br&gt;    src.x = px / WORLD_ICON_SIZE&lt;br&gt;    src.y = py / WORLD_ICON_SIZE&lt;br&gt;    src.pixel_x = px % WORLD_ICON_SIZE - WORLD_HALF_ICON_SIZE&lt;br&gt;    src.pixel_y = py % WORLD_ICON_SIZE - WORLD_HALF_ICON_SIZE&lt;br&gt;&lt;br&gt;&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/atan2(x, y)&lt;br&gt;    &lt;span class=&quot;dmcomment&quot;&gt;//a quick atan2()&lt;/span&gt;&lt;br&gt;    &lt;span class=&quot;dmcomment&quot;&gt;//I think lummox jr wrote this somewhere deep in the byond forum&lt;/span&gt;&lt;br&gt;    &lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(!x &amp;amp;&amp;amp; !y) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; 0&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; y &amp;gt;= 0 ? arccos(x / sqrt(x * x + y * y)) : -arccos(x / sqrt(x * x + y * y))&lt;br&gt;&lt;br&gt;&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/get_angle(atom/a, atom/b)&lt;br&gt;    &lt;span class=&quot;dmcomment&quot;&gt;//returns the angle between two atoms (in radians)&lt;/span&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/res = atan2(b.y - a.y, b.x - a.x)&lt;br&gt;    res += 270&lt;span class=&quot;dmcomment&quot;&gt;//right hand conversion&lt;/span&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;while&lt;/span&gt;(res &amp;gt; 360) res -= 360&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;while&lt;/span&gt;(res &amp;lt;= 0) res += 360&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; res&lt;br&gt;&lt;br&gt;&lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/get_dir_angle(atom/a, atom/b)&lt;br&gt;    &lt;span class=&quot;dmcomment&quot;&gt;//converts an angle into a direction, for projectile facing&lt;/span&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/n = get_angle(a, b)&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 337.5 || n &amp;lt;= 22.5)  &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; EAST&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 22.5  &amp;amp;&amp;amp; n &amp;lt;= 67.5)  &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; SOUTHEAST&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 67.5  &amp;amp;&amp;amp; n &amp;lt;= 112.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; SOUTH&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 112.5 &amp;amp;&amp;amp; n &amp;lt;= 157.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; SOUTHWEST&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 157.5 &amp;amp;&amp;amp; n &amp;lt;= 202.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; WEST&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 202.5 &amp;amp;&amp;amp; n &amp;lt;= 247.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; NORTHWEST&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 247.5 &amp;amp;&amp;amp; n &amp;lt;= 292.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; NORTH&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(n &amp;gt;= 292.5 &amp;amp;&amp;amp; n &amp;lt;  337.5) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; NORTHEAST&lt;br&gt;&lt;br&gt;pixel_projectile&lt;br&gt;    parent_type = /obj&lt;br&gt;    animate_movement = NO_STEPS&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/&lt;span class=&quot;dmkeyword&quot;&gt;tmp&lt;/span&gt;&lt;br&gt;        angle = 0&lt;br&gt;        px = 0 &lt;span class=&quot;dmcomment&quot;&gt;//the true pixel location of the projectile&lt;/span&gt;&lt;br&gt;        py = 0&lt;br&gt;        last_x = 0 &lt;span class=&quot;dmcomment&quot;&gt;//the last x/y coordinate of the tile we were in&lt;/span&gt;&lt;br&gt;        last_y = 0&lt;br&gt;        velocity = 10 &lt;span class=&quot;dmcomment&quot;&gt;//speed of the projectile&lt;/span&gt;&lt;br&gt;        atom/owner&lt;br&gt;&lt;br&gt;    New()&lt;br&gt;        ..()&lt;br&gt;        owner = usr&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(!owner) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(!owner:target) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt;&lt;br&gt;        projectiles++&lt;br&gt;&lt;br&gt;        loc = owner.loc&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(owner.target == loc) &lt;span class=&quot;dmkeyword&quot;&gt;del&lt;/span&gt; src&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//set initial position&lt;/span&gt;&lt;br&gt;        px = x * WORLD_ICON_SIZE + WORLD_HALF_ICON_SIZE&lt;br&gt;        py = y * WORLD_ICON_SIZE + WORLD_HALF_ICON_SIZE&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//calculate angle&lt;/span&gt;&lt;br&gt;        angle = get_angle(src, owner.target)&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//begin!&lt;/span&gt;&lt;br&gt;        spawn update_loop()&lt;br&gt;&lt;br&gt;    Del()&lt;br&gt;        projectiles--&lt;br&gt;        ..()&lt;br&gt;&lt;br&gt;    Cross(atom/movable/a)&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//if something happens to cross this tile while we're sitting in it, which would happen after initially entering the tile&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//we should check for collide!&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(a != src &amp;amp;&amp;amp; a != owner) collide_with(a)&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; ..()&lt;br&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/update_loop()&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//update position&lt;/span&gt;&lt;br&gt;        src.px = src.px + src.velocity * cos(src.angle)&lt;br&gt;        src.py = src.py + src.velocity * -sin(src.angle)&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//check if new position is valid&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(!check_bounds()) &lt;span class=&quot;dmkeyword&quot;&gt;del&lt;/span&gt; src &lt;span class=&quot;dmcomment&quot;&gt;// ?&lt;/span&gt;&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//update x, y, pixel_x, pixel_y to reflect new location&lt;/span&gt;&lt;br&gt;        src.set_pos_px(src.px, src.py)&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//did we enter a new tile?&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(last_x != x || last_y != y)&lt;br&gt;            last_x = x&lt;br&gt;            last_y = y&lt;br&gt;&lt;br&gt;            &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(!loc) &lt;span class=&quot;dmkeyword&quot;&gt;del&lt;/span&gt; src&lt;br&gt;&lt;br&gt;            &lt;span class=&quot;dmcomment&quot;&gt;//collide with everything in the tile&lt;/span&gt;&lt;br&gt;            &lt;span class=&quot;dmkeyword&quot;&gt;for&lt;/span&gt;(&lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/atom/a &lt;span class=&quot;dmkeyword&quot;&gt;in&lt;/span&gt; loc.contents - src - owner)&lt;br&gt;                collide_with(a)&lt;br&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//do it all over again, unless the world is slow, then wait a little longer&lt;/span&gt;&lt;br&gt;        spawn(world.tick_lag * (world.cpu &amp;gt;= 10 ? world.cpu / 10 : 1)) update_loop()&lt;br&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/check_bounds()&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//checks to see if a pixel is in bounds of the map&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(px &amp;lt; WORLD_ICON_SIZE || py &amp;lt; WORLD_ICON_SIZE || px &amp;gt;= (world.maxx + 1) * WORLD_ICON_SIZE || py &amp;gt;= (world.maxy + 1) * WORLD_ICON_SIZE)&lt;br&gt;            &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; 0&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt; 1&lt;br&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;proc&lt;/span&gt;/collide_with(atom/a)&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//generic collide&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(a.type == src.type) &lt;span class=&quot;dmkeyword&quot;&gt;return&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmcomment&quot;&gt;//world &amp;lt;&amp;lt; &amp;quot;[src] collides with [a]&amp;quot;&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;del&lt;/span&gt; src&lt;br&gt;&lt;br&gt;pixel_projectile/test&lt;br&gt;    icon = &lt;span class=&quot;dmstring&quot;&gt;'demo/gfx/mob.dmi'&lt;/span&gt;&lt;br&gt;    icon_state = &lt;span class=&quot;dmstring&quot;&gt;&amp;quot;bot&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
Assumes:&lt;br&gt;
-all atoms have a target variable which is equal to another atom at the time of firing. not necessary but I use that to calculate the angle at which to fire.&lt;br&gt;
-assumes the owner is a mob, not a turf or an obj&lt;br&gt;
-assumes the person who created the projectile is the owner&lt;br&gt;
-this is a very basic projectile, there are many other cases where you might want the projectile to die (like if it runs into walls). those aren't handled here for simplicity sake of just making the fastest possible pixel projectile.&lt;br&gt;
&lt;br&gt;
What I would really like to do is put delta_time in there somewhere so that as the loop updates get further apart from over-processing time... the projectiles actually move along at a frame independent speed.&lt;br&gt;
&lt;br&gt;
Anyways, other than that, I don't see room for improvement. Anyone here be my guest and make a suggestion for improving the efficiency of the pixel_projectile!</description>
        </item>
                <item>
            <title>Why you should NOT post about ads being removed.</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1274193</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1274193</guid>
            <pubDate>Fri, 24 May 2013 23:10:16 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1274193#comments</comments>
            
            <description>Let's just make it very clear to a lot of people who don't spend a lot of time on the forum and aren't fully aware of the situation...&lt;br&gt;
&lt;br&gt;
The ads are here to stay, and if they don't earn enough revenue, BYOND is being shut down indefinitely. If BYOND shuts down, that means no more BYOND games, no more live servers, no more master servers, no more key servers, no more passport checks, no more scoreboards, etc. etc.&lt;br&gt;
&lt;br&gt;
Instead of complaining about the ads, try buying a membership to make them go away. Instead of whining about having to watch a 30 second ad while your game downloads, tell your friends about BYOND because the more people who come to visit, the more chances BYOND has of gaining new fans, developers, memberships.&lt;br&gt;
&lt;br&gt;
If you are too young to understand; the world revolves around money, and nothing is free. The servers that BYOND runs on aren't free, the programmer who fixes the bugs and adds the feature isn't free, food isn't free, rent isn't free, web space isn't free. If you aren't willing to pay for these things, then sit back and watch those lovely ads who are keeping this alive for you.&lt;br&gt;
&lt;br&gt;
This is actually a desperate act on behalf of the developers, and the more you moan and groan about the situation the more apt they are to just give up and leave this mess of a situation behind them.&lt;br&gt;
&lt;br&gt;
So you decide!</description>
        </item>
                <item>
            <title>How will developers be able to handle server transitions?</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1270351</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1270351</guid>
            <pubDate>Wed, 22 May 2013 16:57:18 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1270351#comments</comments>
            
            <description>Please see video: &lt;a href=&quot;http://youtu.be/b7ubZ2C0Vn8&quot;&gt;http://youtu.be/b7ubZ2C0Vn8&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
I am asking, what functionality will BYOND enable to developers to make server-to-server player transfers smoother / more game-related and themed? I would be concerned if we were not given the ability to intervene with at least a splash screen during this process.&lt;br&gt;
&lt;br&gt;
Thanks.</description>
        </item>
                <item>
            <title>Let's talk about transferring players from server to server</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1270302</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1270302</guid>
            <pubDate>Wed, 22 May 2013 15:21:11 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1270302#comments</comments>
            
            <description>Let's talk about transferring players from server to server&lt;br&gt;
&lt;br&gt;
Most basic implementation:&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;dmcode&quot;&gt;
&lt;table width=&quot;100%&quot; border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre class=&quot;dmcode&quot;&gt;
mob/&lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/last_x&lt;br&gt;mob/&lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/last_y&lt;br&gt;&lt;br&gt;mob/&lt;span class=&quot;dmkeyword&quot;&gt;verb&lt;/span&gt;/start_server(t &lt;span class=&quot;dmkeyword&quot;&gt;as&lt;/span&gt; text)&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/server = startup(&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;realms.dmb&amp;quot;&lt;/span&gt;, t, &lt;span class=&quot;dmstring&quot;&gt;&amp;quot;-trusted&amp;quot;&lt;/span&gt;)&lt;br&gt;    world &amp;lt;&amp;lt; server&lt;br&gt;&lt;br&gt;mob/&lt;span class=&quot;dmkeyword&quot;&gt;verb&lt;/span&gt;/go_to_server(t &lt;span class=&quot;dmkeyword&quot;&gt;as&lt;/span&gt; text)&lt;br&gt;    src.last_x = x&lt;br&gt;    src.last_y = y&lt;br&gt;    world &amp;lt;&amp;lt; &lt;span class=&quot;dmstring&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;dmbrace&quot;&gt;[last_x]&lt;/span&gt;&lt;span class=&quot;dmstring&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;dmbrace&quot;&gt;[last_y]&lt;/span&gt;&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;&lt;/span&gt;&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/savefile/F = &lt;span class=&quot;dmkeyword&quot;&gt;new&lt;/span&gt;(&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;players/&lt;/span&gt;&lt;span class=&quot;dmbrace&quot;&gt;[ckey]&lt;/span&gt;&lt;span class=&quot;dmstring&quot;&gt;.sav&amp;quot;&lt;/span&gt;)&lt;br&gt;    F &amp;lt;&amp;lt; src&lt;br&gt;    world.Export(&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;dmbrace&quot;&gt;[t]&lt;/span&gt;&lt;span class=&quot;dmstring&quot;&gt;?transfer&amp;quot;&lt;/span&gt;, F)&lt;br&gt;    src &amp;lt;&amp;lt; link(&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;byond://127.0.0.1:&lt;/span&gt;&lt;span class=&quot;dmbrace&quot;&gt;[t]&lt;/span&gt;&lt;span class=&quot;dmstring&quot;&gt;&amp;quot;&lt;/span&gt;)&lt;br&gt;&lt;br&gt;world/Topic(T)&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(T == &lt;span class=&quot;dmstring&quot;&gt;&amp;quot;transfer&amp;quot;&lt;/span&gt;)&lt;br&gt;        world.log &amp;lt;&amp;lt; &lt;span class=&quot;dmstring&quot;&gt;&amp;quot;importing a mob!&amp;quot;&lt;/span&gt;&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/savefile/F = &lt;span class=&quot;dmkeyword&quot;&gt;new&lt;/span&gt;(world.Import())&lt;br&gt;        &lt;span class=&quot;dmkeyword&quot;&gt;var&lt;/span&gt;/mob/m = &lt;span class=&quot;dmkeyword&quot;&gt;new&lt;/span&gt;&lt;br&gt;        F &amp;gt;&amp;gt; m&lt;br&gt;&lt;br&gt;mob/Login()&lt;br&gt;    ..()&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(last_x)&lt;br&gt;        src.x = last_x&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;if&lt;/span&gt;(last_y)&lt;br&gt;        src.y = last_y&lt;br&gt;&lt;br&gt;mob/Logout()&lt;br&gt;    &lt;span class=&quot;dmkeyword&quot;&gt;del&lt;/span&gt;(src)&lt;br&gt;    ..()
&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
Issues to discuss:&lt;br&gt;
1. Security. How do we only allow transfers initiated by the server, and not by malicious users&lt;br&gt;
2. Interface seems to work great here, in the past there was mention of the problem that the dream seeker on the client end would close entirely, and then reopen. I don't think that's the case now, as tests on my local machine have produced smooth transitioning.&lt;br&gt;
Edit: Remote testing revealed that the client does indeed fully close during transitioning.&lt;br&gt;
3. Waiting... It says that these Import() calls are blocking... does that mean the local server will be frozen while the file transfer occurs?&lt;br&gt;
4. Features. How do we expand this to offload specific areas of the map to be hosted in separate instances, how do we allow AI creatures to inter-server travel, what other type of functionality should we pursue? How do we extend this to allow private client instancing but still keep an eye on anything the client might be trying to modify...&lt;br&gt;
&lt;br&gt;
Cheers!</description>
        </item>
                <item>
            <title>Still being shown ads even though I'm a member</title>
            <link>http://www.byond.com/members/FIREking?command=view_post&amp;post=1268852</link>
            <guid>http://www.byond.com/members/FIREking?command=view_post&amp;post=1268852</guid>
            <pubDate>Mon, 20 May 2013 13:31:59 +0000</pubDate>
            
            <comments>http://www.byond.com/members/FIREking?command=view_comments&amp;post=1268852#comments</comments>
            
            <description>Wish I had more info for you but I have no idea how the ad system works... Sometimes it still shows me ads even though I am a member.</description>
        </item>
            
    </channel>
</rss>

