OpenRCT2 / OpenRCT2

An open source re-implementation of RollerCoaster Tycoon 2 🎢
https://openrct2.io
GNU General Public License v3.0
13.3k stars 1.52k forks source link

Scenario indexes for custom scenarios #4739

Open coasterenthusiast opened 7 years ago

coasterenthusiast commented 7 years ago

OS: [e.g. Windows 10] Version: [e.g. 0.0.5] Commit/Build: [e.g. 426e106]

Right now, as you probably know, you can "unlock" scenarios (like you were able to in RCT1). Currently, however, this feature only applies to scenarios that come with RCT1 and RCT2 at the time of purchase. Custom scenarios cannot currently be indexed. To be able to index your own group of scenarios is a feature that many of us have wanted for quite some time, and makes the game that much more interesting. I think that adding that feature would be useful to OpenRCT2.

Steps to reproduce:

Dump file

Screenshots / Video:

Save game:

fromthere commented 7 years ago

we should move to own format before implement new features. and moving to own format will be after standalone build.

implementing without changing format will be useless because we cannot save orders to scenario file which means users should set index(which is meaningless because we can just play that later...)

IntelOrca commented 7 years ago

will be after standalone build

We have already hit that milestone

ts6815 commented 7 years ago

Maybe to make this a little more robust...

Add to scenario format to include:

Any other ideas?

Dracheron commented 7 years ago

I think this will call for a community Easy, Community Challenging, and Community expert tabs as well. Also, "Real" parks and Other parks cannot be locked (they are their own category and only make up 11 parks total in RCT2 vanilla, and any additional scenarios in those categories would get the same treatment). Also, to do this, maybe have a seven number string to determine which scenarios are necessary to unlock the scenario you are creating. So, for other and "real" parks, as well as any other standalone park that starts unlocked at the beginning, the string will be 0000000. Then, maybe you could use 0201006 to denote the total value of the parks that need to be completed in order for the scenario to be unlocked. For a challenging level, you could use 0202007 (which means scenarios 1, 2, and 4 in order for the scenario to unlock). The challenge would be keeping all of this straight (it would help if somehow hexadecimal for the last three would be used so a community number example might be 0507EFI to denote that total, though it might become unreasonable to do it that way). Or, you could have it so that you can make a set depend on the previous set, and make it so that the number denotes a user number. So, for number theory reasons, a nine number code would not be exhausted any time soon, so it would be ######### for the code. Therefore, you could then use ## - ######### - ##### (last set being in hexadecimal) to call the necessary scenario. In that unlock process, you can then use the or and and checks to set all of the requirements.

StatisMike commented 2 weeks ago

It feel to me like this is connected heavily with #3255 . Should these issues be gathered in one? It seems that singular well-thought system would resolves both of them.

Unless there are more issues linked to this, but I couldnt find any.

I'm not familiar with the codebase, just throwing around the ideas: i think we could separate the concepts of scenario and scenario campaign. The id of the campaign can be somewhat random for distinction between different campaigns created by different users, resolved during import, with some options for editing imported campaign (eg. adding more scenarios, removing them or shuffling them around), retaining the random uuid.

The imported standalone scenarios would be assigned to some hardcoded 'custom scenario' group.

It would allow the creator to create a whole campaign and setup the scenarios inside accordingly and export the whole campaign for end users to import.