The following resources come from the 2009/10 BSc in Games and Graphics Hardware Technology (course number 2ELE0074) from the University of Hertfordshire. All the mini projects are designed as level two modules of the undergraduate programmes.
The objectives of this module are to demonstrate, using the PlayStation® 2 SDK:
• Knowledge of PS2 registers, graphics, sound, IO architecture, EE, GS and VU’s
• Graphics programming.
This project will investigate the PlayStation® 2 through use of the Linux SDK. The project will involve the completion of a 2D game to explore the architecture of the PS2.
2. Mini Project- Games Hardware
Section 1. Project Introduction
1. Learning Outcomes assessed (as taken from the DMD)
All Learning Outcomes specified in the Definitive Module Documentation are assessed as part of this
miniproject, the specific Learning Outcomes are:
Knowledge and Understanding
• Be able to analyse and breakdown problem tasks into manageable steps.
• Integrate previous and concurrent learning and to use it to solve technology-based problems.
• Be able to describe the project life-cycle appropriately.
• Be able to select appropriate Games and Graphics Hardware Technology and techniques for a given
situation.
Skills and Attributes
• Produce a solution to a defined Games and Graphics Hardware Technology problem.
• Carry out a simple critical evaluation of their solution.
• Demonstrate an ability to work effectively in a teams, small groups and individually.
• Demonstrate an ability to manage time and resources effectively.
2. Project Title: Games Hardware
3. Project Objectives: (technical, specific to this project)
Demonstrate, using the PlayStation® 2 SDK:
• Knowledge of PS2 registers, graphics, sound, IO architecture, EE, GS and VU’s
• Graphics programming
4. Project Summary: (50 words max)
This project will investigate the PlayStation® 2 through use of the Linux SDK. The project will involve the
completion of a 2D game to explore the architecture of the PS2.
5. Introductory Lecture (2hrs) Content:
i. PS2 architecture
ii. Linux and the PS2 SDK
iii. PS2 development (C and assembly overview)
6. Preparation Session (3hrs):
i. PS2 SDK familiarisation
7. Day 1
Expected Outcomes for the day:
The students will be given skeleton game code, providing the complete infrastructure for a basic PS2 game.
They will be required to modify the code to construct a working game which meets a given specification. As
the project progresses, students will be encouraged to edit function code to investigate whether
performance enhancements are possible by altering the code to make better use of the PS2 hardware
resources.
Assessment criteria: How methodically the work has been planned, implemented, and tested; the extent to
which the game functionality meets the given specification; any alterations made to the code to enhance
performance.
Key Tasks:
• Construct game to meet specification
Page 2 of 7
3. Mini Project- Games Hardware
• Demonstrate game and answer questions to demonstrate understanding
8. Day 2
Expected Outcomes for the day:
Students will be given extensions to the Day 1 game scenario following on from the basic game achieved on
day 1. Once correct functionality has been achieved, students will be encouraged to enhance the
performance of the game by structuring the code to maximise usage of the underlying hardware eg small
loop structures, correct texture sizes.
Assessment criteria: How methodically the work has been planned, implemented and tested; the extent to
which the functionality of the game meets the given specification; any alterations made to the code to
enhance performance.
Key Tasks:
Extend game to achieve functionality of complex scenario (basic game will be given to any who have not
managed to complete this yet so that they are not disadvantaged today)
• Investigate whether performance can be enhanced and if so, make alterations to code
• Demonstrate game and answer questions to demonstrate understanding
9. Facilitator guidance (key ideas to draw out from students):
Day 1: Value of a methodical approach, game i/o structure, relationship between software and hardware
resources
Day 2: texture cache thrashing, instruction cache limitations.
10. Required Resources: Laboratory Facilities and Teaching Support.
Laboratory Resources:
For each student: PlayStation® 2 with SDK networked to single PC, Monitor.
Page 3 of 7
4. Mini Project- Games Hardware
Section 2. Project Day 1 Brief
You will create a version of the classic video game Space Invaders, based on the example code provided.
This game, released in the late 1970's was one of the first arcade games to come widely popular, and is still
used as a programming exercise for new programmers joining games companies.
If you are unfamiliar with the game, a Flash based version can be played here:
http://www.freespaceinvaders.org/
The idea of the game is that you control a small space ship or laser canon at the bottom of the screen, and
are required to shoot the invaders coming down from the sky, while trying to avoid their missiles/lasers
coming down at you.
The invaders move sideways across the screen together, and when one reaches the edge, the invaders all
move down a space and then move back across the screen in the opposite direction. Eventually the invaders
will get to ground level and you will lose. A single hit on an invader will destroy it. A single hit of an invader
missile/laser on you will cost you a life.
Small shelters which are gradually destroyed by alien (and your) missiles help you evade the invaders’
missiles.
You gain points for destroying the invaders, and the speed of movement of the invaders increases during the
game. You can gain additional lives by scoring points, but initially have 3 lives.
In the original game, an additional red ship occasionally traverses the top of the screen, and is worth further
points if destroyed.
Once all invaders are destroyed, the game starts again, but with the alien ranks starting lower each time.
Your task is to implement a copy of this game, using the available tools, and extending it to include further
variations (the original game has many later variants). You are not required to implement sound.
Day 1 Game Requirements Specification
The level should contain at least three rows of nine aliens each at the start of the game, one space ship at
the bottom and at four shelters/bunkers.
Aliens must move correctly in the way described above, gradually descending to the bottom of the screen
The game pad left and right buttons should move the space ship left and right across the bottom of the
screen, but not off the screen (i.e. its movement should be limited). The space ship should not be able to
move in any other direction.
One of the buttons on the right hand pad should be used to fire missiles vertically up at the aliens. Only one
bullet at a time can be fired at the aliens (i.e. the next missile cannot be fired until the last one has
disappeared/exploded).
If the missile hits an alien, both should be destroyed, i.e. disappear and add to the points score.
Hits on the shelters should gradually destroy them, and missiles should not pass through until the shelter is
destroyed.
Aliens should fire missiles vertically down at the space ship. This should use random numbers to decide
when.
If an alien missile or an alien hits the space ship it should be destroyed, and a life taken off.
Page 4 of 7
5. Mini Project- Games Hardware
Section 3. Project Day 2 Brief
Day 2 Game Requirements Specification
The level should contain at least three rows of nine aliens each at the start of the game, one space ship at
the bottom and at four shelters/bunkers.
Aliens must move correctly in the way described above, gradually descending to the bottom of the screen
The game pad left and right buttons should move the space ship left and right across the bottom of the
screen, but not off the screen (i.e. its movement should be limited). The space ship should not be able to
move in any other direction.
One of the buttons on the right hand pad should be used to fire missiles vertically up at the aliens. Only one
bullet at a time can be fired at the aliens (i.e. the next missile cannot be fired until the last one has
disappeared/exploded).
If the missile hits an alien, both should be destroyed, i.e. disappear and add to the points score.
The lives of the spaceship should be displayed as in the example.
Additional Hits on the shelters should gradually destroy them, and missiles should not pass through until the
shelter is destroyed.
Aliens should fire missiles vertically down at the space ship. This should use random numbers to decide
when.
If an alien missile or an alien hits the space ship it should be destroyed, and a life taken off.
PS2 Brief – Day 2 Specification
Further requirements:
Alien movement should accelerate during the game.
An additional occasional alien traversing the Screen worth a large number of points
Display the number of lives left as pictures of the space ship.
Add variations to the alien missile movements:
1) a zig-zag pattern as they descend.
2) a following mechanism where alien missiles move sideways towards the space ship as well as
downwards.
Page 5 of 7
6. Mini Project- Games Hardware
Section 4. Basic PlayStation2 Game Editing Instructions
Introduction:
The best way is to work almost exclusively from the PC, using two different Telnet sessions (or more if you
like, e.g. for two different files being edited).
The steps:
1) Login on the PS2 (i.e. on the PS2 keyboard). From now on do everything on
the PC (apart from playing the game on the game controller).
2) On the PC: Run.. (from the start menu) then type cmd. In the command window, type telnet
192.168.0.2 and then login as assigned user name and password
3) In Telnet: navigate to the required folder using the cd command.
4) In Telnet: change to SuperUser mode (type su)
5) You may need to change the width of the command window on the PC - click on the top left menu,
select properties and the layout tab. Change the Window Size width (e.g. to 150).
6) In this Telnet session run vi to edit a particular file (e.g. vi main.cpp) - see vi help below.
7) Launch a second command window from the PC (i.e. Run.. from the start menu), and also Telnet into
the PS2, cd to the same folder and type su to change to SuperUser mode.
8) In this second telnet session, enter make to compile. If you have errors, a list of error messages will
appear on the screen. If you have lots of errors, type make 2>&1 | less which allows you to scroll up
and down to see errors with (e =down, y = up, q to exit).
9) If you get errors after typing make, you must not run the program before correcting them. Use Vi to
correct only the first error on the list, don’t worry about the other errors as this first one may be
causing the errors lower down.
10) Remake immediately (by typing make in the second telnet session) otherwise you could waste hours
looking at an error that doesn’t exist anymore.
11) Once you have got rid of all of the errors, type ./main in the second telnet window to run.
Page 6 of 7