Welcome to Rush 2005!


Sorry that code cleanup is taking so long -- should have planned the project out better from the get-go. I've managed to get Knoppix running on my laptop, so right now, the default branch now ships with configure scripts, in an effort to keep the Linux and Windows version at an even pace. That said, if you're a Linux user, and you see that Lord Satan has added his take on the current version, go with his and not mine, since he's more of a Linux expert than I am. Simonc4 and I are working on getting sqlite support soon, so that will mean one more dependency (boo) but hopefully an opportunity to get the data more organized and scalable (yay!).

About Rush 2005

Rush 2005 is a BSD-licensed project to create an American football game for Windows and Linux in the tradition of Tecmo Bowl and NFL Blitz, built using the cross-platform SDL game programming library.

The best place to get up-to-date information on this game is the sourceforge project webpage.


Rush 2005 currently uses SDL (the windows dll is included), SDL_image (the windows dlls are included), SDL_Mixer (the windows dll is included), and BFont (the source code is included). These are all included under the LGPL license. The game itself is available under the BSD license.


Windows users: Unzip the package -- you should be able to extract it with a program like WinZip, WinRar or 7Zip (I recommend the latter, it's free). Make sure the dlls are in the game's directory. The executable should run as is.

Linux users: Make sure that you have the latest versions of SDL, SDL_Image and SDL_Mixer on your computer. Unzip the package in the destination directory. There is an executable provided but it's not guaranteed to work. From there, go into the "src" directory, and run "./configure" and then "make". Don't run "make install", instead, just type "mv rush2005 ../" to put it in the game's main directory. Change back to the main directory, and run the game using "./rush2005".

If you find that there's some trouble with sound, pass the "--nosound" option at the command line. That should disable all sound. I think that I've managed to fix some of the sound issues, but it's still a little raw.

Messy source code is included. Read at your own risk.



When you run the program, use the directional keys to move the players. On offence, use 'z' to snap the ball, and on passing plays, use 'x' to select the receiver, and 'z' to throw the ball. On defence, use 'z' and 'x' to change players.

Football is a full-contact sport played between two teams. Rush 2005 uses two teams, with 8 players from each team on the field at one time. The purpose of football is to try to outscore your opponent, by getting touchdowns and field goals, and preventing your opponent from doing the game. On a change of possession, the offence has four chances (called downs) to try to gain 10 yards. Once the offence reaches that first down line (marked by the yellow line on the screen), the offence is given another four downs to advance the ball again. The ultimate aim of the offence is to try to get the ball into the endzone, which gives the offence six points, plus the opportunity to score one more point on the extra point, a place kick from the three yard line. If the offence fails to reach the first down line after four downs, the ball is given to the other team. For this reason, on the fourth down the offence might want to choose to punt the ball downfield (pushing back the other's team's offence's starting point as far as possible), or, if the offence is close enough, try to kick the ball between the uprights for a field goal (which gives you three points). Points can also be scored by the defence, if they manage to tackle the ball carrier in the offence's own endzone. This is called a safety, which gives the defending team 2 points. Whenever a team scores, they then kick the ball off to the other team. The first quarter and the third quarter also open with kickoffs.

There are two main types of plays that an offence can execute -- the running play and the passing play. Both plays start with the offence lining up on the line of scrimmage (the blue line on the screen). Play starts when the center hikes the ball to the quarterback, who can give the ball to a teammate to run, or run the ball himself, or try to locate a player on the team downfield to pass the ball forward. The exact moment of the start of play is known as the hike, or the snap, and can be accomplished simply by pressing 'z'. On running plays, the ball is given from the quarterback to the teammate automatically, with the arrow keys used to move the runner. On passing plays, however, the quarterback needs to choose which receiver to pass to, which is accomplished by pressing 'x'. The highlighted receiver will be the player the quarterback passes the ball to. Once a receiver is chosen, pressing 'z' passes the ball. The quarterback can also choose to run the ball himself, if there are no receivers open.

On these offensive plays, play ends when the player with the ball is tackled, runs out of bounds or scores a touchdown, or if a pass attempt fails. If the ball has not progressed past the first down line, then the down increments, and the offence tries again.

Playing defence is a little trickier, because instead of dictating the offence, they have to react to the offence. The arrow keys will move the current defender, and you can change the defender using the 'z' and 'x' keys. Before the snap, the two keys will simply loop through all the defenders. After the snap, however, the 'z' key will loop to the next defender, while the 'x' key will immediately select the defender closest to the ball.

Between plays, you will be given a menu which allows you to choose what sort of plays you want to run. Under the diagram, you will see whether or not this is a pass play or a running play. If it's a passing play, the various yellow paths show the routes that the receivers will take when trying to get open. If it's a running play, you'll notice many of the players have 'X's, which show where they will try to block the defenders.

When playing offence, try to keep certain things in mind. Passing plays are a little risky because there's a chance that the defender will actually catch the ball instead of the receiver, in which case the possession changes (this is known as an interception). Passing plays, however, are an effective way to move the ball downfield quickly. Run plays are less risky when it comes to turnovers, but if the defence is expecting a run it can be difficult to gain a lot of yardage if they are constantly ganging up on the running back. When you have the ball and are trying to run downfield, you can either try to run to the open-space to avoid the defenders trying to tackle you, or you can run behind your teammates, who will be trying to block the defenders on the other team, knocking them down so you can continue past them safely.

Playing defence requires a degree of planning and anticipation. You have to know when the opponent is going to want to run the ball and when they'll want to pass, and try to choose a defence that will defend against the offence's likeliest choice. Running defences will have the best chance of shutting down the other team's running game, but will leave the defence open to being beaten by the passing game, and vice versa.

Current Roadmap

0.1.0 Human can play offence, computer can play defence
0.2.0 Computer can play offence, human can play defence
0.3.0 Complete game from start to finish is playable
0.4.0 Dynamic play selector and viewer

Numbering version for 0.4.x series won't make sense, since some tasks will be ongoing, and I'll be removing bugs as I find them.
0.4.4 Store scores for home and away instead of team1/2
0.4.5 Add pause feature
0.4.6 Show score & down information on play selection screen
0.4.10 Move graphics to subfolder
0.4.12 Perfect Results.html (score by quarter, reference to Pronobozo's website)
0.4.13 Free all graphics
0.4.14 Free all sounds
0.4.11 Remove hardcoding of team names
0.4.8 Clean up modules so that function placement makes sense
0.4.23 Cleanup the in-game screen display (scores, down info, etc.)
0.4.9 Full instructions on how to play/install

0.4.1 Flowchart this futhermucker (in progress)
0.4.2 Build Testing Program
a Deal with diagonal evasion bug (much harder to do now, might readdress later...)
b Better pursuit algorithm on defence
c Deal with jumpies when players don't properly overlap their x/y chase (use a "nudge" boolean for halving dx and dy)
d Fix statistics for pass caught deep in endzone
e Clean up all of ai.c
f Clean up punting/kicking ai
g Remove hardcoding from punts/kicks
h Computer should choose between punting and kicking more realistically
i Clean up the safety
j Clean up turnover in endzone leading to touchdown
0.4.3 Consolidate PLAYTYPE and RECENTPLAY (see main.h) (in progress)
a Fix scoreboard display ("Punting" on kickoffs)
0.4.7 Comment code
a main.c
b main.h
c initilializer.c
d interface.c
e ai.c
f graphics.c
g collisions.c
h output.c
i plays.c
j audio.c
k. setsgets.c
l. extra modules?
0.4.15 Reshuffle game.ball and game members to make more sense
0.4.16 Improve AI Pass Offence
a. The second a mid-range receiver is waving, qb should hit him
b. qb under pressure should either throw, scramble then throw, scramble then rush, or take sack.
0.4.17 Fix the screen pass
0.4.18 Comment out all printf functions
0.4.19 Have an output.txt file that captures all game output
0.4.20 Full SQLite integration
0.4.21 Use #defines for boundaries, image sizes, etc.
0.4.22 Better Field Goal Kicking AI (misses too often right now)
0.5.0 Code Cleanup

0.5.1 Title Screen (finished ahead of time)
0.5.2 Sounds for tackling
0.5.3 Crowd cheering
0.5.4 Whistles on dead balls
0.5.5 Title screen music (finished ahead of time)
0.5.6 Victory Screen
0.5.7 Loss Screen
0.5.8 New game can be played immediately after current game is finished
0.5.9 Credits Screen (finished ahead of time)
0.5.10 Help Screen (finished ahead of time)
0.6.0 Full text, title screen, music, sounds (might have to delay some of this until post 1.0)

0.6.1 Balance current teams
0.6.2 Add all playoff teams from last year
0.6.3 Add the also-rans
0.6.4 Add more plays
a. 20 plays for pro-formation
b. 20 plays for split-formation
c. 12 plays for 23 defence
d. 12 plays for 31 defence
e. 12 plays for 2231 defence
0.6.5 Add variety to plays for all teams
0.7.0 A full slate of football teams to choose from

0.7.1 Returns on interceptions
0.7.2 Returns on fumbles
0.7.3 Choose direction of punt
0.7.4 Choose direction of field goal
0.7.5 Computer vs. Computer games
0.8.0 Extra features
Release Candidate status (beta stage)


* Can't do proper returns on turnovers
* Proper AI needed on play selection (going for it on 4th down if losing in the 4th quarter, etc.)
* All aspects of special teams need to be monitored closely for bugs right now
* On passes, sometimes wide open players don't go all the way to the ball (catching on the run)
* Players sometimes get jumpy when they've reached their target points (aren't overlapping properly?)
* Need to doublecheck makefile under Linux

Technical Description:

Rush 2005 is a project to build a fast and fun, cross-platform American football game.

It is being written in C (using Dev C++), and makes use of the cross-platform Simple DirectMedia Library. The gameplay style will be similar to Tecmo Bowl and NFL Blitz, with a focus on fast gameplay instead of over-realistic simulation.

All development is being done by one person right now, but contributions in graphics, sound files, patches, Linux tests, etc. are welcome. A working Linux version is the ultimate goal, since Linux lacks a really fun American football game.

The code is being distributed under the BSD license, and you're free to do what you want with any of the graphics included with the project. If you're interested in contributing, I'd be thrilled to help you get involved, but please note that I won't be trying to enforce any sort of copyright on the artwork or sound files.

The graphics are 2d top-down. Teams have 8 players a side, with different personalities and ratings for the two teams. Gameplay is restricted to directional arrow keys and two action buttons. All gameplay and interface decisions will be based on this to keep the game simple. The 1.0 version of this game will involve two teams going head-to-head, although the long-term vision of this game is a full season simulator.


Project Manager: aendeuryu
Developer / Tester: simonc4
Linux Version Maintainer: Lord Satan
Music: Pronobozo
Contributors: mdaniel, spencer

Comments / Questions / Complaints / Insults