OpenRCT2 / objects

Official objects for OpenRCT2
Creative Commons Attribution 4.0 International
23 stars 35 forks source link

Create objects for missing RCT1 trains #138

Open Gymnasiast opened 3 years ago

Gymnasiast commented 3 years ago

Requires modification in OpenRCT2 to allow 16 frames per rotation first.

Ported:

Designs to port:

Up for discussion:

IntelOrca commented 3 years ago

@Gymnasiast are you able to provide JSON objects for these first?

Gymnasiast commented 3 years ago

Hm, what do you mean by "first"? What would be the next step then?

IntelOrca commented 3 years ago

Before changing the code to allow 16 frames per rotation, we need a JSON object to test it on. The JSON object will need to state that it has 16 frames per rotation and reference the CSG sprites.

Gymnasiast commented 3 years ago

That's a bit of a catch-22: it's very hard to pick the RCT1 sprites in the correct order. Hard enough that you'd want OpenRCT2 to support 16 frames per rotation first.

ZeeMaji commented 3 years ago

I wouldn't say it's hard per say, Just really time consuming and tedious.

I can share my rct1 ladybird json object i made awhile back and showed in the openrct2 discord server. I can't confirm if the order is 100% correct due to the currently missing 16 frames flag. And it's missing the guest sprites as i would like to do them once i know the main sprites are correct.

But it should suffice for implementing a fully fledged 16 rotational frames flag or something similar. It currently already uses vehicle entry flag 11 which is normally used by boat hire boats and it makes the vehicle use 16 rotational frames only for it's flat sprites so that'd likely be a place to start.

For now though here is the json, hopefully it will suffice. rct1.ride.ladybird.json.zip

Gymnasiast commented 2 years ago

@ZeeMajora There are quite a few empty frames at the end in your file. What is the reason you left them empty?

spacek531 commented 2 years ago

One issue with the wood coaster is they do not use the same bank angle as the other rides. I can't imagine it has regular bank angle sprites at all. The easiest solution to this would be to port the shallow bank angle sprites to OpenRCT2, if they match.

Gymnasiast commented 2 years ago

@spacek531 I have actually been working on porting the RCT1 Wooden RC. The only issue I had was picking the correct sprites from CSG1.DAT - I know they’re all there, but the order is different.

If you’d like to finish it, please let me know and I’ll rebase and push the branch.

Edit: it’s here: https://github.com/Gymnasiast/OpenRCT2/pull/new/feature/classic-wooden-2

spacek531 commented 2 years ago

Although the wooden is stopped by the track sprites, other RCT1 vehicles can be ported to a future version of OpenRCT2. I have done so and am creating my own repository of RCt1 vehicle ports here: https://github.com/spacek531/RCT1Vehicles

This OpenRCT2 branch solves the waste of sprites for the most part, and is the branch against which the current vehicles are created: https://github.com/spacek531/OpenRCT2/tree/frames-rotation-count-part-1

The vehicles in my repository could be merged with this repository after some tasks are complete, see the issues section of my repository for more details.

Although it is relatively simple to load appropriate RCT1 vehicles only when necessary, users loading a park that has been touched originally by a linked version of OpenRCT2 will not see any sprites. This may or may not be an issue.

ZeeMaji commented 2 years ago

Although it is relatively simple to load appropriate RCT1 vehicles only when necessary, users loading a park that has been touched originally by a linked version of OpenRCT2 will not see any sprites. This may or may not be an issue.

After the standard set of images are done for an object we can add rct2 fallback images to them like with most of the other rct1 objects for people without rct1 linked. Eg: rct1 steel looping train images without rct1 linked will use the rct2 looping coaster train images as fallback images.

Though with the different sprite orders and different number of rotation frames that may mean that the fallback images have to be re-ordered as well.

spacek531 commented 2 years ago

The fallback images could be determined algorithmically since the sprite orders are the same, there's just fewer sprites in one vs the other

ZeeMaji commented 3 months ago

As of objects release 1.4.0, the only RCT1 ride objects which are missing are:

  1. Steel Mini Spinning Cars (Needs enhanced spinning animation system or new hard coded spinning animation)
  2. Lay-Down Coaster Trains (Needs option to override offsets when loading images from dats due to them being rendered too high in OpenRCT2)
  3. Classic Stand-up Trains (PR to add the train is open, needs classic stand-up ride type to be implemented in develop before the trains can be implemented)
  4. Classic Wooden Twister Trains (Needs classic wooden twister ride type to be implemented in develop before the trains can be implemented.)