JOHN FERNANDES-SALLING

 
 

    For NYU's Spring 2010 iPhone Programming course, Mike Chrzanowski and I built a sophisticated 3D game for the iPhone using Objective-C and C. In the game,  players explore a world composed entirely of cubes, and interact with them like digital building blocks. The player can place or remove blocks that vary in appearance, allowing creative minds to construct almost anything.

    Although not released on the Apple App Store, this game was tested on a range of iPhone models, and requires only a 3G iPhone. Its zippy performance is the result of an efficient, custom-built game engine that uses OpenGL ES 1.0 for graphics. To ensure maximum performance, code was profiled thoroughly and conforms to Apple graphics programming guidelines.

    Source code is available upon request.

RÉSUMÉ

Qbit - iPhone Game

PROJECTS

    As a personal project, I volunteered to maintain and update a C/C++ desktop application with a code base of roughly 250 thousand lines.  The application, named Loathing, was originally published in 1998 by Bungie Software Products Corporation (now operating as Bungie, LLC) as a level editor for its game Myth II: Soulblighter.  Loathing ran on Mac OS X using Carbon, and on Windows using Microsoft Foundations Class Library (MFC).

    My primary responsibility was porting the Loathing GUI from Carbon and MFC to wxWidgets, a cross-platform windowing library. The port to wxWidgets simplified the codebase and made it easier to add features that had been requested for years.  I also responded to and resolved user bug reports.  Access to the codebase was via SVN, with development done in Xcode and Microsoft Visual Studio 2010.

Loathing - wxWidgets Desktop Application

    As part of a course in Numerical Computation at NYU, I implemented a radiosity lighting system for 3D scenes. In order to form the radiosity lighting equation, the program calculates the form factor between each pair of geometry patches by using ray casting and the hemicube method. The system uses Python with SciPy and NumPy to solve the lighting equation numerically, then uses OpenGL to render the lit scene.

    Source code is available upon request.

Global Illumination Algorithm

    For NYU’s Fall 2009 Object-Oriented Programming course, I lead a group developing a Java to C translator utility.  The program took the filename of a Java source code file as input, then translated the file and all of its dependencies to C++ source code files using Abstract Syntax Trees.  To avoid technical details, the output source code is most accurately described as C, because it was not allowed to use C++ classes when translating Java classes, among other limitations. The translation program itself was written in Java, using the xtc library.

    My responsibilities in the project included supervising the group, distributing the work load, conducting code review meetings, managing the CVS repository, writing the unit testing framework using Bash shell scripting and makefiles, designing the overall program structure, and writing significant parts of the code base.

    Source code is available upon request.

Java to C Translator

    For NYU’s Computer Systems Organization class, I built a retro-styled arcade game using x86 Assembly language.  The game runs in a Microsoft DOS command prompt, using colorful ASCII letters for graphics.  The game features randomization throughout, using it to distribute bonuses as well as harmful explosions.

    Download Blast Radius here.

    Source code is distributed with the game.

Blast Radius - x86 Assembly Game