Monday, 29 November 2021

The North Wind doeth blow

 

View from my bedroom window
Storm Arwen tore through my wood on Friday night, and caused very significant damage.

There is no significant damage to the house; certainly nothing which compromises its integrity. The wind turbine is still standing and still working. The cattle shed is also undamaged.

A strip about 15 to 20 metres wide through the wood from the Summer Palace glade to the blow from three years ago has lost substantially all its trees: it is just utter chaos. This is about quarter to a third of the whole area in the wood, and includes some of the largest trees. The summer palace is entirely gone. The wreck is immediately behind the house and three trees fell on the house.

Around the area where the trees are all fallen, there are further trees which are still standing but unstable. What remains of the wood that's largely unaffected are

* A strip around five metres wide along the east side of the wood;
* A strip of at least 15 metres wide along the south edge of the wood;
* A more substantial area of at least thirty metres wide along the west edge, although this is affected by a much smaller blow in the south-west corner which happened five years ago.

The fallen trees are going to have to be hauled/winched out into Commons Meadow, which means I'm going to need a new 12 foot gate. But actually that fence is going to need work anyway, because one of the strainer posts was braced back to a tree in the wood, and consequently part of the fence is demolished.

There are more pictures here.

Tuesday, 16 November 2021

Open Source Climate Models: initial review

Motivation

Climate models are normally built to do real science; that is not my aim. Rather, I want something which will form a component of an educational game which allows players to make policy decisions to attempt to maintain the climate within ‘safe’ limits, given constraints of population, consumption, demand for strategic materials and so on.

Consequently, I need the model to run on ordinary PCs that people may be expected to have, or even perhaps on something like an X Box. It also needs to be able to simulate a year in at most about twenty minutes, with enough processor cycles free to run user interface code.

It’s quite likely that no existing climate model will work under these constraints.

Systems considered

Name Language Licence Status Documentation Builds?
ClimateMachine Julia Apache License v2.0 Released Present Failing, probably fixable.
Community Earth System Model Fortran, C, Python, Perl BSD-style Released Present Failing
Hector C++, R GPL v3 Released Present Apparently successful
E3SM Fortran, C BSD Style Not suitable for consumer-grade machines Present Not attempted
atlas C, Fortran Apache License v2.0 Probably too low level Minimal Not attempted
Isca Fortran, Python GPL v3 Released Present Apparently successful, documentation slightly wrong






Climate Machine

Build failed with the following output:

ERROR: LoadError: UndefVarError: LLVMPtr not defined
Stacktrace:
 [1] include(::Module, ::String) at ./Base.jl:377
 [2] top-level scope at none:2
 [3] eval at ./boot.jl:331 [inlined]
 [4] eval(::Expr) at ./client.jl:449
 [5] top-level scope at ./none:3
in expression starting at /home/simon/.julia/packages/CUDA/wTQsK/src/CUDA.jl:9
ERROR: LoadError: LoadError: Failed to precompile CUDA [052768ef-5323-5732-b1bb-66c8b64840ba] to /home/simon/.julia/compiled/v1.4/CUDA/oWw5k_BxRo2.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
 [3] _require(::Base.PkgId) at ./loading.jl:1029
 [4] require(::Base.PkgId) at ./loading.jl:927
 [5] require(::Module, ::Symbol) at ./loading.jl:922
 [6] include(::Module, ::String) at ./Base.jl:377
 [7] include(::String) at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:1
 [8] top-level scope at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:12
 [9] include(::Module, ::String) at ./Base.jl:377
 [10] top-level scope at none:2
 [11] eval at ./boot.jl:331 [inlined]
 [12] eval(::Expr) at ./client.jl:449
 [13] top-level scope at ./none:3
in expression starting at /home/simon/tmp/climate/ClimateMachine.jl/src/Arrays/MPIStateArrays.jl:3
in expression starting at /home/simon/tmp/climate/ClimateMachine.jl/src/ClimateMachine.jl:12

The error appears to be caused by a problem in Julia’s CUDA library, which should hand off computation to my graphics processor (which would be a good thing as this has some serious compute power).

All tests also fail, but that is almost certainly because the build failed.

This is probably fixable without a huge amount of effort.

Overall, although I have no experience with Julia, the codebase looks very clean and well designed. The installation process was big and complex, but ran commendably cleanly, with no installation problems.

Community Earth System Model

The build instructions appear to be incomplete. Nothing compiles. There is no executable product. I don’t even know where to start with attempting to investigate further.

Hector

Pure R build appeared to work cleanly, but I didn’t understand what I’d got sufficiently to carry out any meaningful tests. I think it worked.

Makefile (standalone) build also appeared to build satisfactory, produced an executable, and I was able to use this to do a test run, but again I don’t understand what I’m doing sufficiently to understand what I got. Still, this is promising.

E3SM

From the documentation it appeared exceedingly unlikely that E3SM would run satisfactorily on the hardware available to me, so I didn’t attempt this

Atlas

I think Atlas is probably a useful library for people who know how to build climate models, but I think it’s too low level for what I want to do. Build was not attempted.

Isca

Installation/build appeared to work correctly, but there was a slight error with the build documentation.

Where the documentation says to run

(isca_env)$ pip install -e .

I got the following error:

(isca_env) simon@mason:~/tmp/climate/Isca$ pip install -e .
Obtaining file:///home/simon/tmp/climate/Isca
ERROR: file:///home/simon/tmp/climate/Isca does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found.

I found a setup.py file under src/extra/python/, so I ran

pip install -e src/extra/python/

This gave the following output:

Obtaining file:///home/simon/tmp/climate/Isca/src/extra/python
  Preparing metadata (setup.py) ... done
Requirement already satisfied: sh in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.13.1)
Requirement already satisfied: jinja2 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (3.0.3)
Requirement already satisfied: f90nml in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.3.1)
Requirement already satisfied: numpy in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.21.4)
Requirement already satisfied: pandas in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (1.3.4)
Requirement already satisfied: xarray in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from Isca==0.2) (0.20.1)
Requirement already satisfied: MarkupSafe>=2.0 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from jinja2->Isca==0.2) (2.0.1)
Requirement already satisfied: python-dateutil>=2.7.3 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from pandas->Isca==0.2) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from pandas->Isca==0.2) (2021.3)
Requirement already satisfied: six>=1.5 in /home/simon/bin/miniforge3/envs/isca_env/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas->Isca==0.2) (1.16.0)
Installing collected packages: Isca
  Running setup.py develop for Isca
Successfully installed Isca-0.2

So I think that worked satisfactorily. To test it I then attempted to run a test case, and this failed complaining about missing environment variables. So I think this is working and I just need to read the documentation better to get it running.

It needs to be said this was also a very big, complex installation process and the fact that it all ran cleanly is very commendable: this isn’t easy.

Conclusion

All climate models are complex bits of software, and, being mathematically intensive, tend to be written in relatively special purpose languages (R, Julia, Fortran) with which I’m not familiar. I’m also intensely prejudiced against Python, because I hate significant white space, so again where systems use Python as a front end scripting language, this isn’t familiar to me.

Hector and Isca built satisfactorily without much difficulty. Hector successfully ran test cases (and commendably quickly), although it didn’t produce output I am able to interpret at this stage. **Climate Machine** didn't build, but I think this is fixable with a little more work.

All three of these systems are promising and worthy of further investigation. Whether any will do what I need I am not yet certain.

Monday, 15 November 2021

The Everyone Dies Event Class

Lytton burns
The climate, globally, is warming. Everyone acknowledges that. It’s not warming equally, or consistently, or evenly; I think everyone acknowledges that as well. Rather, the atmosphere is a heat engine: as you put more energy into it in the form of heat, you get more work out of it, in the form of turbulence. Winds get stronger, precipitation more intense, and heat waves hotter.

Human beings function in a fairly constrained temperature band. The healthy body temperature is 37° Celsius, plus or minus about one degree. The human body cools itself by evaporation. If water can’t evaporate from your skin, you can no longer cool yourself. Rather, you take on heat from the environment. Body temperature above 40° Celsius is a life threatening emergency, and above 42.3° denaturing of proteins, especially in the brain, may occur rapidly. This is not survivable.

But the operation of the human body generates heat continually. The beating of the heart generates heat. The movement of the chest cavity in breathing generates heat. Even brain activity – thinking – generates heat.

So in order to survive we need to be able to dump a small amount of heat into our environment continually. If the air is humid enough that sweat can’t evaporate, we need a small heat gradient to make that possible. So we need it to be actually cooler than 37°, and the survivable number generally quoted is a “wet bulb temperature” of 35°.

What does ‘wet bulb temperature’ mean? It’s the temperature at which water (and sweat) evaporates, and that’s a function of the absolute temperature of the air, and of the humidity: the saturation of water vapour in the air. As the air becomes increasingly humid, so the wet bulb temperature falls. In very dry atmospheric conditions, you can easily survive air temperatures well above 35° Celsius, provided you can drink enough fluids to enable you to sweat.

So: there is a temperature and humidity at which everyone exposed to the air just dies, and just dies pretty quickly. How close are we to hitting those temperature and humidity conditions?

The answer, of course, is that there are places on Earth which regularly exceeded those limits even before the days of significant anthropogenic warming, but that people don’t live in those places. Examples include Death Valley in California, parts of the Arabian Peninsula and of the Sahara, and Pakistan’s northern Sindh province, in which a Victorian British Brigadeer had the bright idea of building a city. What’s interesting is that these are not generally humid places; on the contrary, they’re exceptionally dry.

But the consequence of anthropogenic heating is that we’re seeing both higher average temperatures and higher variations in temperature. Which means we’ve been seeing a lot more exceptional heat events than we’ve been used to.

Over the past decade, ten places on Earth have recorded wet bulb temperatures at or above the theoretical ‘everybody dies’ limit. So far, we haven’t had an event in which very large proportions of the population have died suddenly of heat stroke, despite the fact that three of the places which have seen the highest wet-bulb temperatures, Ras Al Khaimah, Jacobabad and Mecca have significant populations.

But we cannot be very far away from an ‘everybody dies’ event, and the first probably won’t be somewhere that’s accustomed to very high temperatures.

Lytton, in British Columbia, Canada, wasn’t, until this year, accustomed to exceptionally high temperatures. Yes, it had frequently been the hottest place in Canada, but Canada is not on the whole a very hot place. The extreme heat event that hit Lytton in June 2021 – 49.6° Celsius – was fully 5° Celsius warmer than had ever been recorded there before. This is, as I’ve said before, because having more heat in the atmosphere makes it more turbulent and thus more heterogenous.

Lytton is 50°13’52" North. For comparison, that’s about eleven miles south of Plymouth in Devon, England, or about six miles north of Prague, in the Czech Republic.

Lytton didn’t quite exceed the ‘everybody dies’ limit, although it came very close. But it did exceed the ‘everything burns’ limit, which is what it isn’t there any more. And what Lytton proves is that, in an era of increasingly unstable weather, extreme heat events do not only happen in the tropics.

So:

  1. We’re currently on 1.19° Celsius of anthropogenic warming over pre-industrial levels;
  2. At 1.19°, we’re seeing local temperature records being exceeded by 5° not only in the tropics but even in temperate zones;
  3. At 1.19°, our margin of safety for ‘everyone dies’ events in previously habitable zones appears to be completely exhausted;
  4. If capitalism continues (SSP4), we’re heading for 3.2° Celsius of warming; even on the much more optimistic SSP2 track, we’re now heading for 2.7°.

So: if at 1.19° average warming, we’re seeing local records broken by 5°, by what amount will we see them broken at 3.2° average? This isn’t going to be a simple linear curve; it seems to me that it must be at least to some degree exponential, because there are clearly accelerating effects and feedback loops in there.

But let’s assume that it’s simply linear. Then we would be looking at current local records being exceeded by fifteen degrees, more or less anywhere in tropical or temperate zones. Indeed, given what we saw in Siberia in 2020, we could easily see ‘everyone dies’ events happening as far north as the Arctic Circle. Obviously, they will be more common in the tropics. But no currently populous place on Earth will be immune.

So, just sit for a moment, and imagine. It’s 2035. It’s June. You’ve seen ‘everyone dies’ events, covering thousands of square kilometres, happening in other parts of the world already. Now the weather forecast tells you that there’s a 30% probability of an ‘everyone dies’ event in the area where you live in the next ten days.

What do you do?

That weather forecast is going to trigger everyone who can move, to move. It will cause gridlock on every means of transport. It will cause mass civil unrest. A fortnight later we’ll see news reports of ‘rescue’ workers – probably troops – going into the places people have gathered in their last desperate attempts to survive, have died in heaps. Those places may be subway stations, or underground vaults; they may be public buildings where there had been some hope the air conditioning system would not fail.

And each such event will leave a dead zone behind it to which – although we’ll know that these events will happen more or less randomly, like lightning strikes – few people will want to return.

Let’s be clear about this. 3.2° of warming isn’t ‘survivable’. 2.7° of warming isn’t survivable. We’re on the very edge of seeing ‘everyone dies’ events, covering areas the size of small European countries, now, at 1.19°. We cannot afford any more warming.

Yet already we’re hitting cascade effects. As the Arctic warms, so methane frozen in permafrost or beneath the sea thaws and is released into the atmosphere, ratcheting up warming. As ice melts, new, darker sea and land surfaces are exposed, ratcheting up warming. As ocean circulation systems are disrupted, their moderating effects break down, ratcheting up warming. Even if we all stop burning fossil fuels today, the temperature will still rise to about 1.6° Celsius above pre-industrial levels.

We are already in the disaster zone. Every barrel of oil we pump makes it worse. We have to just stop.

Monday, 1 November 2021

Owning Scotland's Land

Scotland's land. 
OK, yes, it is my croft.
The white saviours, led by Benedict Macdonald, are again taking up the white man's burden to save Scotland's 'Wild Land' from the wild Scots. His business model is essentially to rent-seek off subsidies provided by the Scottish government intended to support rural communities and rural development, and divert the money, instead, to his friends in the City of London. Yes, this is just the latest cover of a very old tune, but it's long past time we said 'enough'.

The Right Solution

It remains my view that the right solution to Scotland's land problem is to apply a single, universal, highly progressive land tax to every square metre of Scotland, with the proceeds going to local government at a layer far closer to our current community councils than to our present regional councils. This taxation should be so progressive that it would essentially bankrupt all large estates immediately, causing them to surrender the vast majority of their land to those same councils, which would hold it as common.

These councils would be empowered to let parts of their common land to individuals on a non-heritable liferent basis, and to let parts to corporate entities on a maximum term of fifty years, but they would not be empowered to sell common land. At all. Ever.

However, for this solution to be implemented, we'd need a bold, far-sighted and progressive Scottish government, and there is at present no prospect of our ever having one. So we need to look for other solutions.

The Co-operative solution

So, let us suppose we set up a co-operative fund, called for the remainder of this document 'The Co-op Land Fund'. This fund would sell shareholdings to members of the public, who could put in any amount (over a set minimum of perhaps £100); but each member would get only one vote, irrespective of the amount of money they had put in.

This fund would buy parcels of land, normally in blocks of over 100 hectares, and would lease those parcels of land on long leases to further co-operatives ('management co-ops') which would manage and/or occupy that land (ideally, both).

There are two potential models for this:

  1. The Co-op Land Fund could speculatively buy a parcel of land and invite proposals from people interested in forming management co-ops to manage/occupy it;

  2. A nascent management co-op could approach the Co-op Land Fund and say 'there is this particular parcel of land which is now on the market, which we would like to manage/occupy, will you buy it and lease it to us.'

Obviously, the Co-op Land Fund could, and I hope would, operate both these models.

The idea here is that the management co-ops would either represent existing communities of place - a village would set up its own co-op to bid for land in its locality - or intentional communities which had the intention of becoming communities of place, by co-residing on the parcel of land which they leased.

Ideally, the management co-ops would hold the land more or less in perpetuity. They would pay a rental to the Co-op Land Fund, which could provide, in addition to finance for land, also finance for buildings and capital plant, and could also provide land management and ecological advice services.

Management co-ops should be essentially local, holding one parcel of land or at most a few parcels of land within easy cycling distance of one another. Everyone living on, or working on, the land held by a management co-op should be entitled to membership of that co-op.

In short, I view these management co-ops as being essentially something like Standingstone.

The Co-op Land Fund should set broad guidance for activities and developments which should be encouraged, should be discouraged, and should be disallowed, on these parcels of land; this guidance should generally be designed:

  1. To maintain the land in good long-term ecological health;

  2. As part of that, to sequester carbon;

  3. To produce strategic goods including food, natural fibres, timber and electrical power;

  4. To foster community and repopulation.

     

Thursday, 19 August 2021

Where's the steel?

A blast furnace in operation
From the discovery of iron working techniques, about 3,200 years ago, up until the widespread exploitation of fossil fuels, about 250 years ago, iron and steel were rare, precious materials. The average person, across the whole world, almost certainly had less than 500 grammes of it. A knife, probably; some tool of their trade, possibly. Even members of the elite -- warriors who fought in full armour, for example -- probably owned no more than 30kg of iron and steel.

The use of fossil fuel changed all that, of course. There's about one car for every two people in the UK, and the average car now weighs 1857Kg, so that's almost a ton per person in cars alone, not to mention all the steel we now have in buildings and infrastructure. But it's fossil fuels that have made that possible. In future, we can't use them. So how much steel will we have?

Steel costs about 4MWh/ton to make. Current production of steel is about 1.8 billion tonnes per annum.That's about 7.2 billion MWh, or 7.2 million GWh, or 7,200 terawatt hours per annum -- which is 23% of total world industrial energy consumption.

Total world electricity production is around 27,000 terawatt hours So making all our steel electrically would take one third of our total electricity generation capacity. But only 28%, or 7560 TWh, of this is renewable. In other words, if we converted all our current steel making capacity ro electric arc, it would use virtually all of the world's production of renewable energy.

About 260GW of new renewable generating capacity is being added annually, but that figure is a bit misleading, since renewable plant cannot operate at full capacity all the time. Solar panels only operate during hours of daylight, and at full capacity only when the sky is cloudless and the sun significantly above the horizon. Wind turbines operate at full capacity only in a fairly narrow band of wind speeds. So 260GW of capacity does not translate into 2 277 TWh of electricity actually produced per year, but much less. How much less? I don't know, but about a third, or 0.7 TWh, seems a reasonable guess.

However, only a proportion of steel is made using electric arc furnaces; the rest is made using fossil fuels, largely coal. The exact proportion is hard to establish, since especially in the West new electric arc capacity is being built quickly. But the best figure I can get is around 29%. That means, of course, that of that 29% of steel that is made electrically, only 28% – or 8% of total steel making – is carbon neutral.

It also means that, disregarding the proportion of existing electric arc furnaces which are using fossil-fuel generated electricity, it would take seven years of our total new renewable energy capacity to replace existing fossil fuel steel making capacity with renewable. And that's before a single joule of electricity becomes available to power any of the new electric cars, electric trucks, electric trains, etc, that we want to build with that steel.

Except we couldn't build the new capacity that quickly, because it takes (a lot of) steel to build both new steelmaking plant and new renewable electricity generating capacity. We are going to have to shut down the approximately 70% of steelmaking capacity that is fossil fuel powered, and we're going to have to shut it down soon. And in a world which is critically short of a strategic material as critical as steel, making the right choices about how to allocate that steel is going to be hard and contentious.

So no. We're not all going to have electric cars. We're going to have a lot less steel

Wednesday, 21 April 2021

Death, Glory, and computer games

the rookie, quick

Let's suppose for a moment that you're a member -- the most junior member, the rookie -- of a squad. Your squad may be police, it may be corporate security, it may be a criminal gang; this doesn't matter. What does matter is that it exists in an environment in which all these things exist, and compete; in which they compete using lethal force.

As the rookie, you've been issued with a weapon. It isn't a very good weapon; it's old, worn out, not particularly powerful; and you're not yet very skilled in its use. But this doesn't matter; there are half a dozen other folk in your squad who are all more experienced and better armed than you. Your leader is a very experienced -- famous, perhaps notorious -- combat veteran. You feel safe, and your squad is moderately successful.

the killer in the dark

Then, one dark night, within the space of about five minutes, your comrades are picked off one by one by an unknown assailant using a sniper rifle from cover. Most of them never see him; most of them don't get a single shot off on target.

And now they're all -- all your experienced, well armed, competent comrades -- dead. Every one of them, dead. There's only you left. There's nothing in particular to defend. No harmless civilians depending on your protection, no pass that must not be sold, not even any very significant amount of booty.

Carnage

In those circumstances, what do you, the last survivor, the poorly armed rookie, do?

Do you hide, in the dark, in an environment that is full of hiding places? Do you flee into the complex maze of streets and alleys around you, or in one of the fast getaway cars that your squad so often has parked around the scenes of such encounters? Do you stay alive at all costs, to inform your superiors, the rest of your faction, of what has happened, of this new threat they face? Do you throw down your weapon, put your hands up, and beg for mercy?

Or do you fight, to certain death, against a warrior you already know is far more deadly -- and far better armed -- than you are?

Seriously?
the rookie, dead

And yet, this is what (almost) all such characters in (almost) all video games do.

The game I playing at present is Cyberpunk, so the game I am ranting about at present is Cyberpunk. But that's unfair, because this behaviour is ubiquitous. The very rare exceptions (and as far as I'm aware, outside the 'Beat on the Brat' boxing competition, there are none in Cyberpunk) are specifically scripted individual events. The default behaviour for all opponent NPCs is to fight to the death, to fight without quarter given, to the very last man or, all too often, woman.

In Cyberpunk, enemies who are hunting you (yes, even that poor unfortunate last rookie) will call out "come out with your hands in the air," "we only want to talk to you," or "I promise not to kill you."

These apparent offers of quarter are in fact insincere. You are given no way to respond to them directly; but if you do put your weapons down and just stand there, you will be killed. Equally, you are given no way to call on your victims to surrender, or to offer them quarter.

True, you, the player, can walk away from a fight, and (usually) the enemy won't pursue you very far. But, while you remain in the area in which the fight broke out, any leftover survivors will continue, suicidally, to attack.

And surely -- surely -- it can't just be for me that this universal, this irrational, this suicidal refusal either to surrender or to flee wrenches at the willing suspension of disbelief?

A digression: 'non-lethal' weapons

Of course, also, in Cyberpunk, you can use 'non lethal' weapons. 'Non lethal' weapons include most or all blunt melee weapons -- clubs, batons, et cetera -- but also include firearms to which you have added a modifier called 'Pax' which somehow, magically, renders the firearms 'non lethal'.

You can probably guess from all the scare-quotes that I consider this a moral cop-out, and it is. Anyone with experience in the real world knows that blows with a blunt instrument sufficiently forceful to knock the victim out for a substantial time have a substantial chance of causing permanent brain injury or death. Anyone with experience in the real world knows that rubber bullets or plastic baton rounds fired from firearms frequently cause permanent injury or death.

A character sufficiently injured with a 'non-lethal' weapon falls immediately to the ground and never, no matter how long you wait, recovers in any way. Characters felled in this way with 'non-lethal' weapons never reappear in the game.

There are a series of missions given you by a fixer called Regina Jones in which she urges you to use non-lethal weapons, and says that a medical team will come to recover the victim for treatment; but, no matter how long you wait, that medical team is never seen to arrive.

In practice I think 'non-lethal' weapons are just a flimsy screen behind which CD Projekt can claim "well, you don't have to kill hundreds of people, you can use 'non lethal' weapons." But, in fact, to complete a playthrough of Cyberpunk -- even just the 'main plot' quests -- you do have to permanently incapacitate many tens, probably hundreds of characters. In practice, 'non lethal' weapons are a difference that makes no difference.

The reason for 'No Surrender'

So, why? Why does the rookie with the most basic, most useless weapon, sole survivor of his or her squad, still charge into battle against an opponent who has clearly demonstrated martial superiority? Why does the rookie continue to attack even when wounded?

It's partly down to something I've been arguing for ten years now. Because every interaction in modern video games has to be voice acted, characters have very limited vocal repertoire. So there isn't sufficient repertoire for negotiations of surrender (either way). But to an extent the repeated calls of "come out with your hands in the air" give the lie even to this suggestion. There is not just one voice acted instance of that call, there are several. True, they do become repetitive; true, they are not individually voice acted for each opponent.

But the very fact that they are not indicates that it would be possible for the developers to record a few variants of "I give up," "I've had enough," "I surrender." There's an animation which civilian non-player characters caught in the middle of a firefight; the crouch in the open with their hands above their heads. A defeated opponent could put his or her weapon down, call out "I surrender," and do the same.

An injured opponent could writhe on the ground, crying out in pain or whimpering, and beg for medical help. An uninjured opponent could just run away, either abandoning their weapon or taking it with them.

In any of these cases the player would have moral choices. They could succour the wounded. They could handcuff wanted criminals and tag them for the police to collect. They could let fugitives go. Or, they could leave the wounded in agony, could demand bribes from wanted criminals for not calling the police. Or, they could just kill the defeated. In any of these options, the player could either collect the victims' weapons (and, optionally, other valuables) for resale, or not do so.

And, of course, if the player leaves the victim free with their weapon, then there should be at least some chance that the victim will then break their implied parole and restart the fight.

But it's a role playing game. The player should have scope to play their role, to make moral choices. Some players will choose to be merciful; some, even, quixotic. Those choices should be there.

Not providing these options -- having every non-player opponent continue to fight, obstinately, mechanically, robotically, to the bitter end, to the death of every last member of the squad, without ever considering or trying or begging for other outcomes -- is lazy. It's not good game design. It rends at the willing suspension of disbelief. It sucks.

Friday, 1 January 2021

T-Bug, memory management, and Cyberpunk

A Cyberpunk 2077 character in T pose
I have no inside information about the development of Cyberpunk 2077, but I am a software engineer with 35 years of experience, and I have written mods for both CD Projekt and Bioware games.

Cyberpunk is essentially two products: RED Engine, and Cyberpunk itself, which runs on top of Red Engine. The engine is very much analogous to a JVM: it abstracts the platform for the game code that runs on top of it.

The Cyberpunk layer itself, and the graphical and audio assets, are probably identical between PC, and old and new versions of the XBox and PlayStation platforms. It is the engine that differs between the platforms. The Cyberpunk layer seems to me to be in a good state of completion — there are bugs, but they're relatively minor.

The version of RED Engine used for Cyberpunk is surprisingly little changed from the version used for Witcher 3, CD Projekt's previous major game. The main obvious change is improved background loading of assets. On a PC towards the upper end of recommended spec, this too is reasonably solid: I have had one crash, one significant audio glitch, and two or three minor visual glitches in twenty hours of game play.

But it's clearly in the engine that the problems lie, and is, I think, where the problems have always been.

The game was launched simultaneously on PC, and on both 'last gen' and 'next gen' XBox and PlayStation consoles, although on both XBox and PlayStation, the code at release used the 'last gen' APIs, and next gen consoles run this in their respective backwards compatibility modes. A further release using next gen APIs is promised, but is not yet available. 

However, the game runs reasonably well on modern gaming PCs and on next generation consoles. But it runs extremely poorly on last generation consoles, to the extent of causing a great deal of negative comment. So why? What's going wrong? 

I emphasise again: I don't know, I have no inside information. This essay is reasonably well informed speculation, and nothing more. However, this is my opinion. 

What sets the older XBox and PlayStation platforms apart is that they have much more limited i/o speed, and much more limited main memory, than the newer generation (or than current PCs). They also have slower processors and more limited graphics subsystems.

Night City — the setting for Cyberpunk — is an extraordinarily ambitious and complex visual environment. To render a single static scene, hundreds of models and textures must be loaded from backing store. 

But the scenes are not static. On the contrary, the user can look around freely at all times, and can move quickly through the environment. At the same time, dozens on non-player characters, vehicles, aircraft and other mobile game objects are also moving (some rapidly) through the scene.

From a development and testing point of view, it's easy to test that a given asset can be loaded into memory and rendered in a given time. It's even relatively easy to test whether a given set of assets can be loaded in a given time.

But what I have particularly seen in the videos of the game running on old-generation hardware iis
  1. Late loading of higher resolution textures; and
  2. Assets (particularly non-player characters) being rendered in default poses.
I also hear that there are a lot of crashes, which I'll come back to.

The two issues I've described above both seem down to the program being i/o bound — it can't get data from disk to screen fast enough, because of limitations in bandwidth. That's hard physics: yes, you can work to make the graphics selection and loading code as efficient as possible, but if you need all those bits on the screen to render a scene and the system doesn't have the raw bandwidth, it isn't going to happen.

The problem is made worse by limited main memory. Where there is main memory to spare, it can be used to cache near-screen assets, so that if, for example, the player turns their head, the required assets are already in main memory. But if main memory is exhausted with all the assets currently on screen, then when the player turns their head, unwanted assets must be culled and fresh assets loaded, immediately.

This raises the issue of crashing. These game assets are big. Culling and reloading will rapidly fragment the heap. But pauses for garbage collection are really undesirable in a fast moving real time environment. Near real time GC of rapidly fragmenting heaps is hard.

Worse is, I suspect, what happens when/if the assets required to render a scene in themselves exhaust main memory. I'm pretty sure this happens, because it's noticeable that scenes rendered on old generation consoles contain fewer non-player characters than similar scenes rendered on PC. There's clearly code that decides whether to cull non plot critical non-player characters when memory load is high.

But thrashing is likely to occur — or at least, there will be need for sophisticated code to prevent thrashing — when assets required to render a scene cannot be accommodated without removing other assets also required to render the exact same scene.

This sort of code — especially when it is being developed under pressure — is very susceptible to the sort of bugs which cause crashes.

So, from a quality point of view, where does that leave us? All these aspects of engine performance are suitable for unit tests, integration tests and characterisation tests. Characterisation tests – does this code run exactly the same as that code? – may be particularly relevant when testing ports to multiple platforms.
 
If there is not a comprehensive test suite and a continuous integration platform then someone is very derelict in their duty, and I do not believe that. CD Projekt strike me, in both artistic and technical proficiency, as pretty thorough.

Furthermore, we've seen very impressive renderings of scenery and action for two years now, so the upper bound to the size and numbers of assets required for scenes has been known for at least that time. So the performance and stability problems on old generation consoles must have been known.

That implies to me that management ought to have said, at least a year ago, "we will launch only on PC and next-gen platforms, and a degraded version for old generation consoles may follow later but we don't know when."

Obviously, investors and owners of older consoles would have been disappointed, but it would have avoided a significant hit to reputation.
 
This essay started as a comment on a YouTube video, which, if you're interested, you should watch. 

 

Thursday, 17 December 2020

Cyberpunk 2077, considered as a Witcher III DLC

Johnny, Panam, Vixen
This is the first essay I've written on Cyberpunk 2077; I doubt it will be the last – indeed, I hope it won't, because if it is that will mean the game has failed for me. I'm currently fifteen hours in, and, at this moment, I have to say that it's on it's way towards failing. And the question you may well ask, is 'why?'

Well, essentially, because, rather than being a wholly new game, this is, essentially, an add-on pack or downloadable content for The Witcher III. It uses the same engine, but far more than that, it uses the same mechanics and the same structure. And the mechanics which were excellently tuned for the wide open spaces of Velen or the relatively small urban environments of Oxenfurt anf Novigrad do not work well in a sprawling metropolis like Night City.

Traversing the space

You can, of course, walk everywhere. It's possible. This is made more bearable by the fact that there really are a lot of interesting people – non-player-characters – on the streets, and that, although the same models do get reused, there are sufficient of them that it rarely becomes too obvious. And the architecture truly is epic; it's a great city for sight-seeing. But the distances are very considerable.

In the Witcher III there was one 'point of interest' every two minutes or so of walking time. That lead to some absurdities, of course, such as inhabited villages existing within a couple of hundred metres of the lair of a monster which is a challenging fight for an experienced witcher. In Night City, too, civilian life carries on within very short distances of acts of gross violence, but the points of interest in Night City are very much sparser than in Velen.

In any case the scenery of the Witcher III is just so gobsmackingly beautiful that it's a pleasure for me to be in, even if doing nothing. Riding slowly right across Velen from the Nilfgardian camp in the south east to the Pontar delta in the north west, on a quiet evening, for no particulat purpose, is a joy in itself.

I'm sure there will be some people for whom the cityscape of Night City will have an equal attraction; even I, a rural person, do enjoy it. But it's a much more difficult landscape to navigate, because there are few long views, and many routes which look obvious on the map are in fact blocked by structures.

But, given the sparsity of points of interest and the overall size of the map, if you walk, you're going to do an awful lot of just walking.

Of course, you're not expected to just walk. You're expected to drive. But there are no cars in the Witcher III; the mechanic simply isn't there. Consequently, to implement cars in Cyberpunk, CD Projekt took the boat code from the Witcher III and repurposed it. Cars in Cyberpunk use exactly the same controls as boats in Witcher III, and behave in exactly the same way, at least if you're using a keyboard; with just one important difference.

The helm on the Witcher III's boats has three positions: hard over to port, dead centre, and hard over to starboard. Similarly, the steering on Cyberpunk cars has three positions: full lock left, straight ahead, and full lock right. The Witcher III's boats have two speeds, slow for navigating close to hazards, and somewhat faster when covering long distances. And this, though not a good model of sailing boat physics, works well enough in marine environments which have few obstacles and no pedestrians.

Cyberpunk's cars have three settings for speed, too: full acceleration, gently deceleration, full brakes. 

The accelerator, the brake, and the steering on cars are analogue controls. They're analogue controls for a very good reason. Cars operate in complex environments with many obstacles: pedestrians, kerbs, other cars, barriers and so on.

Computerised control systems can do very precise navigation of quadcopters which have motors which can only be on or off, by using what is called pulse-width modulation; that is, essentially, they spam the on-off switch of the motor very rapidly so that it's on for just sufficient a proportion of the time to output the power that would be output by an appropriately set analogue conteol. Similarly, it is at least theoretically possible that someone with enough patience, dedication, manual dexterity and tolerance of repetitive strain injury could learn to rattle the W, A, S and D keys sufficiently rapidly and sufficiently precisely to emulate analogue control of a Cyberpunk car; but if you're a mere mortal, forget it. The cars are undrivable.

Of course it's possible that a game controller will do this better; most game controllers have at least two analogue sticks, and I'd hope that this is sufficiently well handled that with a controller you do actually get analogue control of speed and steering. If that is so, the cars will be drivable, and the whole game will be a different experience. But if that is so, CD Projekt should really have said "this game is not playable with keyboard and mouse, you must use a controller".

Here in the real world, in 2020, Tesla's cars can follow a lane, and can avoid hitting obstacles in front of them, without any input from the driver. In Witcher III, horses, like Teslas, won't ram themselves into solid obstacles or leap over cliffs, although they will mow down pedestrians without a second thought. You may reasonably ask why CD Projekt based Cyberpunk cars on Witcher III boats rather than on Witcher III horses. I don't know; it would have seemed an obviously better solution, but for some reason they didn't.

While we're on this, just as Cyberpunk's cars are essentially Witcher III's boats, so the rapid travel stations are essentiallyjust  Witcher III signposts. I believe that Night City's monorail system – NCART – was in fact pretty much  fully implemented – we saw it in action in one of the early trailers – and it would have made a much less immersion-breaking way to get around; but it's been pulled from the final game. In my opinion that's a shame.

I should confess that I haven't actually used rapid travel, just as I don't in The Witcher III. It's immersion-breaking, and I just prefer not to.

Story and Characters

Game mechanics are not what a CD Projekt game is all about; it is, or should be, all about character and story. I only raise mechanics at such length here because they are so intrusive that they make getting to the story unreasonably difficult.

But even in character and story, my first fifteen hours have been underwhelming. Interesting, likeable characters have been introduced – and then killed off. Not because some failure of mine got them killed, but because their death is required by the game. Of your three companions in the critical early-plot quest 'The Heist', one inevitably dies; one, in my play-through, has disappeared and I do not know whether they will have any further part in the game; and one (also, it seems, inevitably) double-crossed and attempted to murder me – so it's unlikely we're going to be friends again.

The client on whose behalf the four of us were carrying out this quest has also disappeared, and although I suspect this will probably not prove permanent, she isn't around just now.

Great, startling, unexpected events have unfolded – have unfolded literally right in front of my eyes – but it does not seem to me that any actions or choices of mine had any impact on those events. At this stage, the main plot feels like a juggernaut, carving an unalterable pre-determined course through the world, unresponsive to anything I do.

So I'm left with, as characters I'm interested in, Victor Vector, a cheerful, friendly and well intentioned ripper doc; Misty, a slightly mystic-meg-new-age-hippy-fae tarot reading shopkeeper who is Vector's landlord; the obviously bright but equally obviously vulnerable and damaged Judy, and... yes, that's about it. And I don't – yet – know any of these characters well.

Of course I've met Johnny Silverhand, and through his memories I've sort-of met Kerry Eurodyne; I've met Rogue, both in Johnny's memories and in my own explorations; I've met T-Bug, but I've no idea whether she plays any further part of the story (I'll be disappointed but not surprised if she doesn't); I've met Panam, who I know from trailers will become important; I've met Clare, the bartender from Afterlife; I've met Jackie's mother Mama Welles; I've met Meredith Stout...

I've added a wee extra piece about Meredith Stout and the other romanceable characters at the end of this essay, since to say what I need to say about her involves spoilers.

Combat and Tactics

One plays role-playing games to play a role. The role I'm playing is a girl I call Vixen. She's small and not strong, so, contrary to Night City's brash style, she usually dresses simply and inconspicuously; she uses persuasion where she can, and tech and stealth where that doesn't work. Where stealth fails, she uses a sword for (relative) quietness. She has a clear moral code, or at least one that seems clear to her.

At least, that was the plan. In practice, it mostly hasn't worked. The tech skills so far have not felt engaging or especially useful – I've disabled a lot of security cameras, but mostly too late to be useful; and I've distracted a few enemies by hacking things in the environment. But the modal nature of scanning makes it artificial and not very free-flowing, and the decode minigame is just a nuisance.

Stealth is also underwhelming. I've put a lot of my skill and perk points into stealth, and I work hard at staying low and keeping out of sight. But it rarely gets you where you need to get to, and usually you end up in a fire fight.

In the early game, the Black Unicorn blade – which you get as a bonus if you bought both The Witcher III and Cyberpunk from CD Projekt's own online game store, GOG.com – is a really effective weapon, so that, in fact, you can take a sword to a gunfight and have a real chance of winning; however, with the first person view, sword play doesn't really work. You don't have good tactical awareness; when your oponent isn't in your relatively limited field of view, it's hard to know where, and how close, they are. Having said that, you can get quite a long way by just rushing around the fight scene in a random fashion slashing wildly all the time. This, with regular use of the health-boosting inhaler, is reasonably effective even when you're up against half a dozen goons with assault rifles. But this isn't role play. It feels wrong.

While on this, I normally have Vixen wear full length jeans and a very high grade bullet proof vest. She's understated because she doesn't want to attract attention, because she wants to be underestimated by any attention she does attract. But I have aquired along the way a skimpy sequinned crop-top and a pair of vestigial shorts which actually have higher armour statistics than those. Again, it makes no sense; it perturbs the willing suspension of disbelief.

The 'health inhaler' is, of course, your Witcher swallow potion. One of the benefits of the 700 or so years which have passed between the action of Witcher III and of Cyberpunk is that swallow no longer has cumulative toxicity, so you can use it frequently during a fight (provided you have enough of it, and I never ran out) to soak up ludicrous amounts of damage.

Finally, there are bugs. There are not nearly as many bugs (at least on PC) as some commercial revieweers have suggested, but there are a few that are plot breaking; there is no solution other than going back to a previous save, and doing something entirely different. You can't abort what you were doing, go and do something else to gain more experience and skills, and come back later.

I've seen one non-player character in a 'T' pose. Some of the tarot card murals that I'm supposed to see aren't visible to me, although the game checks them off to say I've seen them. On a couple of occasions, the audio of dialogue ran hugely behind the animation and subtitles. This is not bad for a just-released game; of course it isn't perfect.

Conclusion

In conclusion, bear in mind that I'm not really the target audience for this game; I'm not a great fan of cyberpunk as a genre, the present is easily a dark enough future for me. I don't like guns. I don't like killing people even if they 'deserve' it; I'd much prefer to settle conflict by negotiation. The poverty of non-player character repertoire in modern video games, as I've written ad nauseam, really disappoints me, because I really feel we now have the technology to do so much better.

I bought into this game because I have faith in CD Projekt as story tellers. And I do think there is great story here – there's certainly the potential for it. But at this present moment, after fifteen hours of play, I'm not really getting enough story reward to compensate for all the awkward, clunky mechanics. I am not talking about bugs here –as I've acknowledged, there are bugs, but none I've seen is significant. The problem is not in bugs, but in intended features which just don't work well.

Again, the main problem I'm talking about is the cars. It may be that, with a controller, the problem doesn't arise. I mean to find out. After all, there is plenty of video – not only in CD Projekt's trailers – of people driving around Night City reasonably smoothly. But it really wouldn't be rocket science for CD Projekt to 'Teslaise' the cars in a future update, so as to give them intelligent lane following and collision avoidance. If they did that, this would become a good game.


Here be Spoilers: Romance in Night City

OK, spoiler time. If you don't want spoilers read no further.

Right, you're sure you want to read on?

A CD Projekt game would not be a CD Projekt game without sexual relationships. In the trailers CD Projekt strongly hinted at who the romanceable characters –– the love interests –– would be.

Judy is definitely one, and she's the one I'm most interested to explore. But Meredith Stout, the hard as nails corporate agent, was clearly trailed as another. It turns out – how can I put this politely? – she's a slightly updated version of a Witcher I sex card. As relationships go, I've seen deeper and more meaningful puddles of vomit. That's five minutes of my life (because I swear it wasn't longer) that I shan't get back again.

For the rest, my guesses (these are guesses, not knowledge) are that 

  • Victor Vector is romancable if you're playing a straight woman, and possibly also if you're playing a gay or bi man;
  • Kerry Eurodyne is romanceable in all cases;
  • Panam is romanceable but I suspect only by straight men;
  • Clare, the bartender from Afterlife, may be romanceable.

Other possibles are Misty the fae head-shop keeper, but I don't think so, and T-Bug, who would be really interesting but is I suspect no longer in the game.

Obviously, Night City has a very large number of sex workers, but my guess is that none of them is romanceable in any more meaningful sense than Meredith Stout is. I don't, as yet, know for sure that any of the romance options have any depth to them, although dear God one would hope so. For completeness, Meredith definitely swings both ways.

Johnny Silverhand is definitely not romanceable in the conventional sense since he only exists in your head; but I think we will (I haven't yet) at some point relive his memories of sex with Altiera Cunningham (who is also either dead or existing as a digital consciousness somewhere).

Tuesday, 10 November 2020

Virtual Cities

A review of Dimopoulus, Konstantinos: Virtual Cities; Unbound, London, 2020. ISBN 978-1-78352-848-6.

The Pelennor Fields around Minas Tirith, as rendered in Peter Jackson's film of The Return of the King, are at best rough grazing; the land outside Cintra, in Netflix' The Witcher series, is little more than moorland. This cannot be right.

Cities require large supplies of food, and consequently all pre-modern cities are built in areas of very high agricultural productivity. To support a city the size of Minas Tirith, the Pelennor must needs be not as productive as the Shire – because the Shire supports only its own peasantry – but substantially more productive. Of course, what this means in the modern period is that, as the cities expand, that very high quality agricultural land is built over and lost, but that is not what this essay is about.

But a city requires more than a significant supply of food. A successful city also requires a strategic reason to be where it is.

In the world I've been writing about for The Great Game, I have one city which completely breaks the rule of having an adequate agricultural hinterland, but there's a strategic reason for this. The city of Hans'hua controls the only possible water supply where the main trade route from the north coast of the continent to the south crosses a high desert plateau. Water is so valuable here that the city can, by taxing the supply of water to merchant caravans, afford to import substntially all its food.

At the time period of the game, this city has been, although small, very rich (and consequently, has excellent defences); its wealth is threatened, however, because advances in ship technology have opened up a new sea route, bypassing Hans'hua, and its decline has begun.

Another city, Tchahua, has grown from a fishing village to a modestly prosperous silk-weaving centre; but its fortunes, too, have suddenly changed. It controls one of the few deep water ports on the south coast suitable to the new ships, making it suddenly a vitally important node in the trading network; but because it has no history of being wealthy, it doesn't yet have defences commensurate with its new strategic importance, and is therefore a military target for every other power.

So cities – real cities – are not just consumers of resources (and thus, necessarily, producers of goods or services which they can trade for those resources); they're not just places of strategic importance. They're also dynamic entities, changing in response to the pressures that the wider economic and geopolitical forces impose upon them.

A virtual city doesn't, intrinsically, need to conform to these rules; but to be persuasive, to play a significant part in a persuasive narrative, it ought to do so, I think.

This is the pool of meditations into which Konstantinos Dimopoulos beautifully illustrated new book, Virtual Cities, has dropped.

The book is a substantial volume, as large and weighty as the telephone directory for any of the cities it describes. It is beautifully produced, colour printed throughout, elegantly and consistently designed, easy to navigate. 

Entry for Novigrad
Other than a relarively short introduction, it is essentially a catalogue of 45 cities selected from computer games. Each city is described in five distinct ways, three textual and two graphical: each city has a 'tourist guide' running to two to five pages, giving a feel for the city and written as though it were a real city that one might visit; a much shorter 'design insights' piece of less than one page, describing the city in the context of the game of which it forms a part, with insights into its realisation and technical innovation; a brief table of, essentially, bibliographical data (what game, developed and published by whom, in which year, and so on); a map of the city covering typically a double page spread, showing significant places and how they relate to one another; and pen-and-ink drawings of places within the city.

I'll say here that the style of illustration surprised and initially disappointed me. I had expected that the illustrations would be, at least nearly, screenshots taken from the particular games. They are not; instead, they are all drawn, in pen and ink, by a single artist, Maria Kallikaki. On reflection this is a good choice. It preserves the conceit from the 'tourist guide' that these are places one might really visit, and, at the same time, gives a cohesive visual style to the whole work.

I do not think that, for many people, this will be a book to read from cover to cover; certainly I have not done so. Rather, I have sought first the entries for some familiar – to me – virtual cities, like Novigrad, Whiterun and Dunwall, and then browsed to the entries for cities I have on my virtual bucket list but have not yet visited, and from there on to still others like Neketaka and Gabriel Knight's New Orleans, which I hadn't previously been aware of but now want to visit.

Of course this isn't – couldn't be – a comprehensive guide to all virtual cities, but rather a curated sample. I'm a little disappointed to find none of Rockstar Games' cities, as some of these, especially in recent games, are, I believe, very well executed. Most of the other major developers of games which present realistic urban worlds are represented.

BioWare are represented only by the Mass Effect series' Citadel, which I think is fair; none of BioWare's cities, that I've visited, has seemed to me well thought out or credible, they struggle even with villages – which, for a company with such resource and talent and which does so much else reasonably well, is surprising. Valve has City 17. Blizzard has Tarsonis. Infocom, Rockvil. Obsidian has New Vegas and Neketaka. Ubisoft are represented by Assassin's Creed: Syndicate's realisation of London, an entry which has made me more than ever eager to experience this for myself.
Map of Novigrad

CD Project Red are represented only by Novigrad. It's a reasonable choice; arguably their best realised city at the time the book was being written. Visima, in the original The Witcher game, was astonishingly well realised for its date; Beauclair is the most beautiful city they have released yet; Night City, due to open to visitors a month from now, promises to be by far their most ambitious and complex. Yet, excluding Night City, none of Visima, Beauclair or indeed Oxenfurt has any significant feature which Novigrad does not, and of them all, Novigrad is the largest and most complex.

Dimopoulos describes it as "one of the biggest, most thoroughly fleshed out, fantasy towns in gaming". I'd quibble a little with "fantasy," since Novigrad, although certainly fictitious, is so thoroughly grounded in Eastern Baltic history; but otherwise I wouldn't dissent from that judgement.

Of course, besides these big development houses, many smaller developers are represented, too.

Of course, not all these games consider the economic relationships of their cities to their hinterlands, although the better ones do. Of course, in not all of these games are geopolitical events even modelled, in still fewer do they cause observable change within the cities. And yet there is learning to be had from all these cities. Even those which fail, teach; because we can learn how they fail, and avoid it.

Modelling an entire city and its economy, making it traversible and navigable, and filling it with interesting, believable characters and action, is a complex, interesting task. There are a lot of moving parts. It takes thought.

And good books, which provoke thought, which introduce me to new cities to study, help enormously. For any geek interested in what makes game worlds tick, this book is a must have.

Saturday, 26 September 2020

Who is the fairest of them all?

Emma Appleton as Renfri
There's a princess. She has a stepmother. Her stepmother has a magic mirror that always tells the truth. Her stepmother is jealous of the princess, and seeks to get rid of her. You know this story, don't you? It's Snow White. It's a fairy story. We tell it to children.

But fairy stories are almost always dark stories, almost always intensely sexual stories, and if you strip away the saccharine sweetness with which the Victorians enrobed them, you find the darkest places of human psychology.

This is what Andrzej Sapkowski does. He is Polish, a writer of fiction; well known and well regarded across the Slavic world but (until this decade) relatively unknown to the English speaking world. His nearest English language equivalent is probably Angela Carter. He has written a series of adult, post-modern retellings of classic fairy tales, and he's strung them together by using a character - The Witcher, Geralt of Rivia, an itinerant pest control operative - who weaves his way through all the stories. Over a sequence of books, an entire internally-consistent world is built up around The Witcher, using fairy tales we all more or less remember as building blocks.

One of those building blocks is Snow White. Sapkowski told the tale in the first of his Witcher books, a collection of short stories called Ostatnie Zyczenie (The Last Wish); in the English translation the story which retells Snow White is 'The Lesser Evil'.

Sapkowski's world is a world of small, warring kingdoms, of religious extremism, of arrogant and bloodthirsty rulers, of ambitious and amoral magic wielders. In this world the Witcher is a working class hero. His clients include the aristocracy, certainly; and he knows how to interact with them when he has to. His training in his trade has incorporated a lot of knowledge, as understood in his world, so he is also able to engage on more or less equal terms with the middle classes: with merchants, with scholars, even with mages. But his peers are peasants, craftsmen, small-time mercenaries - even though many of these people are prejudiced against him because of his trade.

The form and structure of the story we know emerges gradually from the Witcher's normal business in his world, presented naturalistically. It's a world of flawed people who have done evil, of uncertain knowledge, of sharp conflicts and murky judgements. The Queen's former advisor, Stregobor, and the former princess, Renfri whom he had plotted to have killed, each ask Geralt to kill the other, claiming that to do so would be the lesser evil. The greater evil each cite is the action which the princess might take if their conflict is not resolved. He refuses both requests.

It's clear that, for Geralt, Renfri is by far the more sympathetic of the two characters - and not simply because he allows her to seduce him. He sees her as more sinned against than sinning. And yet he counsels her not to seek to kill Stregobor but simply to leave town.

Renfri threatens a terrorist act - a massacre - in order to try to flush Stregobor out of his tower; Geralt moves to prevent it. The massacre foiled, Renfri faces Geralt alone. It's clear that he does not want to kill her, but she forces the fight; in doing so, my reading is that she intends and expects to be killed. And she is.


I'm not going to give a synopsis here; you already know the story, although you may not have fully thought through its psychological consequences. What I am going to talk about is the telling.

It concerns a wizard, Stregobor, who, some years before, as court wizard to Aridea, Queen of a minor state called Creyden, had diagnosed her inconvenient stepdaughter, Renfri, as being afflicted with a curse. The Queen had sent her huntsman out into the forest with Renfri, with instructions to return with her heart and her liver which Stregobor wishes to dissect. It hadn't gone to plan; the huntsman had been found, dead, with his trousers round his ankles, and Renfri's cloak pin driven in through his ear into his brain.

Stregobor, in the present of the tale, is hiding in a tower in an out of the way town, because he is being hunted down by Renfri, now adult and leading a band of brigands. He asks Geralt to kill Renfri, because she is cursed and her curse will bring terrible consequences to the world, and thus killing him would be a lesser evil.

Friday, 24 July 2020

Rape, grouse, and the pathology of power

Red Grouse
Red Grouse (source)
I got into a foolish Twitter dispute last night, and ended up saying something I fundamentally think to be true. People will say, and with good reason, 'oh, Simon's gone off on one again. He's mad, you know'. And, of course, it's true. I am insane. A really frustrating consequence of that is that sometimes my judgement is seriously wonky. But it also means I can say thing that other people are too sensible to say. Let's explore this idea.

Firstly, to roll back a little, I do not believe that anyone is irredeemable. 'Evil' is not a word that should be applied to people. And, I believe, usually, people who do evil things do so because evil has been done to them.

So this is an essay about the pathologies of power.

I want to examine a number of things:
  1. The Bulingdon Club, and Alpha Epsilon Pi
  2. Grouse moors
  3. Jeffrey Epstein, and child sex abuse
I will argue that these are on the same spectrum.

To demonstrate huge wealth is not difficult. One merely has to drive a gold plated Lamborghini. To have power, one has to be able to use it. One has to be able to do things which other people, people with less power, cannot do. And one has to be able to do these things with impunity. To show to others that one has power, one has to actually do things which other people cannot do: one has to use power performatively. And, indeed, this is the only way one can answer the question, 'how much power do I have?'

The Bullingdon Club is a club for very rich young men at Oxford University, it has been in existence for more than two hundred years, and with very much its present reputation for at least one hundred years. The reputation of the club is for extremely bad behaviour, with records of extreme destruction of other people's property from as early as 1894 to as recently as 2010.

Apart from wrecking country houses and restaurants, notorious Bullingdon practices include

1. Forcibly removing the trousers of members of the public;
2. Burning £50 notes in front of homeless people;
3. Bestial necrophilia.

Alpha Epsilon Pi is not quite as elite as the Bullingdon Club. It is a 'fraternity' of university students at a number of universities, originally in the US, but including, specifically, St Andrews in Scotland. The chapter at St Andrews in particular has been associated with a startling number of allegations of rape. (Dani Garavelli wrote a very good piece which refers to the Alpha Epsilon Pi allegations in Scotland on Sunday this week)

All just young men's high spirits, don't you know? Or a systematic way for rich young men to explore just exactly how much bad behaviour they can get away with?

Very well. Let us move on to child sexual abuse and the sexual exploitation of very young women; and the very large number of allegations around it which centre on rich and powerful men.

Not all allegations of child sexual abuse are associated with powerful people, of course; that's not what I'm arguing. What I'm arguing is that the pathology of power draws people to explore what they can get away with. Child sexual abuse is the crime which in our modern society is most reviled and most stigmatised (and with reason). If you want to demonstrate that you can get away with anything, this is the Everest, the pinnacle.

What I'm arguing here is that the attraction of child sexual abuse to very powerful people is not (at least mainly) an erotic attraction to very young bodies, just as the alleged sexual act between a former prime minister of the United Kingdom and a dead pig was not primarily about the erotic attraction of pork. On the contrary, both are, at least in part, a pathological need to explore the limits of power.

Corpses of grouse, pheasants and geese left to rot in a pit on a shooting estate.
Corpses of grouse, pheasants and geese
left to rot (source)
Which brings us on to grouse moors. Grouse moors represent the environmental destruction of large areas of countryside in order to provide an opportunity for a very few people to slaughter a large number of birds - birds which are not particularly good eating and which are in fact largely dumped and left to rot for this very reason.

The grouse, like the child sexual abuse victims and the dead pigs, are not being shot for their intrinsic value; they're being shot for their trophy value: to prove that the shooters can get away with it.

So what is it they're 'getting away with'? Shooting a few wild birds does not seem so shocking, surely? Well, no. But in order to create the environment in which birds can be shot in such numbers, hundreds of people must be driven out of their homes and off their ancestral lands.

Enclosing commons was how the powerful of the seventeenth and eighteenth centuries demonstrated their power. They had the power to drive the common people out of their homes and off their land, and they did. Having enclosed the commons, of course, they could then farm the most productive parts more intensively (or at least, rent them out to farmers, who would do so, at high rents) and make profits.

But a large part of the lands from which they had driven the subsistence farmers could not be farmed profitably in any other way, so what to do with it? The answer was to create vast deserts on which to slaughter small birds.

Just as, as feminists keep saying, rape is not (mainly) about sex, so enclosing the uplands is not mainly about improving agriculture - the new 'improved' agriculture could make no use of such marginal land. What had been, from April to September, the summer shieling of tens or hundreds of thousands of subsistence farmers, became an arena, for a few days in August, to display the power of the few.

Solitudinem faciunt, bona appellant.

Birds of prey - especially large birds of prey - are the most visible of the iconic species of our wildlife. Wildlife is not the 'property' of anyone: rather it is a commons for us all. Birds of prey eat meat. Not huge amounts of it, but it is what they eat. I find the idea that eagles or red kites significantly predate on red grouse improbable. Hen harriers, of course, will do so, where grouse are abundant.

There is a certain bitter rationality to gamekeepers slaughtering hen harriers, wild cats, foxes and stoats on grouse moors: the gamekeepers are paid to provide plentiful easy targets for their employers to take aim at. Predators which predate on ground nesting birds will necessarily reduce that plenty. This is how ecosystems work, after all.

Mountain hares killed on a single day on
a single estate in the Angus glens (source)
But the fact that eagles, kites, pine martens and mountain hares are also slaughtered indiscriminately on grouse moors is evidence that this isn't about bitter rationality, or any rationality at all.

The fact that ordinary people - people who are not powerful - take pleasure in seeing eagles, kites, hen harriers, ravens, wild cats, foxes, stoats and mountain hares - mountain hares! - is the only reason to exterminate them. It's a naked demonstration of power over the commons. Power to steal, to desecrate, to destroy, and to do so with impunity. Wanton and blatant destruction of common goods. Bad behaviour performed solely for the purpose of showing that you can get away with bad behaviour. And this, I claim, is evil.

Wherever you find rich and powerful people wishing to demonstrate their wealth and power, you'll find others who make their living by enabling it. The Oort cloud of lawyers and estate agents who orbit Londongrad are an example.

So Ghislaine Maxwell was, in effect, Epstein's grouse moor manager. She organised the provision of plentiful easy targets for him and his friends to take aim at, and managed the arenas in which they bagged their trophies.

What I'm arguing here is not that grouse moors are 'as bad as' child sexual abuse - clearly, in terms of direct harm to specific individual people, they are not.

But I am arguing they are on the same spectrum, driven by the same pathology.

And the reason that this matters - the reason that I believe we should look on the owners of grouse moors with the same eyes as we look on those people in the other categories I've discussed - is that it people have a propensity for performatively extremely bad behaviour in one aspect of their lives, it is highly probable that they are exhibiting equally unacceptable behaviour in others.

Creative Commons Licence
The fool on the hill by Simon Brooke is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License