Aide-memoire – Persian uniforms

From Duncan on the DBMM List:

I think the intention is that the Guard are all Persians – the original hypaspists having been sent back towards Macedonia. Luke at http://www.ne.jp/asahi/luke/ueda-sarson/AlexImpDBM.html http://www.ne.jp/asahi/luke/ueda-sarson/AlexImpDBM.html said:

“Melophoroi and archer guards: Persian guard spearmen and archers were used, and it is possible that these were used in a mixed formation as in the earlier Achaemenid empire, like the old Immortals, hence the provision for Bw (X). The archers at least seem to have been divided into 3 companies (Polyainos gives three differing uniform colours).”

Polyainos has “Stationed round the pavilion within were, first, five hundred Persians, dressed in purple and white vests: and next to those an equal number of archers in different dresses yellow, blue, and scarlet” –https://sites.google.com/site/alexandersources/polyaenus/polyaenus—alexanderhttps://sites.google.com/site/alexandersources/polyaenus/polyaenus—alexander

Ailian’s version is “first of all 500 Persians called apple-bearers (melophoroi) dressed in purple and quince-yellow; then came 1,000 archers dressed in flame-colour and scarlet”.

So your front rank is Persian “apple-bearers” probably with bronze hoplite shields, hoplite spears with the “apple” on the butt, purple tunics perhaps with the central white stripe of the royal tunic, and yellow caps – Sekunda in the Persian Osprey reconstructs one, under Darius, with yellow belt and red-and-yellow lozenge-patterned trousers. The rear ranks are archers in uniform yellow, bright red, and probably blue tunics. As Peter said, this matches the uniforms that Sekunda reconstructed from the Sarcophagus.

 

Not, obviously that I would ever do anything as bad as fielding the experimental phalanx, but useful guide for painting LAPs as well.

Posted in Wargaming | Comments Off on Aide-memoire – Persian uniforms

Messing around in stutterspace

Having done the Chinese arm, my next effort has been to try and do a new map of the French arm based on Constantine’s updated near star list.  However I found I was running into problems because I was relying on a variety of websites to tell me the distances between stars, and sometimes they contradicted each other, or sometimes they just didn’t have the stars that I was interested in (but that Constantine was showing as being within 7.7 ly).  Now the simple solution would have been to have used Astrosynthesis like he does, but I have a very old Mac Mini at home, and it is a PC piece of software, so that was out.  And anyway, I didn’t want all of the features of Astrosynthesis, just something that would tell me the distance between two coordinates, which is Pythagoras.  So I decided that the simplest thing would be to knock up a quick script (not my first thought though – that was to do it in Excel, which is possible, but produces a matrix that is very sparsely populated, and very difficult to read).  Normally I would script something in php, but a friend had been extolling the virtues of Python, so I decided to use it as an opportunity to learn some basic Python as well.

The input is designed to be a simple csv file of star coordinates, names and characteristics.  The output, in this version, is a text file and html file, listing each star in alphabetical order, with the distances to all the stars that are within 7.7 ly.

The python script is:

import math
from operator import itemgetter

def main(filepath):
 star_data = []
 nav_data = []
 import_position_data(filepath, star_data)
 calculate_distances(star_data, nav_data)
 write_output_file(nav_data)
 write_html_file(nav_data)

def import_position_data(filepath, star_data):
 input_f = open(filepath, 'r')
 for line in input_f:
  line_data = line.split(',')
  star_data.append(line_data)
 input_f.close()

def calculate_distances(star_data, nav_data):
 for star_a in star_data:
  this_nav_data = star_a
  for star_b in star_data:
   if star_a[2] != star_b[2]:
    distance = math.sqrt(
    (float(star_a[3]) - float(star_b[3]))**2
    +(float(star_a[4]) - float(star_b[4]))**2
    +(float(star_a[5]) - float(star_b[5]))**2)
    if distance <= 7.7:
     this_route_data = [star_b[2], distance, star_b[3], star_b[4], star_b[5]] 
     this_nav_data.append(this_route_data)
     del this_route_data
   nav_data.append(this_nav_data)
   del this_nav_data

def write_output_file(nav_data):
 # sort into Star name order
 sorted_nav_data = sorted(nav_data, key=itemgetter(2))
 output_f = open("star_distances.txt", 'w')
 for star in sorted_nav_data:
  output_f.write('=' * 40 + '\n')
  output_f.write(star[2] + '\n')
  output_f.write('-' * 20 + '\n')
  output_f.write(star[9] + '\n')
  output_f.write('X coordinate: ' + star[3] + '\n')
  output_f.write('Y coordinate: ' + star[4] + '\n')
  output_f.write('Z coordinate: ' + star[5] + '\n')
  distance_from_sol = math.sqrt(
  (float(star[3]))**2
  +(float(star[4]))**2
  +(float(star[5]))**2)
  output_f.write('Distance from Sol: ' + str(distance_from_sol)[0:4] + ' ly\n')
  output_f.write('\n') 
  output_f.write('Neighbours\n')
  for neighbour in star[12:]: 
   output_f.write(neighbour[0] + " at " + str(neighbour[1])[0:4] + "ly\n")
  output_f.write('\n')
  del distance_from_sol
 output_f.close()

def write_html_file(nav_data):
 # sort into Star name order
 sorted_nav_data = sorted(nav_data, key=itemgetter(2))
 output_f = open("star_distances.html", 'w')
 output_f.write('<html><head></head><body>\n')
 for star in sorted_nav_data:
  output_f.write('<h2>' + star[2] + '</h2>\n')
  output_f.write('<p>Type: ' + star[9] + '</p>\n')
  output_f.write('<p>X coordinate: ' + star[3] + '</p>\n')
  output_f.write('<p>Y coordinate: ' + star[4] + '</p>\n')
  output_f.write('<p>Z coordinate: ' + star[5] + '</p>\n')
  distance_from_sol = math.sqrt(
  (float(star[3]))**2
  +(float(star[4]))**2
  +(float(star[5]))**2)
  output_f.write('<p>Distance from Sol: ' + str(distance_from_sol)[0:4] + ' ly</p>\n')
  output_f.write('</br>\n')
  output_f.write('<p>Neighbours:</p>\n')
  for neighbour in star[12:]:
   output_f.write('<p>' + neighbour[0] + " at " + str(neighbour[1])[0:4] + "ly</p>\n")
  output_f.write('</br>\n')
  del distance_from_sol
 output_f.write('</body></html>\n')
 output_f.close()

if __name__ == '__main__':
 import sys
 if len(sys.argv) > 1:
  main(sys.argv[1])
 else:
  main('Raw Star Data.csv')

Formatting isn’t great but you get the idea…

The one problem with this… One of the many problems with this, is that the txt file it produces is about 600 pages long if I do it for stars with 100 ly of Sol.  Which is a wonderful academic astronomical resource, but not as useful as a practical 2300AD astrogation resource.  So we need to trim out the stars that we can’t possibly reach using a 7.7 ly stutterwarp.  First step is to remove all the stars which have no other star within 7.7 ly, because they are obviously inaccessible.  Next and more difficult step is to trim out the stars that have no route to Sol, which is more difficult and computationally intensive, but it occurs to me that if I start near Sol, and store the routes as I find them, then all I need to do is find a connection to a star that is already on a route and I know that it must connect to Sol.

Posted in RPG | Comments Off on Messing around in stutterspace

2300AD – The Chinese Arm

2300AD is a role playing game that I have admired from afar for a very long time, and have finally persuaded some friends to play (with me GMing).

A key part of a good SF RPG is the background – futuristic enough to be fun but close to now and limited enough to have texture, and avoid the genericism that plagued Traveller (when you have seen one A988786 planet, you have seen them all).

2300AD is wonderfully limited and ‘hard’ and a key part of this is the realistic near-star list, the only problem being that the list of stars near to Earth has dramatically changed since the ’70s.  My trawling of the intertubes has however discovered a wonderful website by a chap who refers to himself as the Evil Dr Ganymede, and this includes a wonderfully scientific updating of the near-star list, which also involves moving a bunch of the colonies in the rules around, because the stars they were round have moved in the intervening period.

I’m going to use his list rather than the canon one, because the accuracy appeals to me.  I had decided to start my players in the Chinese Arm, because the Ebers appeal to me, and because the French Arm is a bit over-used.  So the first step for me has been to take the maps on his Chinese Arm page and hand-draw my own ‘tourist’ map for the arm, showing the pertinent features that the players need to know in tube map style.  So here it is:

Tourist Map of the Chinese Arm for 2300AD

Tourist Map of the Chinese Arm for 2300AD

Posted in RPG | Comments Off on 2300AD – The Chinese Arm

Guildford batrep

A cracking time at the Guildford on-day competition last Saturday, especially since I came away with two trophies.

The competition was a Book 1 theme and the army I took was Libyan Egyptian, chosen because I hoped that in a one-day format it would have the necessary win big/lose big to get the number of points that normally seems to be required to do well at a one-day competition.  My normal Book 1 army is New Kingdom Egyptian, but I think that it is too susceptible to long fought out draws and lacks a punch, which can work over 4 rounds, but I think leaves you in the middle of the pack in a two round comp.

The army was:

Command 1: Reg Cv(S) C-in-C, 6 Reg Bd(O), 9 Irr Wb(S), 4 Reg Ax(O), 4 Reg Bw(I), 18 Irr Ps(I), 4 Irr Ps(O).

Command 2: Reg Cv(S) Sub, 8 Reg Cv(S), 2 Reg LH(F).

Command 3: Reg Cv(S) Ally, 18 Irr Wb(S).

Baggage Command with 6 Irr Bge(I).

The first game was against Ch’u Chinese (Western Chou and Spring and Autumn Chinese).  My opponent was Oren Taylor, who I hadn’t played before.  We found ourselves invading China in summer.  The only relevant terrain was a waterway on my right flank, then a 5 base width gap, then a patch of rough going, then a 6 base width gap then a rocky hill.

The Chinese formed up first. On their right on the reverse slope of the rocky hill was a large block of Reg Pk(F), with a chariot general behind and an Expendable on the far flank.  In the centre, also behind the rocky hill was some more Irr Pk(F), then a line of Ps(O) in the open, with two Reg Kn(O) chariots behind them, then another block of Irr Pk(F) facing off against the scrubby flat, then some Irr Kn(O) chariots, then the waterway, which had 4 Bts(I) on it.

I deployed with the main mass of the Wb(S) facing the hill, flanked by the Wb(S) from Command 1, then a line of Bw(I) backed by Ax(O) in the open, facing the Ps(O), then the Bd(O) in the rough facing the Pk(F), backed by the huge block of Ps(I) and (O).  The chariot command was deployed as a second line.

Oren took the first bound, and his ally general, in the centre, was unreliable.  This constrained his C-in-C, on my left, who had to use 3 of his five PIPs to try and activate him.  He used the rest to advance the Pk(F) in his command over the brow of the rocky hill, and to move the elephant Expendable up on the flank.  On his left, he expanded the Kn(O) from column into line and advanced the Pk towards the scrubby flat.

My ally wasn’t unreliable, so I advanced all the Wb(S), from his command and the C-in-C’s, up onto the rocky hill. At the outside end we were matched up, by on the inside I had an overlap because he hadn’t been able to move up the Pk(F) belonging to the unreliable ally.  On my right I advanced the Bd and Ps into the scrub, and the line of Bw(I) in the centre.  In the reserve line, the LH went left to deal with the Expendable, while the Cv(S) went right to face off against the Kn(O), which was a daunting prospect for them.

On his turn he was unable to activate his ally, so just continued to develop his attack on his left and moved the expendable forward, spending 3 PIPs again to try and activate his ally.

On my turn, I continued the general advance, halting in the centre to avoid activating the ally.  My Ps(I) started skirmishing with a screen of Ps(O) that we in front of his Kn(O).

On Oren’s turn he again failed to activate his ally, but did reveal an ambush of Kn(S) behind the rocky hill.  The Ps skirmish continued on the right flank. The expendable attacked my LH(F) impetuously and imploded.

On my turn I decided to attack before the ally got involved, even though it meant activating him.  The warband ploughed into the pike on the hill over a frontage of 8 elements, and, starting at the end with the overlap, won the first 6 combats (or drew, and converted them to wins with the S bonus).  The last two lost and recoiled, but that was still 12 Pk(F) dead and 12 ME off that command.  The blades charged into the pike in the scrub, but couldn’t achieve the same effect, killing no-one.  The centre advanced and shot at the Ps(O), breaking them up.

In Oren’s turn, he drove the Wb(S) that had already recoiled further down the hill and fought the others, bring up the rest of the ally Pk(F). His chariots in the centre came forward to fight the bowmen, and also advanced by the waterway.  The Kn(S) worked their way around the hill.

In my turn, the warband continued to mop up Pk(F) on the rocky hill, including some of the ally ones.  The blade also started killing some pike in the scrub, and we traded Ps on the far right.

In Oren’s turn his chariots came in in the centre and killed one of the bow, but another one fled from them.  The chariots on his left also advanced, but their formation was at right of getting disrupted by their own Ps in front of them.  The pike on the rocky hill killed four Wb(S).

On my turn I was able to turn some Wb into the rear of the winning pike blocks and send up the LH to provide overlaps as well.  On my right, the Ps protecting the flank of the line of chariots had been killed, so I was able to throw a Ps(I) into the flank of the Kn(O), with another as an overlap.  The Wb killed the remaining Pike on the hill which broke that command.  The Kn(O) who had killed the Bw also died because his wingman had fled so he had been hard flanked.  On the right another Pk died, and the Kn(O) who was flanked by the Ps and couldn’t recoil also died on a 6-2 (becoming 8-4).  This, plus the broken C-in-C’s command came to more than half the army, and it broke.  My loses were 4 Wb(S), 1 Bw(I) and 1 Ps(I), making it a 25-0.

Oren was very unlucky that his ally was unreliable and that prevented his C-in-C from using his PIPs to get the Kn(S) out from behind the hill.  As it was the best troops in his army fled without ever having fought.  I was lucky that the uphill attack on the Pk(F) was so successful, but a lot of that was down to the S bonus breaking the draw.

My second game was against  Steve Bainbridge with Neo-Assyrian Empire.  This time I defended and we ended up with a very cluttered battlefield, with the waterway down my right flank, with a rocky flat next to it, and then an enclosed field about 8 base widths away and running all the way back to my base edge at an angle.  I had to either split my army or deploy it all on one or other side of the field system.  I opted to deploy it all between the fields and the Nile, with the Wb(S) in column on the rocky area, as close to the edge as they were allowed, then the mixed foot of the C-in-C, then the Cv(S) chariots crammed in next to the field system desperately trying to fit in.

Steve couldn’t or didn’t deploy his army only facing me.  On my right was a line of supported Ax(S) with some LH(F) on the flank, then three Kn(O) chariots, then his Libyan Egyptian ally (turncoats, collaborators) with Wb(S) and some Bw(I), then more Kn(O), then another Ax(S), then more Kn(O) then some Ax(O) and Ps(O).  But this point though, that flank of his army was facing empty space and the field system.

My initial PIPs were good so I expanded out my Meshwesh as quickly as I could to try and fill the gap to the Nile before Steve sent his LH(F) around it.  In the centre we advanced, although I tried to bring my Bw(I) and Bd(O) across from the right to the left to face the Kn(O).  On the left, I was tempted by the extra PIPs to throw my Cv(S) out as wide was possible to try and roll up his Ps(O) and Ax(O), who looked weak.  However I managed to restrain myself, and reminded myself that most bounds they wouldn’t get 4 PIPs, but only 1 or 2, so it wasn’t a good idea to start on a complex plan.  Instead they braced themselves for the onslaught from the Kn(O) and deployed to stop themselves being outflanked.

Both sides then advanced for a general ding-dong.  We hit first in the centre, and basically it didn’t go very well, as the Kn(O) ground their way through the Wb(S). My Cv(S) kept fleeing from Steve’s Wb(S) as well, and I was getting pretty desperate holding them up flinging Cv(S) and Bd(O) back in, although I did kill a couple of Wb(S) with Bd(O).  The Bd(O) were also having a rough time from the Kn(O), as were the Bw(I), although they held on longer than I expected.  The Ax(S) in the rocky area also held on well, until suddenly they started crumbling, and of course didn’t have any reserve ranks to plug holes, so started being hard-flanked and losing even more.

By this time my centre was disheartened though, then broke, and it looked like it was all over, as the Cv(S) on the flank were completely broken up and had Kn(O) bearing down on them.  However, I decided to keep going and see how many victory points I could salvage from this, to try and deny Steve a complete victory.

In order to stop the Wb(S) on the right flank, Steve had to throw across all the ancillary troops from the ally command, including its general, in order to form a new line at right angles behind his main line.  These were troops like Ax(O) and Bw(I) though, that weren’t happy fighting Wb(S) and they rapidly went down, disheartening the ally command.  The right hand command that the Ax(S) had been in was also disheartened, so I was looking at at least 4 victory points back here.  On my left, Steve’s Kn(O) were caught in a colossal traffic jam, and the few Cv(S) that were holding the line were fighting heroically, including one that was flanked and contacted in the rear and still threw his opponents off, then survived another rear attack from an Ax(S).  Steve was getting increasingly frustrated by this, especially when in desperation I threw a Cv(S) into a Kn(O) there and the Cv(S) ally general into a LH(F) on the far right flank, which was a very desperate move by me as it exposed his flank to another LH(F) if I didn’t kill it straight off.  The Cv(S) killed the Kn(O) with his S bonus, and in my jubilation, I didn’t realise that we hadn’t fought with the Cv(S) general on the other flank.  Just as Steve was about to roll his PIPs I realised, and stopped him long enough to resolve it. The result (4 vs 2, S vs F) was fortunately predictable, and the LH died.  Steve checked and this was enough to break his right command. The 2 ME from that was enough to break the Libyan Egyptian ally, and those two commands, plus the casualties from the intact commands, was enough to take him 1 ME over his army break point.  From a point about an hour earlier where my army was in deep trouble, I had managed to dig in and turn it around, although I had lost well over 40% of my army myself (42 ME out of 90).  So Steve was able to grab 8 victory points from me, but that was unfortunately scant consolation for a game which had looked like a 23-2 is his favour an hour earlier.

To my surprise, 42 points were enough to get me first place, and a solid win in the afternoon from Adrian Coomb-Hoare and two good performances from Dave Mather were enough to get the strangely named West Pinnergate not by the Sea team the team prize as well.

Unfortunately in all the excitement I forgot to take any photographs of the battles.

Posted in Wargaming | Comments Off on Guildford batrep