IMGD 2900 Digital Game Design I Class 1: Thursday 10.25 Today’s topics Class orientation Course design and rationale An abstract microgame engine Assignments 1-3 What this class is not A course in building [genre] games A course in “level design” A course in game programming A course in creating game assets A course in writing design documents Easy What this class is Lehr und kunst Creatively challenging Fun Course structure A semi-studio course In-class: Lectures, demos, discussion, playtesting, critiquing, journaling Out-of-class: Projects (many) and more journaling Course structure You will be designing and building games. Lots of them. You will be programming, but only game logic, no hard math, graphics or 3D. You will not be producing any art (well, maybe one or two pieces). Final exam Last day of class (12.13) Based solely on in-class lectures Take notes in your journal or fail Recommended background IMGD 1000, Critical Studies IMGD 1001, Game Dev Process CS 1101 / 1102, Intro to Program Design or CS 110X, Intro to Programming for Non-Majors Things you require Books I recommend Course web site users.wpi.edu/~bmoriarty/imgd2900/ Complete official syllabus Updated course calendar Announcements Detailed assignments Electronic texts and documentation Other useful resources Use is essential and required Student assistant Owen Leach (oleach@wpi.edu) Available in IMGD Lab every Wednesday (1 – 3 pm) Also available in IMGD Lab tomorrow (Friday, 10 – 11 am) Always available via email Attendance Absolutely required 4+ classes missed = Automatic NR Email me ASAP if you will miss class Do not attend with flu/plague symptoms Grading Basic course objectives met = B Extraordinary effort, creativity = A Most objectives met adequately = C See course Web site for assigment weightings Emergencies I will announce cancellations by email as far in advance as possible Class is officially canceled if I am not here by 1:15 pm Courtesy Arrive at class on time Turn off phones and audio devices No distracting PC / laptop / mobile apps No extraneous conversations Academic honesty Do you own work Read and understand WPI policy Breach of ethics = Automatic NR Disabilities Visit the Disability Service Office See me ASAP Office hours Tuesdays Noon - 1 pm and 3 - 4 pm Thursdays 10 - 11 am By appointment: bmoriarty@wpi.edu Anytime door is open (often) Location: Salisbury 211 (IMGD Suite) Assignment 01 Choose a project partner Exactly two people per team Name your team Sit together for rest of course Assignment 01 (cont.) Make a team Web page Must include: Name of project team Names/logins of team members Link to main .html file of each project, beginning with Assignment 03 Must be readily accessible No password, subscription, malware Team Boring Mark Lazy (mlazy) Mary Idle (midle) Stupid Toy by Mark Lazy Lame Puzzle by Mary Idle Dissolving a team Before Class 6 (Monday 11.12) Set up a meeting with me All team members must attend Defend and negotiate Soloists are strongly discouraged and get no mercy! Assignment 02 Begin and maintain a creative journal Bring your journal to every class Submit on last day of class Used to decide edge grading cases Journal requirements Write your name on cover or first page Use frequently, and date every entry During or after every class After every reading assignment During or after every team meeting At least one substantial item per entry Be legible Nothing too private A vocabulary of game design Why bother? Lehr. Today’s vocabulary Play Toy Game Design Designer Game Designer What is play? What is play? “Work consists of whatever a body is obliged to do, and play consists of whatever a body is not obliged to do.” Mark Twain What is play? “Work consists of whatever a body is obliged to do, and play consists of whatever a body is not obliged to do.” Mark Twain Superfluous action What is a toy? What is a toy? Something that elicits play What is a game? What is a game? A toy with rules and a goal What is design? What is a designer? What is design? What is a designer? The process by which a designer creates a context to be experienced by a participant, from which meaning emerges. Designers create meaningful experience contexts. What is a game designer? Play = Superfluous action Toy = Something that elicits play Game = Toy with a rules and a goal Designer = Creator of meaningful experience contexts Game designer = Creator of meaningful experience contexts which elicit superfluous action with rules and a goal Designers learn by designing Designers learn best by directly experiencing the contexts they create. Kunst. Practice. Designers learn by iteration “Learning how to design iteratively is the single most important skill that a game design student can learn.” Salen & Zimmerman Game design is a second-order problem As a game designer, you can never create the play experience, only the context that elicits it. The players create the experience. Problem #1 Overwhelming preoccupation with production and presentation issues. Little focus on activity design. “The content of a game is its behavior, not the media that streams out of it towards the player.” Hunicke, LeBlanc, Zubek Problem #2 Game designers don’t get enough kunst. Not enough completed projects, too much time spent on each project. “Your first ten games always suck.” How to quickly get to Game Eleven? Problem #3 Digital game behavior is defined by code. “All desired user experience must bottom out, somewhere, in code.” Hunicke, LeBlanc, Zubek “Game designers” are losing touch with code; little actual authority. A tool for teaching functional game design Focus on rapid prototyping and iteration, expressed in real industrial code Usable by non-engineers: No advanced math, graphics, 3D, etc Usable by non-artists: No asset creation or pipeline issues A tool for teaching functional game design Industry-standard scripting language Small enough to run on a phone Powerful enough to make interesting, significant games Cloud-based, automatic updates Perlenspiel 2 An abstract microgame engine www.Perlenspiel.org “Art lives from constraints and dies from freedom.” Leonardo da Vinci “The absence of limitations is the enemy of art.” Orson Welles Grid Event-driven interchange Your first script Go to www.Perlenspiel.org Visit the Download page Copy PS2.zip into a personal folder and unpack it somewhere convenient Open the new PS2 directory and open game.js for editing Your first script Find: PS.Init = function () { "use strict"; // change to the dimensions you want PS.GridSize ( 8, 8 ); // Put any other init code here }; Your first script Change to: PS.Init = function () { "use strict"; // change to the dimensions you want PS.GridSize ( 8, 8 ); PS.StatusText( "Hello, world!" ); }; Your first script Find: PS.Click = function (x, y, data) { "use strict"; // Put code here for bead clicks }; Your first script Add: PS.Click = function (x, y, data) { "use strict"; PS.BeadColor( x, y, PS.COLOR_RED ); PS.AudioPlay( "fx_click" ); }; Using the reload icon Find: PS.Click = function (x, y, data) { "use strict"; PS.BeadColor( x, y, PS.COLOR_BLUE ); PS.AudioPlay( "fx_click" ); }; Using the debugger Find: PS.Click = function (x, y, data) { "use strict"; PS.BeadColor( x, y, PS.COLOR_BLUE ); PS.AudioPlay( "fx_click" ); PS.Debug( "x=" + x + " y=" + y + "\n" ); }; Adding glyphs Find: PS.Click = function (x, y, data) { "use strict"; PS.BeadColor( x, y, PS.COLOR_BLUE ); PS.AudioPlay( "fx_click" ); PS.Debug( "x=" + x + " y=" + y + "\n" ); PS.BeadGlyph( x, y, "P" ); }; PS.Init () PS.Click (x, y, data) PS.GridSize (w, h) PS.StatusText (“text”) PS.BeadColor (x, y, rgb) PS.AudioPlay (“sound”) PS.Debug (“text”) PS.BeadGlyph (x, y, glyph) Assignment 03: Build a toy or gizmo Build a toy or gizmo with Perlenspiel Journal as you design and code Post your toy before noon next Monday Bring your toy to Monday’s class Objective 1: Build a toy or gizmo Must meet definition of a toy or gizmo Must work without breaking Must be self-documenting Perlenspiel docs on web site Javascipt docs in ebooks, online Design must be yours alone Name your toy Report “engine bugs” ASAP Objective 2: Journal as you design/code Document your creative process Ideas, code fragments, sketches Journals will be inspected Objective 3: Post your toy before noon next Monday 10.29 Make sure it runs without crashing! Include title and author with link Team Boring Mark Lazy (mlazy) Mary Idle (midle) Stupid Toy by Mark Lazy Lame Puzzle by Mary Idle Objective 4: Bring toy to Monday’s class Use a USB flash drive Always, always keep a backup Need help? Consult etexts on course Web site Consult examples at perlenspiel.org Visit www.w3schools.com/js/ Teaching assistant will be in IMGD Lab tomorrow (10 – 11 am) Email him anytime with questions Really stuck? Okay to ask an engineer for help But give credit to any helpers! Toy design must be yours alone Perlenspiel archive Projects will be available on the Web for future classes to study You must explicitly release your code to the public domain // Released to the public domain Questions? Next class: Monday 10.29