From ca50ae87e288e62f5ba8da2bde5c31025475b205 Mon Sep 17 00:00:00 2001
From: Simon Brooke <simon@journeyman.cc>
Date: Mon, 1 Mar 2021 10:43:03 +0000
Subject: [PATCH 1/3] Bit of documentation work... nothing major

---
 doc/Gossip_scripted_plot_and_Johnny_Silverhand.md |  2 +-
 doc/Organic_Quests.md                             | 10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/doc/Gossip_scripted_plot_and_Johnny_Silverhand.md b/doc/Gossip_scripted_plot_and_Johnny_Silverhand.md
index cdb7e36..a311a01 100644
--- a/doc/Gossip_scripted_plot_and_Johnny_Silverhand.md
+++ b/doc/Gossip_scripted_plot_and_Johnny_Silverhand.md
@@ -1,6 +1,6 @@
 # Gossip, scripted plot, and Johnny Silverhand
 
-I've been writing literally for years -- since [[Voice acting considered harmful]] in 2015 -- about game worlds in which the player speaks to non-player characters just by speaking the words they choose in their normal voice, and the non-player character replies using a pipeline that goes, essentially,
+I've been writing literally for years -- since [Voice acting considered harmful](Voice-acting-considered-harmful.html) in 2015 -- about game worlds in which the player speaks to non-player characters just by speaking the words they choose in their normal voice, and the non-player character replies using a pipeline that goes, essentially,
 
 1. Alexa/Siri style speech interpretation;
 2. A decision on whether to co-operate based on the particular NPC's general demeanor and particular attitude to the player;
diff --git a/doc/Organic_Quests.md b/doc/Organic_Quests.md
index ae817b6..fd947e6 100644
--- a/doc/Organic_Quests.md
+++ b/doc/Organic_Quests.md
@@ -12,14 +12,14 @@ The structure of a modern Role Playing Came revolves around 'quests': tasks that
 
 'Gather quests' are more frequently referred to in the literature as 'fetch quests', and 'kill quests' are simply a specialised form of fetch quest where the item to be fetched is a trophy of the kill. And the trophy could be just the knowledge that the kill has happened. A delivery quest is a sort of reverse fetch quest: instead of going to some location or NPC and getting a specific item to return to the quest giver, the player is tasked to take a specific item from the quest giver to some location or NPC.
 
-Note, however, that if we consider a delivery quest to have four locations, where some of these locations may be conincident, then a delivery quest and a fetch quest become the same thing. Thus
+Note, however, that if we consider a delivery quest to have four locations, where some of these locations may be coincident, then a delivery quest and a fetch quest become the same thing. Thus
 
 1. The location of the quest giver at the beginning of the quest;
 2. The location from which the quest object must be collected;
 3. The location to which the quest object must be delivered;
 4. The location of the quest giver at the end of the quest.
 
-This characterisation assumes that at the end of each quest, the player must rendezvous with the quest giver at the end of the quest, either to report completion or to collect a reward. Obviously, there could be some quests where this fourth location is not required, because there is no need to report back (for example, if the quest giver was dying/has died) and no reward to be collected.
+This characterisation assumes that at the end of each quest, the player must rendezvous with the quest giver, either to report completion or to collect a reward. Obviously, there could be some quests where this fourth location is not required, because there is no need to report back (for example, if the quest giver was dying/has died) and no reward to be collected.
 
 Note that a location is not necessarily a fixed x/y location on the map; in a kill quest, for example, location 2 is the current location of the target, and moves when the target moves; location 3 and 4 are both normally the current location of the quest giver, and move when the quest giver moves.
 
@@ -43,7 +43,7 @@ Given that quests are as simple as this, it's obvious that narrative sophisticat
 
 But, if we're thinking of a game with much more intelligent non-player characters with much more conversational repertoir, as I am, can satisfying quests emerge organically? In space trading games such as [Elite](https://www.telegraph.co.uk/games/11051122/Elite-the-game-that-changed-the-world.html), a primary activity is moving goods from markets with surplus (and thus low prices) to markets with shortage (and thus high prices). This is, in effect, a game made up of deliver quests - but rather than deliver quests which are scripted, they are deliver quests which arise organically out of the structure of the game world.
 
-I already have working code for non-player character merchants, who move goods from city to city based on market information available to them. For player characters to join in this trading is an organic activity emerging from the structure of the world, which provides an activity. But moving merchants provides a market opportunity for bandits, who can intercept and steal cargoes, and so for mercenaries, who can protect cargoes from bandits, and so on. And because I have an architecture that allows non-player characters to fill economic niches, there will be non-player characters in all these niches.
+I already have working code for non-player character merchants, who move goods from city to city based on market information available to them. For player characters to join in this trading is an organic activity emerging from the structure of the world. But moving merchants provides a market opportunity for bandits, who can intercept and steal cargoes, and so for mercenaries, who can protect cargoes from bandits, and so on. And because I have an architecture that allows non-player characters to change occupation to fill economic niches, there will be non-player characters in all these niches.
 
 Where a non-player character can act, so can a player character: when a (non-player character) merchant seeks to hire a caravan guard and a player character responds, that's an organic escort quest.
 
@@ -59,4 +59,6 @@ So quests can emerge organically from the mechanics of the world and be richly v
 
 ## Stuff to consider
 
-The games [Middle Earth: Shadow of Mordor](https://en.wikipedia.org/wiki/Middle-earth:_Shadow_of_Mordor), and [Middle Earth: Shadow of War](https://en.wikipedia.org/wiki/Middle-earth:_Shadow_of_War) have a procedural story system called [Nemesis](https://youtu.be/Lm_AzK27mZY), which is worth a look.
\ No newline at end of file
+The games [Middle Earth: Shadow of Mordor](https://en.wikipedia.org/wiki/Middle-earth:_Shadow_of_Mordor), and [Middle Earth: Shadow of War](https://en.wikipedia.org/wiki/Middle-earth:_Shadow_of_War) have a procedural story system called [Nemesis](https://youtu.be/Lm_AzK27mZY), which is worth a look.
+
+There's an interesting [critique of Red Dead Redemption 2](https://www.youtube.com/watch?v=MvJPKOLDSos&feature=emb_logo) which is relevant to what I'm saying here.
\ No newline at end of file

From e47c55a5600b33bdcb18581c9d22bd612605220b Mon Sep 17 00:00:00 2001
From: Simon Brooke <simon@journeyman.cc>
Date: Mon, 1 Mar 2021 10:48:52 +0000
Subject: [PATCH 2/3] Typos!

---
 doc/Organic_Quests.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/Organic_Quests.md b/doc/Organic_Quests.md
index fd947e6..c213d4d 100644
--- a/doc/Organic_Quests.md
+++ b/doc/Organic_Quests.md
@@ -47,7 +47,7 @@ I already have working code for non-player character merchants, who move goods f
 
 Where a non-player character can act, so can a player character: when a (non-player character) merchant seeks to hire a caravan guard and a player character responds, that's an organic escort quest.
 
-The key idea behind organic quests is that the circumstance and requirments for quests emerges as an emergent behaviour out of the mechanics of the game world. A non-player character doesn't know that there is a player character who is different from them; rather, when a non-player character needs something they can't readily achieve for themselves, they will ask other characters to help, and that may include the player character.
+The key idea behind organic quests is that the circumstance and requirements for quests emerge as an emergent behaviour out of the mechanics of the game world. A non-player character doesn't know that there is a player character who is different from them; rather, when a non-player character needs something they can't readily achieve for themselves, they will ask other characters to help, and that may include the player character.
 
 This means, of course, that characters need a goal-seeking planning algorithm to decide their actions, with one option in any plan being 'ask for help'. Thus, 'asking for help' becomes a mechanism within the game, a normal behaviour. Ideally non-player characters will keep track of quite complex webs of loyalty and of obligation - debts of honour, duties of hospitality, collective loyalties. So that, if you do a favour for some character in the world, that character's tribe, friends, obligation circle, whatever, are now more likely to do favours for you.
 

From 7138c51134364d1bf0fe6291007061a628b883c3 Mon Sep 17 00:00:00 2001
From: Simon Brooke <simon@journeyman.cc>
Date: Tue, 8 Jun 2021 18:15:24 +0100
Subject: [PATCH 3/3] This is a very interim commit. Started work on genetic
 buildings.

Nothing works!
---
 .gitignore                                    |  10 ++
 doc/Canonical-dictionary.md                   |  55 ++++++
 doc/Roadmap.md                                |  28 +++
 project.clj                                   |   9 +-
 resources/textures/Monkey.jpg                 | Bin 0 -> 63561 bytes
 .../journeyman/the_great_game/agent/agent.clj |  15 +-
 .../the_great_game/buildings/rectangular.clj  | 168 ++++++++++++++++++
 .../the_great_game/holdings/holding.clj       |  42 +++++
 .../the_great_game/location/location.clj      |  47 +++++
 src/cc/journeyman/the_great_game/playroom.clj |  68 +++++++
 .../the_great_game/world/routes_test.clj      |   2 +-
 workspace.code-workspace                      |   6 +
 12 files changed, 439 insertions(+), 11 deletions(-)
 create mode 100644 doc/Canonical-dictionary.md
 create mode 100644 doc/Roadmap.md
 create mode 100644 resources/textures/Monkey.jpg
 create mode 100644 src/cc/journeyman/the_great_game/buildings/rectangular.clj
 create mode 100644 src/cc/journeyman/the_great_game/holdings/holding.clj
 create mode 100644 src/cc/journeyman/the_great_game/location/location.clj
 create mode 100644 src/cc/journeyman/the_great_game/playroom.clj

diff --git a/.gitignore b/.gitignore
index ee4f1e6..3bb396f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,7 +17,17 @@ pom.xml.asc
 .lein-failures
 .nrepl-port
 .cpcache/
+.calva/
+.idea/
 *~
 
 
 .calva/output-window/output.calva-repl
+
+.lsp/sqlite.db
+
+libbulletjme.so
+
+liblwjgl64.so
+
+libopenal64.so
diff --git a/doc/Canonical-dictionary.md b/doc/Canonical-dictionary.md
new file mode 100644
index 0000000..68f516b
--- /dev/null
+++ b/doc/Canonical-dictionary.md
@@ -0,0 +1,55 @@
+# A Canonical dictionary for this documentation
+
+Where a word is used in the documentation for The Great Game and its related projects, this file describes the canonical meaning of that word. This is because a lot of the concepts in play are messy and ambiguous, so that at times even I am confused by what I mean. The presence of this file is an acknowledment of this difficulty, and an implicit admission that not all the documentation is, at this stage anyway, consistent.
+
+#### Actor
+
+An `actor` is a thing which performs actions within the game world. Thus a tree is (almost certainly) not an actor, and things like sheep and rabbits that run about are probably not actors, but an animal which may pro-actively interact with the player character (such as a predator, or a beast of burden, or even a prey species which may flee) is an actor. In [god mode](#God_mode), if implemented, the player can inhabit any actor within the game world.
+
+#### Agent
+
+`Agent` is probably just a synonym for `actor`. If it is different in any way, that way has not yet been determined.
+
+#### Gossip
+
+A `gossip` is an `actor` who exchanges news with other `actors`, even when the player character is not nearby. Thus `gossips` are the mechanism by which news propagates through the game world, and also the mechanism by which information degrades. Broadly:
+
+1. `innkeepers` (and possibly some others) are `gossips` who do not move; rather, they gather information from gossips who do move, and all `non-player characters` local to the are deemed to know everything that their local `innkeeper` knows;
+2. `merchants` (and possibly some others) are `gossips` who do move from place to place, and thus transfer news.
+
+See [the spread of knowledge in a large game world](The-spread-of-knowledge-in-large-game.html).
+
+#### Heightmap
+
+A `heightmap` is a raster image of the world, such that the intensity in which an area is coloured represents the value of some variable, by default height, of that area.
+
+#### Holding
+
+A `holding` is a polygon 'owned' by an `actor` on which are built appropriate building units representing the `actors` craft and status.
+
+#### Location
+
+A `location` value is a sequence comprising at most the x/y coordinate location and the ids of the settlement and region (possibly hierarchically) that contain the location. If the x/y is not local to the home of the receiving agent, they won't remember it and won't pass it on; if any of the ids are not interesting, they won't be passed on. So location information will degrade progressively as the item is passed along.
+
+It is assumed that the `:home` of a character is a location in this sense.
+
+**Examples**
+
+1. [{:x 5445678 :y 9684351}]
+2. [{:x 5445678 :y 9684351} :karalin-palace :hanshua]
+
+#### Merchant
+
+A `merchant` is an `actor` and `gossip` who trades goods, and incidentally conveys news, between `markets`.
+
+#### Non-player character
+
+A `non-player character` is, for our purposes, an `actor` capable of engaging in conversation with the `player character`. Note, however, that, from a software point of view, the `player character` is just a special case of a `non-player character`.
+
+#### Player character
+
+The `player character` is the unique `actor` within the game currently controlled and inhabited by the player. 
+
+#### Route
+
+A `route` is a pre-prepared path through the game world that an `actor` may take. Most `actors` are not constrained to follow `routes`, but in general `routes` have lower traversal cost than other terrain.
\ No newline at end of file
diff --git a/doc/Roadmap.md b/doc/Roadmap.md
new file mode 100644
index 0000000..b644ebc
--- /dev/null
+++ b/doc/Roadmap.md
@@ -0,0 +1,28 @@
+# Roadmap
+
+This document outlines a plan to move forward from where I am in June 2021.
+
+# JMonkeyEngine
+
+[JMonkeyEngine](https://jmonkeyengine.org/) is not, at this time, an AAA game engine. But at the same time I'm never, really, going to build an AAA game. It is a working game engine which can display characters on screen in scenery and have them move around, and, actually, they can be fairly sophisticated. It will be resaonably easy to integrate Clojure code with JMonkeyEngine - easier than it would be to integrate either Clojure or Common Lisp with [Unreal Engine](https://www.unrealengine.com/) or [Unity 3D](https://unity.com/). As a significant added bonus, JMonkeyEngine is open source.
+
+Consequently I plan to stop agonising about what game engine to use, and seriously focus on getting something working in JMonkeyEngine.
+
+# Not Reinventing Wheels
+
+JMonkeyEngine already has working code for walking animated characters, which is entirely adequate to proof-of-concept what I want to do. Rather than try to implement them myself, I just intend to use existing JMonkeyEngine code as far as possible.
+
+# The 1Km World
+
+I propose to build a 1Km square world, containing one settlement, as a proof of concept for
+
+1. Procedural (genetic) buildings;
+2. Procedural settlement planning;
+3. Procedural characters, probably based on [MakeHuman 'Mass Produce' plugin](https://youtu.be/jRHnJX-TdT4), using walk animation based on [TestWalkingChar](https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestWalkingChar.java);
+4. Characters with their own hierarchy of needs, and their own means of planning to fulfil these;
+5. Characters with individualised knowledge about the world;
+6. Characters who can parse typed questions, and produce either a textual or audio response;
+7. Characters with procedurally generated accents (very stretch goal)!
+8. Characters who can listen to spoken questions, and produce audio responses.
+
+At that stage, I have a technology demonstrator that will be interesting. It still leaves the big procedural world builder still to do, but it would be enough technology to get other people interested in the project.
\ No newline at end of file
diff --git a/project.clj b/project.clj
index 5d457f3..51a5ee6 100644
--- a/project.clj
+++ b/project.clj
@@ -5,13 +5,16 @@
           :output-path "docs/codox"
           :source-uri "https://github.com/simon-brooke/the-great-game/blob/master/{filepath}#L{line}"}
   :cucumber-feature-paths ["test/features/"]
-  :dependencies [[com.taoensso/timbre "4.10.0"]
-                 [environ "1.1.0"]
+  :dependencies [[com.taoensso/timbre "5.1.2"]
+                 [environ "1.2.0"]
+                 [jme-clj "0.1.13"]
+;;                 [jme3-core "3.4.0-stable"]
                  [journeyman-cc/walkmap "0.1.0-SNAPSHOT"]
                  [me.raynes/fs "1.4.6"]
                  [mw-engine "0.1.6-SNAPSHOT"]
+                 [org.apache.commons/commons-math3 "3.6.1"] ;; for mersenne-twister implementation
                  [org.clojure/algo.generic "0.1.3"]
-                 [org.clojure/clojure "1.8.0"]
+                 [org.clojure/clojure "1.10.3"]
                  [org.clojure/math.numeric-tower "0.0.4"]
                  ]
   :description "Prototype code towards the great game I've been writing about for ten years, and know I will never finish."
diff --git a/resources/textures/Monkey.jpg b/resources/textures/Monkey.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cfe465de1e686e1a81afc285aa713c73d9f5bc1f
GIT binary patch
literal 63561
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
E3x*L8y#N3J

literal 0
HcmV?d00001

diff --git a/src/cc/journeyman/the_great_game/agent/agent.clj b/src/cc/journeyman/the_great_game/agent/agent.clj
index 79b4c99..55c491c 100644
--- a/src/cc/journeyman/the_great_game/agent/agent.clj
+++ b/src/cc/journeyman/the_great_game/agent/agent.clj
@@ -1,11 +1,12 @@
 (ns cc.journeyman.the-great-game.agent.agent
-  "Anything in the game world with agency"
-  (:require [the-great-game.objects.game-object :refer [ProtoObject]]
-            [the-great-game.objects.container :refer [ProtoContainer]]))
+  "Anything in the game world with agency; primarily but not exclusively
+   characters."
+  (:require [cc.journeyman.the-great-game.objects.game-object :refer [ProtoObject]]
+            [cc.journeyman.the-great-game.objects.container :refer [ProtoContainer]]))
 
-;;  hierarchy of needs probably gets implemented here
-;;  I'm probably going to want to defprotocol stuff, to define the hierarchy
-;;  of things in the gameworld; either that or drop to Java, wich I'd rather not do.
+;;;  hierarchy of needs probably gets implemented here
+;;;  I'm probably going to want to defprotocol stuff, to define the hierarchy
+;;;  of things in the gameworld; either that or drop to Java, wich I'd rather not do.
 
 (defprotocol ProtoAgent
   "An object which can act in the world"
@@ -37,7 +38,7 @@
 
 (defrecord Agent
   ;; "A default agent."
-  [name home tribe]
+  [name craft home culture]
   ProtoObject
   ProtoContainer
   ProtoAgent
diff --git a/src/cc/journeyman/the_great_game/buildings/rectangular.clj b/src/cc/journeyman/the_great_game/buildings/rectangular.clj
new file mode 100644
index 0000000..17a2c13
--- /dev/null
+++ b/src/cc/journeyman/the_great_game/buildings/rectangular.clj
@@ -0,0 +1,168 @@
+(ns cc.journeyman.the-great-game.buildings.rectangular
+  (:require [cc.journeyman.the-great-game.holdings.holding :refer [ProtoHolding]]
+            [cc.journeyman.the-great-game.location.location :refer [ProtoLocation]]
+            )
+  (:import [org.apache.commons.math3.random MersenneTwister]
+           ))
+
+;;; Right, the idea behind this namespace is many fold.
+;;;
+;;; 1. To establish the broad principle of genetic buildings, by creating a
+;;;    function which reproducibly creates reproducible buildings at specified
+;;;    locations, such that different buildings are credibly varied but a
+;;;    building at a specified location is always (modulo economic change) the
+;;;    same.
+;;; 2. Create good rectangular buildings, and investigate whether a single 
+;;;    function can be used to create buildings of more than one family (e.g.
+;;;    can it produce flat roofed, north African style, mud brick houses as
+;;;    well as pitch roofed, half timbered northern European houses?)
+;;; 3. Establish whether, in my current state of fairly severe mental illness,
+;;;    I can actually produce any usable code at all.
+;;;
+;;; ## Key factors in the creation of a building
+;;;
+;;; ### Holding
+;;;
+;;; Every building is on a holding, and, indeed, what I mean by 'building' here
+;;; may well turn out to be 'the collection of all the permanent structures on
+;;; a holding. A holding is a polygonal area of the map which does not 
+;;; intersect with any other holding, but for the time being we'll make the 
+;;; simplifying assumption that every holding is a rectangular strip, and that
+;;; 'urban' holdings are of a reasonably standard width (see Viking-period 
+;;; York) and length. Rural holdings (farms, ?wood lots) may be much larger.
+;;;
+;;; ### Terrain
+;;;
+;;; A building is made of the stuff of the place. In a forest, buildings will 
+;;; tend to be wooden; in a terrain with rocky outcrops -- normally found on 
+;;; steep slopes -- stone. On the flat lands where there's river mud, of brick,
+;;; cob, or wattle and daub. So to build a building we need to know the 
+;;; terrain. Terrain can be inferred from location but in practice this will 
+;;; be computationally expensive, so we'll pass terrain in as an argument to
+;;; the build function.
+;;;
+;;; For the time being we'll pass it in simply as a keyword from a defined set
+;;; of keywords; later it may be a more sophisticated data structure.
+;;;
+;;; ### Culture
+;;;
+;;; People of different cultures build distinctively different buildings, even
+;;; when using the same materials. So, in our world, a Japanese wooden house 
+;;; looks quite different from an Anglo Saxon stave house which looks quite 
+;;; different from a Canadian log cabin, even though the materials are much the
+;;; same and the tools available to build with are not much different.
+;;;
+;;; Culture can affect not just the overall shape of a building but also its 
+;;; finish and surface detail. For example, in many places in England, stone
+;;; buildings are typically left bare; in rural Scotland, typically painted 
+;;; white or in pastel shades; in Ireland, often quite vivid colours.
+;;;
+;;; People may also show religious or cultural symbols on their buildings.
+;;; 
+;;; For all these reasons, we need to know the culture of the occupant when
+;;; creating a building. Again, this will initially be passed in as a keyword.
+;;;
+;;; ### Craft
+;;;
+;;; People in the game world have a craft, and some crafts will require 
+;;; different features in the building. In the broadly late-bronze-age-to
+;;; medieval period within which the game is set, residence and  workplace
+;;; are for most people pretty much the same.
+;;;
+;;; So a baker needs an oven, a smith a forge, and so on. All crafts who do
+;;; some degree retail trade will want a shop front as part of the ground 
+;;; floor of their dwelling. Merchants and bankers will probably have houses
+;;; that are a bit more showy than others.
+;;;
+;;; Whether the 'genetic buildings' idea will ever really produce suitable
+;;; buildings for aristons I don't know; it seems more likely that significant
+;;; strongholds (of which there will be relatively few) should all be hand
+;;; modelled rather than procedurally generated.
+
+(def ^:dynamic *terrain-types* 
+  "Types of terrain which affect building families. TODO: This is a placeholder;
+   a more sophisticated model will be needed."
+  #{:arable :arid :forest :plateau :upland})
+
+(def ^:dynamic *cultures*
+  "Cultures which affect building families. TODO: placeholder"
+  #{:ariston :coastal :steppe-clans :western-clans :wild-herd})
+
+(def ^:dynamic *crafts*
+  "Crafts which affect building types in the game. See 
+   `Populating a game world`. TODO: placeholder"
+  #{:baker :banker :butcher :chancellor :innkeeper :lawyer :magus :merchant :miller :priest :scholar :smith :weaver})
+
+(def ^:dynamic *building-families* 
+  {:pitched-rectangular {:terrains #{:arable :forest :upland}
+                         :crafts *crafts*
+                         :cultures #{:coastal :western-clans}
+                         :modules []}
+   :flatroof-rectangular {:terrains #{:arid :plateau}
+                          :crafts *crafts*
+                          :cultures #{:coastal}
+                          :modules []}})
+
+;; TODO: So, modules need to contain
+;;
+;; 1. Ground floor modules, having external doors;
+;; 2. Craft modules -- workshops -- which will normally be ground floor (except
+;; weavers) and may have the constraint that no upper floor module can cover them;
+;; 3. Upper floor modules, having NO external doors (but linking internal doors);
+;; 4. Roof modules
+;; 
+;; There also needs to be an undercroft or platform module, such that the area of 
+;; the top of the platform is identical with the footprint of the building, and 
+;; the altitude of the top of the platform is equal to the altitude of the 
+;; terrain at the heighest corner of the building; so that the actual 
+;; building doesn't float in the air, and also so that none of the doors or windows
+;; are partly underground.
+;;
+;; Each module needs to wrap an actual 3d model created in Blender or whatever, 
+;; and have a list of optional textures with which that model can be rendered. 
+;; So an upper floor bedroom module might have the following renders:
+;;
+;; 1. Bare masonry - constrained to upland or plateau terrain, and to coastal culture
+;; 2. Painted masonry - constrained to upland or plateau terrain, and to coastal culture
+;; 3. Half-timbered - not available on plateau terrain
+;; 4. Weatherboarded - constrained to forest terrain
+;; 5. Brick - constrained to arable or arid terrain
+;;
+;; of course these are only examples, and also, it's entirely possible to have
+;; for example multiple different weatherboard renders for the same module. 
+;; There needs to be a way of rendering what can be built above what: for
+;; example, you can't have a masonry clad module over a half timbered one, 
+;; but you can have a half-timbered one over a masonry one
+
+(defn building-family
+  "A building family is essentially a collection of models of building modules
+   which can be assembled to create buildings of a particular structural and
+   architectural style."
+  [terrain culture craft gene]
+  (let [candidates (filter #(and
+                             ((:terrains %) terrain)
+                             ((:crafts %) craft)
+                             ((:cultures %) culture))
+                           (vals *building-families*))]
+    (nth candidates (mod (Math/abs (.nextInt gene)) (count candidates)))))
+
+(building-family :arable :coastal :baker (MersenneTwister. 5))
+
+(defn build! 
+  "Builds a building, and returns a data structure which represents it. In 
+   building the building, it adds a model of the building to the representation
+   of the world, so it does have a side effect."
+  [holding terrain culture craft size]
+  (if (satisfies? ProtoHolding holding)
+  (let [location (.building-origin holding)
+        gene (MersenneTwister. (int (+ (* (.easting location) 1000000) (.northing location))))
+        family (building-family terrain culture craft gene)]
+  (if 
+   (and (instance? ProtoLocation location) (:orientation location))
+    :stuff
+    :nonsense
+    ))
+    :froboz))
+
+;; (def ol (cc.journeyman.the-great-game.location.location/OrientedLocation. 123.45 543.76 12.34 0.00 {}))
+
diff --git a/src/cc/journeyman/the_great_game/holdings/holding.clj b/src/cc/journeyman/the_great_game/holdings/holding.clj
new file mode 100644
index 0000000..2ea7f42
--- /dev/null
+++ b/src/cc/journeyman/the_great_game/holdings/holding.clj
@@ -0,0 +1,42 @@
+(ns cc.journeyman.the-great-game.holdings.holding
+  (:require [cc.journeyman.the-great-game.agent.agent :refer [ProtoAgent]]
+            [cc.journeyman.the-great-game.objects.container :refer [ProtoContainer]]
+            [cc.journeyman.the-great-game.objects.game-object :refer [ProtoObject]]
+;;            [cc.journeyman.the-great-game.location.location :refer [OrientedLocation]]
+            [cc.journeyman.the-great-game.world.routes :refer []]))
+
+;;; A holding is a polygonal area of the map which does not
+;;; intersect with any other holding, or with any road or water feature. For 
+;;; the time being we'll make the 
+;;; simplifying assumption that every holding is a rectangular strip, and that
+;;; 'urban' holdings are of a reasonably standard width (see Viking-period 
+;;; York) and length. Rural holdings (farms, ?wood lots) may be much larger.
+
+(defprotocol ProtoHolding
+  (frontage
+    [holding]
+    "Returns a sequence of two locations representing the edge of the polygon
+    which defines this holding which is considered to be the front.")
+  (building-origin
+    [holding]
+    "Returns an oriented location - normally the right hand end of the 
+    frontage, for an urban holding - from which buildings on the holding
+    should be built."))
+
+(defrecord Holding [perimeter holder]
+  ;; Perimeter should be a list of locations in exactly the same sense as a
+  ;; route in `cc.journeyman.the-great-game.world.routes`. Some sanity checking
+  ;; is needed to ensure this!
+  ProtoContainer
+  ProtoHolding
+  (frontage [holding]
+            ;; TODO: this is WRONG, but will work for now. The frontage should
+            ;; be the side of the perimeter nearest to the nearest existing 
+            ;; route.
+    [(first (perimeter holding)) (nth (perimeter holding) 1)])
+  (building-origin [holding]
+                   ;; TODO: again this is wrong. The default building origin
+                   ;; should be the right hand end of the frontage when viewed
+                   ;; from outside the holding.
+                   (first (frontage holding)))
+  ProtoObject)
diff --git a/src/cc/journeyman/the_great_game/location/location.clj b/src/cc/journeyman/the_great_game/location/location.clj
new file mode 100644
index 0000000..4b5895f
--- /dev/null
+++ b/src/cc/journeyman/the_great_game/location/location.clj
@@ -0,0 +1,47 @@
+(ns cc.journeyman.the-great-game.location.location)
+
+;;; There's probably conflict between this sense of a reified location and
+;;; the simpler sense of a location described in 
+;;; `cc.journeyman.the-great-game.world.location`, q.v. This needs to
+;;; be resolved!
+
+(defprotocol ProtoLocation
+  (easting [location]
+   "Return the easting of this location")
+  (northing [location] "Return the northing of this location")
+  (altitude [location]
+            "Return the absolute altitude of this location, which may be
+             different from the terrain height at this location, if, for
+             example, the location is underground or on an upper floor.")
+  (terrain-altitude [location]
+                    "Return the 'ground level' (altitude of the terrain)
+                     at this location given this world. TODO: possibly
+                     terrain-altitude should be a method of the world.")
+  (settlement [location]
+              "Return the settlement record of the settlement in this world
+               within whose parish polygon this location exists, or if none
+               whose centre (inn location) is closest to this location"))
+
+
+(defrecord Location [^Double easting ^Double northing ^Double altitude world]
+  ProtoLocation
+  (easting [l] (:easting l))
+  (northing [l] (:northing l))
+  (altitude [l] (:altitude l))
+  (terrain-altitude [l] 0.0) ;; TODO
+  (settlement [l] :tchahua))
+
+(defrecord OrientedLocation
+  ;; "Identical to a Location except having, additionally, an orientation"
+           [^Double easting ^Double northing ^Double altitude ^Double orientation world]
+  ProtoLocation
+  (easting [l] (:easting l))
+  (northing [l] (:northing l))
+  (altitude [l] (:altitude l))
+  (terrain-altitude [l] 0.0) ;; TODO
+  (settlement [l] :tchahua)) ;; TODO
+
+ ;; (.settlement (OrientedLocation. 123.45 543.76 12.34 0.00 {}))
+
+
+;; (OrientedLocation. 123.45 543.76 12.34 0.00 {})
\ No newline at end of file
diff --git a/src/cc/journeyman/the_great_game/playroom.clj b/src/cc/journeyman/the_great_game/playroom.clj
new file mode 100644
index 0000000..a53cd1e
--- /dev/null
+++ b/src/cc/journeyman/the_great_game/playroom.clj
@@ -0,0 +1,68 @@
+(ns cc.journeyman.the-great-game.playroom
+  (require [jme-clj.core :refer :all])
+  (import [com.jme3.math ColorRGBA]))
+
+;; At present this file is just somewhere to play around with jme-clj examples
+
+(defn init []
+  (let [cube (geo "jMonkey cube" (box 1 1 1))
+        mat  (unshaded-mat)]
+    (set* mat :texture "ColorMap" (load-texture "textures/Monkey.jpg"))
+    (set* cube :material mat)
+    (add-to-root cube)
+    {:cube cube}))
+
+;; Let's create simple-update fn with no body for now.
+ (defn simple-update [tpf]
+   (let [{:keys [cube]} (get-state)]
+     (rotate cube 0 (* 2 tpf) 0)))
+
+
+;; Kills the running app var and closes its window.
+;; (unbind-app #'app)
+
+;; We define the `app` var.
+(defsimpleapp app
+               :opts {:show-settings?       false
+                      :pause-on-lost-focus? false
+                      :settings             {:title          "My JME Game"
+                                             :load-defaults? true
+                                             :frame-rate     60
+                                             :width          800
+                                             :height         600}}
+               :init init
+               :update simple-update)
+
+(start app)
+
+;; Reinitialises the running app
+;;(run app
+;;     (re-init init))
+ 
+ ;; By default, there is a Fly Camera attached to the app that you can control with W, A, S and D keys.
+ ;; Let's increase its movement speed. Now, you fly faster :)
+ (run app
+      (set* (fly-cam) :move-speed 15))
+
+
+ ;; Updates the app 
+(run app
+     (let [{:keys [cube]} (get-state)]
+       (set* cube :local-translation (add (get* cube :local-translation) 1 1 1))))
+
+  ;; Updates the app adding a second cube
+(run app
+      (let [cube (geo "jMonkey cube" (box 1 1 1))
+            mat  (unshaded-mat)]
+        (set* mat :texture "ColorMap" (load-texture "textures/Monkey.jpg"))
+        (setc cube
+              :material mat
+              :local-translation [-3 0 0])
+        (add-to-root cube)
+        (set-state :cube2 cube)))
+ 
+ ;; We added the new cube, but it's not rotating. We need to update the simple-update fn.
+ (defn simple-update [tpf]
+   (let [{:keys [cube cube2]} (get-state)]
+     (rotate cube 0 (* 2 tpf) 0)
+     (rotate cube2 0 (* 2 tpf) 0)))
diff --git a/test/cc/journeyman/the_great_game/world/routes_test.clj b/test/cc/journeyman/the_great_game/world/routes_test.clj
index 99cbfbf..50d8651 100644
--- a/test/cc/journeyman/the_great_game/world/routes_test.clj
+++ b/test/cc/journeyman/the_great_game/world/routes_test.clj
@@ -1,6 +1,6 @@
 (ns cc.journeyman.the-great-game.world.routes-test
   (:require [clojure.test :refer :all]
-            [cc.journeyman.the-great-game.world.routes :refer :all]
+            [cc.journeyman.the-great-game.world.routes :refer [find-routes]]
             [cc.journeyman.the-great-game.world.world :refer [default-world]]))
 
 
diff --git a/workspace.code-workspace b/workspace.code-workspace
index 8af2609..d43a2d8 100644
--- a/workspace.code-workspace
+++ b/workspace.code-workspace
@@ -11,6 +11,12 @@
 		},
 		{
 			"path": "../genbuildings"
+		},
+		{
+			"path": "../GreatGameTerrain"
+		},
+		{
+			"path": "../jme-clj"
 		}
 	],
 	"settings": {}