-
Notifications
You must be signed in to change notification settings - Fork 15
Building a ride
The process described on this page is outdated and will change in the future as we're currently discussing the pipeline. Consider contributing by creating 3D models without the template until we've updated the pipeline. If you have experience with 3D game asset creation, Blender plugins and/or 3D rendering then consider contributing to our discussions.
First, you'll obviously need to choose a ride to replace. Check the TrackRides
tab on the ObjData spreadsheet. Find a ride that is still To do
and mark it as WIP
, and leave a note saying who's working on it. It's preferred that original RCT2
rides are worked on first, and ones from the expansions (WW
and TT
) be worked on once all original rides are completed.
Start by opening up templatevehicle.blend
(in the templates
folder) in Blender. Use Save As
to make a copy of this template file to the appropriate folder as described below:
All rides are kept within the rides
folder. Each subfolder in here is the name of the track type of the ride (e.g. GoKarts
). Inside those folders are the name of the .DAT file for each vehicle of that track type (e.g. KART1
). A single .blend
file within this folder should be named the same as the folder. The full path should be, for example:
<OpenGraphics Folder>/rides/GoKarts/KART1/KART1.blend
.
Model your ride vehicle (or vehicles, for a multi-care train). Please please please use references. Refer to the original files (use Buggy's RideMaker or Trigger's Content Browser to extract them), and try to use real-life pictures as well. When coloring your model, it's generally good stick to solid colors, and, in general, avoid using textures; instead, apply different materials to different faces of your model. For parts of your model that should be remap-able, use the included Remap [1-3]
materials. You will notice that they are Green, Red, and Blue; don't worry, they will be mapped to the remap palette when rendering.
For proper rendering, you must set the Pass Index
for any non-remap-able materials to 2
. Remap-able materials should be set to 1
. Any materials which are left at a Pass Index of 0
will be masked out (transparent), which is sometimes useful.
Peep model (with bones for posing) are provided in templatepeep.blend
in the templates
folder. For rides where peeps ride alone, just use PeepGreen.
If riders ride in pairs (as they often do), you will need to use PeepMagenta
as well. It doesn't really matter which is which, but you should follow the positions from the original files.
Peeps need to be put on separate layer(s) for proper rendering. Each pair of peeps (if the ride uses pairs) will need to be on their own layer. On the Scene
tab, make sure you have a Render Layer for the Vehicle as well as each peep/pair. The Vehicle
Render Layer needs to have the 1st layer visible. The Peep
Render Layers need to have the corresponding layer visible, with the 1st layer enabled as a mask. If you have multiple peeps/pairs, you will need to make sure the 1st peep/pair masks the 2nd, the 1st and 2nd mask the 3rd, and so on. Also make sure each Render Layer has the Material Index pass enabled.
We use animation in Blender to record the ride vehicle from all necessary angles. Make sure to parent the Vehicle
empty to your ride vehicle for proper animation when rendering. The included animation in the template for the Vehicle
empty only includes the most basic angles, and will need to be expanded for most rides. See one of the existing rides, or AE's ride tutorial page for more details about the angles necessary. You should always check the original game images as well to make sure. If your ride has visible peeps, you will have to repeat the animations with just the peeps visible (and with the cars still masking), and you'll have to do this multiple times if you have multiple pairs per vehicle. If a ride has multiple cars in its train, you will have to repeat all the animations for each car in the train (make sure to animate the visibility of the different cars so they don't all render at once). (Order goes Car1, Car1Peep1, Car1Peep2, Car2, Car2Peep1, Car2Peep2, Car3, ...)
If you have peeps, you will need to do a bit of set up so it renders properly. First, go back to the Render Layers you set up, and animate their "usage" (the checkbox), so that the respective Render Layer is only enabled during the appropriate set of frames. I.E., the Vehicle layer should only be enabled when rendering the vehicles, then the Peep layer(s) should be enabled (one-by-one, if multiple), then the next vehicle, and so on. The other thing you need to do is go the Node Editor
, add each Render Layer as a separate node (Input -> Render Layers
and then choose the Render Layer in the drop down). If it's not already there, also add the Renderlayer Combiner
node group (under Group
). Then, connect the Image
and IndexMA
output to the corresponding inputs on the Combiner. It doesn't matter what order they go in, just that Image connects to Image (yellow) and IndexMA connects to Material Index (grey).
For outputting images, we actually want split up the images so that the remap-able colors are stored separately. There is a node group included RemapSplitOutput
that does this for us. We just need to add it and then connect the Image and IndexMA to its inputs. Additionally, you'll want to add in the NoiseOverlay
node to the Image path, and set to Noise Factor to about 0.3. This adds a bit of "texture" to the image, and also sort of simulates a "dithered" look (actually doing dithering winds up looking quite bad).
Once you have everything set up, render your animation (Ctrl-F12
).
Once you've rendered the frames out of Blender, we need to convert these images into the palette that RCT2 uses. To do that, you'll need to run the compile
script in scripts
folder. This script take a few options. -r (1|2|3)
is the most important one, which enables 1, 2, or all 3 remap-able colors. You'll need to open a command prompt in your ride's folder and run the script from there. For example:
../../scripts/compile -r 3
At this point, you'll find that you now have a finished
folder, that contains all of your ride's finished sprites, as well as a pos.txt file that will be used to tell RCT2 how to position these sprites.
At this point, you can use Buggy's Ridemaker/Ride Converter to create a .DAT file using your finished images. At the moment though, you will probably need to first rename your final pic#####.bmp
files so that the number of digits for the numbers matches the actual number of frames (i.e. if a ride has 300 frames, your images will need to have 3 digit numbers, as in pic###.bmp
) for Ridemaker to properly use your images. (Issue #4). There are a number of tools to batch rename files. IrfanView has a good one built-in, for example.
Once you have a finished DAT (I recommend naming it something different from the original), test it in OpenRCT2. Compare it to the original, check the size and positioning, and also check that your colors, especially remap-able colors, haven't been messed up by the palletization process (though, you probably want to check this with the finished images, rather than in-game). If you need to, go back and make any changes. Once you're done with your ride, submit a pull request, and update the ObjData spreadsheet to mark the ride Done
.