Final Projects Are Up!

It’s been a great semester, and the final game projects for each group are now posted.  Unlike previous semesters, the final project was 6 weeks from pitch to final demonstration, which is a very small amount of time to build a game prototype (when you consider this is only one of many classes everyone is taking).

To the students in the class, you should be proud of what you accomplished:  I feel that this is the best overall collection of games I’ve had in CS4455.  And we’ve had some very good games in the past, too.

To everyone else, please check out the prototypes and let us know what you think.  Their task was to build a fun-to-play good-feeling game that had at least 60 seconds of fun: small, evocative of where it “might go” and enjoyable.

There are 11 groups, and their final builds are available here:

 final game builds

Please leave comments if you feel like it, and enjoy!

Some game design suggestions …

As I’m reading through some of the game design suggestions, I found myself saying similar things over and over. While this is not a game design class, since you are designing a game, there are some basics you should know. Some are in the books I on the syllabus. But, they are long and I understand you may not have time to read them all.

Here, instead, is a nice collection of advice from a well known designer, Ernest Adams.  Go skim it, it’s a good read!

Please think through your control schemes for the Web Player context!

I’ve run into a few proposed control schemes that really won’t work well in a web player, where the game is not played full screen.

In particular, if you are using the mouse as a directional control (e.g., my avatar is running around, and the mouse controls the direction they shoot), you shouldn’t use the mouse as your shoot button: the player will almost immediately move the mouse outside of the web player screen space, and will then select a different window when they click! If you are using the mouse for targeting (I shoot where I’m pointing) that is better, but then PLEASE make sure you structure your game so the player never ever wants to shoot near the edge of the game window!!

Similarly, do NOT use the secondary button for anything; that pops up the Unity web player menu.

XBox game controllers in the Unity Web Player

Folks, on your Project3 feedback, I’ve been encouraging some folks to consider using an Xbox game controller for their prototype (and game design).  I think an XBox usb controller works without modification on the PC;  on the Mac you need to install a driver.

I found a driver for OSX here. I’ve tested it on my MacBook Pro (with 10.8) and it works fine;  it works on older versions of OSX too.

I also found a little demo on the web that let’s you test the controller.  It shows what inputs Unity sees with your controller, so it’s a good test.  You can try it at http://dal-acm.ca/~dice/joytest/joystick%20test.html, and I’ve embedded it below for convenience.

Continue reading XBox game controllers in the Unity Web Player →

Some links from Game Architecture Lecture

Here are the two pages I showed during class today:

  • http://forum.unity3d.com/threads/19302-Scripting-Section-FAQ
  • http://wiki.unity3d.com/index.php?title=Event_Execution_Order

And, to repeat a critical message for understanding and using the variety of Unity callback methods:  MAKE SURE you carefully read documentation on each method!

Runner 2: testing and tuning, check out this short post

I mentioned the Humble Bundle in class, which inspired me to go play one of the games from the bundle that I hadn’t played yet.  The one I’d been wanting to play for a while is BIT.TRIP RUNNER, and I highly recommend checking it out and playing it with an eye toward the game feel ideas we’ve been talking about.

Poking around, I noticed the BIT.TRIP team are working on Runner2. Reading the blog, I saw a post on their dev blog about their playtesting, which is a nice short example you should look at.  While this focuses on things beyond feel  (primarily, this post talks about testing and level balance) it gives you a great example of the work you need to do to make a real game good.  In this example, they are playing through all the levels (likely  for the Nth time) and focusing on the progression of difficulty.

(As an aside, if you are making a game, a dev blog is a great idea, once you have things you want feedback on).

P2 available

I’ve reposted P2, and fixed the “duplicate dreamy” adjective that was on the list of qualities to aim at.  I also added a few more to the list.

Office hours updated on Syllabus, Slides and Examples posted

I’ve updated the syllabus to include my, and the TAs, office hours.

I’ve also uploaded the slides from today’s class, along with the same Unity project I was poking at during the end of the class.  However, please be aware that this is not an example of what we expect for P1, as described in the comment at the start of the script:

PLEASE NOTE:  This is ONLY an example of how to use the CharController Update and OnControllerColliderHit methods for this example.

It is NOT meant to be an example of the kinds of avatar behavior you should aim for in P1.  The motion of the avatar is INTENTIONALLY bad, serving only to show that you can really just use whatever inputs you want to control the motion of the transforms.

We recommend that instead of using simple checks on the values of the last moveDirection that you create a simple state machine (storing the state in a private class variable) and base your motion computations in each state with what you want that state to feel like.   For the Mario example in the book, states might include STILL, MOVELEFT, MOVERIGHT,  JUMP, STARTFALL, ENDFALL, LANDED.  A state might be started based on key input (press space), time (first .1 seconds of fall after apex reached), or collision (hit ground, hit wall, hit platform from below).

Think through your states, and how you can tell when they start, and how you compute their motion during the state.

Remember that Update is called frequently, and you should use Time.deltaTime to see how long its been since the last update.  By computing your desired motions based on time (e.g., I want the character to move XXX far during the first 0.1 seconds) and then monitoring how long it’s been in a state (e.g., adding Time.deltaTime to a counter that you initialize when you enter a state), you can create motion that behaves correctly no matter how fast it runs.

Beyond these obvious issues with the example as a model for P1, the sample contains to graphical elements to reinforce any compelling metaphor, and has no sound effects or other polish to provide feedback or tie in with the desired feel.   It does, however, give you a starting point on using the CharacterController for the first project.

Resource Suggestions?

In a comment on the “welcome to cs4455” post on the blog, one student made a suggestion of the book:

Unity 3.x Game Development Essentials, by Will Goldstone

I haven’t used it, but I appreciate the suggestion!  If anyone else has suggestions for Unity resources, please comment on this post, so others can see the ideas.

Simple Test of Unity Plugin

The blog has a Unity + WordPress plugin, so after publishing a game for web deployment, you can put the resulting file (in this case, bots.unity3d) on your webserver and point the plugin at it.  Here, I use the following (put inside square brackets):

WP_UnityObject src=”https://t-square.gatech.edu/access/content/group/82206.201208/blairTest/exampleP1-build.unity3d” width=”640″ height=”480″/

Continue reading Simple Test of Unity Plugin →

Welcome to CS 4455, Fall 2012

This semester, we will use this blog for the class.  See the links in the menu bar to find the Syllabus and Schedule, the assignments and projects, as well as policies on collaboration.

During the semester, you will post your projects to this blog, to allow other students to comment on them.  You should create yourself an account on this blog now, which can be anonymized if you prefer.