Senior Production Week 3

This week was largely spent defining the rules of what are now being  called “Unnecessary Rifts”, as well as some general documenting and presentation preparation.  As opposed to “Necessary Rifts”, the purpose of which is to act as a rubberbanding system to keep all players in the competition, Unnecessary Rifts are intended to act as a speed boost, throwing a wrench into a group of tightly packed players.

The rules for unnecessary rifts  begin with a check to see if all players have been within a short distance of the player ahead of them, for a period of time.  Afterwards, it randomly generates a rift for one of the players, granting a higher chance for those players furthest back.  Unlike Necessary Rifts, which disappear immediately if they are missed by their intended players, Unnecessary Rifts disappear after 1 second, allowing for the possibility of another player being able to use the rift instead.

The rules and goals within the rift remain the same across both types of rifts, though Unnecessary rifts are a degree more difficult than their Necessary Rift counterparts.  Finally, rather than tying the exit points to the ahead player’s most recently passed waypoints, Unnecessary Rifts transport players forward a number of waypoints equal to the number of sections they progressed through in the rift.  For example, a player that makes it to the third section of a rift will be transported forward three waypoints.


2 Week Project on Big O Notation

Big O Notation is a means of theoretically measuring the resources needed to perform an algorithm of ‘n’ inputs.  Resources can be a variety of measurements, but most often is time, space, or memory.  Essentially, Big O Notation is an algorithm’s efficiency as its input approaches infinity.  It is not, however, a means of exactly measuring an algorithm given a specific input.  The levels of efficiency,  from most to least efficient, are:

  • O(1) – Constant
  • O(log n) – Logarithmic
  • O(n) – Linear
  • O(n log n) – “n log n”
  • O(n ^ 2) – Quadratic
  • O(a ^ n)(a > 1) – Exponential

To find the Big O of an algorithm, count the number of touches, simplify the resulting polynomial, and discard any constants.  The answer will then be the fastest growing ‘n’.


for(int i = 0; i < n; i++) //touches ‘n’ times



F(n) = O(1 + n) //1 is the constant for engaging the for loop, ‘n’ is the number of times the loop is ‘touched’

F(n) = O(n) //Drop the constant.  The Big O of this loop is n, or linear.

for(int i = 0; i < n; i++)



for(int i = 0; i < n; i++) //touches ‘n’ times


for(int j = 0; j < n; j++) //touches ‘n’ times




F(n) = O(1 + n + n * n) //1 is the constant, the first ‘n’ is the solitary loop, nested loops cause ‘n’s to be multiplied together

F(n) = O(1 + n + n ^ 2) //Simplify

F(n) = O(n + n ^ 2) //Drop the constant

F(n) = O(n ^ 2) //The answer is the fastest growing ‘n’.  The Big O of this algorithm is n2, or quadratic.

Helpful Links:

Senior Production Week 2

This week was spent classifying and designing spectacles, as well as continuing to tweak the currently drafted ideas behind the rift system.

Beginning with the rift system, we looked at possible edge cases, as well as what would happen should no player be in need of a rift to catch them up to other players.  We decided that if the game checks to create a rift, and finds no player in need, there will be a very small chance of creating a short and difficult ‘speed-boost’ style rift.  Upon entering such a rift, players will have to contend with a much more difficult than normal subspace drag race, which will only see them being transported forward a distance of one or two waypoints, depending on the map.  Furthermore, we also discussed what would occur should multiple players enter a single rift.  Currently, the concept is that, as a drag race, players will be artificially accelerated until they are all at the same position next to one another, moving at the same speed.  The subspace track will initially be wider in this case, though as it goes on, it will rapidly become narrower, forcing players to jockey with one another as well as oncoming obstacles.  Finally, we have currently decided that rifts necessary to catch player up will close immediately if they are missed, while unnecessary random rifts will remain open for roughly one second if missed by the intended player.

When it came to spectacles, the lead systems designer quickly came to the conclusion that we would need specific vocabulary and definitions before we could full describe the events.  We decided upon:

Static – Objects on the side of the track, or out of reach, which either do not move, or perform a simple animation, such as a sign.

Repeating – Events that occur throughout the race, such as a ship performing a flyby.

One-Shots – Events that occur once, and then turn into either a static or repeating spectacle, such as a ship crashing and becoming wreckage.

Triggerable – Events which can be triggered on side paths that cause events on the main track path.

Faux-Spectacle – Events that appear hazardous to players, but are in fact not, such as a laser cannon that shoots ‘at’, but will never hit players.

Easter Egg – Humorous small events, such as the Mars Rover floating past.

Single-Use Paths – Paths or events which, after use, are not useable by subsequent players

Centerpieces – The giant, awesome spectacle that helps define a track.

Fake Obstacle – Events or set pieces which appear to disrupt the path, but are in fact  the correct path, such as a large glass window.

Additionally, we made some rules about the spectacles themselves:

1.  Spectacles should never simply stop.  If a ship crashes it should crash in an explosion, and the wreckage should spark and smoke for the remainder of the race.

2.  Spectacles–with some exceptions–should never be seen by only one player.

Now that we know the general themes of the levels, we will present the current concepts to the rest of the group and with their input, likely begin creating specific obstacles soon.

Senior Production Week 1

Having been added to Team Rift’s project, the first week of Senior Production was largely dedicated to getting myself and all the other new members up to speed with the project.  Sagittarii Run, the project of Team Rift, is an arcade racing game through space, set on the edge of a black hole.  Racers must contend with high speeds, rampant and various effects of gravity, and rifts to a high speed alternate dimension.  Having been assigned the role of systems designer, the first task of the project saw myself working with the lead systems designer to more effectively flesh out the rules and experience of rifts.  It was decided previously that rifts would not be a means of passing the competition, but for catching players up.  Additionally, rifts should be an incredibly fast and awesome experience, and while they should appear in every race, they should not be so frequent as to be as to become common.

With these rules in place, we created the first formula we will be presenting.  The formula begins by checking the distances between all the players.  If any of these distances are greater than an acceptable distance, relative to the current track, the game knows it might need to create a rift, giving greater chance to players closer to last place.  Finally, the game checks to make sure that any player who might get a rift is so close to the finish line that they might overlap it while in the rift.  In the case of none of the distances being over the acceptable range, there is a very small chance that any player may have a rift spawned in front of them.

Once a player enters a rift, they are transported to an intense drag strip style environment, where they must successfully dodge obstacles in order to proceed as far as possible.  The drag strip itself is divided into four sections, each of which is progressively more difficult than the last.  Additionally, the close to first place the player is upon entering a rift, the more difficult the drag strip will be.  The four sections of the rift correspond to its exit points on the real track–a player that makes it through only the first section will only be transported a short distance down the track, while a player that makes it through all four sections will be transported right onto the afterburners of the player ahead of them.

The actual exit points themselves are somewhat dynamic.  Tied to the waypoint checkpoint system already present in the game, the four exit points are the four waypoints the player in front of the player currently in the rift most recently passed, while the player was in the rift.  For example: player A in 4th place enters a rift.  The exit points are set to the waypoints player B–the player in 3rd place–most recently passed while player A is in the rift.  Should player B crash at any time while player A is in the rift, the rifts exits points are set to the waypoints ahead of player B, depending on how far player A has already progressed in the rift–this is the only case where a player using a rift would pass the player ahead of them.  In the case of the player in first place entering a rift, the exit points are set to the next four waypoints the player would pass.