<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	
	>
<channel>
	<title>
	Comments on: Alpha details and a matter of originality	</title>
	<atom:link href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/</link>
	<description>The personal blog of developer, photographer and designer Lewis &#039;SEPTiMUS&#039; Lane</description>
	<lastBuildDate>Fri, 23 Nov 2012 21:07:00 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>
		By: Lewis Lane		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1059</link>

		<dc:creator><![CDATA[Lewis Lane]]></dc:creator>
		<pubDate>Fri, 23 Nov 2012 21:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1059</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1058&quot;&gt;Andy Herbert&lt;/a&gt;.

I did a version previously with a seeded deterministic RNG though I think the animations will be sufficient to cover up the majority of the latency. If it proves to be an issue during testing then I&#039;ll revisit it and re-implement the RNG using a unique seed (probably the unix time from when the game was created salted with some other hidden value) and an index based on the actions. I guess as long as the salt stays hidden, there&#039;d be no easy way for people to &#039;crack&#039; the RNG and predict the outcome of the game.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1058">Andy Herbert</a>.</p>
<p>I did a version previously with a seeded deterministic RNG though I think the animations will be sufficient to cover up the majority of the latency. If it proves to be an issue during testing then I&#8217;ll revisit it and re-implement the RNG using a unique seed (probably the unix time from when the game was created salted with some other hidden value) and an index based on the actions. I guess as long as the salt stays hidden, there&#8217;d be no easy way for people to &#8216;crack&#8217; the RNG and predict the outcome of the game.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Andy Herbert		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1058</link>

		<dc:creator><![CDATA[Andy Herbert]]></dc:creator>
		<pubDate>Thu, 22 Nov 2012 18:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1058</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1057&quot;&gt;Lewis Lane&lt;/a&gt;.

How about this for a bit of a creative solution: a random seed across all parties with a pseudo random number generator for combat, growth, and spell generation?


So this would remove the latency issue for the only person who would notice it, i.e. the local user.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1057">Lewis Lane</a>.</p>
<p>How about this for a bit of a creative solution: a random seed across all parties with a pseudo random number generator for combat, growth, and spell generation?</p>
<p>So this would remove the latency issue for the only person who would notice it, i.e. the local user.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Lewis Lane		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1057</link>

		<dc:creator><![CDATA[Lewis Lane]]></dc:creator>
		<pubDate>Wed, 21 Nov 2012 23:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1057</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1056&quot;&gt;Andy Herbert&lt;/a&gt;.

Yeah I recall what I assume to be a bug in that disengaged units can move-attack and then attack again once the game registers them as engaged. Whether or not it was intended I think it&#039;s probably worth reproducing (although perhaps this is one of the less desirable bugs which may be configurable during pregame?)


Regarding latency and movement, currently the client awaits a response from the server before a move is performed, which will inevitably introduce a delay, however this will only be during testing as once all of the bugs and inconsistencies are worked out between client and server, the client should be able to be nearly 100% confident that a move can go ahead without needing to check it first, so the move will be performed in tandem with the move being sent to the server - if there&#039;s inconsistency between the two then some error correction will have to take place - but if there&#039;s any inconsistency then it can only really arise from a bug.


Also, in the case of non-flying units with &#062;1 movement, the API &#039;move&#039; endpoint accepts either a single co-ordinate or an array of co-ordinates. The client will be responsible for how those co-ordinates are generated (either individual moves a la original Chaos or a pathfinding system to interpolate the positions between start and end) and the server will then check the move to determine if it&#039;s valid. In the alpha, movement will be done manually, and the client will send the whole move as an array of positions once the unit has expended its movement allowance or become engaged to another unit.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1056">Andy Herbert</a>.</p>
<p>Yeah I recall what I assume to be a bug in that disengaged units can move-attack and then attack again once the game registers them as engaged. Whether or not it was intended I think it&#8217;s probably worth reproducing (although perhaps this is one of the less desirable bugs which may be configurable during pregame?)</p>
<p>Regarding latency and movement, currently the client awaits a response from the server before a move is performed, which will inevitably introduce a delay, however this will only be during testing as once all of the bugs and inconsistencies are worked out between client and server, the client should be able to be nearly 100% confident that a move can go ahead without needing to check it first, so the move will be performed in tandem with the move being sent to the server &#8211; if there&#8217;s inconsistency between the two then some error correction will have to take place &#8211; but if there&#8217;s any inconsistency then it can only really arise from a bug.</p>
<p>Also, in the case of non-flying units with &gt;1 movement, the API &#8216;move&#8217; endpoint accepts either a single co-ordinate or an array of co-ordinates. The client will be responsible for how those co-ordinates are generated (either individual moves a la original Chaos or a pathfinding system to interpolate the positions between start and end) and the server will then check the move to determine if it&#8217;s valid. In the alpha, movement will be done manually, and the client will send the whole move as an array of positions once the unit has expended its movement allowance or become engaged to another unit.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Andy Herbert		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1056</link>

		<dc:creator><![CDATA[Andy Herbert]]></dc:creator>
		<pubDate>Wed, 21 Nov 2012 17:27:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1056</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1055&quot;&gt;Lewis Lane&lt;/a&gt;.

Ahh, I think I may have mis-read the original post, I thought there was a problem with tracking which moves had been &#039;capped&#039;, rather than disconnecting the move-attack-ranged-attack cycle.

Another gotcha I experienced with the movement cycle is when attempting to fly onto an enemy, thereby attacking, when already situated right next to the enemy (this assumes of course that the creature you&#039;re moving isn&#039;t engaged). This action, if unsuccessful would take up both the movement and attack phase, whereas my original assumption is that event though the movement fails I would still be able to initiate combat on the adjacent square.

I found myself poking values into a Spectrum snapshot to try out a lot of this stuff, just to make sure I was getting it right, which even with a disassembly is incredibly difficult.

I wondered if you&#039;re chunking moves together, because my concern with a RESTful service is the latency issue. If you&#039;re waiting on the server to receive a POST request each time you&#039;re moving a non-flying creature, then it may take some time?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1055">Lewis Lane</a>.</p>
<p>Ahh, I think I may have mis-read the original post, I thought there was a problem with tracking which moves had been &#8216;capped&#8217;, rather than disconnecting the move-attack-ranged-attack cycle.</p>
<p>Another gotcha I experienced with the movement cycle is when attempting to fly onto an enemy, thereby attacking, when already situated right next to the enemy (this assumes of course that the creature you&#8217;re moving isn&#8217;t engaged). This action, if unsuccessful would take up both the movement and attack phase, whereas my original assumption is that event though the movement fails I would still be able to initiate combat on the adjacent square.</p>
<p>I found myself poking values into a Spectrum snapshot to try out a lot of this stuff, just to make sure I was getting it right, which even with a disassembly is incredibly difficult.</p>
<p>I wondered if you&#8217;re chunking moves together, because my concern with a RESTful service is the latency issue. If you&#8217;re waiting on the server to receive a POST request each time you&#8217;re moving a non-flying creature, then it may take some time?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Lewis Lane		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1055</link>

		<dc:creator><![CDATA[Lewis Lane]]></dc:creator>
		<pubDate>Tue, 20 Nov 2012 22:16:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1055</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1054&quot;&gt;Andy Herbert&lt;/a&gt;.

I really wish you&#039;d taken your version further Andy - what I saw of it was absolutely fantastic!

I&#039;ve opted for the &#039;realtime&#039; route because I want to keep a sense that someone at the other end is moving the pieces around as you watch - it&#039;s important for me that in a turn-based game, the pace and drama of the game is represented as closely as possible to what it&#039;s like to play a tense hot-seat game. &quot;Uh oh, he&#039;s moving his vampire now...&quot;

What I&#039;ve implemented is pretty much as you&#039;ve described it - the board state maintains the current status of each unit (moved, attacked and rangedAttacked each being flags that start each new turn as false) and each is represented by a different action (&#039;moved&#039;, &#039;attacked&#039; and &#039;rangedattacked&#039;) to place them chronologically and to describe the details (i.e. where the unit moved, who it attacked etc).]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1054">Andy Herbert</a>.</p>
<p>I really wish you&#8217;d taken your version further Andy &#8211; what I saw of it was absolutely fantastic!</p>
<p>I&#8217;ve opted for the &#8216;realtime&#8217; route because I want to keep a sense that someone at the other end is moving the pieces around as you watch &#8211; it&#8217;s important for me that in a turn-based game, the pace and drama of the game is represented as closely as possible to what it&#8217;s like to play a tense hot-seat game. &#8220;Uh oh, he&#8217;s moving his vampire now&#8230;&#8221;</p>
<p>What I&#8217;ve implemented is pretty much as you&#8217;ve described it &#8211; the board state maintains the current status of each unit (moved, attacked and rangedAttacked each being flags that start each new turn as false) and each is represented by a different action (&#8216;moved&#8217;, &#8216;attacked&#8217; and &#8216;rangedattacked&#8217;) to place them chronologically and to describe the details (i.e. where the unit moved, who it attacked etc).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Andy Herbert		</title>
		<link>https://www.rotates.org/2012/11/20/alpha-details-and-a-matter-of-originality/comment-page-1/#comment-1054</link>

		<dc:creator><![CDATA[Andy Herbert]]></dc:creator>
		<pubDate>Tue, 20 Nov 2012 18:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rotates.org/?p=300#comment-1054</guid>

					<description><![CDATA[I can&#039;t to try Archaos, but you already knew that!

On the issue of not being able to track combat moves after a disconnect, I had the exact same problem, but my work-around was different as I was transmitting the entire spell-selection/cast/move-list to the client, instead of the current state of the board.

The server should know if it hasn&#039;t received an instruction to close the move-combat turn (creatures/wizards/shadow-wood turns with no rival neighbours should be automatically closed), so surely all is required, when a reconnect occurs, is to transmit some meta-information on the board state instructing the client on which pieces still require their move turn completing?

Apologies if this is confusing, or if I&#039;ve mis-read the original problem, but I&#039;d be happy to discuss it in further detail.]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t to try Archaos, but you already knew that!</p>
<p>On the issue of not being able to track combat moves after a disconnect, I had the exact same problem, but my work-around was different as I was transmitting the entire spell-selection/cast/move-list to the client, instead of the current state of the board.</p>
<p>The server should know if it hasn&#8217;t received an instruction to close the move-combat turn (creatures/wizards/shadow-wood turns with no rival neighbours should be automatically closed), so surely all is required, when a reconnect occurs, is to transmit some meta-information on the board state instructing the client on which pieces still require their move turn completing?</p>
<p>Apologies if this is confusing, or if I&#8217;ve mis-read the original problem, but I&#8217;d be happy to discuss it in further detail.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
