User Tools

Site Tools


boards:diatoms:diatoms


boards:diatoms:diatoms-game.png

Diatoms

http://www.wargear.net/boards/view/Diatoms

Diatoms was created for the “Under the Sea” map making competition. Diatoms are simple algae. I choose them for this theme mainly because they often have very regular shapes, and I thought I could use them to make an interesting geometric tiling board. But as I read more about them, I thought they were pretty interesting in their own right.

Game Play

Abandon is on.

Limited to 36 attacks.

There are no fortifies! This means if you split up a group of units, you will never be able to rejoin them.

To win - eliminate all your opponents, or get the required number of territories. Number of territories required, depends on scenario, and matches the scenario name. (e.g. scenario '50' only needs 50 territories to win, etc.)

Bonuses

“Factory” bonuses are automatically placed on every territory you own at the beginning of every turn (except the first turn). Different shapes are worth different amounts:

  • Triangles = 1
  • Rhombus = 2
  • Hexagon = 3

There is also a hordes bonus for all territories (i.e. control a territory and all it's neighbors). This bonus has the same values as above, but it is not a factory bonus, so you get to place it at the beginning of your turn.

Vision

Locked to medium fog. All territories have view borders to up to 3 territories away. Vision is blocked by non-triangle diatoms.

Cards

Start with a wild card - hold up to six. If you hang on to your wild card, you'll always be able to turn in twice with six cards.


Science / Inspiration

I read a lot about diatoms to inspire my map. Here is some of the more interesting/inspiring stuff (thanks Wikipedia!):

Background

There are over 100,000 species of diatoms, and they can be found in all types of water. Though usually microscopic, some species of diatoms can reach up to 2 millimetres in length. Their mobility is limited. Their relatively dense cell walls cause them to readily sink. Planktonic forms in open water usually rely on turbulent mixing of the upper layers by the wind to keep them suspended in sunlit surface waters. Some species actively regulate their buoyancy.

Structure and Reproduction

Diatom cells are contained within a unique silica cell wall comprising two separate valves (or shells). Diatom cell walls are also called frustules or “tests”, and their two valves typically overlap one over the other like the two halves of a petri dish. In most species, when a diatom divides to produce two daughter cells, each cell keeps one of the two halves and grows a smaller half within it. As a result, after each division cycle the average size of diatom cells in the population gets smaller.

Classification

Diatoms belong to a large group called the heterokonts. The classification of heterokonts is still unsettled, and they may be treated as a division (or phylum), kingdom, or something in-between. Diatoms are traditionally divided into two orders:

  • centric diatoms (Centrales), which are radially symmetrical
  • pennate diatoms (Pennales), which are bilaterally symmetrical.

Ecology & Importance of Silicon

Planktonic diatoms in freshwater and marine environments typically exhibit a “boom and bust” (or “bloom and bust”) lifestyle. When conditions in the upper mixed layer (nutrients and light) are favourable (e.g. at the start of spring) their competitive edge allows them to quickly dominate phytoplankton communities (“boom” or “bloom”). When conditions turn unfavourable, usually upon depletion of nutrients, diatom cells typically increase in sinking rate and exit the upper mixed layer (“bust”). Because of this bloom-and-bust cycle, diatoms are believed to play a disproportionately important role in the export of carbon from oceanic surface waters. Significantly, they also play a key role in the regulation of the biogeochemical cycle of silicon in the ocean.

The earliest known fossil diatoms date from the early Jurassic (~185 million years ago), although evidence suggests an earlier origin. Their origin may be related to the end-Permian mass extinction (~250 Ma), after which many marine niches were opened. The gap between this event and the time that fossil diatoms first appear may indicate a period when diatoms were unsilicified. Since the advent of silicification, diatoms have made a significant impression on the fossil record, with major deposits of fossil diatoms found as far back as the early Cretaceous, and some rocks (diatomaceous earth, diatomite, kieselguhr) being composed almost entirely of them.

Collecting Diatoms

The surface mud of a pond, ditch, or lagoon will almost always yield some diatoms. They can be made to emerge by filling a jar with water and mud, wrapping it in black paper and letting direct sunlight fall on the surface of the water. Within a day, the diatoms will come to the top in a scum and can be isolated.

Role in Forensics

The main goal of diatom analysis in forensics is to differentiate a death by submersion from a post-mortem immersion of a body in water. Laboratory tests may reveal the presence of diatoms in the body. Since the silica-based skeletons of diatoms do not readily decay, they can sometimes be detected even in heavily decomposed bodies. As they do not occur naturally in the body, if laboratory tests show diatoms in the corpse that are of the same species found in the water where the body was recovered, then it may be good evidence of drowning as the cause of death. Further matching of diatoms from bone marrow and drowning site can strengthen this supportive evidence and a positive conclusion can be drawn whether a person was living or not when submerged.

Development

I've often had difficulty making boards with abandon that I was happy with. It usually seemed to encourage very aggressive behavior, and lots of empty territories. I've recently used a new (for me) paradigm of having bonuses for (almost) every territory on the board on 3 maps: Iwo Jima, Diatoms, Trivial Pursuit. And I've been happy with the result. This setup creates a conflict between wanting to group your units for offense/defense and wanting to spread out your units to get bonuses.

The 'continents' and view borders were added programatically in python. Here are the interesting bits:

def setupDiatoms():
  wgmap = WGMap()
  wgmap.loadMapFromFile('//DISKSTATION/data/wargear development/diatoms/Diatoms(7).xml')
 
  # get territory sets
  triangleTerritories = wgmap.getTerritoryIDsFromNameRegex("^T")
  rhombusTerritories = wgmap.getTerritoryIDsFromNameRegex("^R")
  hexagonTerritories = wgmap.getTerritoryIDsFromNameRegex("^H")
 
  # add continents
  wgmap.continentsFromNeighbors(triangleTerritories,1)
  wgmap.continentsFromNeighbors(rhombusTerritories,2)
  wgmap.continentsFromNeighbors(hexagonTerritories,3)
 
  wgmap.continentsFromNeighbors(triangleTerritories,1, factory ="base",neighborDistance=0 )
  wgmap.continentsFromNeighbors(rhombusTerritories,2, factory ="base",neighborDistance=0)
  wgmap.continentsFromNeighbors(hexagonTerritories,3, factory ="base",neighborDistance=0)
 
 
  # get all territories within n borders - special version to only continue through triangle territories.
 
  def getATWNB(territoryID,nBorders, direction="either", borderTypesAllowed = ["Default","Attack Only"],targetRegex=".*"):
 
    tid = int(territoryID)
    borderDepth = 0
    allTerritoriesInReach = set()
    allTerritoriesInReach.add(tid)
    nBorders = int(nBorders)
 
    while(borderDepth < nBorders):
      allTerritoriesAddition = set()
      for tirID in allTerritoriesInReach:
        tirName = wgmap.getTerritoryNameFromID(tirID)
        if tirName[0] != "T" and borderDepth > 0:
          continue;
        tb = wgmap.getNeighborIDsFromID(tirID,direction, targetRegex, borderTypesAllowed)
        allTerritoriesAddition |= set(tb)
      allTerritoriesInReach |= allTerritoriesAddition
      borderDepth = borderDepth + 1 
 
    return allTerritoriesInReach
 
 
 
  # add view borders to every territory
  nDistance=3
  targetRegex=".*"
  directionality="One-way"
 
  setrecursionlimit(15000)
  originalDOM = deepcopy(wgmap.DOM)    
  newDOM = wgmap.DOM
 
  for t in wgmap.DOM.getElementsByTagName("territory"):
    tid = t.getAttribute("tid") 
 
    wgmap.DOM = originalDOM
    # find all territories that should be viewable from t
    twoDist = getATWNB(tid,nDistance,targetRegex=targetRegex) - getATWNB(tid,1,targetRegex=targetRegex)
 
    wgmap.DOM = newDOM      
    wgmap.addBordersToSet(tid, twoDist,directionality, "View Only")
 
  wgmap.DOM = newDOM  
 
 
  wgmap.saveMapToFile('//DISKSTATION/data/wargear development/diatoms/Diatoms-out.xml')
boards/diatoms/diatoms.txt · Last modified: 2016/04/21 12:37 by Ozyman