<?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>Projects &#8211; Rotates.org V12</title>
	<atom:link href="https://www.rotates.org/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rotates.org</link>
	<description>The personal blog of developer, photographer and designer Lewis &#039;SEPTiMUS&#039; Lane</description>
	<lastBuildDate>Sun, 22 Mar 2026 11:21:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.rotates.org/wp-content/uploads/2025/06/cropped-rotates-logo-32x32.png</url>
	<title>Projects &#8211; Rotates.org V12</title>
	<link>https://www.rotates.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">6964888</site>	<item>
		<title>Archaos: beta 3</title>
		<link>https://www.rotates.org/2026/03/22/archaos-beta-3/</link>
					<comments>https://www.rotates.org/2026/03/22/archaos-beta-3/#respond</comments>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sun, 22 Mar 2026 11:21:17 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Plugs]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Battle of the Wizards]]></category>
		<category><![CDATA[Open Source]]></category>
		<guid isPermaLink="false">https://www.rotates.org/?p=407</guid>

					<description><![CDATA[A new major release has just dropped. This contains many fixes, QoL improvements and such, but the highlights are: With all that though, we&#8217;re not done yet! Here are some of the things I have planned still: Anyway, enough gassing. Go play it here: https://www.archaos.co.uk/ If you&#8217;re interesting in the nerdy stuff, visit the Github [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>A new major release has just dropped. This contains many fixes, QoL improvements and such, but the highlights are:</p>



<ul class="wp-block-list">
<li><strong>Much more competent computer wizards.</strong> They now act much smarter with regards to their spell choices, unit movement and so on. The general intelligence they display can also be modified with a new difficulty slider in the (also new) player configuration menu. As the difficulty increases, so too does their aggression, sneakiness and attention span.</li>



<li><strong>Mobile support</strong>. While the game has long been &#8216;sorta&#8217; playable on mobile, it now has proper support for things like panning around the board, auto-focusing on the next player and more. The UI has also been tweaked to fit better at mobile viewport sizes.</li>



<li><strong>Enhanced spells and units.</strong> A small but growing selection of new spells are available (they can also be turned off if you want a more classic experience). They include some powerful new dragons, a unique immobile ranged-attack unit and a few more. I have several more spells and units planned &#8211; see <a href="https://www.rotates.org/old/chaos/">this document</a> for more info.</li>



<li><strong>Better UI</strong>. The UI elements I created many moons ago were partially implemented, but some of the UI was still just placeholder stuff. Now all of the menus, inputs, checkboxes etc. have the correct styling.</li>



<li><strong>Many bugs fixed.</strong> Yep. There were a lot. Notable ones include being unable to fly-attack enemies in some cases, and computer wizards raising dead units right under the feet of a non-dead unit. You can view more info on Github&#8217;s bugs page: <a href="https://github.com/lewster32/archaos/issues?q=is%3Aissue%20label%3Abug">https://github.com/lewster32/archaos/issues?q=is%3Aissue%20label%3Abug</a></li>



<li><strong>Tests, tests and more tests.</strong> Under the hood, there&#8217;s now a huge suite of over 1,000 tests that run before every deployment. This has proven invaluable in fixing and adding features while being confident I&#8217;ve not broken anything.</li>
</ul>



<p>With all that though, we&#8217;re not done yet! Here are some of the things I have planned still:</p>



<ul class="wp-block-list">
<li><strong>Remote multiplayer.</strong> It&#8217;s the most requested feature, and something I&#8217;ve experimented with a lot in the past. I now have many of the building blocks in place to get this right, so this is still definitely on the cards.</li>



<li><strong>Tutorials.</strong> For Chaos die-hards, it should be very easy to pick up and play Archaos, but I&#8217;m acutely aware it&#8217;s a game with a learning curve, despite all of the effort I&#8217;ve made to have it explain itself and try not to overwhelm the player. That said, a nice set of tutorial scenarios to introduce new players to the mechanics would be a very nice thing indeed.</li>



<li><strong>Standalone client.</strong> While it&#8217;s very convenient to play Archaos on the web, and it was indeed built to be a web-based game, I&#8217;d like to look at distribution of the game as a standalone thing. I&#8217;ve already got a pretty good working prototype of a slimline desktop client powered by <a href="https://tauri.app/">Tauri</a>, so having this able to be distributed via something like Steam is now a definite goer. Watch this space!</li>



<li><strong>More spells and units.</strong> As mentioned above, I don&#8217;t want to stop at the few new spells and units I&#8217;ve added. Eventually I&#8217;d like to get them all in there! This would also come with a way for each game to select the available set of spells wizards have access to.</li>



<li><strong>More interesting board terrain.</strong> Right now, everything happens in the rectangular void, as it did in the original. I&#8217;ve always been interested in having a bit more variation in the scenery though. Trees, walls, ruins, visual variety to the floor types and more are all things I&#8217;d like to add to spice up the look and feel of the board, as well as potentially add some obstacles and dangers. All optional of course!</li>
</ul>



<p>Anyway, enough gassing. Go play it here: <a href="https://www.archaos.co.uk/">https://www.archaos.co.uk/</a></p>



<p>If you&#8217;re interesting in the nerdy stuff, visit the Github repository here: <a href="https://github.com/lewster32/archaos/">https://github.com/lewster32/archaos/</a> &#8211; you can also post any bugs, suggestions or comments in the <a href="https://github.com/lewster32/archaos/issues">issues board</a>.</p>



<p>Have fun!</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rotates.org/2026/03/22/archaos-beta-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">407</post-id>	</item>
		<item>
		<title>Archaos: beta 2</title>
		<link>https://www.rotates.org/2026/01/11/archaos-beta-2/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sun, 11 Jan 2026 22:19:54 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[Plugs]]></category>
		<guid isPermaLink="false">https://www.rotates.org/?p=402</guid>

					<description><![CDATA[After quite a few years (people operating on geological time may be starting to sense a pattern here) I&#8217;ve updated the Archaos beta at www.rotates.org/archaos/2021 What&#8217;s new? Why, I thought you&#8217;d never ask! You can follow along with the updates, check out the source code, raise issues or even contribute on the Github page here: [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>After quite a few years (people operating on geological time may be starting to sense a pattern here) I&#8217;ve updated the Archaos beta at <a href="https://www.rotates.org/archaos/2021">www.rotates.org/archaos/2021</a></p>



<p>What&#8217;s new? Why, I thought you&#8217;d never ask!</p>



<ul class="wp-block-list">
<li>Up to <strong>8 players</strong> can now duke it out for wizardy supremacy.</li>



<li>Numerous bugs have been fixed, especially around mounted wizards.</li>



<li><strong>Computer controlled wizards</strong> are now available, and can be mixed and matched with human players just like the original. They&#8217;re currently not the smartest tools in the shed, but they&#8217;re able to cast all spells and use all units reasonably effectively.</li>



<li>The code has had lots of <strong>inline documentation</strong> added, and the dependencies are almost entirely up to current versions (with the exception of <a href="https://phaser.io/">Phaser</a>, which introduced some breaking changes in recent versions that I need to catch up with).</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="563" height="397" src="https://www.rotates.org/wp-content/uploads/2026/01/image-563x397.png" alt="All's fair in love and wizard war" class="wp-image-403" style="width:563px;height:auto" srcset="https://www.rotates.org/wp-content/uploads/2026/01/image-563x397.png 563w, https://www.rotates.org/wp-content/uploads/2026/01/image-300x211.png 300w, https://www.rotates.org/wp-content/uploads/2026/01/image-768x541.png 768w, https://www.rotates.org/wp-content/uploads/2026/01/image.png 813w" sizes="(max-width: 563px) 100vw, 563px" /><figcaption class="wp-element-caption">Another hard day&#8217;s work in the realms of limbo.</figcaption></figure>
</div>


<p>You can follow along with the updates, check out the source code, raise issues or even contribute on the Github page here: <a href="https://github.com/lewster32/archaos">https://github.com/lewster32/archaos</a></p>



<p>The game has also now been listed on <a href="https://osgameclones.com/chaos-the-battle-of-wizards/">Open Source Game Clones</a>, so thanks to <a href="https://github.com/ju5">ju5</a> for doing that! It also has a listing on <a href="https://chaosremakes.fandom.com/wiki/Archaos">https://chaosremakes.fandom.com/wiki/Archaos</a> which I&#8217;ve dutifully updated a bit.</p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">402</post-id>	</item>
		<item>
		<title>CodePen greatest hits pt. 1</title>
		<link>https://www.rotates.org/2025/06/26/codepen-greatest-hits-pt-1/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Thu, 26 Jun 2025 19:01:24 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Past]]></category>
		<category><![CDATA[Plugs]]></category>
		<guid isPermaLink="false">https://www.rotates.org/?p=399</guid>

					<description><![CDATA[I&#8217;ve always enjoyed short, snappy little projects that deliver a quick dose of dopamine, and I&#8217;m a big fan of CodePen as a way to exercise that &#8216;tinker and play&#8217; attitude. One of my earlier and more involved pens was the result of a thought: &#8220;What if 8-bit but open world?&#8221;. A great candidate seemed [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve always enjoyed short, snappy little projects that deliver a quick dose of dopamine, and I&#8217;m a big fan of <a href="https://codepen.io/lewster32">CodePen</a> as a way to exercise that &#8216;tinker and play&#8217; attitude.</p>



<p>One of my earlier and more involved pens was the result of a thought: <em>&#8220;What if 8-bit but open world?&#8221;</em>. A great candidate seemed to be Jet Set Willy, and luckily there&#8217;s an absolutely excellent <a href="https://skoolkit.ca/disassemblies/jet_set_willy/index.html">disassembly of the game</a> available. It was fascinating to dive into the data and see how efficiently everything was packed in there while remaining pretty readable. Before the days of widespread fast and convenient compression, programmers just squeezed things down to the last bit.</p>



<p>I ended up writing various routines to process things in a way that looked true to the original, including figuring out how to parse the attributes (the way the Speccy encoded colour and more into 8&#215;8 pixel blocks with a single byte) and generate all of the graphics, rooms and movement patterns.</p>



<p>It&#8217;s not complete unfortunately &#8211; the arrows and the rope swinging routine got the better of me at the time, but I still think it&#8217;s still a really cool little bit of nostalgia, and decently structured (for the time at least; this is pre-ES6 JavaScript).</p>



<p>Anyway, here it is in all its glory. Enjoy!</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_MKQzPm" src="//codepen.io/anon/embed/MKQzPm?height=450&amp;theme-id=dark&amp;slug-hash=MKQzPm&amp;default-tab=result" height="450" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed MKQzPm" title="CodePen Embed MKQzPm" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>I quite like the big comment attempting to explain all the bitwise stuff:</p>



<pre class="wp-block-code" style="font-size:12px"><code>    // The attribute format is a single byte containing 2x 1-bit values for flash and bright, then 2x 3-bit values for paper and ink
    // So the value 221 (binary 11011101) broken down becomes flash 1 (1), bright 1 (1), paper 011 (3) and ink 101 (5)
    // To extract these, we perform up to two operations:
    // 1. We perform a bitwise AND on the value with a bitmask of corresponding length for how many bits you want to extract - if 
    // we're looking for a boolean here (using a single bit in the mask), we can just coerce it with the !! operator as the outcome
    // will be zero for false and non-zero for true
    // 2. We perform a bitwise shift to the right so that the bits we're interested in are at far right side
    //
    // Examples:
    // To get the bright value (1 - true) from 221 (11011101):
    // 221 &amp; 64 = 64  (binary: 11001101 AND 01000000 becomes 01000000)
    // !!64 = true    (binary: 01000000 is non-zero, so it becomes true)
    //
    // To get the paper value (3) from 221 (11011101):
    // 221 &amp; 56 = 24  (binary: 11011101 AND 00111000 becomes 00011000)
    // 24 &gt;&gt; 3  = 3   (binary: 00011000 shifted right 3 times becomes 00000011)
    //
    // Quite a nice explanation of what you can do with bitwise operators can be found here:
    // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
    // 
    // P.S. I revised this whole intro in September 2020 as I realised I didn't understand bitwise operations as well as I should
    // have. Littered throughout this code are examples of the old inefficient method of "shift then and", as opposed to the
    // 'correct' way of doing things (especially for single bits). No doubt there's more on this for me to learn but it's good to
    // be honest.</code></pre>



<p>I&#8217;ll write up a few more of these for other pens I&#8217;ve done if there&#8217;s any interest. Let me know in the comments or via one of my socials if you&#8217;d like to know more about any of these, or indeed anything else I&#8217;ve done!</p>



<ul class="wp-block-social-links is-layout-flex wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-bluesky  wp-block-social-link"><a href="https://bsky.app/profile/lewster32.dev" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M6.3,4.2c2.3,1.7,4.8,5.3,5.7,7.2.9-1.9,3.4-5.4,5.7-7.2,1.7-1.3,4.3-2.2,4.3.9s-.4,5.2-.6,5.9c-.7,2.6-3.3,3.2-5.6,2.8,4,.7,5.1,3,2.9,5.3-5,5.2-6.7-2.8-6.7-2.8,0,0-1.7,8-6.7,2.8-2.2-2.3-1.2-4.6,2.9-5.3-2.3.4-4.9-.3-5.6-2.8-.2-.7-.6-5.3-.6-5.9,0-3.1,2.7-2.1,4.3-.9h0Z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Bluesky</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a href="https://x.com/lewster32" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-codepen  wp-block-social-link"><a href="https://codepen.io/lewster32" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22.016,8.84c-0.002-0.013-0.005-0.025-0.007-0.037c-0.005-0.025-0.008-0.048-0.015-0.072 c-0.003-0.015-0.01-0.028-0.013-0.042c-0.008-0.02-0.015-0.04-0.023-0.062c-0.007-0.015-0.013-0.028-0.02-0.042 c-0.008-0.02-0.018-0.037-0.03-0.057c-0.007-0.013-0.017-0.027-0.025-0.038c-0.012-0.018-0.023-0.035-0.035-0.052 c-0.01-0.013-0.02-0.025-0.03-0.037c-0.015-0.017-0.028-0.032-0.043-0.045c-0.01-0.012-0.022-0.023-0.035-0.035 c-0.015-0.015-0.032-0.028-0.048-0.04c-0.012-0.01-0.025-0.02-0.037-0.03c-0.005-0.003-0.01-0.008-0.015-0.012l-9.161-6.096 c-0.289-0.192-0.666-0.192-0.955,0L2.359,8.237C2.354,8.24,2.349,8.245,2.344,8.249L2.306,8.277 c-0.017,0.013-0.033,0.027-0.048,0.04C2.246,8.331,2.234,8.342,2.222,8.352c-0.015,0.015-0.028,0.03-0.042,0.047 c-0.012,0.013-0.022,0.023-0.03,0.037C2.139,8.453,2.125,8.471,2.115,8.488C2.107,8.501,2.099,8.514,2.09,8.526 C2.079,8.548,2.069,8.565,2.06,8.585C2.054,8.6,2.047,8.613,2.04,8.626C2.032,8.648,2.025,8.67,2.019,8.69 c-0.005,0.013-0.01,0.027-0.013,0.042C1.999,8.755,1.995,8.778,1.99,8.803C1.989,8.817,1.985,8.828,1.984,8.84 C1.978,8.879,1.975,8.915,1.975,8.954v6.093c0,0.037,0.003,0.075,0.008,0.112c0.002,0.012,0.005,0.025,0.007,0.038 c0.005,0.023,0.008,0.047,0.015,0.072c0.003,0.015,0.008,0.028,0.013,0.04c0.007,0.022,0.013,0.042,0.022,0.063 c0.007,0.015,0.013,0.028,0.02,0.04c0.008,0.02,0.018,0.038,0.03,0.058c0.007,0.013,0.015,0.027,0.025,0.038 c0.012,0.018,0.023,0.035,0.035,0.052c0.01,0.013,0.02,0.025,0.03,0.037c0.013,0.015,0.028,0.032,0.042,0.045 c0.012,0.012,0.023,0.023,0.035,0.035c0.015,0.013,0.032,0.028,0.048,0.04l0.038,0.03c0.005,0.003,0.01,0.007,0.013,0.01 l9.163,6.095C11.668,21.953,11.833,22,12,22c0.167,0,0.332-0.047,0.478-0.144l9.163-6.095l0.015-0.01 c0.013-0.01,0.027-0.02,0.037-0.03c0.018-0.013,0.035-0.028,0.048-0.04c0.013-0.012,0.025-0.023,0.035-0.035 c0.017-0.015,0.03-0.032,0.043-0.045c0.01-0.013,0.02-0.025,0.03-0.037c0.013-0.018,0.025-0.035,0.035-0.052 c0.008-0.013,0.018-0.027,0.025-0.038c0.012-0.02,0.022-0.038,0.03-0.058c0.007-0.013,0.013-0.027,0.02-0.04 c0.008-0.022,0.015-0.042,0.023-0.063c0.003-0.013,0.01-0.027,0.013-0.04c0.007-0.025,0.01-0.048,0.015-0.072 c0.002-0.013,0.005-0.027,0.007-0.037c0.003-0.042,0.007-0.079,0.007-0.117V8.954C22.025,8.915,22.022,8.879,22.016,8.84z M12.862,4.464l6.751,4.49l-3.016,2.013l-3.735-2.492V4.464z M11.138,4.464v4.009l-3.735,2.494L4.389,8.954L11.138,4.464z M3.699,10.562L5.853,12l-2.155,1.438V10.562z M11.138,19.536l-6.749-4.491l3.015-2.011l3.735,2.492V19.536z M12,14.035L8.953,12 L12,9.966L15.047,12L12,14.035z M12.862,19.536v-4.009l3.735-2.492l3.016,2.011L12.862,19.536z M20.303,13.438L18.147,12 l2.156-1.438L20.303,13.438z"></path></svg><span class="wp-block-social-link-label screen-reader-text">CodePen</span></a></li></ul>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">399</post-id>	</item>
		<item>
		<title>Archaos: beta 1</title>
		<link>https://www.rotates.org/2021/12/05/archaos-beta-1/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sun, 05 Dec 2021 13:29:01 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Webdev]]></category>
		<guid isPermaLink="false">https://www.rotates.org/?p=377</guid>

					<description><![CDATA[It&#8217;s been a while has it not? Well, here we are near the end of 2021 and what do I have but&#8230; a beta release of Archaos! Yes, that&#8217;s right, the game I&#8217;ve been working on most of my adult life finally gets a public, playable release! This iteration has taken just over a month [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s been a while has it not?</p>



<p>Well, here we are near the end of 2021 and what do I have but&#8230; a beta release of Archaos! Yes, that&#8217;s right, the game I&#8217;ve been working on most of my adult life finally gets a public, playable release!</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://rotates.org/archaos/2021/images/web/logo.png" alt=""/></figure></div>



<p>This iteration has taken just over a month from start to beta, and I&#8217;m pretty happy with where it is right now. There are of course bugs, inconsistencies, and annoyances, as well as some big missing features (computer opponents and multiplayer being the ones I feel most will point out) but I hope to address these in time.</p>



<p>If you want to play it now, you can do so here: <a href="https://www.rotates.org/archaos/2021/" target="_blank" rel="noreferrer noopener">https://www.rotates.org/archaos/2021/</a></p>



<p>It currently has no network multiplayer or computer opponents (things I plan on addressing in due time) and has some bugs and inconsistencies, but I&#8217;ve managed to have a decent amount of relatively &#8216;vanilla&#8217; experiences now playing the game on my own.</p>



<p>The source code is also public, available at my Github: <a rel="noreferrer noopener" href="https://github.com/lewster32/archaos" target="_blank">https://github.com/lewster32/archaos</a> &#8211; please do feel free to report any bugs or requests features etc. on here, and I&#8217;ll do my best to get around to them.</p>



<p>Thanks for holding on there, it&#8217;s been a journey.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">377</post-id>	</item>
		<item>
		<title>Phaser Isometric plug-in</title>
		<link>https://www.rotates.org/2014/08/08/phaser-isometric-plug-in/</link>
					<comments>https://www.rotates.org/2014/08/08/phaser-isometric-plug-in/#comments</comments>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Fri, 08 Aug 2014 14:53:43 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Phaser Isometric]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[axonometric]]></category>
		<category><![CDATA[dimetric]]></category>
		<category><![CDATA[Isometric]]></category>
		<category><![CDATA[Phaser]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[plugin]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=358</guid>

					<description><![CDATA[Recently, as part of my continued work on Archaos (yes, I&#8217;m still working on it, never fear!) I put together an isometric (well, axonometric to be a little less precise) renderer for Richard Davey&#8216;s wonderful Phaser HTML5 game development framework. It&#8217;s got a nice adjustable axonometric projection helper, a simple and fast physics engine based on [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Recently, as part of my continued work on Archaos (yes, I&#8217;m still working on it, never fear!) I put together an isometric (well, axonometric to be a little <em>less</em> precise) renderer for <a href="http://twitter.com/photonstorm" target="_blank" rel="noopener noreferrer">Richard Davey</a>&#8216;s wonderful <a href="http://phaser.io" target="_blank" rel="noopener noreferrer">Phaser</a> HTML5 game development framework. It&#8217;s got a nice adjustable axonometric projection helper, a simple and fast physics engine based on Phaser&#8217;s own bread-and-butter Arcade Physics, and it&#8217;s probably close to production ready. I deliberately kept the system simple, and the API as close to the existing Phaser API as possible to allow for quick adoption, and it plugs in pretty much seamlessly.</p>
<p>You can view the microsite I put together for it <a href="http://rotates.org/phaser/iso" target="_blank" rel="noopener noreferrer">here</a>, browse the repo (and maybe even if you feel like it, or spot some of my horrendous and inevitable broken maths, contribute) on GitHub <a href="https://github.com/lewster32/phaser-plugin-isometric/" target="_blank" rel="noopener noreferrer">here</a>, view the API docs <a href="http://udof.org/phaser/iso/doc/Phaser.Plugin.Isometric.html" target="_blank" rel="noopener noreferrer">here</a>, and I&#8217;ll also be posting some simple examples to demonstrate the various features shortly. Enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rotates.org/2014/08/08/phaser-isometric-plug-in/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">358</post-id>	</item>
		<item>
		<title>It&#8217;s still alive&#8230;</title>
		<link>https://www.rotates.org/2014/03/29/its-still-alive/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sat, 29 Mar 2014 17:24:56 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Projects]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=353</guid>

					<description><![CDATA[www.archaos.co.uk More soon&#8230;]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.archaos.co.uk/">www.archaos.co.uk</a></p>
<p>More soon&#8230;</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">353</post-id>	</item>
		<item>
		<title>Financial hiatus</title>
		<link>https://www.rotates.org/2013/05/01/financial-hiatus/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Wed, 01 May 2013 17:20:21 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=346</guid>

					<description><![CDATA[I&#8217;m taking a little bit of a break from Archaos at the moment as more immediate priorities have arisen &#8211; notably my financial status! As you probably know, I quit my full time job in September of last year to work on Archaos, and indeed I&#8217;ve made a lot of progress; as much if not [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m taking a little bit of a break from Archaos at the moment as more immediate priorities have arisen &#8211; notably my financial status! As you probably know, I quit my full time job in September of last year to work on Archaos, and indeed I&#8217;ve made a lot of progress; as much if not more in my abilities as a programmer as on the game itself.</p>
<p>As it stands, I need to do a partial rewrite on the client, as some aspects of it (mainly legacy stuff from last year) have become unmaintainable. Sounds drastic but I assure you this is only a minor setback; lots of Archaos is done and working to my satisfaction (the server for example is in a pretty good state at the moment, and the implemented features are working very efficiently) however the rigours of dealing with stateful asynchronous stuff all over the place (via the network, player inputs, waiting for animations and so on) combined with the lack of any kind of pattern have led to a game which as it stands is becoming near impossible to debug. Action must be taken, and that will begin with the application of a proper MVC pattern to the client game code.</p>
<p>In order to continue to be able to work on Archaos, I&#8217;ve taken on some web jobs (which bizarrely appeared totally out of nowhere from friends right as my savings were about to dry up) but this is a temporary thing and as soon as they&#8217;re done, I&#8217;ll be back onto Archaos and aiming for a beta release.</p>
<p>I can only apologise for the seemingly endless false starts and broken deadlines for those of you who&#8217;re following this project &#8211; it&#8217;s embarrassing to keep having to explain myself. My focus is however still solidly on getting Archaos finished and released, and then getting to the bit I&#8217;ve been really looking forward to; extending the game through new modes, features, spells and units!</p>
<p>Stay tuned!</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">346</post-id>	</item>
		<item>
		<title>Pathfinding and interaction</title>
		<link>https://www.rotates.org/2013/03/31/pathfinding-and-interaction/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sun, 31 Mar 2013 14:59:08 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[News]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=341</guid>

					<description><![CDATA[I&#8217;ve spent the last few days working on the pathfinding system on Archaos. This replaces the previous and temporary &#8216;one step at a time&#8217; way that non-flying units were controlled, and makes the process of moving of your units much easier and faster. I&#8217;ve spent a fair bit of time testing the system and comparing [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve spent the last few days working on the pathfinding system on Archaos. This replaces the previous and temporary &#8216;one step at a time&#8217; way that non-flying units were controlled, and makes the process of moving of your units much easier and faster.</p>
<p>I&#8217;ve spent a fair bit of time testing the system and comparing movement ranges with the <a title="The ultimate Chaos creature infographic!" href="https://rotates.org2012/11/27/the-ultimate-chaos-creature-infographic/">infographic</a> posted previously. Due to some discrepancies with the way the original game handled non-flying movement, calculation of a non-flying unit&#8217;s range isn&#8217;t trivial &#8211; and when you throw in obstacles and danger of your unit getting engaged, the efficiency and accuracy of the pathfinding system becomes vital. I may still need to tweak it a little further but at the moment I&#8217;m very happy with the results.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-343" alt="archaos-pathfinding" src="https://rotates.org/wp-content/uploads/2013/03/archaos-pathfinding1.gif" width="451" height="292" /></p>
<p>Ease of interaction is one of the top priorities of the game; if the game&#8217;s controls aren&#8217;t implemented correctly, it could quickly get very annoying &#8211; for instance, if it was easy to accidentally move a unit to the wrong position. This is especially important when dealing with mobile devices, which offer less feedback and less accurate interaction methods.</p>
<p>With this in mind, all actions carried out in the game must be confirmed, either by tapping twice in the same spot, or by tapping the &#8216;confirm&#8217; button which will appear once you&#8217;ve tapped to express your intent. This method seamlessly works between mobile and desktop, with intent on the desktop being indicated as you hover your mouse over the board.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">341</post-id>	</item>
		<item>
		<title>Future proofing</title>
		<link>https://www.rotates.org/2013/03/23/future-proofing/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Sat, 23 Mar 2013 20:26:31 +0000</pubDate>
				<category><![CDATA[Archaos]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[NodeJS]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=337</guid>

					<description><![CDATA[For the last few weeks I&#8217;ve been adding in two very important systems to Archaos &#8211; namely real-time communications via TCP, and the use of a database back-end for the server. The first makes games much more responsive, and allows the server to inform connected players of actions as and when they happen. It will [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For the last few weeks I&#8217;ve been adding in two very important systems to Archaos &#8211; namely real-time communications via TCP, and the use of a database back-end for the server. The first makes games much more responsive, and allows the server to inform connected players of actions as and when they happen. It will also pave the way for an exciting addition I have planned, which will (hopefully) combat the inevitable pacing problems that arise from typical turn-based games. If you want to know more about what I&#8217;m getting at, give <a href="http://www.lostgarden.com/2005/06/space-crack-fixing-turn-based-strategy.html" target="_blank">this excellent article</a> a read.</p>
<p><div id="attachment_339" style="width: 213px" class="wp-caption alignright"><a href="https://rotates.org/wp-content/uploads/2013/03/servers.png"><img decoding="async" aria-describedby="caption-attachment-339" class="size-medium wp-image-339" alt="The database server, client and game server respectively." src="https://rotates.org/wp-content/uploads/2013/03/servers-203x300.png" width="203" height="300" srcset="https://www.rotates.org/wp-content/uploads/2013/03/servers-203x300.png 203w, https://www.rotates.org/wp-content/uploads/2013/03/servers.png 514w" sizes="(max-width: 203px) 100vw, 203px" /></a><p id="caption-attachment-339" class="wp-caption-text">The database server, client and game server respectively.</p></div></p>
<p>The second addition is a solid database-driven server. Until now, as a temporary solution I&#8217;d been storing all of the game data in a single file. When the server opened, it read all of the users and games from this file, and then stored all of the data in memory. If the data changed, the server would periodically save the entire file back to disk. The server would only write the data to disk if it had changed, and only once every so often &#8211; this kept writes to a minimum. The solution was fine for small scale testing, but it would not have scaled up well &#8211; quickly consuming all of the memory in the server machine, as well as being difficult to manage.</p>
<p>Now all of the data is stored on a <a href="http://www.mongodb.org/" target="_blank">mongoDB</a> server in essentially the same format. The game server is then only responsible for the manipulation of the data, and not the storage and management of it. The game server itself is relatively simple in its approach; when a user sends an action, it loads the game, determines if the action can be performed, and if so what the outcomes are. It then saves the changed game back to the database and sends the actions to all of the connected players (which it does via TCP). The game server never keeps games, users, units or anything else in memory for longer than it needs to check or manipulate it. There are no special objects or instances; every function works only on the raw data. I may introduce some caching to reduce database operations later but at this stage the setup is fairly efficient.</p>
<p>So, I have what I feel is a solid base now, I&#8217;ve got some of the actions in and working (such as creating, joining and leaving games, unit movement and engagement) and now it&#8217;s just a case of writing the client-side stuff for the remaining actions, adding in the spell system and then getting it out there for public beta testing!</p>
<p>Look out soon for another post on the spell system and how I intend to tweak it to provide a more balanced start to each game.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">337</post-id>	</item>
		<item>
		<title>UI and the lobby</title>
		<link>https://www.rotates.org/2013/02/21/ui-and-the-lobby/</link>
		
		<dc:creator><![CDATA[SEPTiMUS]]></dc:creator>
		<pubDate>Thu, 21 Feb 2013 14:25:48 +0000</pubDate>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Archaos]]></category>
		<guid isPermaLink="false">http://www.rotates.org/?p=334</guid>

					<description><![CDATA[I&#8217;ve spent the last two months refactoring a lot of code, tidying up and making everything more manageable. I&#8217;ve also spent the time working on implementing a Feathers-based GUI so that the game works more like a game should (i.e. with an opening screen, the ability to select which game you want to play and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve spent the last two months refactoring a lot of code, tidying up and making everything more manageable. I&#8217;ve also spent the time working on implementing a <a href="http://feathersui.com/" target="_blank">Feathers</a>-based GUI so that the game works more like a game should (i.e. with an opening screen, the ability to select which game you want to play and so on).</p>
<p>I won&#8217;t lie, Feathers has been difficult to get my head around &#8211; it seems to be an excellent library once you&#8217;ve sussed it out, but it&#8217;s not well documented (relying mainly on examples rather than proper documentation, and leaving you to even look at the library&#8217;s code itself to figure some things out) and took me a long time to get comfortable with. The upshot is I now have a very nice, fast, flexible native-feeling interface to Archaos which will work the same on all platforms.</p>
<p>You can see a short video of me demonstrating it on my desktop below &#8211; and you&#8217;ll just have to take my word for it that it works just as well on a mobile device <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><iframe loading="lazy" class="youtube-player" width="563" height="317" src="https://www.youtube.com/embed/WQFsbJwqC0U?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<p>None of what you see here is mocked up &#8211; the games you&#8217;ve joined or created are being retrieved from the server, and their details are being displayed. The isometric mini-map shows a real-time view of the game, and will update even while you view it from the lobby.</p>
<p>More features will need to be added to make the lobby fully featured, such as an interface that allows you to add friends (and so see their newly created games and join them), the ability to sort and filter the games by various criteria and of course the &#8216;create new game&#8217; screen itself, where you&#8217;ll be able to set things such as the board size, maximum number of players, round/turn lengths and so on.</p>
<p>One last thing &#8211; I had a discussion with one of my friends about Archaos and realised that the words I was using to describe various things didn&#8217;t make sense. Because of this conversation I&#8217;ve settled on the following:</p>
<ul>
<li><strong>Board</strong>: The rectangular grid upon which the game is played.</li>
<li><strong>Unit</strong>: A piece on the board, be it a wizard, wall, creature or corpse.</li>
<li><strong>Turn</strong>: An individual player&#8217;s &#8216;go&#8217; &#8211; i.e. selecting a spell, casting a spell or moving his/her units.</li>
<li><strong>Phase</strong>: The three distinct gameplay segments, consisting of spell selection, spell casting and unit movement. Technically a fourth non-playable phase happens after spell casting and before unit movement, in which gooey blobs and magic fire spread, magic wood and castles/citadels may disappear and so on. Other phases may be introduced with new game modes.</li>
<li><strong>Round</strong>: One set of phases, beginning in Classic mode with spell selection, and ending after the last player&#8217;s turn in the unit movement phase.</li>
</ul>
<p>This means that each round has several phases, and within each phase each active player has a turn. Not all phases force the players to take turns one after the other &#8211; the spell selection phase will allow all players to select their spells together, and the phase will only end when either all of the players have selected a spell (or cancelled) or the time runs out for that phase. The spell casting and movement phases that follow will work as normal, with every player taking their turn one after another in the correct order. Timers here will work on an individual&#8217;s turn, so each player will have (for instance) five minutes to cast their spell, before the game cancels their turn and moves on to the next player. The same goes for the movement phase&#8217;s turns. All of this will of course be configurable upon creation of a new game.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">334</post-id>	</item>
	</channel>
</rss>
