Diary #59 – Something Nandeck This Way Comes

Let’s start with some more photos:

I took these photos on a July morning last year. I was in Monterrico, Guatemala on a private tour of the mangrove swamps which stretch for miles along the Pacific coast (though not as many miles as they used to). Punting around in the dawn light I was able to see a lot of wildlife – it was, in short, one of the best experiences of my trip. My guide explained how a number of different tree species had all co-evolved to thrive in the challenging environment of the brackish, tidal waterways. Mangrove swamps, he told me, protect the land around them from flooding, though the trees are always at risk of being damaged by very high tides. He did not realise that he was describing a perfect gameplay loop.

Back in the UK I was able to breathe life into a new project. Its codename is Thing and you’ll get a gold star if you can work out why. The idea is simple: players guide their tree species to colonise swamps and primarily score points for defending land from flooding. High tides, however, can damage a players’ trees, so they have to invest resources in both expansion and maintenance. My objective is to allow divergent strategies in the style of, say, Terraforming Mars (click here). Players currently have a swamp each, but it would be possible to create a more competitive game by having one shared swamp board. I considered adding some of the other environmental roles of mangrove swamps, such as their ability to soak up heavy metal pollutants, but I thought this would be a bit much. I was excited to begin the project because it represented an opportunity to both research a topic I found interesting and to finally create a true eurogame.

I decided to start with the “tree tokens”: little squares which can be flipped to their “damaged” side when they’re in danger of being washed away. I booted up Nandeck (click here), the game-creating program that I have been wrestling with over the past few years. I wanted to learn how to use the “Bezier” directive, which can be used for drawing lines, curves and arrows. Bezier was a French mathematician who formalised a way of describing curves using three points: if A and B are the intersections between the curve and two imagined straight-line tangents, then C is where those two tangents meet. Move C away and the curve gets deeper; increase the separation between A and B and it opens out. So far I was following, but the Nandeck directive introduces a fourth point, D, into the equation, and I still haven’t worked out why. So my first exercise on Nandeck was a bit of experimentation. Once I understood a little of how the Bezier curves worked I created a coordinate file on Microsoft Excel. This made the process dynamic: by defining the separation between the curves as a variable I could update all of their coordinates by changing a single value on the spreadsheet. I only had to write the formula for each x and y coordinate once, as Excel could then replicate them for all of the twenty or so curves (except the ones on the corners – I had to use trial and error on these). Here is the result:

It’s supposed to represent a clump of mangrove trees as viewed from above (the roots, as you may have guessed, are the letter “m”). The originals weren’t coloured – I just printed them directly on to green paper. I could have produced something similar – and probably nicer – with a pen and a photocopier, but editing that would require starting from scratch. To demonstrate the power of Nandeck I’ve had a go at changing two of the variables on the spreadsheet one at a time:

I was feeling pretty chuffed with myself, and spent a happy afternoon cutting out my trees and laminating them. Then it was back to Nandeck for the player boards. These were on slightly more familiar territory but I still had a lot to learn, about the “Table” directive, for example. I was also held back by uncertainty about where the game was really going. In all of my other projects I’ve been pretty confident on the core mechanic from the start. By focusing solely on this mechanic, however, my previous attempts at eurogames have ballooned out of control within a few turns. Playing published eurogames has taught me the importance of what I call “ecosystems”: interplays which allow various different mechanics to keep each other in check (like a real ecosystem, such as a mangrove swamp). Setting out without a clear core mechanic in my mind was not as problematic as I’d expected, and I put this down to what I call “squeezing”. I’ve used this term in the past to describe creative projects in general. I’ve found that ideas are great in my head, but trying to put them down on paper is a real effort. My brain tries to force me to procrastinate by having ideas for a completely different project. As a result I find that working on one project actually helps me make progress on another. Thinking about the core mechanic of Thing while meticulously working on its components is my first application of squeezing within a single project, and I consider this evidence I’m maturing as a designer.

The core mechanic, even with my new-found talent for squeezing, was not very good. Since the game is about trees it would have been tempting to base it on collecting sunlight, carbon dioxide and so on. For me, however, this would not be realistic, since those resources seemed to be in excess during my visit to Monterrico. I decided instead to borrow Terraforming Mars’ concept of converting one resource into another, and using a single cube to track it. So all resources start as “decay”, which players can then convert into “minerals” and finally “seeds”. Mass destruction of trees fills up a player’s board with decay, which can have implications for the oxygen level of the water (another feature borrowed from Terraforming Mars). I printed off a trial run of the system and, after pushing cubes around for a bit, decided there would simply be too few resources for players to do anything. So I ruined my neat, logical mechanic by adding a fourth resource, “habitats”, which worked slightly differently. To fit it on my A4 player mat I had to compress the other resources by – you guessed it – altering two numbers on my spreadsheet.

With the usual rushed, cut-it-out-on-the-day finale I arrived for my playtest with Fox and John. “This is your tech tree,” I said proudly, “Which in this game is an actual tree!” They were not as impressed by this innovation as I had expected. We got underway and things worked pretty well, though I had failed to remove my to-do list and specifically the phrase “needs blue tack” from the player mats. During the game I tried to focus on microbes while Fox and John filled their trees with birds’ nests, but in the end there were too few cards for any of us to finish satisfactorily. I was mainly interested in their feedback on the core mechanisms, and they had plenty.

There were too few resources, and too much of the tech tree was meaningless – it could, in fact, be relocated to cards. I needed to make more animal cards and rethink their costs. It would be hard to make the game interesting without functionalising the grid representing the swamp, but I don’t want to do this. By “functionalising” I mean putting information on specific points on the grid which reward players for growing trees there. It’s an important feature of Terraforming Mars, and it makes thematic sense: the colonisers built a city and gained access to the metals buried beneath it. The equivalent in my game would be a tree growing in one part of the swamp and gaining access to the fish living there – not an accurate representation of how mangroves develop. I have a feeling the entire mechanic will soon be replaced with tile-laying, and the silly cube thing with deck-building. I call this the “nuclear option”, the most powerful weapon in a designer’s arsenal: tearing everything up and starting again. I’m resisting the temptation to do this immediately because I think like a eurogame designer now, and carefully balancing things until they work in harmony is part of the fun. My thanks go to Fox and John for their input at this crucial stage.

I’ll be back on Nandeck in the near future but there’s one thing I haven’t found yet: functions. These are small bits of code which can be called on by the main code when needed. Take the tables I mentioned earlier: I wrote ten or so lines of code which would draw one and fill it with text boxes given a few input variables for its dimensions and location. The correct way to use this in my main code would be to call it and supply the variables each time it’s needed. Instead I had to copy and paste the entire function into my main code every time, which made it both messy and impossible to edit efficiently. I remember learning about functions in my final year of university, shortly after I was taught how to make Python print the words “Hello World” (an aside for those who know coding: my introduction to it was somewhat unorthodox). Anyway, I thought it would be interesting to include the code which generated the tree tokens here. It’s not nearly as hard to use as it looks, because right-clicking on each directive (the first word in a line) brings up its section of the Nandeck manual. Lines which start with a “;” character are ignored by the code, so they are useful for annotations and de-bugging. My proudest moment of de-bugging was when I realised Nandeck was, by default, adding in margins of 1cm to my A4-sized player mats, causing it to moan that they were too big. Here’s the code and, if one appendix is not enough for you, you can scroll past it to some photos my dad took on his visit to the mangroves of Lamu Island, Kenya in 1984.

Zoom = 73

Border = none

Cardsize = 4,4

;DUPLEX = 1,1,37

;location of central image data

LINK = “C:\Users\richa\Documents\Creations_new\thing\forblog\mangroveblog.xlsx”

;rectangles

RECTANGLE=1,0%,0%,100%,100%,#4AFF00
RECTANGLE=1,35%,35%,32%,32%,#4AFF00,#0000FF#4AFF00@362

FONT=”MV Boli”,10,,#000000,#4AFF00

[w] = 0.3
[h] = 0.3

TEXT = 1, m, {msx?1}, {msy?1}, [w],[h]
TEXT = 1, m, {msx?2}, {msy?2}, [w],[h]
TEXT = 1, m, {msx?3}, {msy?3}, [w],[h]
TEXT = 1, m, {msx?4}, {msy?4}, [w],[h]
TEXT = 1, m, {msx?5}, {msy?5}, [w],[h]
TEXT=1,m,{msx?6},{msy?6},[w],[h],CENTER,CENTER,90
TEXT=1,m,{msx?7},{msy?7},[w],[h],CENTER,CENTER,90
TEXT=1,m,{msx?8},{msy?8},[w],[h],CENTER,CENTER,90
TEXT=1,m,{msx?9},{msy?9},[w],[h],CENTER,CENTER,90
TEXT=1,m,{msx?10},{msy?10},[w],[h],CENTER,CENTER,90
TEXT=1,m,{msx?11},{msy?11},[w],[h],CENTER,CENTER,180
TEXT=1,m,{msx?12},{msy?12},[w],[h],CENTER,CENTER,180
TEXT=1,m,{msx?13},{msy?13},[w],[h],CENTER,CENTER,180
TEXT=1,m,{msx?14},{msy?14},[w],[h],CENTER,CENTER,180
TEXT=1,m,{msx?15},{msy?15},[w],[h],CENTER,CENTER,180
TEXT=1,m,{msx?16},{msy?16},[w],[h],CENTER,CENTER,270
TEXT=1,m,{msx?17},{msy?17},[w],[h],CENTER,CENTER,270
TEXT=1,m,{msx?18},{msy?18},[w],[h],CENTER,CENTER,270
TEXT=1,m,{msx?19},{msy?19},[w],[h],CENTER,CENTER,270
TEXT=1,m,{msx?20},{msy?20},[w],[h],CENTER,CENTER,270

;bezier curves

[t] = 0.03

BEZIERS=1,{branx?1},{brany?1},{xhan?1},{yhan?1},,[t]
BEZIERS=1,{branx?2},{brany?2},{xhan?2},{yhan?2},,[t]
BEZIERS=1,{branx?3},{brany?3},{xhan?3},{yhan?3},,[t]
BEZIERS=1,{branx?4},{brany?4},{xhan?4},{yhan?4},,[t]
BEZIERS=1,{branx?5},{brany?5},{xhan?5},{yhan?5},,[t]
BEZIERS=1,{branx?6},{brany?6},{xhan?6},{yhan?6},,[t]
BEZIERS=1,{branx?7},{brany?7},{xhan?7},{yhan?7},,[t]
BEZIERS=1,{branx?8},{brany?8},{xhan?8},{yhan?8},,[t]
BEZIERS=1,{branx?9},{brany?9},{xhan?9},{yhan?9},,[t]
BEZIERS=1,{branx?10},{brany?10},{xhan?10},{yhan?10},,[t]
BEZIERS=1,{branx?11},{brany?11},{xhan?11},{yhan?11},,[t]
BEZIERS=1,{branx?12},{brany?12},{xhan?12},{yhan?12},,[t]
BEZIERS=1,{branx?13},{brany?13},{xhan?13},{yhan?13},,[t]
BEZIERS=1,{branx?14},{brany?14},{xhan?14},{yhan?14},,[t]
BEZIERS=1,{branx?15},{brany?15},{xhan?15},{yhan?15},,[t]
BEZIERS=1,{branx?16},{brany?16},{xhan?16},{yhan?16},,[t]
BEZIERS=1,{branx?17},{brany?17},{xhan?17},{yhan?17},,[t]
BEZIERS=1,{branx?18},{brany?18},{xhan?18},{yhan?18},,[t]
;BEZIERS=1,{branx?19},{brany?19},{xhan?19},{yhan?19},,[t]

Any thoughts? Please reply here