[Workshop Mode] Loot Quest - PvE RPG w Save Codes [v7.5.1.8]

Hi Delwion.

This is my first message on the forums, so sorry if its formatted incorrectly.

I’m wondering if you could tell me how I go about changing some of the variables? Me and my friends enjoy this mode a lot, but for us personally we think it’d be better if we could mess with some of the variables. I’ve managed to find where starting level is, but that’s not what we wanted to change. If possible, we wanted to change money &/or XP generation by a bit, nothing drastic. It’s just because its a little grindy for us but we still love it. (Sorry if i’m not allowed to message on old forum posts, I am unsure)

I’d appreciate your reply, thank you.

Hi :slight_smile:

XP and money are both calculated based on the defeated enemy’s rank and type (regular/champion/boss). See “XP and money” under section 11 in the opening post for details. If you want to change the amounts, you need to find and change the corresponding actions/values in the script. I’m not going to explain in detail here what needs to be done since I believe it could make the game mode less fun for some players.

Edit: I’ve made a fast-paced mod of Loot Quest called Hyper Quest now, with very high drop rates but no saving function (see post at the top of this thread for the latest version).

hi, can you add me pls SerSerych#1411, need some answers)

The New AI’s Are So Strong!

I’ve focused primarily on stability in recent updates. As an unintended result of adding the custom AI, the game is harder than intended now (especially on higher levels). I’m working on a balance update right now that will hopefully make the difficulty more reasonable again and will also include a fix for a bug with incorrect item power values.

Edit: Thank you for your feedback, by the way :slight_smile: I do a lot of testing solo + public stress tests, but it’s easy for me to miss things that are essential (or I delay them until later updates like I did with the balance changes now).

Version 4.3 has gone through the solo-testing stage now and I will hopefully be able to do the stability tests tomorrow and release it for all 16 maps (the main feature of this update will be a complete rebalance of the damage dealt and received values, but there will be some other small new features as well).

Edit 2: I’ve now released version 4.3 :slight_smile:

Holding Crouch Does Not Respawn Me, This Currently Makes The Game Almost Unplayable, To Solve This, I Have Changed The Button To “Interact” And It Works Perfectly, Though It Spawns You Instantly When You Press The Button. If This Helps, I’m On Console.

Here’s The Code Where Pressing Interact Works: H9E4W6

Sorry about that :confused: Unfortunately, I can only test the game on PC (keyboard + mouse) where it worked. I can only guess why it doesn’t on console. Possibly, the “is button held” condition keeps flipping back to untrue for a split-second when holding crouch on a (console) controller which resets the wait timer every time.

Edit:

  • I made a version of Eichenwalde where you need to hold Interact for 1 second: PYGTR
  • And another one where I removed an unnecessary condition that may have caused the issue (version where you still need to hold crouch for 1 second): HV9YK
  • And a third one where I removed an action instead (hold crouch for 1 second): 4HT3EY

All three worked for me on PC (keyboard + mouse). Would be great if anyone could test if respawning works in any of these versions on console and let me know :slight_smile:

I will try to test this soon.

EDIT:
Code PYGTR Worked Perfectly, Holding Interact For One Second Respawns You.

Code HV9YK Did NOT Work Even After Multiple Attempts Of Button Presses.

Code 4HT3EY Does The Exact Same Thing As Code HV9YK And Does NOT Work.

To Conclude, It Seems That Your Theory With The Crouch Resetting On Console Is True, Because Anything Related To Holding Crouch Seems To Not Work As Intended. :neutral_face:

1 Like

Thanks a lot for your help with testing :slight_smile: I will update the share codes in the next few hours then, to implement the respawn system with Interact :slight_smile:

Thank You So Much! I’m Really Glad I Was Able To Help Fix This Console Player Issue :smile:

1 Like

I seem to get an issue of the server closing due to excessive workshop load whenever saving, it’s happened 3 times in a row and I don’t really want to keep wasting 30 minutes + trying to get a better item only to have it not save because it crashed when I saved, is this a problem you’re working on fixing, or am I doing something wrong?

Also do you have any plans on improving the save/load system in general (if you can) currently it takes quite a while to tab in and out to slowly input the code, not to mention if you type one digit incorrectly…

Other than that this is a fantastic workshop mode!

Thanks. Based on my testing, the number of players joining and leaving the game, the number of players who get a save code, and the number of players who use the loading station (even without loading a hero) all increase the risk of crashes. Some maps seem to be a bit more likely to crash than others.

The server crashes, unfortunately, are a problem I do not know how to solve anymore. I really tried everything I could, removed a lot of features (players used to be able to carry 20 items in their inventory, there were hud texts in the color of the item rank, colored explosions when picking up loot, in-world texts for stations, in-world texts showing the enemy rank and type, a boss icon, 5 teleporters instead of 2 on every map, a quest system, etc.), I rewrote the entire script over and over again, greatly reduced the number of global and player variables used, but the crashes still happen.

There appears to be a problem in workshop that I’ve encountered in many of my other game modes as well which makes the server crash when you have relatively large arrays (even one global variable array with ~50 integer values seems to be enough) and the script changes too many of of the values in these arrays. For some reason, this appears to put a ton of stress on the server, and it does not make any difference how fast or slow you change these values (when I put a wait time of 1 second after every single set global variable at index action in other projects, the server still crashed just as often).

So changing an array of that size appears to be too much for the server, when you have some other things going on, even when there’s just a relatively low number of effects in the game. Loot Quest does have global cooldowns for enemy spawn and despawn events and player-specific cooldowns of 1-10 seconds for complex actions such as equipping an item. When a player receives a save code, no player can perform any complex action for 5 seconds, no loot is created for that time, and enemies won’t spawn or despawn. But this didn’t help avoid the crashes.

Equipping an item is another action that caused a lot of crashes in every version of Loot Quest, and all it does, is temporarily save the equipped item array (19 integer values) in a global variable, replace the equipped item array by the inventory item array, and then replace the inventory item array by the temporary global variable. So copying 3 arrays with 19 entries each crashes the server. Maybe someone can explain this to me, but with my limited technical knowledge I simply cannot understand how that can be too much for the server to handle.

At this point, I also do not have any idea on how to optimize the save code system without completely redesigning it (including the item stats). Right now, the codes saves 18 values of the equipped item (7 of them have 2 digits, the others 1), a player’s gold (4 digits), the number of boss summon stones (1 digit), the player’s level (2 digits) and EXP% (4 digits). 4 digits are reserved for the validation system (so a randomly entered code only has a chance of 1 in 10,000 to be a valid code).

There are things, I could try to make Loot Quest more stable. One of them would be to remove the colors of the loot sphere effects on the ground (turn them into permanent effects that only have their position adjusted), or reduce the number of item stats (for example, by removing max health and projectile velocity and by reducing damage dealt, damage taken, and move speed to single-digit stats), or I could remove the reroll and refine systems I just added (just to reduce the size of the script in the hope that that would help), but - at this point - I’m not willing to spend that much time to remove features from the game mode, for the slim hope that it might help with server stability (and also, changing the item stats would render all previous save codes invalid which is something I really want to avoid so players don’t lose their save states).

Sorry, for the long reply. I just wanted to explain why - at the moment - I have no plans to work on newer versions of Loot Quest.

Wow! Thanks for the extremely detailed response! I guess it’s more of a problem with the limitations of the workshop mode, I seem to recall Jeff saying there are more features coming to the workshop so hopefully some of them can help out to stabilise the mode.

As for my problem with crashing, when I was playing I had a couple friends, so no one joined or left during the game (one of the games I was solo) and for most of them it was the first save the crashed it, towards the end of the game, I guess I should try save more towards the start of the game and refresh from there.

I’m sorry to hear that :frowning: I guess the best option for now is to save relatively soon and then restart the match :frowning: (Hearing now that the crashes happen in solo games as well, I’m considering trying to remove the reroll and refine systems to reduce the script size to see if that helps. My assumption here being that a larger script uses more memory even if the amount of rules and conditions checked per frame remain the same.)

Edit: I tried various modifications and completely removed the item reroll and refine systems again, but, alas, nothing helped. In every version, the server started crashing after about 30 minutes when players tried to get save codes. So at this point I’m out of ideas. I hope people can still enjoy playing the game mode as it is. If any future workshop updates improve the situation with server crashes I will work on Loot Quest again :slight_smile:

2 Likes

Maybe You Can, For The Time Being, Make The Time Lower So People Can Save Before The Crash, Lets Say After Thirty Minutes It Crashes, Set The Length Time To At Or Before The Game Breaks Down To Encourage People To Save Before The Game Ends, Therefore (kinda) Solving The Crashes. If The Problem Is “People Will Have To Reset A Lot”, They Will Have To Deal With It Because Resetting The Map Is Better Than Resetting Your Entire Progress Of That Round. Either Way Matches Will Be Short Due To Crashes, So It Would At Least Be Better To Give The Players A Reminder (The Time About To End) To Tell Them To Save, Which, Like A Said, Gives A Temporary Solution Until Blizzard Buffs Workshop Mode, Because Goodness, Workshop Can Be As Bad As Nerfed Doomfist.

You are right, of course. I will make that change tomorrow :slight_smile:

Edit: Unfortunately, even a very short match time can’t guarantee that the server won’t crash: In 3 test matches, I managed to make it crash after about 5 minutes by getting several save codes, upgrading, crafting, and equipping a lot, and loading several save states.

The funny - or not so funny thing - is that the server load average for the duration of the entire match was below 55! Most of the time, it was below 40. 40 times (in about 1200 ticks - since the current server load value appears to be updated 4 times per second) the current server load value was above 100, and 2 times it was above 200 (one of those was the very first tick of the match when all the effects are created). Based on my experience, that’s nowhere near the values that usually make a server shut down.

So this reinforces my suspicion that workshop has a (memory?) problem with large arrays when actions keep changing values in these arrays. A problem that I’ve encountered in at least four of my other workshop modes as well (World of Overwatch, Counterwatch_Rialto, Genji Quest 2, and The Overseer).

I’ll reduce the match time to 20 minutes for now which should make the risk of crashes in the average game relatively low.

In the PTR, Workshop should have better stability, so hopefully the Gamemode stops crashing :partying_face:

Yes, I’ve already started updating the script on PTR ^^ This workshop update is really fantastic :slight_smile: I hope it makes it to live servers :slight_smile:

Edit: I’ve disabled the Inspector and updated most of the script to use optimized (new) actions on the PTR now, and it appears that the game mode is a lot more stable (more testing required to be 100% sure it can’t crash anymore) :slight_smile:

1 Like

Hey, Sorry For All The Talking In The Comments Recently, But I Do Have One Question About The PTR That I Thought You Might Be Able To Answer. Recently I Have Been Doing A Lot Of Workshop Myself And Seem To Always Hit The Workshop Limits, As In, I Try To Add Something Then It Says “Error: Script too large.” I was wondering because you have such a huge Gamemode, if you would be able to tell me if they increased that limit, so it lets me add more stuff.

Thank You If You Do Respond, Sorry For All The Talking! :slightly_smiling_face:

As far as I can tell the limit is still the exact same on PTR, but you can see now how large your script is in the workshop editor and get an idea of how much space you have left. And the new subroutines, in many cases, can help you reduce the size of your script: If you have any series of actions that’s used more than once in your script, you can put them in a subroutine and just call that subroutine whenever you want the actions to run.

I always try to optimize my game modes to use as few variables, rules, actions, and conditions as possible while trying to keep the server load as low as possible as well. I’m not sure if there are technical reasons why the maximum script size can’t be increased (maybe it would require too much memory from the server). It would certainly be nice if we could make larger scripts (I could put the coordinates for all maps in a single script for Loot Quest again, for example :slight_smile: ), but knowing that there’s a limit and having a better idea now of high that limit is makes it possible to plan ahead and design a game mode in a way that it won’t exceed the limit.

But yes, with the amazing fix/improvements to server load problems that comes with the PTR update, the workshop limitation that I can currently feel the most is script size :slight_smile: