Make a client to play TerraTower
Group
- You may work in groups of 2-4
- If you check out a phone you must have a group of 3 or 4
Game Mechanics
- TerraTower is a physical variant of a tower
defense game (at least inspired by such games). It will be played during the final
exam slot on Thu, Jun 12, 8:00-10:00am. Attendance
is required for everyone in the class.
- The goal of the game is to capture as much
territory as possible. The game board will be a
rectangle centered in Aldrich park that extends to the
ring path around the park. The ring path is
circumscribed in the rectangular game board and
oriented in a N/S E/W manner.
- The game is designed to last 50 minutes and
we'll play two rounds. In the first round each team
must be on foot, use one client and only wifi
provided by the UCI campus. In the second game it's a
free for all. You can try anything short of making
physical contact with another team to gain
an advantage.
- The basic action of the game is the placement of
a tower. Players may place 1 tower every 5 minutes.
Every minute that the tower is placed it claims
territory in an increasing spread from where the
tower was placed. Once territory is claimed it can
only be taken back by clearing the territory
first.
- Players may also place a bomb once every 5
minutes. A bomb has a 5 minute fuse before it blows
up. A bomb that blows up destroys any towers around
it and clears the claim on the territory in it's
range of effect. Bombs do not blow up other
bombs.
- When the territory spread of two towers meets,
they form a boundary at that location and the spread
halts until something else happens in the game
- When a tower is destroyed, the territory that it
claimed remains in the possession of the original
team that placed the tower, but the territory can
now be taken over by competing towers as they
spread. (i.e. once a tower is destroyed it can no
longer maintain its boundary)
- Located in the park are 10 codes. The codes can
be entered to increase the rate of tower placement,
bomb placement and to decrease the bomb fuse
time. Each code does one of these things and is
described on the paper with the code. The code is a
ten digit alpha-numeric case-sensitive string.
- Players can see who owns what territory, and where
their bombs and towers are, but they cannot see
opponent towers or bombs. The location must be
inferred from game board effects and physical
observation of other teams.
- Aldrich Park does not have wi-fi in the center,
only on the edges. In order for
the towers to be placed and bombs to be dropped,
players must run in the park with their smartphone
client, record the location of the spot where they
wish to build a tower or drop a bomb then go to the
edges of the
park to find wifi to record their action with the
game server. The action takes effect when the game
server receives the message, not when the location
is recorded in the park.
Programming Assignment
- Write an Unity application to play the game
- There are 4 functions to support
- Build tower
- Drop bomb
- Enter code
- Visualize the board
- View leaderboard
- Each of those functions requires a "World_Name"
and a "World_Password". These are provided by the
game master and are entered by the team on their
client. They are the same for everyone playing a
game.
- The first 4 functions also require a "Team_Name"
and a "Team_Password". Those are provided by the
game master and are entered by the team on their
client. They are different for each team.
- Building a tower and placing a bomb require
capturing the location of the smartphone, storing it and
then uploading it to the server.
- Entering a code requires typing the code on your
client, and then uploading it
- How to visualize the board is open to the players and
may be done as an aerial view or an AR view
(potentially).
- The leaderboard is a list of which team owns the
most territory at a given moment
-
- Code is provided for a NetworkHelper here:
code
- This is an C# library that you
can import into your workspace and include in your
project.
- Code is provided for json as well here:
MiniJSON.cs.
This just supports the NetworkHelper. You
shouldn't need to call it.
- Code is provided for location here:
MyLocation.cs.
You'll need to walk through the logic and add
the appropriate pieces to interact with your UI.
- Gyro Controller code here: GyroController.cs
- All the rest of the code can be found at
github here
You should support an "upload" function, which
will send all the recorded build, drop commands and
code entry commands
to a server for execution
The game server will be provided
You should not expect to be able to see the
state of the game anywhere except through your
client
We expect the coding will take about 8 hours
Tutorials
-
Introduction:
-
Location:
-
Setting up a gyroscopic camera and making a world to view:
-
Overview of the Network Helper
-
Description of the GUI template
Play
- The game server will be up for testing. Use the
world name "MiddleEarth" and the world password "Bilbo".
The team names and passwords will be "a" - "z" and
passwords will be the same. Please note other
people may be play testing with your letter at any
given time. The test game world will be wiped clean
periodically.
- We will do an optional play test on Wednesday
from 10am to noon and from 1:30 to 3:30pm
Document
- Submit your .apk, a 1 or more page .pdf description with your
team name and ids and a narrative of how the
experience went with building the game and/or playing
the game. Submit the documents to a EEE drop box
- Evaluate your group using this quiz.
- Your grade will be adjusted based on how your group rate's your performance.
- Your grade will be adjusted if you win the game
using minimal trickery.
Extra
Rubric
- 10% Description
- 30% Does it run?
- 25% Does it interact with the server?
- 15% Place tower/Place bomb
- 5% Upload tower/bomb/code
- 5% Leaderboard funcationality
- 10% World rendering
- -5% if world rendering screwed up on load
- -5% if lat/long capture is messed up
- -5% if gui entry is messed up
- -4% if parameters to network helper are screwed up