• No results found

Game Programming CS233G / Winter 2012 / PCC

N/A
N/A
Protected

Academic year: 2021

Share "Game Programming CS233G / Winter 2012 / PCC"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

Game Programming CS233G / Winter 2012 / PCC

Portland Community College

Sylvania Campus, Technology Classroom Building (TCB) room 310 Instructor: Phillip Kerman

Telephone/Messages: 503-449-6701 Email: [email protected]

6:00pm – 8:50pm, Tuesdays 10th of January through 20th of March Web Site – http://www.phillipkerman.com/pcc/games

(where you’ll find--among other things--a PDF version of this syllabus) NOTE:  Don't just read the notes. That is, do read the notes but don’t read only the notes.  NOTE:  The Course Content and Outcome Guide (CCOG) for this course currently online was written for a  different course and is therefore out of date:  http://www.pcc.edu/ccog/default.cfm?fa=ccog&subject=CS&course=233G 

Course Content

Even though the course you'll be attending is not far from the CCOG above, I'd still prefer you consider  the following as the actual content and intended outcomes for this course:  Object‐oriented architectures and software design patterns used for game production. Students use  ActionScript 3 to solve a variety of programming challenges facing game programmers, including:  ‐‐designing and using data structures for user tracking/restoring as well as time/date maneuvers,  ‐‐graphical APIs (Application Programming Interfaces) for dynamic vector and raster drawing, and  ‐‐appropriate and practical architectural decisions including whether to use third‐party code libraries.  In addition, students will research and survey a variety of third‐party code libraries to help with things  like tweening, 2D, or 3D, as well as entire game frameworks. Such research reinforces the concept of  having to constantly learn new topics.  Students are welcome and encouraged to also study how  HTML5/CSS3/JavaScript is solving similar tasks once unique to Flash.   A strong emphasis is also placed on students building code that will necessarily be re‐written  (refactored) multiple times on its way to exhibit good architecture.  That is, you'll have to throw away  code you write as you improve it.  By understanding you’ll necessarily be refactoring helps you avoid  spending an inordinate amount of time planning, designing, and optimizing all in an attempt to produce  perfect code which, in reality, is never finished because it can never live up to the expectations.  Give  yourself permission to make bad code—in fact, I require it (you’ll turn in early revisions). But then, go  back and improve what you’ve made.  During their exploration of game programming students will naturally encounter (and resolve) a wide  variety challenges which are less "code‐based" such as language and communication.  For example, I  place a high value on students’ ability to discuss the subject matter. Each student is required to maintain 

(2)

a list of vocabulary they’ve learned during the course. Additionally, I’m grading students on their  involvement during discussions(both in writing via email and the mypcc discussions for this course as  well as verbally in person).  Expect to look at each exercise and project from multiple perspectives.  You  should:  ‐‐actively participate in lectures and discussions.  ‐‐do some work in lab while teacher is present.  ‐‐do more work outside of the class—ideally including some time working with others.  ‐‐do still more work researching topics as needed.  ‐‐present some assignments to entire class.  ‐‐get inspired to build code beyond the exercises, projects, and assignments from class.  ‐‐pretend you love the class even if you have to lie to yourself.  Is this class right for you?  The prerequisites for this class are general but I expect one of two types of  students: 1, you’ve got some programming experience (ideally a language that’s object oriented like  Java or C++ or C#) but you’ve got little or no experience with Flash/ActionScript…or, 2, you have basic  Flash skills and want to become more advanced—for example, you may have taken the courses MM240  and MM241.  If you’ve never done ActionScript 3.0 (AS3) then expect to get up and running very quickly.  The good  news is you can see results very quickly—and it’s possible to do all the coursework with 100% free  software.  I’ll provide additional resources and screencasts that can help you get started. You will need  to get your workspace set up and this can be a bit of a chore.  Skills doing Object Oriented Programming  (OOP) will make the transition to AS3 very easy.    If you’re here to advance your Flash skills, you might be shocked by the strong emphasis on OOP.  Plus,  while everyone is welcome to use “Flash Professional” (the authoring tool) the best coding tools are  nearly any other tool—so we’ll spend all our coding outside Flash Professional.  You might need an OOP  crash course and luckily I have resources to help you too.  For everyone, remember that when learning something new… anything at interestingly complex… it’s  likely that you’ll feel disconnected and as if you don’t know anything… at first.  That’s a normal feeling.  NOTE:   Because the end of this week is the last day to drop, it's important that you understand what this course  is all about.  I'll attempt to clearly communicate that during the first class session.  I'm certainly not  trying to scare you because I believe this course will be one of the most fun programming classes you’ll  ever take. (I know that most of the student who completed the course last year found it very fun.)    NOTE:  I suggest planning on studying for 4 to 8 hours each week (in addition to the 3 hours in class).  It's best  to break this up into many small or medium sessions and to take a variety of approaches to the work.   Perhaps invest 1 hour before each class discussing with another student.  Or force yourself to research  and answer one or more question you encounter every week.  There are many resources that can make  this interesting such as simply reading from the ActionScript 3 Language Reference. (Be careful not to 

(3)

fall into the trap of spending countless hours following mediocre or just plain bad online tutorials or  videos. I'll be glad to review any you find if you want my feedback.) 

Course Outcomes

Upon completion of this course, students should be able to:  ‐‐Assess and specify programming tasks.  ‐‐Refactor code—especially your own code.  ‐‐Describe and build a game framework (not so much "build a universal framework" but more "make a  framework that you can use for a specific project").  ‐‐Describe and implement code related to many of the ActionScript classes and packages… most notably  flash.display, flash.geom, flash.net, flash.media  (and most of the top level classes—like Array and XML).  ‐‐Be comfortable and able to learn any additional unfamiliar classes from the ActionScript language.  ‐‐Describe and create custom datatypes or "value‐objects".  ‐‐Describe and build classes that extend display objects.  ‐‐Describe and build systems that load content at both runtime and build time.   

Course Content (Themes, Concepts, Issues and Skills)

  Demonstration of instructor's work including games programmed for MSN and MSN Messenger.    Listen to wisecracks and attempts at humor (mostly failing) from instructor.  Take practical and realistic approaches to problem solving.    Attempt a solution, re‐analyze, and then re‐build.  Clearly describe problems and systematically design solutions.   

Schedule Overview

Course overview.  AS3 basics/display options and class architecture.   Designing data structures for user tracking.    Scaffolding/stub code, prototyping. Common maneuvers using String,  Date and Time, and Bitmap/Vector display.    Specifying and scoping game projects. Dispatching custom events.  Build  infinite scroll, gravity features, and basic navigation.     Building custom vs. leveraging others' code. Use and study tween engines  and other libraries including frameworks. Explore performance  enhancements.    Students share framework research. Summary of course.   Final project TBD (to be decided).   

(4)

Assignments

“3 things”—Due at beginning of class every Tuesday  Before the class start time of 6pm, students must turn in (email or paper) and have available for  discussion a list of three specific things they learned during the previous class session including your  homework.  Note: these “things” must be stated in a way that I can confirm your understand a topic.   That is, don’t just say “I learned about events” because I can’t say for certain if you are correct or not.   You need to state the “thing” in a way that takes a stand on a topic.  Often it will be more specific.  For  example, you could say “I learned that events are just strings—though every event name has a static  property you can use”.  That’s clearly either true or false. This example happens to be correct—but it’s  totally satisfactory for any or all of you “things” to be wrong (as long as they’re stated properly).  Often  students will leave out details or state something incorrectly.  The purpose (and value) of this  assignment is that I can address very early any miscommunication/misunderstanding.  Homework presentations due in class as assigned (about every other session):  I will periodically assign homework about which you will need to present, turn in, or complete a quiz  (depending on the assignment details).  NOTE: at least one assignment will involve you presenting in  front of the whole class.  Vocabulary:  Each student will collect a list of vocabulary words acquired during the course related to ActionScript  programming as well as programming generally and the games industry (or at least the casual and online  game industry with which I'm most familiar—but you're welcome  to expand to any corner of the  industry). You must send me all the terms/words (and your definitions for each) and I will provide  feedback.  It’s possible that you may know many of the terms that come up in class—that’s fine. Either  way, however, you’ll be prepared for the vocabulary quizzes later in the course.  I doubt very much that  any attentive student will find any terms to be completely unfamiliar (that is, you’ll recognize every term  that I quiz you on).   In‐Class Exercises:  There will also be additional exercises assigned during class where I will want to review your code.   Sometimes this will be as easy as letting me just see where you're headed on a task.  Other times you'll  have to email me the code you complete outside of class.  Often I'll make you re‐do the work multiple  times to improve upon your code.  NOTE:  it's best to attend class to learn of these assignments— however each week by midnight on Thursday (or before)  I'll post all assignments to the following  website.  You can't pass this class without attending the sessions however the assignments will be  clearly posted at www.phillipkerman.com/pcc/games.    NOTE:   The page above won't win any awards for visual design or even usability—however if you simply read  everything you will find details for every assignment.  NOTE: no student should find the workload for this class insurmountable—provided you have the  interest and time to invest into this class.  It's quite possible that I reduce some of the requirements or 

(5)

even make up alternatives more appropriate to how our course develops.  I want this document to  accurately represent expectations for the class—but I'm also a very practical human and adaptable.   Keep in mind, this is simply my plan. It will likely get adjusted as the course progresses.   

Detailed Schedule

Weeks 1 & 2  Lecture: Class format, course overview, and "Being a Programmer"  Demo: Two games I've built: Spot‐the‐Difference and Tic‐a‐Tac Poker  Lecture: AS3 Overview including ways to make a .swf, ways to display content, and how to use the  language reference docs. Also, I'll point to additional resources for learning OOP, ActionScript, and Flash.  Exercise: Save/restore many objects.  Exercise: Homemade tween  Weeks 3 & 4  Lecture: Prototyping, stub code, and "The Lazy Programmer"  Demo: Jigsaw and prototypes.   Exercise: Timers  Exercise: Strings to express numeric values.  Exercise: Dynamic graphing.  Weeks 5 & 6:  Demo: Multi‐user projects (meeting software, cattle auction, MSN Messenger games)  Demo: Randometer, HP Timeline   Lecture: Dispatching custom events.  Exercise: Infinite scrolling  Exercise: Gravity 

Grading Policy

My assessment of student comprehension and ability involves a variety of methods.    Attendance:  I take role and consider attendance to be a critical part of completing the course. "90% of success is just  showing up."  If you miss a little bit of class it won't necessarily cause you to fail but I doubt very much  any student can learn the necessary content without attending most all the sessions. Try to avoid traffic  accidents just to arrive on time—if you miss a little bit here or there you'll probably be fine.  Unless you  already know the subject matter from class (which would be odd because taking this class would  necessarily be a waste), then do plan on attending each class.  In‐class participation:  I know that students who actively participate get a lot more out of my classes.  Try NOT to simply look at  the subject matter and determine what parts I want you to learn.  Rather, try to learn all you can about  what I am covering.  Part of your challenge will be to decide what NOT to study.  That is, only given all  the time in the world can you learn "everything".  We don't have all the time in the world so you'll often  need to make the tough decision to stop studying (say, to sleep or move on to other topics). 

(6)

Written and verbal communication:  Chances are none of us are savants in the field of game programming. But no matter what field you  pursue in life, you'll be more successful if you can communicate to others.  For me, I find the best way to  judge your ability as a student is for me to consider how you talk and write about a subject.  That is, you  can't just turn in beautiful code with no comments and expect a good grade.  Assignments, exercises, quizzes: I'll provide prompt feedback for every assignment you turn in.  However, I do not have a mathematical  formula whereby you can calculate your grade by adding up all your results.  When grading I usually find  there are three groups of students: 1) obvious A students, 2) obvious D/F students (Fs for those who  aren't present), and 3) the B and C students—which are the hardest for me to grade.  It is with these B  and C students which I apply an arbitrary but measured system that effectively applies a "curve".  That  is, I take these students and find specific reasons why one should receive a C (maybe they missed an  assignment) or another should receive a B (perhaps they did better on all the quizzes).  You will get a  better grade if you’re simply an active participant in class (participate in discussions etc.). Because I  mentioned the curve—be certain that I have no problem grading every student with an A.  Extra Credit and Makeup  In my years of teaching I found it appropriate only once to let a student do extra credit work and don't  expect to see it happen again.  It's much more rare than a total eclipse of the sun. 

Required

A backup system such as a flash media drive or web storage.  Better yet—use an off‐site version control  software such as GIT or subversion.  "The file got deleted" is not an acceptable excuse for missing an  assignment.  Plus, you should want to keep some of your files. 

Find additional resources at:

www.phillipkerman.com/pcc/games

 

References

Related documents

Between each input/output of these 28 channels, a shift register (86 DFF) is inserted. D2 uses three copies of a TMR’d SR with no triplication of the clock signal, i.e. nine

Within three (3) months following the end of the financial year the Head of the Directorate General shall submit the annual financial report to the supervising

We found that an inhomogeneity along the plane of the 2D topological insulator can lead to different Rashba spin-orbit coupling strengths (two different momentum-dependent

Randomized phase II study of two schedules of topotecan in previously treated patients with ovarian cancer: a National Cancer Institute of Canada Clinical Trials Group study. von

Pero ya se comprenderá que para el pensador francés no todo arte tiene este poder, en realidad un arte tal se torna cada vez más escaso, en la medida en que parece agotarse en lo

28) Kegg Pathway database search. http://www.genome.jp/kegg/pathway.html 29) MetaCyc Compound Search.. 31) Race I.M., Styles I.B., Bunch J., Inclusive sharing of mass

Northbrook Court is nearby This building was awarded an Energy Star label in 2009 for its operating efficiency.. This building was awarded an Energy Star label in 2010 for its