This is how the sausage gets made

On the surface of it, it may seem unlikely to you that anyone who had ever (1) had a job or (2) self-identified as “human” could possibly characterize the on-going Activision Blizzard shitstorm as an “I’d really rather not take sides”-kinda situation. Because, you know, that’s a false equivalence: There are not really two “sides” here. You either care about other human beings OR you care only and exclusively about that new 48′ luxury yacht that Stevens mentions every time you two meet for squash at the club.

Oh, you beautiful, naive thing! Money is the only thing that matters. Consider these late-Friday tidbits from the industry press:

Geoff Keighley — whose website notes was named in 2004 as one of the top 30 journalists under 30! — has hosted and produced videogame programming on Spike TV, Comedy Central, Nickelodeon, and Viacom media for years. He’s host and producer of The Game Awards on some stream somewhere. And he’s definitely not about to get involved in “taking sides” in the Activision Blizzard debacle until he absolutely, positively has to. Because: Money.

Keighley confirmed that new game announcements and trailers are by far the most popular part of the event, and the number-one reason most viewers tune in. He also spoke at length about the work and collaboration with game companies that goes into curating each year’s selection of trailers.

Further details via Kotaku

But Geoff’s “careful navigation” of this “difficult situation” isn’t the only good news for investors looking for a better rate of return on investment in the games industry. Activision! You never disappoint! Let’s see what you’ve got!

Today, contract testers at the Call of Duty studio Raven Software were told that the studio would face layoffs on January 28th of next year, a Call of Dutycommunity manager said on Twitter. A source familiar with the goings-on at the company confirmed to Kotaku that for the next few days in early December, the quality assurance team would be meeting one-on-one with management individually to learn if they were out of a job.

OK! That certainly starts to channel Ebenezer Scrooge, but surely that’s not the best you can do! Tiny Tim still has a little bit of life in him yet! FINISH HIM!

According to Austin O’Brien, a community manager for Call of Duty, the quality assurance team… have promised raises for months…. As it turns out, these raises had an asterisk attached to them. The plan… is that Activision will absorb some contract testers from among current contractors [and will also] hire some testers permanently. But the vast majority of the [current QA contractors] would be [fired]. The workers retaining jobs will indeed be promoted from $17 an hour to $18.50 an hour, alongside improved benefits and quarterly bonuses. Promises of raises and other benefits that never arrive are well-known tactics within the industry as a means of retaining contract workers hoping to transfer into more full-time positions.

Read the full article on Kotaku

God bless us, every one!

Photography in Virtual Worlds

More assignment notes and suggestions

Virtual Photography exercise

see here for full explainer and additional links

Photography is a broad and layered practice. Your photographs may not be “good enough” to grace the cover of Rolling Stone or Time, but they should be “interesting,” and they should convey thought. Your in-world photos can be more like “snap shots” than “art-gallery” photos (they probably will be). You can “thicken” the meaning / significance of your photos by glossing them with a single paragraph caption that reflects on why the image is meaningful, interesting, or compelling to you, and/or why it should be compelling to me, too.

Getting started:

  1. Find a game. If you don’t know any games, then ask a gamer friend to recommend a game that has an interesting game-world. PC or Console, sometimes (but far less often) handheld.
  2. Spend some time poking around in that game-world. That may mean playing the game. It may mean “not” playing the game, but just exploring.
  3. Look for things that you find interesting. It may have something to do with your career goals, with stuff you learned in another class, with something you’ve been thinking about vis a vis game design. It may have something to do with an experience you had in-game. Or it may have to do with something else entirely.
  4. Grab a photo or two that communicates those ideas.
  5. Rinse, repeat.
  6. Once you’ve collected a bunch of photos, sift through them and look for the ones that are the most interesting. Feel free to push them through Photoshop or some other photo editing software, but (beyond color correction and/or cropping), try to preserve the “look” of the world you were in.
  7. Write up a paragraph’s worth of commentary for each photo. When I print out and post your photos in Laws (beginning of next semester) be aware that I will include your comments with the photo.

Some suggested themes, subjects (don’t let this list limit you, though!)

Architecture; brand-name placement; urban design; the landscape as game interface; human diversity in-game; representation (of gender, race, sexual orientation, but also faith, war, learning, ideas, capitalism, etc.); transportation. Less self-evident: Furniture design; varieties of flora and fauna. Find especially beautiful places, or especially ugly ones. Etc.

Some Suggestions: Getting Started w. Farming

Build a farming sim (One approach)

Obviously, objects are the star of this show. Think in object-oriented terms! Below, I’ve provided a simplistic, one-way-to-get-started list of the objects I might begin with, together with a few notes about their internal fields (“variables”) and methods (“functions”). BOTTOM LINE ADVICE: Start simple by creating a flower object that gradually grows over time from seedling to BigFlower. Make it so that the farmer can plant those seeds in a soil plot, where they’ll grow. Once you’ve got that down, THEN add water to the equation. Add sunshine. Require the farmer to prep the soil first. THEN make it possible to harvest the plant and start over. THEN add a second kind of plant, that grows differently, looks different, requires different water, earns different points at harvest.

DON’T DO IT ALL AT ONCE. TINY, TINY STEPS. Make one stage work and then move to the next stage. Gradually (GRADUALLY) add complexity. Eventually, you’ll be astonished at how the farm “bursts forth” in a lively fashion.

Look, building a farm sim is not that different from your 5th grade science fair project “Photosynthesis: A Diorama”. You’ve got your plant, your sun, your water, your soil. The magical thing is that every few seconds, all of these objects affect one another in different ways. The trick here (and IT IS THE KEY TO ALL SIMULATION BUILDING) is deciding “what processes do I actually care about” and “which ones can we just fake”? BECAUSE (AGAIN) YOU CANNOT SIMULATE EVERY ATOM IN THE UNIVERSE, SO YOU HAVE TO BE CHOOSY ABOUT WHICH ATOMS AND ACTIONS YOU DO SIMULATE.

For example: You could actually have a ROOTS object attached to your PLANT object, and the ROOTS object would regularly pull moistureContent from the SOIL object and pass it along to the PLANT object…

But we could just simplify the system and make the PLANT object pull moistureContent from the SOIL object. Your middle school science teacher would freak out, sure, but he’s yesterday’s news. The trick is always in deciding “what processes and relationships do I care about? And what processes can I just ignore?”

You really want to think about this in terms of a “game loop”:

GameLoop (automated events):

  • In our imagined farming sim, with every few passing seconds:
    • the ground gets drier;
    • a seed that has been planted in that ground tries to grow:
      • the seed/plant asks:
        • Did I get enough sun from above?
        • Did I get enough water?
      • If yes to these, then the plant’s image index increases:
        • E.g., Sunflower sprite goes from a seed (frame 0) to very tall plant (frame, say, 20)
  • At any point within that GameLoop, the farmer/player may:
    • click ground with hoe to prep earth for seed;
    • Water the ground;
    • Plant a seed;
    • Harvest fully-grown plants
    • etc.


  • A 1×1 plot of earth
    • moistureContent
    • growthAccelerator
    • isPlanted
    • plantID (“secret name” or instance ID) of plant actually growing in this square
      • Since a specific square of soil is going to constantly affect a specific plant, it makes sense to store each ID inside the other, for easy access!
  • A sunflower
    • plotID (“secret name” or instance ID) of the plot of earth we’re growing in (see my last point, above)
    • isHealthy
    • moistureRequired
    • sunshineRequired
    • currentGrowthStage
  • PlotOfEarth methods/functions/events (suggestions)
    • Event: alarm 0
      • Every time alarm 0 goes off, I might:
        • subtract 1 from moistureContent (“evaporation”)
        • reset the timer for the next alarm 0 (say, every 10 seconds * 60 frames)
  • Sunflower methods/functions/events (suggestions)
    • Event: alarm 0 (“grow”)
      • Every time alarm 0 goes off, I might:
        • Subtract moistureRequired from plotID.moistureContent
        • Did I get enough moisture? Then add one to my image index
        • Did I not get enough moisture? Maybe replace me with dead object?

In-World Photography (Final Project)

We will discuss all of this material and talk about where to find some of these gameworlds if you don’t already have any at your finger-tips, on Monday and Tuesday.

Final IMS211ab/c Project

Context: Pictures at an Exhibition

Why do we take pictures? Earlier in the semester, I suggested that human beings were very bad at thinking about technology, because we insist on thinking about technology as alien, artificial, and distinct from ourselves. I suggested (following a line of thought that is often associated with scholars like Marshal McLuhan, Fr. Walter Ong, SJ, and Greg Ulmer) that we are inextricable from our technologies. From the sonograms that see into our mothers’ wombs, to the blankets we are swaddled in, to the coffins in which we are buried, technology is part of our Lebenswelt – our “lifeworld.” We are, all of us, cyborg.

The question, then, isn’t “Why do we take pictures,” but “What are we doing when we take pictures?” And the answer is this: We are offloading our memories; we are creating “save” points.

But we are doing more, because we aren’t just preserving the past, we are filling the present with that past. We are reshaping the “real” world in which you and I live by filling it with images of events that look like they are happening now, but which are really just records of luminance, wavelength, and the orientation of matter.

So: Photos extend us and allow us to offload our memories. And photos are configurations of the past which become part of the present whenever we see them.

So: What happens if we start “taking photos” of the virtual worlds and game worlds in which we dwell? Or, more to the point: Why don’t we already take photographs of our adventures in virtual worlds? Disneyworld is not real – but we covet the photos we take of our visits there. Do those photos really just function as “offloaded memories,” or do those photos also contribute to the “realness” of Disney?

What happens if we take photographs of “ourselves” in Skyrim, or Zelda’s Hyrule, or Stormwind, or Liberty City, or Minecraft, or wherever? What happens if we bring those photos back to this world, print them out, and exhibit them?

Project Overview

This course has emphasized thinking about games and game-worlds in non-conventional ways. We’ve argued that seeing games as “consumer goods” – certainly the most popular contemporary approach – is perhaps the most simplistic, most dismissive way to think about games.

For the final project in this class, you are asked to think about game worlds as authentic sites of human activity – as a “real” experience worth preserving, worth communicating. We’ll accomplish this by creating and exhibiting (in Laws Hall) a modest photo gallery that bears witness to our being in-game-worlds.

Your responsibility is fairly narrow: For this assignment, you will turn-in three photos taken from inside one or more videogames. In each case, the photos will include your comments, captions, and/or game data attached.

The photos and associated captions, etc., are due to me, via Canvas, by Noon on Monday, 13 December (this is a non-negotiable deadline). We will discuss particulars in class, including how to caption them, whether or not to Photoshop them, and (most importantly) how to create them.

Some useful technical explanation, details, and suggested readings follow below.

Technical Overview

Aside from NVidia’s recent experiments with their Ansel Engine (which draws on the hardware particulars of NVidia’s graphics cards to facilitate in-game photography across a range of game worlds), there is no standard way to create a photo from inside a game. This is an important observation, because it will have a direct impact on how you approach and complete this project: In addition to selecting the most scenic, humorous, appealing, or provocative sites to serve as subject matter in your photos, the process of making the photos itself will likely require some technical investigation, experimentation, and ad-hoc invention on your part.

In sum: The solution is often non-obvious. You will need to figure it out. That is part of the project’s design.

Some games do provide an in-game photo mode (e.g., Forza Horizon literally stops the action and lets you reposition your ‘camera’, focus, set the FStop, etc.) while other games do not. Oher games, like World of Warcraft, meet you halfway by mapping the “print screen” key on IBM-style keyboards to an in-game screengrab routine (which often includes a cheesy 35mm SLR sound effect), and then stores the “photo” in a screen capture folder (often, but not always, in /My Documents). In other cases, you may find external screengrab applications to work best.

Aside: Why is there no standard “best approach?” There are many ways that a game or application can put data or images on the screen, and those approaches may or may not be compatible with any particular approach to “saving the screen” as a PNG file. Remember, the screen is really just more computer memory, made visible. Direct3D, GLide, Metal, OpenGL, QuickDraw, RenderMan, LibGCM and Vulkan are among the popular low-level 3D APIs commonly deployed. Their final output may look similar across the board, but each approaches mapping data to the pixels in your monitor in a radically distinct fashion: You need to find a screen-grab approach that looks for the data in the right place.

Technical Details

  • Photo dimensions: The format/ratio of the image is your choice, but aspect ratios common to photography include 1:1 (square, e.g. medium format camera), 5:4, 4:3, or 3:2 (e.g., 35mm film).

  • Photo resolution: Resolution matters more than aspect ratio. The resolution of your photo (when you first take it) should be as high as you can set it: e.g., 3000×2000 pixels. A resolution of 1080×720 is really not sufficient, and should only be used when other choices are exhausted. Just like with real-world photography: The higher your initial resolution, the more options you preserve in the long run. You cannot recover data that was never recorded in the first place.

World Choice

You already understand the difference between a “game world” (a synthetic world, a virtual world) and a “mere” video game: Both are sites of complexity and engagement, but game worlds are persistent and less overdetermined than their arcade-y sisters. Single-screen games and digital versions of boardgames, as well as platformers, fighting-games, and bullet-hells are not “game worlds” (even if they boast deep “lore”); Among others, Massively-Multiplayer Online Role Playing Games are game worlds.

One of my favorite tests: Can I steal something valuable from another player, and then put it somewhere they are unlikely to find it? If I can, then I’m almost definitely in a game world. If those acts are impossible, then it is likely some other kind of game.

Still, there are no hard and fast rules for which is which. So here is a (provisional, partial) list of video games that feature virtual worlds (useful for this assignment) and video games that do not (games not useful for this assignment).

Games with “worlds”

  • Destiny 2
  • Stardew Valley
  • Grand Theft Auto V
  • Fortnite
  • Final Fantasy XIV

Games without “worlds”

  • Tetris
  • Space Invaders
  • Video Poker
  • Zork

Again, the emphasis here (as it has been all semester) is on discovering other ways in which video game worlds are “more” than just sites for ephemeral gameplay.


“Virtual photography: Taking photos in videogames is imaging’s next evolution” (2019)

“Sick of Video Game Toxicity? Try Virtual Photography” (2021)

The point the author makes is a powerful one, and intimately related to our own considerations: Video games and game worlds are more than “just” video games. They are built environments.

FStoppers: It may be art, but it isn’t photography”

A surprising argument, perhaps, from a journalism professor, who insists, in essence: “Sure, screenshots from inside can never be PHOTOGRAPHS. You’re just making ART.”

flickr pools include some excellent images. Visit, e.g.:

Rolling hills - Red Dead Redemption 2
The Last of Us Part II (PS5)

Also interesting (somewhat dated) (note that these will open in new tabs):

A virtual photographer’s tumblr, “Virtual Geographic”

One photographer’s “Steam Postcards”

Two recommended resources: Cosplay

Below are two separate recent publications that cater to novice cosplayers keen to create their own costumes. Again, there are a huge range of skill levels and ambitions to accommodate here, so the texts may or may not actually be useful to you.

I am in the process of digging up a few additional resources and will post links to those as I am able.

NB please that these are copyrighted texts, and are made available here — as Fair Use texts — only and exclusively within the context of our class this fall, IMS211. These texts are NOT to be downloaded by anyone not associated with IMS211, nor are they to be distributed beyond our class. Please respect the authors’ ability to profit by their work.

Early iteration / demo Lunar Lander

Here’s a very early, thoroughly incomplete version of lunar lander that I’ve been cooking up. It is more complicated than it needs to be; it doesn’t yet handle crashes (or landings, for that matter); it tracks fuel, but doesn’t cut off the thrusters when fuel runs out.

Alchemical Pinball (project 4 concepts demo)

UPDATED: Here’s the fully-commented version of the AlchemicalPinball demo. Definitely look at this version (I’m leaving the other version below in the event someone needs that version, however).


UPDATED: See the commented version above. Don’t rely on this iteration.

This code is almost entirely uncommented! Sorry for that — but the code was a mess, and I spent a lot of time refactoring things for improved clarity.

I’ll share comments and explanations later today (Saturday).