OpenRCT2 / OpenRCT2

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

Scenario Improvement: More granular pass/fail conditions. #11117

Open grahambilley opened 4 years ago

grahambilley commented 4 years ago

OS: [Windows 10] Version: 0.2.4] Commit/Build: [d645338]

This is an enhancement request. I'm putting this here per request of Aaron van Geffen.

Allow creators to specify more granular pass/fail conditions. Examples include:

  1. Cannot have more than 5% of guests thinking "this path is disgusting" (fail condition).
  2. Cannot have more than 2 "negative awards" at any given time (fail condition).
  3. Must have 3 positive awards at the same time (pass condition).

Thank you,

grahambilley commented 4 years ago

A few more...

  1. Must have $100,000 in cash at the end of ... (pass condition)

  2. Must pay back your entire load by the end of ... (Pass condition)

James103 commented 4 years ago

I'm thinking of the following for the new scenario goals:

  1. Allow an arbitrary number of goals for a scenario (up to 255 separate goals ideally).
  2. Goals should be modular. Each goal should have a statistic, a comparison, and a value. You should be able to pick from almost any statistic of your park to use as part of a goal, even ones as specific as "Number of entertainers" or "Monthly profit from burger sales", as well as the standard ones like "Park value", "Park rating", and "Number of guests". The comparison can be any of the seven standard comparisons, which are "less than", "greater than", "at most", "at least", "between", "exactly", and "not equal to". The value can take on values depending on a goal. For example, a guest goal of 1,237, an excitement rating of 6.28, a happiness of 87%, and/or a date of "July, Year 3".
  3. You should be able to specify (ideally by boolean algebra, but checkboxes will work) which combination of goals will pass the scenario and which combination of goals will fail the scenario, if met. You should also be able to specify how long you must maintain full completion of all goals before you pass/fail the scenario.
pizza2004 commented 4 years ago

I think it's important to make sure it's still easy to make a scenario, so I'd avoid adding anything that makes the interface difficult to understand, but I do like the idea of being able to add different goals like this instead of just selecting from a set list of possible win conditions.

James103 commented 4 years ago

In the very least, I would like, (in order from most important to least important):

  1. A few more objective types to satisfy some scenario creators looking for new objectives to use
  2. More precision when setting goal values, similar to how the money cheat works ($1,098,762 park value, $5,773 monthly sales, or 1,234 guests in park instead of $1,098,000, $5,700, and 1,200 guests)
  3. Ability to set park rating requirement for guest goal scenarios
  4. Ability to set excitement rating requirement and number of coasters for the coaster building goals
  5. Ability to set time limit independently of the goal and with more precision (to allow for example "Build 8 roller coasters with length 2,048m and excitement 7.68 by the end of June, Year 4")
duncanspumpkin commented 4 years ago

More precision when setting goal values ($1,098,762 park value, $5,773 monthly sales, or 1,234 guests in park instead of $1,098,000, $5,700, and 1,200 guests)

Why? That would just be annoying to input into a form.

Umdlye commented 4 years ago

That would work if the spinners were still stepped but you could enter a more precise number by clicking the spinner, like how the add/set money cheat currently works.

ocalhoun6 commented 4 years ago

While we're at it on this massive wish list of scenario options, it might be interesting to have artificial caps on a scenario in conjunction with a financial goal. Such as 'no more than X number of rides', 'no more than X number of staff', or 'no more than X number of guests'.

It would give a scenario designer interesting ways to make the scenario more challenging. Imagine, for example, a scenario where the ride limit is set to 1. Then, instead of building lots of rides, the player would have to build one affordable ride, then save up to replace or improve that ride, making it bigger and better. Or in a park limited to 10 staff, they'd have to carefully manage how much their paths sprawl and also focus on all the non-staff ways of dealing with litter and vomit.

James103 commented 4 years ago

@ocalhoun6 In addition to the items you proposed, I think it would be interesting if you could only carry, for example, $1,000 in your account at once. A scenario like this would be challenging in the sense that you would have to keep investing your money almost immediately it comes in. Another idea would be to set a limit on how many sprites can be used for rides. For example, you can only have 64 ride sprites in the entire park, shared by all your coasters, flat rides, and more.

Ryder17z commented 2 years ago
Ling1375401 commented 2 months ago

I'd like to offer a framework for what I've been thinking of as "advanced objectives" - I did some digging around and this thread seemed to be the closest I could find. If this belongs as its own separate issue, let me know and I can re-post it. I also looked at the "Ideas" section of the forum, and it seemed like those are mostly new ride/object requests or complete behavior overhaul, whereas I think these ought to be relatively straightforward to code in comparison. The careful bit would be splitting things in to a "basic" version of the objective system so existing scenarios are still unaffected and making new scenarios remains easy and welcoming to new players, while giving more seasoned players an extremely in-depth objectives system to add new dimensions to the scenario play side of the game, which until now has mostly been focused on merely porting the originals as faithfully as possible, rather than kitting scenario makers with significant new tools (though the map generator is very useful!).

My ultimate dream is for a new class of user made scenarios which can be both uniquely fun and uniquely challenging in ways that mean every scenario is no longer simply a solved problem because of years of dissecting the code.

Goals

Scenarios would have an arbitrary number of goals, unlocked in order (think like RCT3's apprentice/entrepreneur/tycoon system) where each goal could consist of an arbitrary number of sub-goals. These sub-goals in turn could require completions by a certain date or could be completed at any time, at the scenario builder's discretion.

X represents an arbitrarily set-able integer that is at least 1.

Each "by date" would have a toggle allowing it to be completed early (using the cheat would override this, but would flag the scenario as being completed with a cheat, per earlier discussion in this thread).

++Challenge modifiers

These could all be lumped in as one, but I picture these more as overarching modifiers that generally wouldn't be modified by gameplay, so I put some scenario settings here and others in Misc below.

Miscellaneous modifiers

Rewards

Each scenario would have possible rewards attached to it. These can be exposed or not at the discretion of the scenario maker. i.e. you might want to let your player know that completing this goal will award them with a large tram of guests so they can prepare, or you may want to surprise them if you'd like it to be harder. Ideally any aspect of the scenario would be open to modification, so a creator is free to make the scenario easier, or harder, as the player completes goals.

Examples of types of goals

These are scenarios I'd love to make where the difficulty curve within the scenario could be skillfully sculpted, and several elements of the goals and modifiers either work in concert to teach useful or interesting methods of design, or work against one another to make uniquely challenging parks for our favorite YouTubers to devise solutions to.

I would like to tackle implementing these myself, but alas I only have experience coding in python, not C. I'm trying to teach myself a bit of C before I attempt to do anything, but I'm open to suggestions on where to start to try accomplishing some or all of this list.

EDIT: formatting

tupaschoal commented 2 months ago

I haven't had the chance to read in full your post, but please mind #16914

Ling1375401 commented 2 months ago

Ah, neat, didn't think to search the pull requests. I'll give this a read and see if there's any way I can help.

ocalhoun6 commented 2 months ago

Rides with uncalculated stats or Excitement/Intensity/Nausea greater than/less than X.XX cannot be opened

RiP, Go Karts.

Overall, I like this idea, though.