Platforms and Programming: Final Project Begins!

adventures in gaming, critical making

I’ve done it! I’ve moved from Processing to p5.js to Phaser, now. After doing the p5.js tutorials, it seemed like there were few enough differences that I ought to move on to Phaser. My pace has slowed down a bit because of other responsibilities and, well, the fact that it turns out that I was very, very spoiled by Daniel Shiffman’s Learning Processing book. Holy cats, Shiffman! Would you please teach me all future programming things forever?! The Phaser documentation, in comparison, and other library documentations are really pretty horrible. Although I’m told that, in comparison to still other libraries, the Phaser documentation is abundant and clear and wonderful. So it goes.

Naturally, the introductory tutorial for Phaser is a one-screen platformer, something I can make in five minutes in Construct 2. It was essential that I find a project that would keep me engaged and motivated to learn, something like the Earth Twin project for Processing (although Processing is pretty appealing all on its own, I needed to find a project that used its more unique affordances, and that turned out to be computer vision stuff). We came up with the idea that I could combine the Tracery library by Kate Compton with Phaser in order to make something interesting.

So. That project.

I should start by saying that if this were a short story, or any kind of writing, I wouldn’t be touching it before at least a year or two from now, at minimum. It’s possible that a lack of clarity and perspective about the event will interfere with trying to fictionalize/make art about something that’s happening to you right now… It’s raw and tender. And sure, that can make great art, and people do this about their lived (with no fixed end point) experiences all the time. But, as a general rule, I don’t. I don’t really make personal games and if I do involve my own experiences (as one must, to a degree), it’s fictionalized and years after the fact.

Tom, my husband, is leaving for RCMP Depot Training on April 17th. This is a good thing! He made his first steps towards applying something like three years ago now, and he’s finally made it in. The steps to get here were endless. He’s put in a huge amount of work. He’ll be great at being an RCMP officer and jobs with the benefits and pay and other opportunities that this offers him (us) really don’t exist anymore.

However, I have known Tom for basically a decade, and in that time, the longest that we’ve been apart is when I went to Europe last spring for 46 days. He’ll be gone for six months! And afterwards, the chances of him moving back to Montreal is almost exactly zero. I’m a first-year PhD student – I’ll be in Montreal for years yet, and even when I’m done the things that require me to be physically present in the city, the truth is that the community here is unique and supportive in ways that don’t exist in any other Canadian city. Fully 75% of the postings are in the West, with only 25% in the East, so there’s not even a particularly good chance that he’ll be close enough for me to easily visit. They are supposed to take your family situation into account – they want your posting to be mutually beneficial to you and to them, but it’s a lot of uncertainty to have thrown into our lives. The RCMP tells you not to interrupt your life plans and to go on as if you’ll never get it (and when you consider that it took him three years to get in, one definitely could finish a graduate degree in that time, if not a PhD).

The time that he has left in Montreal before leaving coincides with the end of the semester at Concordia and, as a result, all of my deadlines. So, while I would normally a) not make a game about my personal life and b) would definitely not make it while whatever is happening is still in progress, this is all that I can think about right now. It’s taking up a huge amount of my headspace and emotional energy, and many of these deadlines can’t be moved (end-of-term work, TA responsibilities, public talks, conferences, a book chapter). So, in order to deal with it, I’ve decided to make my final project for this class about it. The hope is that it’ll allow me time to think even as I do all the other things that need doing.

THE GAME:

rcmpcatnotes

This is a game about juxtaposition and duration. It’ll take place over the course of 30 days (roughly a month), which is the amount of time that Tom had between finding out he was accepted and going to Depot and the time that he would be starting there. The genre that I’m aiming for is characterized by an account of events determined by a period of time, exemplified by books like One Day in the Life of Ivan Denisovich by Aleksandr Solzhenitsyn. In writing workshops, we often referred to it as the “a day in the life of” technique. The juxtaposition part is because this’ll be 30 days in the life of our cat, doing cat things (like playing with toys, destroying the furniture, napping), placed alongside procedurally-generated conversations (using Tracery) about topics that Tom and I (or people in similar situations to us) would have to discuss in this limited time-frame.

At first, I thought that I would have one top-down view and that would be the end of it, but then I thought about Molleindustria’s Unmanned which I think is an entry into my “day-in-the-life-of” game genre. The different scenes and perspectives in the game are really nice and very cinematic. Maybe that’s something that I can make work for me (although it will of course be more work). One thing that I like about this game is that the actions that the player has control over (with the radio, with smoking, with playing games with the main character’s child) are symptomatic/revelatory of the character’s internal life and affect the story, without allowing the player to overtly make decisions about the path of the story. The causal link between the two is vague in a satisfying way.

Rilla (Khaled) also pointed me to The Cat and the Coup yesterday, which I’ve downloaded but haven’t yet had the chance to play. I plan to play it as soon as possible.

Art-style-wise, I again do like Unmanned‘s style. I’m used to animating with PyxelEdit but I also like the sort of cut-out minimalist collage style of things like the Fiasco books. Here’s the cover of a Fiasco playset that my brother and I recently made for my friend Allison:

MagicalGirlMinimalistCover

I might go with this kind of style, but I’ll have to figure out a different animation/spritesheet making program. Help and suggestions would definitely be appreciated. I might experiment with OpenToonz but I’m worried about the learning curve in the short amount of time that I have to make this first version of the game. Hey, there’s of course nothing stopping me from working on it after I’ve turned it in for class! I will check it out and see if it’s simple enough (apparently there are a few stability issues).

So far, I’ve got a very basic Tracery thing working in a Phaser tutorial. More as it happens!

GDC 2016: TAG visits San Francisco

critical hit, talks

GDC

Last week I attended my first ever Game Developer’s Conference alongside what occasionally felt like at least half of the Montreal games people I know. It is a strange and wonderful feeling to run into folks from your city in one that is completely new to you. During GDC, this seemed to happen all the time.

I went a little early and stayed a little late, so while I was in San Francisco I also got to see a sea lion giving birth, go to a mirror maze, visit the Musee Mecanique and try all of its fortune telling cabinets, and go to the lovely San Francisco botanical gardens where a squirrel climbed up my leg (given today’s weather, I’m especially missing how GREEN San Francisco was).

For most of my time in San Francisco, I stayed with veteran GDC goer Squinky (who will soon be starting their PhD at TAG — and we’re lucky to have them around the lab with us already). This was Squinky’s eighth GDC, and they were kind enough to both find me a place to stay with a friend of theirs and to help me through what would no doubt otherwise have been a completely different experience.

The talks were excellent – as Gina has already mentioned, the TAG twitter feed is full of live-tweetin’s and retweets from the panels that we attended. Some of my favourites were Renee Nejo’s talk called “Everyone’s Silent Enemy: Shame and Vulnerability” which candidly explored her experience as a First Nation’s woman who has often felt “not native enough” in the estimation of others. No summary can do this particular talk justice, so I’ll point you towards the talk information, and hopefully you’ll be able to check it out on the vault: http://schedule.gdconf.com/session/everyones-silent-enemy-shame-and-vulnerability

It was really heartening for me to be able to watch Rebecca Cohen-Palacios, Stephanie Fisher, Sagen Yee, Zoe Quinn and Gemma Thomson deliver “Ripple Effect: How Women-in-Games Initiatives Make a Difference” — the Pixelles program is the reason that I made my first solo game and how I discovered that making games of my own was a viable possibility. The program was life-changing for me! This talk explored how such programs can ripple out, starting from the Difference Engine Initiative, where many of the speakers made their first games.

Our own Ida Toft delivered what I (perhaps biasedly, as one of this summer’s co-directors) thought was an excellent talk about Critical Hit 2015 and our experiences trying to build a safer space within the program. After Ida spoke about their take on the issues that made this very challenging, Ida invited Gina and I up, and the three of us took questions for the remaining half hour. We also invited some of the Critical Hit participants from this past year who attended the talk to give us their input as well. I was reminded that Safer Space isn’t a perfect solution, but that we have to keep trying and working towards something.

Speaking of this year’s Critical Hit participants, quite a few of them made it to GDC this year. They’re sharing their work and doing well – last fall we also saw quite a few of them at IndieCade! We managed to meet up for dinner with Kailin, Amanda, Hope, Nicole and Owen. A few of them will also be at the upcoming Different Games, so if you’re headed there, you should say hi to them!

Attending my first ever Lost Levels was also an oasis in the desert — it had a very different feel than the rest of the bustling conference, and I was able to relax for the first time that afternoon since the beginning of the conference. I listened to people talk about AI, led by the amazing Kate Compton (creator of the Tracery library, which I’m about to learn), was serenaded by impromptu music, including a live Gameboy chiptunes performance, and listened to an indie rant or two. All the while, I also ran the first ever Lost Levels Nap Summit, discussing important nap-related issues — did you know, for example, that casual naps are still naps? The Mild Rumpus, a carpeted “quieter” space within GDC with bean bags, pillows, trees, and experimental indie games, wasn’t quite mild enough for such discussions, as it turns out.

Squinky’s talk on Friday, “Designing Discomfort,” was brilliant – suggesting that maybe the flow state isn’t always ideal because it limits the kinds of stories we can tell. We should break out and explore possibilities outside of it, including more mature subject matter and more kinds of stories.

Perhaps unsurprisingly, while I enjoyed many excellent talks, some of my most worthwhile interactions at GDC happened at the peripheries of the event, because of the fact that for this week, thousands of game developers are sharing the same location. It was during lunch and dinner meetups and coffee breaks, during accidental meetings in the city or in hallways. I met a lot of lovely people, many of whom were introduced to me by Squinky.

You should also check out Gina’s excellent summary of the microtalks, which I also attended and appreciated.

Platforms and Programming: Some Thoughts on Processing

Uncategorized

startscreen

Part of the challenge of this semester-long intensive solo programming boot camp that Rilla and Pippin are so kindly leading me through is learning how to learn. I’m not just learning a programming language or two, I am learning about libraries, APIs, references, object-oriented thinking, how to structure my code, how to debug, the vocabulary I’ll need to add to my google fu repertoire…and, perhaps most importantly, I’m learning how programming languages are learned.

One of the most challenging things I’ve had to learn is something that I already knew but have to keep reminding myself of: there are probably only a few rare somebodies who store all their programming knowledge completely in their memory. It’s normal to have to google, use the references, and refer back. I felt curiously guilty about that at first, but I’m getting used to the idea now.

So! In seven weeks, I finished the twenty-three chapters of Daniel Shiffman’s Learning Processing. Here are a few observations about Processing as a tool (I was about to say language and I guess it sort of is, but it’s also basically Java with the Processing library and applet, so…):

* Processing is very good at algorithmic, procedurally generated visuals and it handles playing around with colour very well.

* Processing (while it probably has a library for this) doesn’t handle sprite sheet-based animation very well. The animation chapter section covered flipping a head back and forth when it reached the edge of a sketch and that was about it.

* Processing can do fantastic things with video very easily! Loads of fun!

* Shiffman points out that Processing is primarily geared towards visuals – and he ought to know, he’s written most of the tutorials up on the Processing.org website. Case in point: with new updates, the sound library appears to break fairly frequently , but the video library doesn’t.

* Processing can do networking, but it involves installing extra software and additional libraries. While it takes maybe three lines of code (excluding the curly brackets) to draw something in Processing, it’s something like 30 to do any networking at all. So, clearly, visuals are a priority in comparison.

* Shiffman’s Learning Processing is really excellent. I definitely recommend it for beginners – everything is explained very clearly in the early chapters.

To celebrate finishing the Learning Processing book, I made this funky little game toy thing called Earth Twin! It uses Processing’s computer vision capabilities with an Eliza chatbot library by codeanticode. It’s available to play for either PC or Mac. Let me know what you think (@jekagames). Here’s a sample transcript:

>> Hello. Greetings and salutations. As you know, I’m here as part of a Keplerian delegation to learn more about the human world. Tell me your favourite things about humans.

Hello there.

>> Greetings. Hi. Yo. Heya. I’m from an earth-twin planet called Kepler and I want to know about humans and stuff.

I want to know about humans too!

>> What would it mean to you if you got to know about humans too ? Seriously, what would that even look like?

I don’t know anything about humans.

>> Of course you don’t know anything about humans ! Isn’t that illegal ?

It is not illegal for humans to know about humans.

>> Is this some strange human custom? I’m not sure I understand.

Yes, it is.

>> You are sure. Remember: if you ever visit Kepler, certainty is a thought crime.

That is good advice.

>> Please go on. Does this have something to do with the Internet ?

Everything reaches the internet at some point.

>> On Kepler, that might be considered an untoward suggestion.

I understand, yes.

>> You say you understand ? On Kepler, you could lose an eye for that.

Kepler sounds like a harsh place.

>> The swim to understanding is filled with eddies, currents, and large predator fish. Oh – that ? Just an old Keplerian saying.

Well, there you have it.

>> We were discussing you — not me. I’m here to gather information on humans, not to allow humans to gather information about Keplerians.

Fair enough.

>> A nematode in the pod is worth twenty in the toxic ooze that covers all known surfaces, as they say.

Goodbye.

>> Goodbye. Thank you for facilitating the Keplerian invasion.

Meanwhile, I’m moving on to JavaScript. That also means brushing up on my html and CSS (when I used to mess with html as a teenager, CSS was just barely getting started). Wish me luck! First up is p5.js, and we’ll be re-evaluating from there. I know we plan to do some messing around in Phaser and PICO-8, and I think we’ll also be looking at the Nature of Code.

Exciting! New world unlocked!

motiondetection2