Jump to content

Guide: How much can you charge for your rides?


Recommended Posts

EDIT: I made a spreadsheet which does all below calculations for you. To find the spreadsheet scroll down or click here.

EDIT: Made a video for this guide! Can be found at the bottom of this post!

People often wonder how much they can charge for their rides. The advice i see most often is to set the entry price equal to the excitement rating. Well, now that the code is available to us, we finally have a chance to see exactly how much we can charge.

In this guide, i will show how exactly the amount you can charge is calculated. 

OK first, some terminology. Every ride has a variable called "value". If the ride entry price is more than twice the value, guests will complain that the ride is too expensive. If the entry price is less than half of the value, guests will think that the ride is really good value. If you want your guests to be really happy, you should keep the price low. If you want the maximum amount of money, you should charge close to twice the value.

Now, how do we calculate the value?

Every ride has three stats, Excitement, Intensity and Nausea. Every type of ride has a set of multipliers for each of these stats, which can be found here (Press ctrl + F and search for RideRatings).

image.png.8a65ebc28bd221745c07f56d54d1979d.png

As an example, for the first ride in the list, the spiral roller coaster, we have the following numbers: 50, 30, 10. This means that the excitement will be multiplied by 50, the intensity by 30, and the nausea by 10. Some rides, like the monorail and the miniature railway get a penalty from nausea. These numbers are different for most rides.

Now, for the difficult part:

image.png.ddc9751d89271e01669a01e9959fa717.png

The excitement, intensity and nausea are stored as integers. To do this, they have been multiplied by 100. An intensity of 5.50 is stored in memory as 550. An excitement of 8.00 is stored as 800.

Now, to get the total value, the excitement, intensity and nausea (multiplied by 100) have to be multiplied by their multipliers for the specific ride type, multiplied by 32, and then shifted right by 15 bits. Shifting a variable to the right by 15 bits basically means dividing it by 32768, and throwing away the part after the decimal point. Afterwards, we have to add all these numbers. Let's take a giga coaster with the following stats for example:

Excitement: 8.00
Intensity: 5.50
Nausea: 4.00

The multipliers for the giga coaster are: 51, 32 and 10. To get the total value, we multiply every stat by 100, its multiplier, and by 32, and then we divide by 32768:

Excitement: 800 * 51 * 32 = 1305600 / 32768 = 39
Intensity: 550 * 32 * 32 = 563200 / 32768 = 17
Nausea: 400 * 10 * 32 = 128000 / 32768 = 3

If we add these together, the value for the giga coaster will be 39 + 17 + 3 = 59.

Now, you have probably noticed how guests are willing to pay less and less for a ride over time. This is because the value is multiplied using an aging table.

image.png.f5cff86bdc30b842b1e5476de8a9c33e.png

The first row in this table is the amount of months. The second row is a multiplier, the third row is a divisor and the last row is a summator. The last row can be ignored in OpenRCT2 as they are all zeroes. How does this table work? Let's look at the first row for example.

The values in this row are 5, 3, 2, 0. What this means is that if your ride is less than 5 months old, the value of the ride gets multiplied by 3, and divided by 2. This means that the ride value will get increased by 1.5 times! Note that instead of doing the multiplication and division, you can just use the number in the comments. For instance, rides that are between 13 and 40 months old get their value multiplied by 1 (no change) and rides that are between 128 and 200 months old get their value multiplied by 0.08. Finally, for rides that are over 200 months old, the multiplier increases again to 0.56. This is probably because in real life classic rides are also often very popular.

So, if we take the giga coaster from last example, and let's say it's 50 months old, then according to the table we have to multiply its value by 0.75, which gives us a value of 44.2. Again, we throw away the remainder so we get 44.

Now, there is one last penalty to the value we have to take into account.

image.png.43a3a8683bab2f57c4cd659d4a8aac82.png

If there are any other rides in the park of the same type, the value of both rides gets reduced by one fourth. 

So if we build another giga coaster in the same park as the giga coaster that we used in the previous examples, it would have its value reduced from 44 to 33.

So, how much would we be able to charge for this giga coaster? To translate the ride value into money, it has to be divided by 10. Guests will complain that the ride is too expensive when the entry price is twice the value, and will be happy about the value when it's half the ride value. If we take the base value of 59 that we got from the ride ratings, we get the following entry prices:

image.png.d84c90c59902f49c68bf55e0f3ca240c.png

Some notes:

The amount peeps are willing to pay for a ride is decreased by 75% if they had to pay to enter the park.

If the value of the ride hasn't yet been calculated, peeps are willing to pay any amount for the ride.

This guide is based on the OpenRCT2 code. In the original code there is a minor difference in the aging table for very young rides.

I did see a variable called min_value and max_value for every ride type, but i could not see where it was used, and for some rides they were both 0. Not sure what it means, or if it as anything to do with the ride value. 

Also, i did not test above calculations, if someone could confirm it for me that would be great. Soon, if there is enough demand, i will make an excel sheet in which above calculations can be done. (Select ride type, input stats and BAM, out comes a table with ride prices)

 

Edited by Deurklink
  • Like 7
Link to comment
2 hours ago, Deurklink said:

The excitement, intensity and nausea are stored as integers. To do this, they have been multiplied by 100. An intensity of 5.50 is stored in memory as 550. An excitement of 8.00 is stored as 800.

And this is stored as a 16 bit unsigned integer. I know because I once managed to overflow it with the old heartline twister excitement glitch. So the maximum theoretical excitement (and intensity and nausea) rating is 655.35, which could be done with that glitch. IIRC the maximum non-glitch excitement rating ever achieved is 96.59 (buried somewhere in reddit), while my own personal record was broken by the recently built Project 41 in the Group Park 7 at 8.91.

Link to comment
35 minutes ago, Leudimin said:

And this is stored as a 16 bit unsigned integer. I know because I once managed to overflow it with the old heartline twister excitement glitch. So the maximum theoretical excitement (and intensity and nausea) rating is 655.35, which could be done with that glitch. IIRC the maximum non-glitch excitement rating ever achieved is 96.59 (buried somewhere in reddit), while my own personal record was broken by the recently built Project 41 in the Group Park 7 at 8.91.

What is the heartline twister glitch?

Link to comment
9 minutes ago, SDHokie said:

What is the heartline twister glitch?

The heartline twister roller coaster was the only roller coaster that applied a penalty for air-time, without checking for overflows. By creating enough air-time (by going very slowly through heartline twists, in vanilla RCT2 it is possible to make the excitement rating go below zero. Because it is an unsigned integer, the value will not go negative, but will become VERY BIG. (If i understood correctly :P). As far as i know, this was fixed in OpenRCT2.

Link to comment
6 minutes ago, Deurklink said:

The heartline twister roller coaster was the only roller coaster that applied a penalty for air-time, without checking for overflows. By creating enough air-time (by going very slowly through heartline twists, in vanilla RCT2 it is possible to make the excitement rating go below zero. Because it is an unsigned integer, the value will not go negative, but will become VERY BIG. (If i understood correctly :P). As far as i know, this was fixed in OpenRCT2.

Sweet. I would say that's not a far departure from real life. Sounds fun :)

  • Like 1
Link to comment
4 hours ago, Leudimin said:

And this is stored as a 16 bit unsigned integer. I know because I once managed to overflow it with the old heartline twister excitement glitch. So the maximum theoretical excitement (and intensity and nausea) rating is 655.35, which could be done with that glitch. IIRC the maximum non-glitch excitement rating ever achieved is 96.59 (buried somewhere in reddit), while my own personal record was broken by the recently built Project 41 in the Group Park 7 at 8.91.

96???? Holy smoly. My record is 13.01 only, and that's the only non-glitch Ultra-Extreme excitement rating I ever got

Link to comment

I have made an excel sheet which does all above calculations. You simply select the type of ride you are using, you fill out the Excitement, Intensity and Nausea, and the sheet does the rest.

I made this in Excel 2013.. Feel free to convert it to another format or put it on google docs somewhere to share with other people.

EDIT: I also added an open file format, for the people who dont use excel.

image.thumb.png.dd787a1cc526200c60fd219accfb0e02.png

You only have to fill out the yellow fields, the spreadsheet does the rest for you.

Excel 2013 version: openrct2 ride price.xlsx

Open Document version: openrct2 ride price.ods (tick box for same ride doesnt work in this file format)

Edited by Deurklink
  • Like 3
Link to comment

I just tested the spreadsheet with a Giga Coaster that i built with an excitement of 8.03, an intensity of 6.43 and a nausea rating of 3.46. According to the spreadsheet people would think it was too expensive if i charged 18.60 (€, in my case). Indeed, when i charged €18.50 people would still enter, but as soon as i raised it to 18.60 they stopped entering and complained it was too expensive! :)

  • Like 1
Link to comment

Interesting, according to this tool guests will pay up to 166.90 (insert currency here, and multiply if necessary; like Deurklink I use €) to ride that huge coaster with an excitement rating of 96.59 before complaining it's too expensive for the first few months. Now that is something.

Link to comment
On 12/2/2017 at 09:33, Leudimin said:

(insert currency here, and multiply if necessary; like Deurklink I use €)

Regardless of currency type, the number will stay the same. If I'm not mistaken the game's prices are actually in pound sterling (native currency of Scotland, home to game creator Chris Sawyer).

Link to comment

Not all of them. Only the (US) dollar, euro and Swedish krona as well as former French franc, German mark, Spanish peseta and Dutch guilder retain the same number as pounds (Although IMO the Spanish peseta should have been multiplied by 100 as we didn't use cents in the last few years of use). The Czech koruna, Russian rouble and Hong Kong dollar are multiplied by 10; the Japanese yen and Chinese Taipei (i.e. Taiwanese) dollar as well as former Italian lira are multiplied by 100; and the South Korean won is multiplied by 1000. Of course you can set your own currency with its own multiplier, I may put the North Korean won in the game :D.

Link to comment
  • 4 months later...

@DeurklinkGreat work, thank you for your in depth analysis, I referenced your formula and built another xlsx sheet that calculates multiple rides in a game and its optimal charge in different time period. I hereby share it. 

I am not entirely sure about beginning of the end of the month, so month might be off by 1. Also sometimes prices seems to be off by 0.1 as well, but the excel worked well enough for me so I am currently not bothered to make changes to it.

 

openrct2 calculator instruction.png

openRCT2 calculator2.xlsx

  • Like 1
Link to comment
2 hours ago, Broxzier said:

I can already smell a plug-in that notifies you about ride prices being too low or too high :P

Having a price projection would be a handy tool. I'm not a fan of spending a lot of game time constantly looking for rides that peeps are complaining about then experimentally finding the next lowest price that gets peeps joining the queue again. I play RCT Classic on mobile where ride fare is much more lax. I guess that is why I get frustrated in OpenRCT2.

Link to comment
  • 3 months later...

I'm using the provided openRCT2_calculator2.xlsx spreadsheet but there's an error in the calculation of the price. For Columns K5 and so on use this one:

=ABRUNDEN(ABRUNDEN((ABRUNDEN($E6*100*$H6*32/32768;0)+ABRUNDEN($F6*100*$I6*32/32768;0)+ABRUNDEN($G6*100*$J6*32/32768;0))*K$3;0)/5;1)-0,1

 

Link to comment
  • 3 weeks later...

OpenRCT2 Optimum Ride Price v1.xlsx

Props to @Deurklink and @jimmychau for the very useful spreadsheets! No offense to either, but the former was pretty but cumbersome to use, and the latter was useful but kind of ugly looking. So I combined the two and made my own version and added in some new useful features. There's a checkbox for if you charge park admission (reduces optimum prices by 75%) and there's a column which automatically detects if there is the same type of ride within the park (reduces optimum prices by 25%).

I erred on the side of making prices too low rather than too high because it wasn't a perfect open source calculation. It's close enough and still absurdly OP. It basically turns all your guests into juicy oranges that you squeeze dry of every single penny and throw away the rind. When I use it in my parks, a very common complaint is about running out of money. Stockpiling cash is stupid easy with this data.

Please let me know if I've made any mistakes.

Untitled.thumb.png.d6c55aec963b19d75039a52ab1fe94eb.png

Edited by Bouchacha
  • Like 1
Link to comment
On 03/12/2017 at 03:52, Deurklink said:

I just tested the spreadsheet with a Giga Coaster that i built with an excitement of 8.03, an intensity of 6.43 and a nausea rating of 3.46. According to the spreadsheet people would think it was too expensive if i charged 18.60 (€, in my case). Indeed, when i charged €18.50 people would still enter, but as soon as i raised it to 18.60 they stopped entering and complained it was too expensive! :)

Interesting to see that. I thought the willingness of guests to pay the set amount was something like a normal distribution... Turned out it's a threshold model 🤣

Well, at least this made pricing really simple. 

Link to comment
  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...