2 Home
softdorothy edited this page 2016-02-03 20:10:34 -08:00

Welcome to the pararena_2 wiki!

Pararena 2.0 Screenshot

Pararena was a Macintosh game written by John Calhoun in the 1990's (more or less). It started out as a black and white shareware game (pre-90's) and later rewritten (and in color) commercially for Casady and Green, Inc.

The application was written in C and compiled with THINK C. There are many esoteric file types typical from a 90's Macintosh development workflow: resource files (.rsrc) that contain the art, sounds, menu bar, UI layout, etc; a "balloon help" file; a hand-written 68K assembly library (SMS) for doing performant, 4-channel audio; etc..

It obviously was inspired by the movie, Rollerball, but began life as a programming experiment: I wanted to try to represent an object moving in pseudo-3D as quickly as I could. I had imagined that I could generate a table (grid) that represented the positions on the surface of a parabolic-dish. With a little tweaking, the values in the table could be transformed/projected in such a way and the table then used to map an object on the surface of the dish to a position on screen. That is to say, if an object, let's say a ball, were at the (0, 0) on the dish, the table would tell me where to draw the ball on screen so it would appear in the center of the dish. If you moved the ball to the right, to say (10, 0), as it moved, you would see the ball roll up the side of the dish on screen.

Furthermore, I could compute the X and Y forces acting on the object at any point on the surface of the dish. At the bottom of the dish of course there are no X and Y forces acting so the result would be zero. But as you get closer to the edge of the dish there is an increasing force (combination of X and Y forces) pushing the ball back toward the center.

The point of all this was that the table for position and for forces could be calculated up front, once, and during the running of the game, it's a quick matter of table lookup (and some interpolation) to determine the physics actin on the ball as well ad where to display it.

The first demo was literally just balls rolling around in a parabolic dish. When I added collision detection as well, the balls would bounce off one another like billiard balls in a trash can lid.

The next step was to make a game around it ... add players and give you some influence over the movement of your player with the mouse as input. Add goal posts of sorts, and opponent AI (such as it is) and you have Pararena.

As I recall there was a crude attempt to allow for 2-player networking — two Macs could be networked together and players could play one another. Buggy as hell.

Coarse, precomputed tables of force and position data, fast interpolation, a pre-rendered background/dish, bitmap sprites for the players in 8 or so rotations.... It's laughable that today you would simply do the whole thing in OpenGL and not only render the players and dish in real-time, but you could do shadows and use a proper physics engine to boot.

I'm picturing in my mind now a VR version where the user stands on a platform that pitches about and controls their travel around the dish....