Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create objects for missing RCT1 trains #138

Open
3 of 9 tasks
Gymnasiast opened this issue Jan 17, 2021 · 12 comments
Open
3 of 9 tasks

Create objects for missing RCT1 trains #138

Gymnasiast opened this issue Jan 17, 2021 · 12 comments

Comments

@Gymnasiast
Copy link
Member

Gymnasiast commented Jan 17, 2021

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

Ported:

  • Ladybird trains
  • Log trains
  • Rocket Cars

Designs to port:

  • Steel Roller Coaster Train
  • Steel Roller Coaster Train (backwards)
  • Spinning Cars (Steel Mini)
  • Inverted RC Train

Up for discussion:

  • Wooden Roller Coaster Train
  • Wooden Roller Coaster Train (backwards)
@IntelOrca
Copy link
Contributor

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

@Gymnasiast
Copy link
Member Author

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

@IntelOrca
Copy link
Contributor

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
Copy link
Member Author

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
Copy link
Contributor

ZeeMaji commented May 25, 2021

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
Copy link
Member Author

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

@spacek531
Copy link
Contributor

spacek531 commented Sep 3, 2021

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
Copy link
Member Author

Gymnasiast commented Sep 3, 2021

@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
Copy link
Contributor

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
Copy link
Contributor

ZeeMaji commented Apr 20, 2022

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
Copy link
Contributor

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
Copy link
Contributor

ZeeMaji commented Mar 10, 2024

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.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants