Somewhere in the desert… a temple

My minecraft expedition was a success. Let me share some observations.

Firstly -> I seeded the wrong world. I used

Double Village

as seed for ‘large biomes’ when I should have used it for ‘default’. Reading the map incorrectly happens all the time in landscape archaeology though. Transpose some digits, and soon you’re hundreds of metres in the wrong spot.

Framing my expedition in my mind as a kind of steam-punk exploration helped get me back ‘in the game’:

https://twitter.com/electricarchaeo/status/573859370766876672

I found the village quite easily this time. It was filled with NPCs going about their mysterious business. I, a stranger, wandered into their midst and had no impact on their lives. Doesn’t that often seem the way of a ‘foreign’ expedition? When as a graduate student I was excavating at Forum Novum, our world and that of the people whose local marketground we were digging up really did not intersect, except in very particular contexts: the bar and the restaurant. On market day, we would all head back to Rome. Canadian lad flies in, digs, figures it all out, writes a paper, never explains/connects with the locals. As I remarked at the time,

https://twitter.com/electricarchaeo/status/573929642635235328

https://twitter.com/electricarchaeo/status/573868404324634624

https://twitter.com/electricarchaeo/status/573929980100505600

https://twitter.com/electricarchaeo/status/573930255599169536

And so I bumbled away, trying to record stratigraphically what I was up to. The different kinds of blocks do help differentiate context – sand fill is quite different from the sandstone blocks the temple was built with. Unfortunately, sandstone is also part of the geology of Minecraft, and typically happens around 3 or 4 blocks down from the surface in this biome. So it became difficult to figure out where the temple ended and the local geology began. Since the temple is of a common ‘type’ in Minecraft, I could just dig to exhume that prexisting type-idea and poof: complete temple. The act of excavation creates the archaeology in more ways than one, it seems.

https://twitter.com/electricarchaeo/status/573932616967131136

https://twitter.com/electricarchaeo/status/573932938569646081

https://twitter.com/electricarchaeo/status/573933035709689856

Channeling my inner Howard Carter there. But – in this world with no ‘rules’, no overarching ‘story’, deciding to go an an archaeological expedition forces a story on us. Interacting with the NPCs, and the crude excavation tools, pushes us towards a 19th century frame of mind. In my steam-punk narrative I was constructing on twitter, the archaeologist-as-better-class-of-looter trope seemed to emerge naturally out of my interaction with the game mechanics.

And then this happened.

https://twitter.com/electricarchaeo/status/573936372664430593

https://twitter.com/electricarchaeo/status/573936719768252416

https://twitter.com/electricarchaeo/status/573936851402244096

https://twitter.com/electricarchaeo/status/573937070164611074

We’ll come back to that. Suffice to say, this encounter with the ‘otherness’ of the inhabitants of the village was oddly discomfiting.

https://twitter.com/electricarchaeo/status/573953157639892992

https://twitter.com/electricarchaeo/status/573953425878179840

Clearly, Notch has watched too many Indiana Jones films. Meanwhile, the villagers continued to trouble me.

https://twitter.com/electricarchaeo/status/573957820388872192

https://twitter.com/electricarchaeo/status/573958108172697600

And then night fell. I decided to try to spend it with the villagers.

https://twitter.com/electricarchaeo/status/573960046234763265

I broke the door, quite by accident. Clumsy foreigner. Interfering.

https://twitter.com/electricarchaeo/status/573960266825736192

https://twitter.com/electricarchaeo/status/573960990133518338

From above, I watched the zombies and creepers and who knows what else hunt each NPC down and kill them.

https://twitter.com/electricarchaeo/status/573961923424882689

https://twitter.com/electricarchaeo/status/573962589824229376

https://twitter.com/electricarchaeo/status/573962793151524866

https://twitter.com/electricarchaeo/status/573963037964660736

So I managed to set into action a chain of events that resulted in the death of the entire village. Now obviously *real* archaeological excavation rarely results in the deaths of the locales, but there are unintended consequences to our interventions. Here, the game holds a distorted fun-house mirror to life. But were I doing this with a class, this would be a teachable moment to consider the impact of academic archaeology in those ‘distant’ lands we study.

For my minecraft adventure, I left the expedition and struck out on my own. Soon I discovered more temples, more villages, more ruins. If you’re exploring too, you can find them here:

https://twitter.com/electricarchaeo/status/573992963807797248

https://twitter.com/electricarchaeo/status/574003146793611269

https://twitter.com/electricarchaeo/status/574052646664998913

266.9 66.87 1036.99
-219.24 65.270 13.56
58 67 347
487.73 46 560.3
247.76 66 784
430 63 929.8
692 70 1256.7

Now, one could use those coordinates to begin mapping, and perhaps working out, something of the landscape archaeology in this world. One of those coordinates belongs to a vine-covered stone temple in the jungle. Here, our expectations of what ‘archaeology’ is (informed by the movies) come to the fore.

https://twitter.com/electricarchaeo/status/575443432409337856

Now, it may be that I should mod this world more in order to enable a post-colonial kind of archaeology within it. But the act of modding is itself colonialist…

https://twitter.com/electricarchaeo/status/574254176030621696

https://twitter.com/electricarchaeo/status/574255469876932609

https://twitter.com/electricarchaeo/status/574255609341673473

https://twitter.com/electricarchaeo/status/574255777885585408

https://twitter.com/electricarchaeo/status/574759390739304448

https://twitter.com/electricarchaeo/status/574759489615892480

So what I have I learned? I have often argued in my video games for historians class that it’s not so much the ‘skin’ of a game that should be of concern to historians, but rather the rules. The rules encode the historiographic approach of the game’s designers. You’re good at the game? You’re performing the worldview of the game’s creators. But in a game like minecraft, where the rules are a bit more low-level (for lack of a better term), what’s interesting is the way player agency in the game intersects and merges with the player’s own story, the story the player tells to make sense of the action within the world. It’s poesin. Mimemsis. Practomimetic? So while some of the game’s embedded worldview can be seen to be drawn straight from the Indiana Jones canon, other elements, like the agency of NPCs, discomfits us precisely because it intersects our own worldviews (the sociocultural practice of academic archaeology) in such a way as to draw us up short.

It will be interesting to see what Andrew’s expedition uncovers…

https://twitter.com/electricarchaeo/status/574411759815122944

https://twitter.com/electricarchaeo/status/574412047389192192

https://twitter.com/electricarchaeo/status/574412449111228416

https://twitter.com/electricarchaeo/status/574412480929263616

https://twitter.com/electricarchaeo/status/574415030504026112

Historical Maps, Topography, Into Minecraft: QGIS

Building your Minecraft Topography

(An earlier version of this uses Microdem, which is just a huge page in the butt. I re-wrote this using Qgis, for my hist3812a students. If you’d like to see what some of them accomplished, head over to the github repo where there’s ‘Slave of Portus’, ‘Vimy Ridge’, and ‘Crafting the Canal’)

If you are trying to recreate a world as recorded in a historical map, then modern topography isn’t what you want. Instead, you need to create a blank, flat world in Worldpainter, and then import your historical map as an overlay. In worldpainter, File >> New World. In the dialogue box, uncheck ‘circular world’. Tick of ‘flat’ under topography. Then, on the main icon ribbon, select the ‘picture frame’ icon (‘image overlay’). In the dialogue box, tick ‘image overlay’. Select your file. You might have to fiddle with the scale and the x, y offset to get it exactly positioned where you want. Watch the video mentioned below to see all this in action. Then you can paint the terrain type (including water), raise, lower the terrain accordingly, put down blocks to indicate buildings… Worldpainter is pretty powerful.

If you already have elevation data as greyscale .bmp or .tiff

  • Watch the video about using Worldpainter.
  • Skip ahead to where he imports the topographic data and then the historical map imagery and shows you how to paint this against your topography.
  • You should also google for Worldpainter tutorials.

If you have an ARCGIS shapefile

This was cooked up for me by Joel Rivard, one of our GIS & Map specialists in the Library. He writes,

  • Using QGIS: In the menu, go to Layer > Add Vector Layer. Find the point shapefile that has the elevation information.
  • Ensure that you select point in the file type.
  • In the menu, go to Raster > Interpolation.
  • Select “Field 3″ (this corresponds to the z or elevation field) for Interpolation attribute and click on “Add”.
  • Feel free to keep the rest as default and save the output file as an Image (bmp, jpg or any other raster)

If you need to get topographic data

In some situations, modern topography is just what you need.

  • Grab Shuttle Radar Topography Mission data for the area you are interested in (it downloads as a tiff.) To help you orient yourself, click off ‘toggle cities’ at the bottom of that page. You then click on the tile that contains the region your are interested in. This is a large piece of geography; we’ll trim in a moment.
  • Open QGIS
  • Go to Layer >> Add Raster Layer. Navigate to the location where your srtm download is located. You’re looking for the .tiff file. Select that file.

Add Raster Layer

  • You now have a grayscale image in your QGIS workspace, which might look like this

Straights of Hercules, Spain, Morocco

  • Now you need to crop this image to just the part that you are interested in. On the main menu ribbon, select Raster >> Extraction >> Clipper

Select Clipper Tool

  • In the dialogue box that opens, make sure that ‘Clipping Mode’ is set to ‘Extent’. With this dialogue box open, you can click and drag on the image to highlight the area you wish to crop to. The extent coordinates will fill in automatically.

  • Hit ‘Select…’ beside ‘Output File’. Give your new cropped image a useful name. Hit ‘Save’.

  • Nothing much will appear to happen – but on the main QGIS window, under ‘layers’ a new layer will be listed.

Imgur

  • UNCHECK the original layer (which will have a name like srtm_36_05). Suddenly, only your cropped image is left on the screen. Use the magnifying glass with the plus sign (in the icons at the top of the window) to zoom so that your cropped image fills as much of the screen as possible.
  • Go to Project >> Save as image. Give it a useful name, and make sure to set ‘files of type’ to .bmp. You can now import the .bmp file to your Worldpainter file.

Importing your grayscale DEM to a Minecraft World

Video tutorial again – never mind the bit where he talks about getting the topographic data at the beginning

At this point, the easiest thing to do is to use WorldPainter. It’s free, but you can donate to its developers to help them maintain and update it. Now, the video shown above shows how to load your DEM image into WorldPainter. It parses the black-to-white pixel values and turns them into elevations. You have the option of setting where ‘sea level’ is on your map (so elevations below that point are covered with water). There are many, many options here; play with it! Adam Clarke, who made the video, suggests scaling up your image to 900%, but I’ve found that that makes absolutely monstrous worlds. You’ll have to play around to see what makes most sense for you, but with real-world data of any area larger than a few kilometres on a side, I think 100 to 200% is fine.

So: in Worldpainter – File >> Import >> Height map. In the dialogue box that opens, select your bmp file. You’ll probably need to reduce the vertical scale a bit. Play around.

Now, the crucial bit for us: you can import an image into WorldPainter to use as an overlay to guide the placement of blocks, terrain, buildings, whatever. So, again, rather than me simply regurgitating what Adam narrates, go watch the video. Save as a .world file for editing; export to Minecraft when you’re ready (be warned: big maps can take a very long time to render. That’s another reason why I don’t scale up the way Adam suggests).

Save your .world file regularly. EXPORT your minecraft world to the saves folder (the link shows where this can be found.

Go play.

Wait, what about the historical maps again?

The video covers it much better than I could here. Watch it, but skip ahead to the map overlay section. See the bit at the top of this post.

Ps. Here’s Vimy Ridge, site of a rather important battle in WW1 fought by the Canadian Army, imported into Minecraft this way:
Vimy Ridge in Minecraft

Historical Maps into Minecraft: My Workflow

The folks at the New York Public Library have a workflow and python script for translating historical maps into Minecraft. It’s a three-step (quite big steps) process. First, they generate a DEM (digital elevation model) from the historical map, using QGIS. This is saved as ‘elevation.tiff’. Then, using Inkscape, they trace over the features from the historical map that they want to translate into Minecraft. Different colours equal different kinds of blocks. This is saved as ‘features.tiff’. Then, using a custom python script, the two layers are combined to create a minecraft map, which can either be in ‘creative’ mode or ‘survival’ mode.

There are a number of unspoken steps in that workflow, including a number of dependencies for the python script that have to be installed first. Similarly, QGIS and its plugins also have a steep (sometimes hidden) learning curve. As does Inkscape. And Imagemagick. This isn’t a criticism; it’s just the way this kind of thing works. The problem, from my perspective, is that if I want to use this in the classroom, I have to guide 40 students with widely varying degrees of digital fluency.* I’ve found in the past that many of my students “didn’t study history to have to work with computers” and that the payoff sometimes (to them) doesn’t seem to have (immediate) value. The pros and cons of that kind of work shall be the post for another day.

Right now, my immediate problem is, how can I smooth the gradient of the learning curve? I will do this by providing 3 separate paths for creating the digital elevation model.

Path 1, for when real world geography is not the most important aspect.

It may be that the shape of the world described by the historical map is what is of interest, rather than the current topography of the world. For example, I could imagine a student wanting to explore the historical geography of the Chats Falls before they were flooded by the building of a hydro dam. Current topographic maps and DEMs are not useful. For this path, the student will need to use the process described by the NYPL folks:

Requirements

QGIS 2.2.0 ( http://qgis.org )

  • Activate Contour plugin
  • Activate GRASS plugin if not already activated

A map image to work from

  • We used a geo-rectified TIFF exported from this map but any high rez scan of a map with elevation data and features will suffice.

Process:

Layer > Add Raster Layer > [select rectified tiff]

  • Repeat for each tiff to be analyzed

Layer > New > New Shapefile Layer

  • Type: Point
  • New Attribute: add ‘elevation’ type whole number
  • remove id

Contour (plugin)

  • Vector Layer: choose points layer just created
  • Data field: elevation
  • Number: at least 20 (maybe.. number of distinct elevations + 2)
  • Layer name: default is fine

Export and import contours as vector layer:

  • right click save (e.g. port-washington-contours.shp)
  • May report error like “Only 19 of 20 features written.” Doesn’t seem to matter much

Layer > Add Vector Layer > [add .shp layer just exported]

Edit Current Grass Region (to reduce rendering time)

  • clip to minimal lat longs

Open Grass Tools

  • Modules List: Select “v.in.ogr.qgis”
  • Select recently added contours layer
  • Run, View output, and close

Open Grass Tools

  • Modules List: Select “v.to.rast.attr”
  • Name of input vector map: (layer just generated)
  • Attribute field: elevation
  • Run, View output, and close

Open Grass Tools

  • Modules List: Select “r.surf.contour”
  • Name of existing raster map containing colors: (layer just generated)
  • Run (will take a while), View output, and close

Hide points and contours (and anything else above bw elevation image) Project > Save as Image

You may want to create a cropped version of the result to remove un-analyzed/messy edges

The hidden, tacit bits here involve installing the Countour plugin, and working with GRASS tools (especially the bit about ‘editing the current grass region’, which always is fiddly, I find). Students pursuing this path will need a lot of one-on-one.

Path 2, for when you already have a shapefile from a GIS:

This was cooked up for me by Joel Rivard, one of our GIS & Map specialists in the Library. He writes,

1) In the menu, go to Layer > Add Vector Layer. Find the point shapefile that has the elevation information.
Ensure that you select point in the file type.
2) In the menu, go to Raster > Interpolation. Select “Field 3” (this corresponds to the z or elevation field) for Interpolation attribute and click on “Add”.
Feel free to keep the rest as default and save the output file as an Image (.asc, bmp, jpg or any other raster – probably best to use .asc since that’s what MicroDEM likes.
We’ll talk about MicroDEM in a moment. I haven’t tested this path yet, myself. But it should work.

Path 3 For when modern topography is fine for your purposes

In this situation, modern topography is just what you need.

1. Grab Shuttle Radar Topography Mission data for the area you are interested in (it downloads as a tiff.)

2. Install MicroDEM and all of its bits and pieces (the installer wants a whole bunch of other supporting bits; just say yes. MicroDEM is PC software, but I’ve run it on a Mac within WineBottler).

3. This video tutorial covers working with MicroDEM and Worldpainter:

https://www.youtube.com/watch?v=Wha2m4_CPoo

But here’s some screenshots – basically, you open up your .tiff or your .asc image file within MicroDEM, crop to the area you are interested in, and then convert the image to grayscale:

MicroDEM: open image, crop image.

MicroDEM: open image, crop image.

Convert to grayscale

Convert to grayscale

Remove legends, marginalia

Remove legends, marginalia

Save your grayscaled image as a .tiff.
Regardless of the path you took (and think about the historical implications of those paths) you now have a gray scale DEM image that you can use to generate your mindcraft world.

Converting your grayscale DEM to a Minecraft World

At this point, the easiest thing to do is to use WorldPainter. It’s free, but you can donate to its developers to help them maintain and update it. Now, the video shown above shows how to load your DEM image into WorldPainter. It parses the black-to-white pixel values and turns them into elevations. You have the option of setting where ‘sea level’ is on your map (so elevations below that point are covered with water). There are many, many options here; play with it! Adam Clarke, who made the video, suggests scaling up your image to 900%, but I’ve found that that makes absolutely monstrous worlds. You’ll have to play around to see what makes most sense for you, but with real-world data of any area larger than a few kilometres on a side, I think 100 to 200% is fine.

Now, the crucial bit for us: you can import an image into WorldPainter to use as an overlay to guide the placement of blocks, terrain, buildings, whatever. So, rather than me simply regurgitating what Adam narrates, go watch the video. Save as a .world file for editing; export to Minecraft when you’re ready (be warned: big maps can take *a very long time* to render. That’s another reason why I don’t scale up the way Adam suggests).

Go play.

To get you started: here are a number of DEMs and WorldPainter world files that I’ve been playing with. Try ’em out for yourself.

 

* another problem I’ve encountered is that my features colours don’t map onto the index values for blocks in the script. I’ve tried modifying the script to allow for a bit of fuzziness (a kind of, ‘if the pixel value is between x and y, treat as z’). I end up with worlds filled with water. If I run the script on the Fort Washington maps provided by NYPL, it works perfectly. The script is supposed to only be looking at the R of the RGB values when it assigns blocks, but I wonder if there isn’t something else going on. I had it work once, correctly, for me – but I used MS Paint to recolour my image with the exact colours from the Fort Washington map. Tried it again, exact same workflow on a different map, nada. Nyet. Zip. Zilch. Just a whole of tears and heartache.

#hist3812a video games and simulations for historians, batting around some syllabus ideas

I’ve been batting around ideas for my video games class, trying to flesh them out some more. I put together a twine-based exploration of some of my ideas in this regard a few weeks ago; you can play it here. Anyway, what follows below is just me thinking out loud. The course runs for 12 weeks. (O my students, the version of the syllabus you should trust is the one that I am obligated to put on cuLearn).

What does Good History Through Gaming Look Like?

How do we know? Why should we care? What could we do with it, if we had it? Is it playing that matters, or is it building? Can a game foster critical play? What is critical play, anyway? ‘Close reading’ can happen not just of text, but also of code, and of experience. It pulls back the curtain (link to my essay discussing a previous iteration of this course).

Likely Topics

  1. A history of games, and of video games
  2. Historical Consciousness & Worldview
  3. Material culture, and the digital: software exists in the physical world
  4. Simulation & Practical Necromancy: representing the physical world in software
  5. Living History, LARPing, ARGs and AR: History, the Killer App
  6. Museums as gamed/gameful spaces
  7. Gamification and its bastards: or, nothing sucks the fun out of games like education
  8. Rolling your Own: Mods & Indies
  9. The politics of representation

Assessment

Which Might Include Weekly Responses & Critical Play Sessions:

  1. IF responses to readings (written using http://twinery.org)
  2. Play-throughs of others’ IF (other students; indie games in the wild)
  3. Critical play of Minecraft
  4. Critical play of ‘historical’ game of your choice
  5. Critical play of original SimCity (which can be downloaded or played online here). We’ll look at its source code, too, I think. Or we might play a version of Civilization. Haven’t decided yet.
  6. Critical boardgame play
  7. ARIS WW1 Simulation by Alex Crudas & Tyler Sinclair

Yes. I am going to have you play video games, for grades. But you will be looking for procedural rhetorics, worldviews, constraints, and other ways we share authority with algorithms (and who writes these, anyway?) when we consume digital representations of history. Consume? Is that the right verb? Co-create? Receive?

Major Works

  1. Midterm:IF your favourite academic paper that you have written such that a player playing it could argue the other sides you ignored in your linear paper. Construct it in such a way that the player/reader can move through it at will and still engage with a coherent argument. (See for example ‘Buried’ http://taracopplestone.co.uk/buried.html). You will use the Twine platform. http://twinery.org
  2. Summative Project: Minecrafted History
    1. You will design and build an immersive experience in Minecraft that expresses ‘good history through gaming’. There will be checkpoints to meet over the course of the term.Worlds will be built by teams, in groups of 5. Worlds can be picked from three broad themes:THE HISTORY OF THE OTTAWA VALLEY
      THE CANADIANS ON THE WESTERN FRONT
      COLONIZATION AND RESISTANCE IN ROMAN BRITAIN  (…look, I was a Roman archaeologist, once…)
    2. You will need to obtain source maps; you will digitize these and translate them into Minecraft. We will in all likelihood be using Github to manage your projects. The historical challenge will be to frame the game play within the world that you have created such that it expresses good history. You will need to keep track of every decision you make and why, and think through what the historical implications are of those decisions.
    3. The final build will be accompanied by a paradata document that will discuss your build, details all sources used (Harvard Style), references all appropriate literature, and explains how playing your world creates ‘good history’ for the player. This document should reference Fogu, Kee et al, and the papers in Elliot and Kappell at a miminum. More information about ‘paradata’ and examples may be found at http://heritagejam.org/what-are-paradata Due the first session on the last week of term, so that we can all play each others’ worlds. The in-class discussion that will follow in the second session is also a part of this project’s grade. Your work-in-progress may also be presented at Carleton’s GIS Day (3rd Wednesday in November)
    4. (These worlds will be made publicly available at the end of the term, ideally for local high school history classes to use. Many people at the university are interested to see what we come up with, too. No pressure).

So that’s what I’m thinking, with approximately 1 month to go until term starts. We’ve got Minecraft.edu installed in the Gaming Lab in the Discovery Centre in the Library, we’ve got logins and remote access all sorted out, I have most of the readings set … it’s coming together. Speaking of readings, we’ll use this as our bible:

Playing with the Past

and will probably dip into these:

Play the Past

PastPlay

… sensing a theme…