fileadelphia / src / fileadelphia / fileadelphia_summary.txt


Nikhil Marathe (200801011) and Shilpan Bhagat (200801162)


Fileadelphia is a 3-D file exploration system. When run
the program puts the user in a city where the buildings are a
visualization of the user's files and folders. The user
can now navigate and teleport between cities.

Starting Fileadelphia ( will put you in the city
generated based on your home directory. Fileadelphia has 4
attributes to make navigation easier.

* File buildings are textured in a yellow, old style.
* Folder buildings are textured in a blue, glass style.
* The size of a building is proportional to the size of the file (except where the file is too small).
* Accessing files and folders is done via the very intuitive action
of entering the corresponding building.
* File names are written on top of the building like billboards.

To navigate in a city, use the mouse to control facing and:

* W or Up arrow to move forward
* S or Down arrow to move back
* A or Left arrow to move left
* D or Right arrow to move right.
* Alt+Up arrow to move up the folder heirarchy.
* Escape - quit the program at any time.

Entering a file building will show information about the file.
Clicking the "Launch!" button will start the file using the default
system program. Press Enter or Space to exit the building.

Entering a folder building will 'teleport' you to another city
whose buildings correspond to the files in that folder. You may
press Alt+Up arrow any time to go to the parent.

If you enter a folder you aren't allowed to access, a Permission Denied
error will be shown. Press Enter or Space to return to the parent.

Improvements that can be done

If time permits we would like to add:

* A skybox to give a more realistic city appearance.
* Shader based fog in the city that can move behind along with the user, to keep certain
areas out of focus.
* Use OpenGL lighting to change amount of light in the city based on the time of the day.


Fileadelphia is written in Python, uses Pygame for event handling
and raster text rendering, GL, GLU for transformations and drawing
and GLUT for stroke based text rendering.

Techniques used

* Affine transformations
* Camera system
* Depth testing
* Perspective projection for the 3d events
* Ortho projection for text rendering
* Texturing for buildings and floor
* glutStrokeCharacter for file name drawing
* Blending effect is used to go from one state to another. A special TransitionState handles the blend
using `GL_CONSTANT_ALPHA` so that the source and destination states do not require special code.
* Fog effect for start up screen.
* Binary Space Partitioning using a Quadtree for efficient collision detection and display of the city.


We assert that all code in Fileadelphia was handwritten by us. Nevertheless certain
resources were used for learning or inspiration.

* Basic OpenGL initialization and texture rendering code was used by looking at programs
in the lecture folder.
* for an understanding
of simple camera implementation.

The pygame documentation was invaluable for OpenGL interoperatibility.