Original Graphics - OpenRCT2/OpenRCT2 GitHub Wiki

The original graphics for Rollercoaster Tycoon 1 and 2 were made by Simon Foster (Drippy Cat). This page is dedicated to explaining how the graphics for Rollercoaster Tycoon 1 and 2 were made using details provided by Chris Sawyer, Simon Foster, general knowledge on graphics and its technicalities and assumptions based on closely studying the game's graphics.

Software

This is a list of the software originally used. Most can, however, be replaced with modern software.

Type Game Software
Modeling Lightwave
Animation, rendering RCT1 Raydream Studio (now called Carrara)
Rendering RCT2 3ds Max
Dithering RCT1 DeBabelizer Pro
Dithering RCT2 Paintshop Pro or Photoshop
Image Editing Pro Motion

Setup and Process

The process that was used to create the graphics for RCT1 and RCT2 is a mostly consistent one and can be broken down into the following steps.

Steps

  1. Modeling
  2. Render
  3. Remove background
  4. Dithering
  5. Cropping
  6. Additional tweaks

Camera

The camera is placed at a 45-degree angle on the vertical axis and looking down by 30 degrees. The projection method is set to orthographic, this makes the view isometric. As for finding the correct orthographic scale, a cube the size of a single tile should be exactly 64 pixels in width when rendered.

Lighting

Most objects were rendered with the same lighting rig [1]. One main light (directional light) is set up about 90 degrees anti-clockwise from the camera's angle. A dome of point lights ensures faces on the other side, and places in shadow aren't too dark and/or lose their detail. Additional filler lights are used to catch additional details that the main light fails to catch.

The lights are placed relative to the camera. When rendering an object from multiple angles either the object itself is rotated, or the entire rig is (camera and all lights).

Filler Lights

Filler lights are generally not placed at the exact opposite of the main light direction. Filler lights tend to be placed lower than the main light and are about half as bright as the main light.

Shadows

The main light casts a shadow. All other lights should not.

Rendering

The animation timeline was used to render all the required angles in a single export. Ride vehicles, for example, would have to have 16 angles at the very least,

Anti-Alias

Anti-aliasing is used for a large portion of the objects in RCT2. The anti-aliasing algorithm used was cubic with the size set to 1.4 pixels. In order to keep a crisp edge to an object, the anti-aliasing can either be disabled entirely or only disabled for the background. The second option wasn't available in Lightwave during the development of RCT1, hence the dark edges on some objects.

*Not 100% certain.

Background

The background color is set to rgb(57, 59, 57). More standard colors (Like neon green or magenta) would make the anti-aliasing with the background stand out too much. The color isn't a perfect grey (rgb(57, 57, 57)) in order to prevent lifting pure grey values when using the magic wand tool to take the background away.

Dithering

The RCT2 palette consists of 256 colors. Models are rendered in full color and dithered to this palette afterward. In order to achieve the dithering, Simon Foster originally used DeBabelizer Pro for RCT1, but both Paintshop Pro and Photoshop for RCT2.

Cropping

The last step to finish the graphics is the cropping process. Simon Foster made a two-part tutorial on this process:

Originally Simon delivered the graphics for vehicles as sprite sheets, where the same point within each sprite would act as the center point of the image.

Afterward, all excess unused space is cropped away from every sprite. This, however, requires that the center of the image is defined. This is done by providing an offset position for each sprite. This was an automated process performed by Chris Sawyer.

Post Editing

When needed additional adjustments were made to the 256 color sprites using Pro Motion.

Trees

Trees were rendered in Lightwave using a technique by Dave Gerrard:

https://web.archive.org/web/20070322150123/https://www.animationartist.com/2000/Tutorials/LWTrees/lwtrees.html

The different scale trees were achieved by simply adjusting the scale of the tree and the foliage density.

Sources

Notes

16-03-2021: This page is already pretty old since I first wrote it, some information may be incorrect based on more recent findings. I plan to update the page properly in the future, for now I'll provide my thoughts using notes.

[1] There're a lot of inconsistencies in the lighting when putting objects side by side. This can be seen by looking at the shadows, but also seeing if the south-east or south-west face of a scenery block is lighter or darker then the other. My personal theory is that groups of scenery were rendered in a single scene, causing the lighting to be different for each object due to the positional difference.