• Content count

  • Joined

  • Last visited

Community Reputation

387 Excellent

About Deurklink

  1. Park value is an important number for the completion of several scenarios. Many players do not fully understand how park value works, and struggle to complete those scenarios which require a high park value. When you know how park value works, those scenarios will actually become very easy. This guide is divided in three chapters: 1. Park value formula 2. Ride value formula 3. Conclusions (tips) If you dont like reading through code, you should probably skip to the third chapter, where I will give some tips on manipulating park value. 1. Park value formula Park value is calculated in Park.cpp , in the function calculate_park_value(). This function is actually quite simple. First, the program cycles through all rides and calculates their value. After that it adds €7.00 (I'll use € in this guide) for every guest in the park. So if the total value of your rides would be €100000 and you have 5000 guests in your park, the total park value would become €135000. Now, the difficult part of this function is calculating the ride value. 2. Ride value formula To get the park value, the value of all rides has to be calculated. The formula to calculate ride value is as follows: There are three important variables in this function: 1. Ride->value 2. Ride customers in last 5 minutes 3. Ride bonus value 1. Ride value Ride->value is calculated by taking the excitement, intensity and nausea of a ride, and multiplying those by certain factors. Then after that, the result is multiplied by an aging factor. Basically, the older the ride gets, the lower the value will be. In this guide, i have explained how to calculate this value, as it also determines how much you can charge for your ride! The cool thing is that this part of the formula can be abused. If you make a ride with ultra-extreme intensity and nausea, and because Ride->value is for a large part a multiplication of the stats with a certain factor, this means that the ride value will become very high! 2. Ride customers in last 5 minutes This part is quite self-explanatory. For a good ride value, you'll want rides with a high throughput of guests. If you need a high park rating, try building rides with a high capacity. 3. Ride bonus value This is a bonus value for every ride, which is also used to calculate how many guests spawn in your park. The ride bonus values can be found in RideData.cpp, under const uint8 rideBonusValue[RIDE_TYPE_COUNT]. Every ride type has its own bonus value. Example Now let's take an example ride to calculate its contribution to the park value. In the guide where I explained how much you can charge for your ride, we had an example Giga coaster which had an excitement of 8.00, an intensity of 5.50, and a nausea rating of 4.00. When we used the spreadsheet from that guide, we found a value of 88 when the ride was younger than 5 months. 88 will be the value we use for the Ride->value in the formula. For the number of riders in the last 5 minutes, lets just assume the ride has 1200 guests per hour, which gives us 100 guests in the last 5 minutes. The ride bonus value of a Giga coaster can be looked up in the table in RideData.cpp, and it turns out the value is 120. We can now substitute those values in our formula: ride->value = 88, ride_customers_in_last_5_minutes = 100, rideBonusValue[ride->type] = 120 (88 * 10) * (100 + 120*4) = 510400 To get the contribution to the park value in money, this value has to be divided by 10, so this giga coaster would contribute €51400 to the park value. This value will diminish over time as the ride gets older, because the ride->value component will get smaller over time. Also, it will be 25% less if there is already another ride of the same type in the park. 3. Conclusion (tips): As explained in the previous chapters, the park value is calculated by summing the value of all rides, and then adding €7 to the value for every guest. Here are some park value tips and considerations: - For a high ride value, the stats of a ride need to be high. You can abuse this by making rides with extreme stats. A few very high roto-drop towers or freefall towers are a very cost-effective way of increasing your park rating. - Build rides with high capacity and keep the throughput high. - If rides break down, the throughput will be temporarily reduced, decreasing the park value. Try to keep downtime for rides low. - Rain will also decrease the throughput for most rides, thereby temporarily decreasing the park value. - If you build more than one of a ride type, their values will be reduced by 25%. This guide used the soure code of OpenRCT2 at 21-03-2018.
  2. Ah, my bad, confused some stuff. Other trains indeed use boosters normally. Depending on the used trains, you will see different acceleration rates though. @S-Man42, thats because that track type doesnt have boosters. If you build a giga coaster track and put a wild mouse car on it using cheats, you will see the wild mouse car accelerate over the booster.
  3. Not all trains are coded to work with boosters. For those it may be better to use a fast chainlift. ^ disregard that, boosters work if you use a different train.
  4. White-Water Rafting

    You dont even need to merge for that if you're gonna make the track invisible anyway. Just use arbitrary ride types cheat to change into a type that uses s-bend and continue building.
  5. White-Water Rafting

    Reminds me of this park, which also has a rafting ride:
  6. Scenery cluster *still* not fixed in MP

    Works fine for me. Maybe you need to enable it in your user group permissions.
  7. White-Water Rafting

    I love those! maybe you could try making a video or GIF of it?
  8. Screenshot dump topic!

    If we reach the object limit in this server i know who to blame
  9. Group Park 7

    I think we should just apply some finishing touches from now, and start thinking about the next group park
  10. Group Park 7

    REEEEEEEEEEEEEEEEEE You're right though. I think the whole ride could use a little bit more detail.
  11. Group Park 7

    And I'm done! Things i did: - Changed @saxman1089's sharknado to use the Shark trains from Wacky worlds instead of the custom Shark train (thats converted from WW). This should make the file size a little smaller. - Extended the station of bike race a little. - Changed the ride type of @Penguin's horse rides to Lift, so it stops being so freaking noisy (and now guests may also ride it regardless of intensity) - Made Tour des jardins, a nice little car ride that fills up some space near the entrance. As you can see it's very popular. Claimed: - Queue: @Jochem, Broxzier, Deurklink Missed: xbalogan, jensj12, Przemek, TheMightyClem, 1081p, cascadia, RedScope53, RaunchyRussel, Darthyoda714, TCE, saxman1089, Leudimin, Wuis, DiamondRush, SpiffyJack The OpenRCT2 Group Park 7.99.sv6
  12. Group Park 7

  13. Guest spawning is something that is not very well understood in the OpenRCT2 community. The functions that dictate when a new guest will spawn are quite simple though, so in this guide I will try to explain them. Guest spawning probability is handled in the function park_calculate_guest_generation_probability(), which can be found in park.cpp: Some scenarios have an option ticked that makes guest generation more difficult. If this option is enabled, guest generation will be calculated a little bit differently. In the first section i will handle the normal situation, in the second section of this guide i will handle the difficult guest generation situation. In the third section the guest spawning will be handled and in the section after that i will cover advertisements. The final section has some tips on how to keep the guest spawn rate high. 1. Scenarions with normal guest generation 2. Scenarions with more difficult guest generation 3. Guest spawning 4. Advertisements 5. Conclusion 1. Scenarios with normal guest generation Suggested guest maximum The first thing this function does is calculate a suggested maximum of guests. It cycles through the list of rides in the park, and for each ride it adds a value to the suggested guest maximum. Every ride type has its own specific ride bonus value, which can be found in RideData.cpp (Search for const uint8 rideBonusValue). For a giga coaster, this value is 120. For a corkscrew coaster, this value is 100. So if your park has 2 giga coasters and 1 corkscrew coaster, suggestedMaxGuests would have a value of 340. If you would build 240 corkscrew coasters, suggestedMaxGuests would have a value of 24000. Total ride value for money The second thing this function does is calculate the total ride value the guests get for their money. In an earlier guide, i explained how the ride value is calculated. This function subtracts the entry price of a ride from the value of the ride. If rides are not overpriced, totalRideValueForMoney will increase. This variable will be used in a later function. Guest generation probability Now the function will start to calculate the guest spawning probability, which is a number from 0 to 65536. First 50 is added to the probability value. Then, the function takes the park rating and subtracts 200 from it. The result of this subtraction will be clamped to a minimum of 0, and a maximum of 650. Then this number is added to the probability value. If your park rating was less than 200 your probability value would now be 50 + 0 which gives a result of 50. If your park rating was higher than 850 your probability would now be 50 + 650 which gives a result of 700. The function then adds the number of guests heading to the park to the number of guests already in the park, and compares it to the suggested guest maximum it calculated earlier: If the number of guests is higher than the suggested maximum, the probability is divided by 4, effectively reducing the guest generation by 75%. If the number of guests in your park is higher than 7000, the probability also gets decreases by 75%. Then the function checks the entrance price of your park and compares it to the total ride value the guests get for their money. If the entrance fee of your park is too high, the guest spawning probability gets divided by 4. If it is way too high, it gets divided by 4 again, which only leaves around 6% of the original value. Finally, the function checks for any awards that are active. Positive awards increase the probability by 1/4th, negative awards decrease the probability by 1/4th. This is multiplicative, so if you have three positive awards active, the probability gets multiplied by 1.25 x 1.25 x 1.25 which is almost twice as much as it started with. I will discuss in chapter 3 how this probability is used to generate new guests. 2. Scenarios with difficult guest generation In scenarios where the option more difficult guest generation is enabled, there are some differences to the above formulas. Suggested guest maximum To calculate the suggested guest maximum, the same ride bonus value formula as above is used, but now it adds a maximum of 1000 points. So if you build 15 corkscrew coasters which would each add 100 points to the guest maximum in a normal park, the guest maximum will only increase by 1000 instead of 1500. Then after this formula is applied, the function checks all tracked rides. Every tracked ride that is over 600 meters long, and has an excitement of over 6.00 will have its ride bonus value applied again, twice. So if you build 15 corkscrew coasters which all meet the length requirement of 600 meters and all have an excitement of higher than 6.00, then you the suggested guest maximum would be 1000 (from the first function) + 15 * 100 * 2 (from the second function), which gives us a suggested guest maximum of 4000. Spamming many small rollercoasters in these scenarios will not help much as they dont reach the requirements and will only add to the maximum of 1000 from the first function. The key to generating many guests in these parks is to make long, exciting roller coasters. Guest generation probability The second difference in parks with more difficult guest generation is that when the amount of guests is higher than the suggested guest maximum, the probability now gets divided by 4 again, effectively dividing it by 16. This is why it may feel like you hit a cap at some point if you reach the suggested guest maximum. 3. Guest generation Now that the guest generation probability is calculated, the value can be used to generate guests. Basically, what this function does is generate a random number from 0 to 65535 every tick. If the random number is lower than the guest spawn probability, a guest will be spawned. The guest spawn probability will usually be a number from 0-1500 depending on the amount of positive awards, if the number of guests is higher than the suggested max, etc. When the value is around 1500, approximately 1 guest will be spawned every second. There is another check in this function that ensures that no guests will spawn in a scenario with more difficult guest generation if the number of guests in the park is 150 more than the suggested guest maximum. 4. Advertisements Advertisements are a special way to increase the number of guests in your park, because they use a separate probability value, and they bypass all the checks mentioned in the functions above. The different marketing strategies add the following amount of points to the marketing guest spawn probability: Free entry to park: 400 Free entry to a ride: 300 Half price entry to park: 200 Food or drink for free: 200 Advertising campaign for park: 250 Advertising campaign for ride: 200 Note that the advertisement campaigns that lower the price of the park or a ride have their probability value divided by 8 if the price is very low. Having all advertisements campaigns active will give a probability value of 1450, which will spawn a guest almost every second. 5. Conclusion In order to spawn many guests, you'll want to do the following things: In a normal scenario: - Make as many small and cheap rollercoasters as possible. These will all raise the suggested guest maximum by a lot, no matter how long or exciting they are. In a scenario with more difficult guest generation: - Make many rollercoasters with a length of over 600 meters and an excitement of over 6.00. These will raise the guest maximum by a lot. In all scenarios: - Keep your park rating above 850! If the rating is any lower the spawn rate will drop. - Try getting many positive awards. An easy one to get is most dazzling color scheme (paint all your rides bright purple, bright green, bright pink or light orange). - Advertisements! These will win you scenarios, because they bypass the checks for suggested guest maximum, etc. One last limit you may run into is the sprite limit. RCT2 currently cannot handle more than ~9600 sprites, which includes peeps and vehicles etc. Once this limit is reached, no more guests will spawn. This guide was written using the source code of OpenRCT on 12th of March 2018.
  14. Alpunta, somewhere in Swiss

    I think it's sexy! Not sure about that observation tower though..
  15. I recently got multiple servers to run on one pc, and i saw some people asking how to do it, so i decided to write a guide. This guide has the following chapters: 1. Port forwarding 2. Running the servers 3. Running the servers with different user permissions Port forwarding This is the most difficult step for most people, and also the step that will decide whether you can host a server or not. First, you need to log into your router. You typically do this by connecting to your network and typing the local ip address of your router. For me this was but for you it will probably be different. Here's an example screen of my router configuration page: The next thing you should do is give your server PC a static IP address. This will ensure port forwarding is always done to the right PC. To give your PC a static IP address, you need to look for a table in your router which says something like static DHCP. It will probably be described in a different way on other router software. Look up the manual of your router if you cannot find it. You will need to fill out the MAC address of your PC. To find it, open a command prompt and type "ipconfig -all". Here you will see the physical address of your ethernet / wifi card you're using to connect to the internet, which is the MAC address: Next, when you have given your PC a static IP address, you can open up ports on your router. Again, this will be different depending on your router. For me, the settings are under Data > NAT > Port mapping. Usually this page will be called Port Forwarding or something similar. The standard port for OpenRCT2 multiplayer is 11753. If you want to have more than 1 server, you will need to open more ports. In my example, i want to run 2 servers on one PC, and another server on the other PC. As you can see in the following table, Ports 11753 and 11755 are forwarded to the PC with IP address and port 11754 is forwarded to If you want to run more servers, simply forward more ports. Running the servers Open up OpenRCT2 and click the multiplayer icon: Then when you click Start server, you get a screen where you can fill out some details: Note that this server uses the port 11753. This port should be used on the PC that you gave the address to in the previous example. Now if you want to run a second server, all you have to do is open up another instance of OpenRCT2. Here you start another server: Note that you should use a different port for this second server. You can start as many servers as your internet connection and your PC can comfortably handle. Running the servers with different user permissions One limitation about the above method is that all these servers will have the same permissions for every user, since they use the same userdata files. An admin in one server will also be admin in the other server. There is a file called users.json in your OpenRCT data folder, which contains the permissions for all users. In order for every server to have separate permissions, every server should have its own copy of this file. To do this, you should go to your OpenRCT2 folder in Documents, and make a new folder. I called mine server2. In that folder, you place the following file: start.bat ( Credits go to @Broxzier for creating it). Running it will start OpenRCT2 while making new user data files like users.json and config.ini in the folder it is in. In the future, to run the second server, you will have to start it every time by running start.bat. You can make many servers by creating more folders in the OpenRCT2 directory, and running start.bat from them. One other advantage of this method is that OpenRCT2 will remember the last port you typed in. So every time you run server 2, which uses the port 11755, for example, you will not have to type the port number because it is remembered in the config.ini file. I often run 2 or 3 servers using this method. I hope this explanation was clear! If there are any questions, dont hesitate to let me know.