Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
June 17, 2021
arrowPress Releases







If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 

Lessons Learned From Teaching Game Design

by Lars Kalthoff on 02/16/21 10:54:00 am   Featured Blogs

3 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

I’ve spent the past six months teaching game design at the Cologne Game Lab, a German institute dedicated to the study of digital games. In this blog post, I want to share what I’ve learned during the process and condense it down into five practical rules you can apply to improve your own teaching.

 

Fifth-semester students at the Cologne Game Lab get the chance to propose a self-initiated project and work on it for a whole semester under the supervision of a professor. There are no lectures or assignments during this time and students are free to choose any subject for their project as long as it’s related to digital games in some way.

For my own self-initiated project, I’ve decided to learn more about teaching and put it into practice at the Cologne Game Lab. Originally, the goal was to develop and teach a single three-hour session on a game design topic. The rest of the project time would be spent on research, mainly focusing on the literature on learning from cognitive science. However, things turned out a little bit differently.

I ended up with four sessions on wildly different subjects: The first one was a two-hour workshop on narrative design for aspiring game developers from Sudan. I took the famous fantasy series Game of Thrones as an example to derive practical advice on writing characters, developing them, and presenting them to the audience. In terms of format, this workshop was similar to a GDC talk—a long lecture segment followed by a shorter Q&A session.

Although this workshop was a great opportunity to acquire basic teaching experience, there was no way for students to participate other than the Q&A. The second session was much more interactive. This time, I taught a three-hour course on player guidance in level design to third-semester students of the Cologne Game Lab. I combined different teaching formats such as lecture segments, classroom discussions, and group assignments to encourage student participation.

The third session eventually became a video lecture that was made available to students from all semesters. It covered the concept of feedback loops and how they’re used to shape the dynamics of digital games. Since there is no opportunity for student participation in a pre-recorded video, I tried to vary the format by analyzing two popular games that make extensive use of feedback loops (Mario Kart 8 and Teamfight Tactics).

My last session was tailored to the first-semester students of the Cologne Game Lab. It was a workshop on presenting that was aimed at helping the participants with the game pitches they had to deliver a few days after the date of the workshop. The workshop included a two-hour lecture as well as personalized feedback on the students’ game pitches.

 

Now that you’re familiar with the outcomes of my self-initiated project, I’d like to share some of the key lessons I’ve learned during the process. Here are five rules to follow when teaching game design:

 

Rule 1 – Teach timeless content with contemporary examples

Let’s start with the first half of that statement—“timeless content”.

Educators in the field of game development face a serious problem: How do you decide what to teach when it could already be obsolete in a month, a year, or a decade? Although this issue isn’t exclusive to game development, there are reasons why our field is disproportionately affected by it. Digital games are a relatively new medium that’s only been around for 70 years. It’s a popular truism that games transform more rapidly than any other medium and considering their young age, this shouldn’t come as a surprise. The continual transformation of the medium and the lack of consistent conventions in the industry make it quite likely that something you’ve learned at a games school is no longer relevant when you land your first job in game development.

So, how do we avoid teaching content that is doomed to become irrelevant within a few years? One possible approach would be to keep yourself up-to-date with the latest trends in the industry and constantly rework your courses to reflect recent concepts, workflows, and tools. Apart from the amount of work this approach entails, there’s a logical fallacy that underlies its core assumption. Recent ideas are actually more likely to become obsolete soon. Hundreds of thoughts are put forward every day and the overwhelming majority of them will turn out to be impracticable, irrelevant, or even incorrect. Only a tiny fraction of modern concepts will eventually evolve into common knowledge.

The solution to our problem is rather simple. We know which ideas are timeless—those who’ve stood the test of time; those who’ve been around for centuries and still make sense today. If something you observe today has been established long ago, you can be confident it’ll still be there tomorrow.

 

When I prepared my session on player guidance, I had to decide which specific techniques to include and which to leave out. To make these decisions, I often considered whether or not a principle had already stood the test of time. For example, landmarks, breadcrumbs, colors, and shapes were among the guiding methods I explained. Landmarks have been a part of urban planning forever and even way before humans built cities, they used recognizable features in the environment to orient themselves. The idea of laying out a path of breadcrumbs goes back to the German fairy tale Hansel and Gretel from 200 years ago and colors and shapes have guided our perception for millions of years. I suspect they’ll still do so next week.

My third session dealt with feedback loops and their implications for games. The concept is so old that the effects of a positive feedback loop have already been described in the Bible:

“For to every one who has will more be given, and he will have abundance; but from him who has not, even what he has will be taken away.” – Matthew 25:29

Designers deliberately recreate this rich-get-richer effect in video games to reward the players who are doing well and bring the game to a rapid conclusion. If you’re on a killstreak in the Call of Duty series, you receive powerful items and events that make it easier to maintain the killstreak. It’s the Matthew principle turned into a game system.

In addition to that, feedback loops are studied in several different fields such as biology, engineering, cybernetics, and game design. We can see that the concept is universal across time and disciplines.

 

Now, what about the second half of the rule—“contemporary examples”?

First, we have to recognize that there’s an age gap between teachers and students, often a quite significant one. An undesirable consequence of that age gap is that students may have never heard about the games that their professors grew up with and now use as examples in their teaching.

The problem isn’t that students and professors play different games. The problem is that when you use examples that you’re familiar with but your students aren’t, you’re missing the fundamental point of why you’d use examples in the first place. The goal of an example is to bring a new idea into a familiar context. The example fails if the context isn’t familiar to the people you’re talking with. We solve this problem by referencing modern games that our students have played, even if it entails more research on our part.

An added benefit of that strategy is that you’re indirectly proving the timelessness of the content. If you talk about an old idea like landmarks and then explain how The Last of Us Part II applies the same principles in 2020, your students can witness how a concept has been around for centuries, is still around today, and probably will be around in 200 years.

 

In my second session, I analyzed how the action adventure Ghost of Tsushima (2020) approached player guidance in an open world. The game had been released four months before the session.

I also made references to The Last of Us Part II (2020), The Legend of Zelda: Breath of the Wild (2017), and Uncharted 4: A Thief’s End (2016). Case studies of Mario Kart 8 Deluxe (2017) and Teamfight Tactics (2019) by Riot Games were core elements of my video lecture on feedback loops.

 

“Teach timeless content with contemporary examples”, that’s all there ever was to my first workshop. Games of Thrones as a popular case of applying best practices that great authors have known for centuries. Old content, modern example.

 

Rule 2 – Connect to the students’ past and future

When planning a session, it’s crucial to view it in context. Your students took courses before yours, they’ll take other courses in the future, and at some point, they’re going to look for a job. Whether or not a course is experienced as meaningful often hinges on how well it’s aligned with what came before and what comes after.

 

Connecting to the students’ future means making a conscious effort to show how the taught material is relevant to what happens after the course, for example, how it prepares the students for an upcoming assignment, consecutive courses, or common tasks on a job. This connection helps people see why the content is important to them and carries with it a sense of relevance that makes it easier to pay attention.

 

My session on player guidance was targeted at third-semester game design students. At the end of the third semester at the Cologne Game Lab, students form groups to work on a multiplayer game for several weeks. I connected to that upcoming project by ending the session with group discussions, asking the students to analyze the special requirements for player guidance that multiplayer games bring to the table and how these might be addressed.

In my lecture on presentations, I began by listing key events in the career of a game developer like interviewing at a big studio, pitching a game to potential investors, convincing your colleagues to co-found an indie studio, and setting up a Steam page for your first game. I then explained how all of these events are essentially presentations before diving into the actual content of the talk.

 

Connecting to your students’ past means recognizing that students come into your session with expectations, misconceptions, and background knowledge about the subject. Finding ways to address these remnants of past exposures to the subject is a central element of successful course development. This is particularly important when it comes to background knowledge that your students may or may not possess. The research on learning demonstrates that prior knowledge is a major determinant of effective learning. For us teachers this means that assessing what students already know about the topic and connecting the new material to that knowledge base is a sure-fire way to take our teaching to a new level.

 

When I prepared my course on player guidance in level design, I knew that the third-semester students had already taken other courses on different aspects of level design such as pacing or storytelling. To embed the new content in a framework that includes the content of the previous courses, I described player guidance as one of many lenses through which you can view level design. Then, I talked about how it relates to some of the other lenses that the students have learned about and what constitutes the opportunities and limitations of the player guidance lens.

Further, I suspected that many of the students were already familiar with some basic guiding techniques but I had no way of knowing which exactly those were. To solve this problem, I decided to host a short brainstorming session on guiding techniques with the students right before the lecture segment in which I’d introduce six different methods and their special use cases. The brainstorming gave me a comprehensive overview of which techniques were well-known and which weren’t. I could then use this information to adjust the lecture segment by spending less time on the familiar techniques and by connecting new information to ideas that had come up during the brainstorming.

If you can’t assess students’ background knowledge through research, consider designing an exercise as a prior knowledge test in disguise.

 

Showing your students how the material relates to their future grabs their attention and connecting new information to students’ prior knowledge deepens their understanding. That’s what it means to view your sessions in context.

 

Rule 3 – Reduce assignments to their core

The primary goal of teaching is to bring about effective learning, that much should go without saying. But it’s not that obvious what it even means to learn something. For me, it comes down to two aspects: having a realization and remembering it. It’s possible to have an epiphany and forget about it within a few hours. In that case, there was no learning because the information never made it into long-term memory. It’s also possible to store something in memory that hasn’t been accompanied by a realization. This is often the case with information that doesn’t have any meaning for the person remembering it. For example, we don’t “learn” our passwords, we just remember them.

If learning is about realizations and memory, it’s easy to see how those two elements relate to course development. It’s our job as a teacher to design the realizations. We decide which ideas to teach, consider how they fit into students’ existing knowledge structures, and explain them clearly and simply. But how do we make sure that our students remember these realizations? It seems like our memory isn’t under our direct control. We remember silly advertising slogans and forget the names of people we work with every day. So what is it that we remember?

As the cognitive scientist Daniel Willingham puts it, “memory is the residue of thought.” It doesn’t matter what the teacher wants the students to remember or what the students try to remember because it might be tested. Whatever they thought about during a session is what’s going to end up in memory.

 

For teachers, this means that we have to consider carefully what students are going to think about in every part of our course. Consequentially, we have to get rid of any challenges that aren’t related to the material at hand. Assignments pose a real danger to this approach because they frequently come with hidden tasks that distract from their original purpose.

Imagine an assignment where you ask students to model the economy of World of Warcraft in Machinations (a tool to visualize and simulate resource flows) and present their findings to the class. This assignment comes with four hidden subtasks: figure out what World of Warcraft is, analyze its systems regarding the exchange of resources, learn how to use Machinations, and design a presentation. Your students could be thinking about World of Warcraft, its economy, Machinations, or PowerPoint, and whatever they thought about most is what they’re going to remember. If the goal was to deepen students’ understanding of game economies, this assignment failed miserably.

 

One problem of game development programs is their reliance on digital assignments that often require students to familiarize themselves with specific software. This can become an issue, especially for game designers because they use tools as means to an end. A 3D artist might use Blender to learn 3D modeling in Blender. A designer might use Blender to create models which are then used to practice level design or set dressing. However, it’s questionable whether the designer learned more about modeling or level design in the process. The same issue arises with assignments that require students to build digital prototypes to apply a certain design concept in practice. Is the student thinking about the game design concept or are they dealing with Unity’s input system, prefabs, and null pointer exceptions instead?

Reducing an assignment to its core means taking into account all the underlying steps that make up the exercise and getting rid of any tasks that divert the students’ thoughts away from the subject matter of the assignment.   

 

My three-hour session on player guidance included a practical group assignment in which students sketched out a level for a digital game and then applied guiding techniques to lead the player towards the goal of the level. The exercise was described in the following way:

The purpose of this assignment was to get students to think about elements of player guidance in the early stages of level design and make them consider which guiding techniques are appropriate in a given context. There were three things I did to reduce this assignment to its core:

First, I decided to focus on the planning phase of level design. The assignment could’ve been about creating a small level blockout in a game engine. However, this would mean that students spend most of their time figuring out how to make level blockouts in Unreal or Unity, setting up a basic character controller, and playtesting the level. The chance that they’d remember anything about player guidance is fairly low. By asking for a level sketch instead of a playable blockout, hidden tasks are minimized and player guidance becomes the focus of the assignment.

Second, students were free to choose which software to use for the level design sketches. The idea was that the students would go with the tools they’re most familiar with already. In doing so, they’re reducing the time in which they’re thinking about software instead of game design to a minimum. Also, it was up to the students to decide what kind of game would be the base for their level design. If I had specified the game type (e.g. “design a level for a Metroidvania game”), the students who are less familiar with that genre would’ve been required to do some research before they could attend to player guidance.

Third, I broke down the assignment into three consecutive steps: sketch out a level layout, define critical paths, optional paths, and the golden path, and add elements of player guidance along the golden path. This step-by-step instruction helped students organize their approach to the exercise, but it also forced me to consider all the subtasks that make up the assignment and ensured that there were no unknown hidden tasks that the students would have to engage in.

 

There’s a second layer to reducing an assignment to its core that is different from removing unnecessary obstacles: a well-designed exercise reflects the nature of the discipline you’re teaching—its core so to say.

For me, game design—and design in general—comes down to this: creative problem-solving within a set of constraints. There’s a problem to solve or a question to answer (e.g. “How do we make sure players don’t get lost in this massive open world?”), you generate ideas to figure out a solution (e.g. “There could be travelers that provide you with directions”), and those ideas are tested against certain restrictions (e.g. “We don’t have enough time to model additional characters”). Game design assignments that approximate this process exemplify the core of the discipline itself.

 

The instructions you’ve seen before only constitute one half of the player guidance assignment. The more interesting part was that every group received a level theme and a guidance constraint for their level layout. The level themes roughly defined what kind of place their level should resemble (e.g. a temple).

The guidance constraints were conditions that had to be considered when deciding which guiding techniques might be implemented (e.g. you don’t want players to notice the guiding elements).

Let’s say our group received “abandoned factory” as the level theme along with the following constraint: “The art director reminded you of the minimalistic approach to this project. Use as few different elements as possible.”

We now have a problem to solve: how can we guide the player effectively without using a lot of different elements? Essentially, this problem poses a question about the nature of various guiding techniques. Which guiding elements have the strongest impact on their own? That’s the question we have to answer.

The level themes serve two different functions. On the one hand, they help the students overcome the digital blank page. It’s difficult to get started with the creative process when you’re free to do whatever you want. Knowing that you have to create an abandoned factory triggers associations with your mental representation of a factory and gives you a foundation for your level layout.

On the other hand, the level theme is a restriction imposed from the outside. You can’t change the fact that your final level has to resemble an abandoned factory. When you generate ideas to solve the problem introduced by the guidance constraint, you have to check whether it makes sense in the context of a factory environment. For example, a landmark is a guiding element that has a strong impact just by itself. However, factories are known for their uniformity. Is it reasonable to integrate recognizable structures into an environment like this? Another problem for the students to solve.

 

Ultimately, reducing an assignment to its core breaks down into two aspects: eliminating any challenges that distract from the purpose of the assignment and designing our exercises to resemble the nature of what we’re trying to teach. If students remember what they think about, it’s our job to control what these things are.

 

Rule 4 – Keep breaks, cut content

One of the trickiest aspects of course development is scheduling. Should you spend 20 minutes or 40 minutes on the introduction? How much time do you reserve for assignments and group discussions? How many breaks do you need and when do they make sense? These are complicated questions, especially because they come with an element of uncertainty. How do you know whether your introduction will take 15 minutes or 25 minutes? Maybe you have to repeat some points because the students didn’t get them the first time. Maybe you come up with a better example than the one you originally planned. Maybe the students’ discussion is quite productive and you don’t want to bring it to a sudden end.

The reality is that whatever schedule you come up with, you can be certain it won’t turn out that way—no plan survives first contact with the enemy. First contact with your students in this case. A good rule of thumb is that lecture segments often turn out shorter than expected, whereas interactive segments consume more time than expected. However, being aware of this guideline doesn’t make scheduling much easier, your time estimates will still be off by quite a bit.

 

Planning is hard. You’ll probably end up having prepared more content than you can teach in the arranged timeframe. When encountering this situation, inexperienced teachers default to one of two workarounds: cutting breaks or talking faster. It’s an understandable reaction. You put a lot of time and effort into the preparation of the course, cutting content would mean that you wasted valuable resources for nothing.

The problem is that the two alternatives—cutting breaks and talking faster—come with immense costs that lower the quality of the whole course.

Getting rid of your breaks means exceeding the cognitive limitations of your students. As a consequence, they become less energetic, active, and attentive. They’ll zone out to empty their capacities. It’s shocking how little our bodies care whether or not a professor has given them permission to take a break. Teachers aren’t much different from students in that regard. They need breaks just as much as any other person and if they don’t get them, the quality of their teaching takes a significant hit.

Talking faster leads to a shallow comprehension of the entire material. Every presenter knows that a slow, loud, and clear way of speaking is the key ingredient to a convincing delivery. Just ask yourself what you’d prefer: a teacher who rushes through five different topics in less than ten minutes or someone who takes their time to explain a single essential point, illustrates it with several examples, and repeats it to facilitate memorization.

 

As we can see, cutting breaks and talking faster aren’t viable options. They drag down the quality of the entire session. It seems like we have to find another solution to the scheduling problem, one that doesn’t rely on workarounds with undesirable consequences.

To start with, we must treat breaks as central elements of our sessions and integrate them into the scheduling process. It’s much easier to skip breaks if you’ve never planned them to begin with. In The Workshop Survival Guide, Rob Fitzpatrick and Devin Hunt even advise to “add the breaks before designing the content.” Put in the breaks first and arrange the content around them. People need a break roughly every 60-90 minutes. If you’re teaching a three-hour session, you could aim for two content segments and a break of 15 minutes in the middle or three shorter segments separated by two breaks of 10 minutes each. No matter which option you choose, designated breaks are now an integral part of your session and your students’ mental capacities will thank you for that.

We can also account for the unpredictable nature of teaching by adding what Fitzpatrick and Hunt call schedule springs. These are flexible segments in your session that can easily be shortened or stretched depending on how much time is left. Q&A is a good example of a flexible segment. You can reserve 20 minutes of your session for Q&A but if you end up running a little late, you can simply make it 5 minutes of Q&A to finish on time. And because you never planned the content of the Q&A in advance, you’re not losing something that took time and effort to create.

The final trick to save our schedule is to prepare optional sections. These are parts of the course that are related to the subject matter but that aren’t necessary to understand the material. They’re nice to have but the course doesn’t fall apart if they’re missing. With an optional section prepared, you can decide on the fly whether there’s enough time to cover the material or whether it’s better to skip this segment for the time being. Optional sections work best towards the end of the session, that’s when you can tell whether you’re still on time or whether some parts have to be cut. If you include optional content at the beginning, you run the risk of having to skip more important topics later down the road.

 

When I prepared my session on player guidance, I knew that a lot of time had to be dedicated to the group assignment—about 80 minutes in my estimation. Putting in the breaks first, I ended up with the group assignment framed by two breaks of 10 minutes each. That gave me two additional segments: one from the start of the session to the first break and another one after the second break until the end of the session. With two smaller breaks instead of one big break, it was clear that each of the additional segments shouldn’t take longer than 60 minutes. After splitting up the longer parts into multiple subsegments and moving them around until I was happy, I ended up with the following schedule:

As you can see, the session ends with 20 minutes of discussion. This includes 10 minutes that I reserved for a Q&A as a flexible segment. In fact, I had to shorten the Q&A drastically to finish on time, but that’s precisely the purpose of a schedule spring.

The final lecture segment of the course also included a case study of the action-adventure game Ghost of Tsushima and its unique approach to player guidance in open worlds. I always thought of this part of the session as a nice bonus rather than a critical part of the course. When I finally got to this segment, there wasn’t enough time left, so I skipped it completely to focus on other topics that were more relevant to the students. Later, I recorded a version of my session for documentation and included the optional section. Students who felt like they missed out on something important could simply watch that part of the session on YouTube.

 

If there’s one secret to time management, it’s good preparation. Plan your breaks carefully and resist the temptation to skip them when you’re running late. Skip content instead and even better, add flexible segments and optional sections that are designed to be cut if the need arises. Keep breaks, cut content.

 

Rule 5 – Provide directions for self-study

Too much content to teach, too little time to cover all of it. That’s one of the eternal problems that educators have to grapple with and it’s even worse in higher education where teachers are given a handful of semesters to cover complex topics in sufficient depth.

Expert game designers know that it takes years to internalize the basics of the discipline and that there’s always something new to learn, even after decades of experience as a professional designer. If that’s the case, how are you supposed to give students a comprehensive explanation of game design—or even a smaller subfield like level design—in a 90-minute session? The short answer is that you can’t.

 

Fortunately, university doesn’t only consist of lectures and classroom discussions. Students are expected to engage in self-study and deepen their understanding of certain aspects of the subject matter on their own. However, self-study without any guidance can quickly turn into a tedious and even counter-productive learning experience. For example, students might seek out resources that confirm their existing misconceptions or they might encounter material that’s incompatible with the information presented in class.

Even though these dangers are significant, teachers are perfectly equipped to cope with them and turn self-study into a productive process by providing directions to the students. Research is a large part of course development and good educators are well-versed in the literature on the subjects they’re teaching. They can help students formulate the right questions for self-study, point them toward useful resources, and make sure they encounter different ideas in a logical order.

 

If you want to provide your students with directions for self-study, start your preparation in the research phase of course development. Think about all the resources you went through and mark the ones you found particularly informative and comprehensible. Compile your favorites into a list of recommended resources and consider how they build on each other. Then, when it comes to teaching your course, reserve some time at the end of the session to present your recommendations, point out who’d benefit from them the most, and explain how the material relates to what you’ve covered in class.

 

In my video lecture about feedback loops, I started with an explanation of the basic idea of a feedback loop and the distinction between positive and negative feedback loops. After talking about the opportunities and dangers of each type, I described the common effects that feedback loops produce in digital games. In addition to that, the lecture also included two case studies to show how specific games use feedback loops and which dynamics they create during gameplay.

I finished my lecture with a list of recommended resources for self-study: a chapter from Rules of Play: Game Design Fundamentals by Salen and Zimmerman, two chapters from Advanced Game Design: A Systems Approach by Michael Sellers, an appendix to Future Ready: How to Master Business Forecasting by Morlidge and Player, and How Games Use Feedback Loops, a video essay by Game Maker’s Toolkit.

Then, I pointed out how these resources connect to the structure of the lecture:

Rules of Play has a chapter on games as cybernetic systems that explains the concept of feedback loops and the two types in a comprehensible way. It dives deeper into what I’ve covered in the first part of the video. The book appendix complements some of my thoughts on the dangers of unregulated feedback loops and stresses the importance of a balance between positive and negative feedback. The third part of the lecture—the description of the common effects of feedback loops in games—is supported by the content of the video essay. Lastly, Advanced Game Design has multiple chapters that examine the influence of feedback loops on game dynamics and game economies. The ideas in the book are closely linked to the case studies of popular games that were central elements of the lecture.

Connecting the recommended resources to different parts of the course also allowed me to point out who’d benefit the most from any given material. I could simply say something along these lines:

“I bet there are some of you who’ve grasped the basic idea of feedback loops but still struggle with identifying them in video games. In that case, take a look at How Games Use Feedback Loops by Mark Brown. He gives several examples of well-known games that make use of feedback loops and also talks about the problems they might cause and how to fix them.”

 

No matter how good you are as a teacher, you won’t be able to explain everything there is to know about a certain topic in 180 minutes. That’s okay, it’s not something we should aim at in the first place. Perhaps it’s our job to pique the students’ interest in a subject, introduce them to some of the fundamental ideas of the field, and provide them with enough guidance so that when they decide to dig a little deeper on their own, they don’t end up more confused than they used to be. Maybe that’s what teaching is about. It’s a realistic goal at least.


Related Jobs

innogames
innogames — Hamburg, Germany
[06.17.21]

Concept Artist - New Mobile Game
Gameloft Australia Pty Ltd
Gameloft Australia Pty Ltd — Brisbane, Queensland, Australia
[06.15.21]

Lead Game Designer
Yacht Club Games
Yacht Club Games — Los Angeles, California, United States
[06.15.21]

Mid-Senior Game Designer
Hinterland Studio Inc.
Hinterland Studio Inc. — Vancouver/Victoria, British Columbia, Canada
[06.15.21]

Systems Design Lead (Co-Op, Online, New IP)





Loading Comments

loader image