The second artifact created by my dwarves:
Sîboshkekath, "The Deteriorated Tundra", a green glass toy hammer
This is a green glass toy hammer. All craftsdwarfship is of the highest quality. It is encircled with bands of green glass. This object menaces with spikes of Melanite. On the item is an image of a green glass toy hammer in green glass.
This is starting to get a little odd...
A blog about scottish roller derby bouts, science(!), baking, and other things that take my fancy.
2009/05/22
...recursive artifact tunics in Dwarf Fortress
Not quite what I wanted my first legendary artifact to be:
Nônubothôs ïteb Asob: "Punchwilt the Post of Boards", a Rope reed tunic.
This is a Rope reed tunic. All craftsdwarfship is of the highest quality. It is made from Rope reed cloth. On the item is an image of a Rope reed tunic in Rope reed. On the item is an image of a Rope reed tunic in Rope reed.
Woohoo?
Nônubothôs ïteb Asob: "Punchwilt the Post of Boards", a Rope reed tunic.
This is a Rope reed tunic. All craftsdwarfship is of the highest quality. It is made from Rope reed cloth. On the item is an image of a Rope reed tunic in Rope reed. On the item is an image of a Rope reed tunic in Rope reed.
Woohoo?
2009/05/04
Hostile Waters: A Confession
I've stopped playing Hostile Waters.
Part of me wants to keep playing it, to get to the later missions, to experience the unfolding plotlines.
However, part of me doesn't care anymore. Because I spoiled myself.
That is:
Mission 9 (I think it's 9) requires you to deliver some explosives to an enemy underground silo, via a trainline. Obviously, the enemy will attack the explosives enroute, so you have to do some destruction of the existing enemy defences first. There is no explicit requirement for you to wipe out all of the enemy forces.
Now, this map contains three enemy bases. The central one is clearly intended by the designers to be attacked - it is right next to the train line, the explosives, and the control station you need to send the train in the right direction. One of the two sets of derricks feeding energy to it (and thus enabling it to produce new forces) is handily pointed out to you in the briefing.
The north-western one is hidden right up in the corner of the map, and exists purely to generate aircraft to harass your carrier once you start progressing in the main objective. It isn't actually hard to destroy, but I suspect that you're not supposed to bother, as it's so out of the way.
The third base, however, is directly to the east. It's slightly out of the way, but it has no less than three sets of derricks, heavy protection from both land and air attacks, and sometimes generates land forces to sweep across the island to harass your attacks. I suspect that the developers never intended anyone to actually focus on wiping it off the map - it is supposed, I guess, to ensure that there is always a looming enemy presence to potentially assault your train once you set it off across the island.
I became somewhat... fixated... on destroying Base 3.
Now, this isn't the developers' fault. When playing Strategy games, my main flaw is my tendency to be overcautious and overcompletist in completing objectives - so, if the mission is an escort, I wipe out all the enemy forces first. Even if they're hugely defended bases with three sources of energy, and even if I have an (apparently deliberate) lack of starting energy to build my own forces.
I also became a little fixated, due to the aforementioned caution, with the Shiny New Weapon you get given in this mission. "Warhammer" is a long-ranged indirect fire weapon - a mortar that is supposed to be used to wipe out enemy forces from afar with the aid of a spotter. However, Base 3 is arranged nestled in the midst of mountains that block most of the potential indirect firing solutions from positions of safety... and when you do start attacking, it sends out fast moving air units to drive you off.
So, my assaults on Base 3 moved from long-duration "guerilla artillery" tactics, to doomed fast-assaults with defensive units around the artillery... and nothing worked.
At this point, a sensible person would have said "Oh, well, clearly I'm not supposed to destroy them, I'll just concentrated on Base 1 like I'm supposed to".
I didn't.
I'm not about to let Base 3 stand like that, posing a permanent threat. So I cheated.
There are only really two important cheats for Hostile Waters. One of them gives you effectively unlimited energy to build units. The other gives you access to the entire selection of units in the game, even ones that aren't unlocked yet. I used both of them.
I assaulted Base 3 with units that I shouldn't have had until Mission 20, in numbers I shouldn't have been capable of fielding without copious resource gathering. It gave way, eventually, doomed by technologies beyond its position in the narrative of its world.
And it didn't feel good.
So, after wiping out all the enemy on the entire map, I saved the game. And quit.
And I haven't played since. The joy has gone from it - I don't care anymore what plot elements give me the cool units in future missions, since I've already crushed Base 3 with them, anachronistically. And every time I see a challenge in the game, I know I'll be tempted to cheat again.
But at least I destroyed Base 3, eh, readers?
(Edit: There's probably another article in the fact that I actually cared here, about cheating, where cheating in something like Quake 10: Another Shooter doesn't matter to me at all.)
Part of me wants to keep playing it, to get to the later missions, to experience the unfolding plotlines.
However, part of me doesn't care anymore. Because I spoiled myself.
That is:
Mission 9 (I think it's 9) requires you to deliver some explosives to an enemy underground silo, via a trainline. Obviously, the enemy will attack the explosives enroute, so you have to do some destruction of the existing enemy defences first. There is no explicit requirement for you to wipe out all of the enemy forces.
Now, this map contains three enemy bases. The central one is clearly intended by the designers to be attacked - it is right next to the train line, the explosives, and the control station you need to send the train in the right direction. One of the two sets of derricks feeding energy to it (and thus enabling it to produce new forces) is handily pointed out to you in the briefing.
The north-western one is hidden right up in the corner of the map, and exists purely to generate aircraft to harass your carrier once you start progressing in the main objective. It isn't actually hard to destroy, but I suspect that you're not supposed to bother, as it's so out of the way.
The third base, however, is directly to the east. It's slightly out of the way, but it has no less than three sets of derricks, heavy protection from both land and air attacks, and sometimes generates land forces to sweep across the island to harass your attacks. I suspect that the developers never intended anyone to actually focus on wiping it off the map - it is supposed, I guess, to ensure that there is always a looming enemy presence to potentially assault your train once you set it off across the island.
I became somewhat... fixated... on destroying Base 3.
Now, this isn't the developers' fault. When playing Strategy games, my main flaw is my tendency to be overcautious and overcompletist in completing objectives - so, if the mission is an escort, I wipe out all the enemy forces first. Even if they're hugely defended bases with three sources of energy, and even if I have an (apparently deliberate) lack of starting energy to build my own forces.
I also became a little fixated, due to the aforementioned caution, with the Shiny New Weapon you get given in this mission. "Warhammer" is a long-ranged indirect fire weapon - a mortar that is supposed to be used to wipe out enemy forces from afar with the aid of a spotter. However, Base 3 is arranged nestled in the midst of mountains that block most of the potential indirect firing solutions from positions of safety... and when you do start attacking, it sends out fast moving air units to drive you off.
So, my assaults on Base 3 moved from long-duration "guerilla artillery" tactics, to doomed fast-assaults with defensive units around the artillery... and nothing worked.
At this point, a sensible person would have said "Oh, well, clearly I'm not supposed to destroy them, I'll just concentrated on Base 1 like I'm supposed to".
I didn't.
I'm not about to let Base 3 stand like that, posing a permanent threat. So I cheated.
There are only really two important cheats for Hostile Waters. One of them gives you effectively unlimited energy to build units. The other gives you access to the entire selection of units in the game, even ones that aren't unlocked yet. I used both of them.
I assaulted Base 3 with units that I shouldn't have had until Mission 20, in numbers I shouldn't have been capable of fielding without copious resource gathering. It gave way, eventually, doomed by technologies beyond its position in the narrative of its world.
And it didn't feel good.
So, after wiping out all the enemy on the entire map, I saved the game. And quit.
And I haven't played since. The joy has gone from it - I don't care anymore what plot elements give me the cool units in future missions, since I've already crushed Base 3 with them, anachronistically. And every time I see a challenge in the game, I know I'll be tempted to cheat again.
But at least I destroyed Base 3, eh, readers?
(Edit: There's probably another article in the fact that I actually cared here, about cheating, where cheating in something like Quake 10: Another Shooter doesn't matter to me at all.)
Cell-based games and graphs. (i)
I promised myself that I'd not write about this until it was in a useful state, but there are several issues connected to it that I actually want to talk about so...
A couple of weeks ago, I started playing with the roguelike game engine that I've been meaning to write for some time. (Partly as something to do with Xcode, and partly because I realised that I could leverage existing Python libraries to handle some of the boring stuff.)
The key to this game engine being different to other Roguelike engines is in how it treats the discrete array of cells that is the gameworld. Most roguelikes use a square grid where either nsew motion, or 8-way motion is possible, purely because this is the obvious approach to the limitation imposed by a terminal style display. (Indeed, presumably this is essentially why Rogue did so, as much as the reference to RPG graph-paper maps.) However, squares are not the only regular shapes that can tile a plane, and hence hexagon-based roguelikes are possible (only two examples exist that I am aware of, one of which is a simple translation of Rogue itself), along with triangle-based games (of which I am aware of none).
More than this, however, one realises that the roguelike map is just a particularly simple lattice, and that we can thus consider other extensions of the representation than those implied by regular tilings.
For example, inspired by the fact that the hex and tri tilings are dual to each other (replace the mutual corners in each with a tile, and you get the other), we might note that "nsew" square lattices are selfdual (but contain two interleaved square lattices if we rotate our directions of movement by 45 degrees), but the 8-way lattice (which is really an "octagonal lattice", implying a hyperbolic space) is dual to a curious lattice best represented by an array of right-triangles grouped four-to-a-square, and which has even less "connectivity" than the tri lattice dual to hexagons (we will call this lattice "dual octagonal").
The dual octagonal lattice appears to be as "unconnected"* as we can easily produce for a dual tiling within the constraints of a flat representational medium; we can't represent a tiling with more than 8 neighbours in a square-tiled array, and hence we can't produce a more connected tiling than the octagonal one to be made dual to.
However, considering the representation as a lattice, which is just a special case of an undirected graph, there is one other thing we can do; we can make the graph directed. This leads us to a "loop" lattice, where each node has two "outgoing" and two "inward" edges, arranged so that adjacent nodes alternate two of their edge directions relative to the origin node. The only consistent way of arranging this produces "cycles" of four nodes, in which a path exist starting at any element of such a cycle, passing through each of the other nodes before arriving at the origin again. It can be noted that considering such "cycles" as "units", each unit is connected to four adjacent units by both "in" and "out" connections, and so the units form a lattice equivalent to the starting square lattice.
The internal loop then looks a lot like a compactified "third dimension" embedded in the 2d lattice structure. There are amusing comparisons to string theory possible here.
More problematic is the consideration of what the appropriate dual to this "loop lattice" is. Considering the "dual nodes", we swap a notion of oriented edges with a notion of "oriented nodes" themselves - the boundaries of the dual nodes are either the "loops" we previously noticed, or the "non-loops" formed by the connections between those loops.
If we examine the loop structure more carefully, we see that the chirality of the loops alternates in a checkerboard fashion - alternating clockwise and anticlockwise across the lattice.
This gives rise to the idea that the chirality of the nodes perhaps encodes a different kind of separation - is this a different encoding of some kind of three-dimensional structure, with clockwise = +1, counterclockwise = -1, and the other nodes in between?
*Or, equivalently, "positively curved" - the "circumference" of a "circle", defined in terms of the distance from a central point within the lattice constraints, is smaller for a dual octagonal lattice (being roughly 2.5*r) than it is for the tri lattice (at 3r). What I mean by connectivity is implied to be proportional to this, as the number of paths out from a given point is proportional to the length of the edge (or the area of the surface in 3d).
A couple of weeks ago, I started playing with the roguelike game engine that I've been meaning to write for some time. (Partly as something to do with Xcode, and partly because I realised that I could leverage existing Python libraries to handle some of the boring stuff.)
The key to this game engine being different to other Roguelike engines is in how it treats the discrete array of cells that is the gameworld. Most roguelikes use a square grid where either nsew motion, or 8-way motion is possible, purely because this is the obvious approach to the limitation imposed by a terminal style display. (Indeed, presumably this is essentially why Rogue did so, as much as the reference to RPG graph-paper maps.) However, squares are not the only regular shapes that can tile a plane, and hence hexagon-based roguelikes are possible (only two examples exist that I am aware of, one of which is a simple translation of Rogue itself), along with triangle-based games (of which I am aware of none).
More than this, however, one realises that the roguelike map is just a particularly simple lattice, and that we can thus consider other extensions of the representation than those implied by regular tilings.
For example, inspired by the fact that the hex and tri tilings are dual to each other (replace the mutual corners in each with a tile, and you get the other), we might note that "nsew" square lattices are selfdual (but contain two interleaved square lattices if we rotate our directions of movement by 45 degrees), but the 8-way lattice (which is really an "octagonal lattice", implying a hyperbolic space) is dual to a curious lattice best represented by an array of right-triangles grouped four-to-a-square, and which has even less "connectivity" than the tri lattice dual to hexagons (we will call this lattice "dual octagonal").
The dual octagonal lattice appears to be as "unconnected"* as we can easily produce for a dual tiling within the constraints of a flat representational medium; we can't represent a tiling with more than 8 neighbours in a square-tiled array, and hence we can't produce a more connected tiling than the octagonal one to be made dual to.
However, considering the representation as a lattice, which is just a special case of an undirected graph, there is one other thing we can do; we can make the graph directed. This leads us to a "loop" lattice, where each node has two "outgoing" and two "inward" edges, arranged so that adjacent nodes alternate two of their edge directions relative to the origin node. The only consistent way of arranging this produces "cycles" of four nodes, in which a path exist starting at any element of such a cycle, passing through each of the other nodes before arriving at the origin again. It can be noted that considering such "cycles" as "units", each unit is connected to four adjacent units by both "in" and "out" connections, and so the units form a lattice equivalent to the starting square lattice.
The internal loop then looks a lot like a compactified "third dimension" embedded in the 2d lattice structure. There are amusing comparisons to string theory possible here.
More problematic is the consideration of what the appropriate dual to this "loop lattice" is. Considering the "dual nodes", we swap a notion of oriented edges with a notion of "oriented nodes" themselves - the boundaries of the dual nodes are either the "loops" we previously noticed, or the "non-loops" formed by the connections between those loops.
If we examine the loop structure more carefully, we see that the chirality of the loops alternates in a checkerboard fashion - alternating clockwise and anticlockwise across the lattice.
This gives rise to the idea that the chirality of the nodes perhaps encodes a different kind of separation - is this a different encoding of some kind of three-dimensional structure, with clockwise = +1, counterclockwise = -1, and the other nodes in between?
*Or, equivalently, "positively curved" - the "circumference" of a "circle", defined in terms of the distance from a central point within the lattice constraints, is smaller for a dual octagonal lattice (being roughly 2.5*r) than it is for the tri lattice (at 3r). What I mean by connectivity is implied to be proportional to this, as the number of paths out from a given point is proportional to the length of the edge (or the area of the surface in 3d).
Review: Twelve by Jasper Kent
It is 1812, Napoleon is advancing imperturbably toward Moscow in his Russian campaign, and four Russian officers have made a deal with Wallachian mercenaries with a brutal reputation to disrupt his supplies. Only one of the officers knows the true source of the mercenaries' abilities - although even the most marginally intelligent reader will have already picked up on the mention of Wallachia (and the master of the mercenaries' choice of name - Zmyeevich (translated for us by the narrator as "son of the serpent, or dragon")) and added all the other clues together to make V. V for Vampire, or (in Russian) Voordalak.
But our knowledge of what these brutal killers - nicknamed the Oprichniki by their employers, after the more human, but equally brutal historical bodyguards of Ivan the Terrible - really are isn't the point. What we are really exploring is the state of the narrator, Aleksei Ivanovich Danilov, in his connections with his three comrades, with his lover (and his physically distant wife), and with Russia and humanity itself.
Afterall, the main difference between the undead and the living (for the most part) is that the undead are entirely lacking in empathy, even with one another. They are not even animal - for pack and herd animals care for their group members - in some sense, they are the antithesis of this.
And so, Aleksei learns about what it is to have trust, and faith, in his fellow humans - to accept that is the most important thing about being human, in fact - and incidentally kills off 12 brutal predators out of myth, although not without the usual and expected assaults on both his spiritual and physical state (and a good couple of twists, most of which it is possible to spot before the narrator does, I believe intentionally).
Wisely, Kent keeps Dracula out of it, only allowing him onto the stage as the pseudonymous master of the Oprichniki before he departs homeward (only to reappear safely in a single flashback later in the book). I almost wish that he'd not even allowed that much of the Count to appear - so much of the mythos of the modern Vampire story is built around the adaptations and extensions of Stoker's novel (and the Hammer Horror films) that even a brief appearance risks overshadowing the rest of the characters. Luckily, his appearance is, indeed, brief, and his apparent protege (himself delighting in the pseudonym of Iuda - Slavic "Judas") manages to amply animate the final third of the story at least.
It also helps, of course, that the Russian campaign itself presents a solid historical backdrop - the occupation of Moscow, especially, also admitting of various metaphorical comparisons with the state of undeath - pulling "Twelve" safely away from being Just Another Vampire Story.
All in all, "Twelve" is more than a cut above the majority of "supernatural" fiction, and definitely deserves a look.
But our knowledge of what these brutal killers - nicknamed the Oprichniki by their employers, after the more human, but equally brutal historical bodyguards of Ivan the Terrible - really are isn't the point. What we are really exploring is the state of the narrator, Aleksei Ivanovich Danilov, in his connections with his three comrades, with his lover (and his physically distant wife), and with Russia and humanity itself.
Afterall, the main difference between the undead and the living (for the most part) is that the undead are entirely lacking in empathy, even with one another. They are not even animal - for pack and herd animals care for their group members - in some sense, they are the antithesis of this.
And so, Aleksei learns about what it is to have trust, and faith, in his fellow humans - to accept that is the most important thing about being human, in fact - and incidentally kills off 12 brutal predators out of myth, although not without the usual and expected assaults on both his spiritual and physical state (and a good couple of twists, most of which it is possible to spot before the narrator does, I believe intentionally).
Wisely, Kent keeps Dracula out of it, only allowing him onto the stage as the pseudonymous master of the Oprichniki before he departs homeward (only to reappear safely in a single flashback later in the book). I almost wish that he'd not even allowed that much of the Count to appear - so much of the mythos of the modern Vampire story is built around the adaptations and extensions of Stoker's novel (and the Hammer Horror films) that even a brief appearance risks overshadowing the rest of the characters. Luckily, his appearance is, indeed, brief, and his apparent protege (himself delighting in the pseudonym of Iuda - Slavic "Judas") manages to amply animate the final third of the story at least.
It also helps, of course, that the Russian campaign itself presents a solid historical backdrop - the occupation of Moscow, especially, also admitting of various metaphorical comparisons with the state of undeath - pulling "Twelve" safely away from being Just Another Vampire Story.
All in all, "Twelve" is more than a cut above the majority of "supernatural" fiction, and definitely deserves a look.
Subscribe to:
Posts (Atom)