-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Original Graphics
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.
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 |
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
- Modeling
- Render
- Remove background
- Dithering
- Cropping
- Additional tweaks
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.
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 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.
The main light casts a shadow. All other lights should not.
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-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.
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.
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.
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.
When needed additional adjustments were made to the 256 color sprites using Pro Motion.
Trees were rendered in Lightwave using a technique by Dave Gerrard:
The different scale trees were achieved by simply adjusting the scale of the tree and the foliage density.
- https://youtu.be/5UKKaTGwIqc
- https://youtu.be/p6Fci7NWYUo
- Email (Private)
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.
- Home
- FAQ & Common Issues
- Roadmap
- Installation
- Building
- Features
- Development
- Benchmarking & stress testing OpenRCT2
- Coding Style
- Commit Messages
- Overall program structure
- Data Structures
- CSS1.DAT
- Custom Music and Ride Music Objects
- Game Actions
- G1 Elements Layout
- game.cfg structure
- Maps
- Music Cleanup
- Objects
- Official extended scenery set
- Peep AI
- Peep Sprite Type
- RCT1 ride and vehicle types and their RCT2 equivalents
- RCT12_MAX_SOMETHING versus MAX_SOMETHING
- Ride rating calculation
- SV6 Ride Structure
- Settings in config.ini
- Sizes and angles in the game world
- Sprite List csg1.dat
- Sprite List g1.dat
- Strings used in RCT1
- Strings used in the game
- TD6 format
- Terminology
- Track Data
- Track Designs
- Track drawers, RTDs and vehicle types
- Track types
- Vehicle Sprite Layout
- Widget colours
- Debugging OpenRCT2 on macOS
- OpenGL renderer
- Rebase and Sync fork with OpenRCT2
- Release Checklist
- Replay System
- Using minidumps from crash reports
- Using Track Block Get Previous
- History
- Testing