Log in to create a new thread
Codename Entertainment Forums > Crusaders of the Lost Idols > Technical Support > Reset bug
| Reset bug
| |
|
26 Posts |
Link to post
- Posted July 19th 2016 at 2:48 AM
AsquallLast Edited July 19th 2016 at 2:49 AM I've got a bad connection while resetting just a while ago. After I picked a new objective - that is Free Play on Ghostbeard Greed - my connection dropped. No pop-up or whatever, so I clicked Start Objective again on the Free Play, but it states that you already have an objective.
Unable to progress past here, I restarted the game on home (was at work), but now I already on the previous level when I resetted (374), with only Bushwacker on formation, and all crusaders level intact. I already experienced this once on the last event, effectively bypassing one (I think the 4th) quest and ignored it, but now I think this should be fixed before someone exploit it. Edit: I already confirmed that the reset is recorded and idols are awarded, but the progress itself stays at same level. |
|
859 Posts |
Link to post
- Posted July 19th 2016 at 3:28 AM
Andreasyes, this effect exists for quite some time now. Especially with an instable connection, this can happen for multiple objectives in a row. And for that, it doesn't matter whether you are trying to start free plays, event or campaign objectives.
I think it is not quite easy to fix, since I suspect the event to end an objective is sent and registered (this is why you receive the idols and any incentive you might additionally get), the "flush" event (to set your gold, the crusaders levels and your game level to zero) is sent by the server back, but not registered by the game in your browser, though, for some reason. So, there is hardly any way for the server to "know" whether the values it checks before starting an event are there because of a still missing flush event or a genuine active objective. This is why you see the notification that an objective is still active. But at the same time, the server stores the information that you activated the objective. This is why, after reload, the new objective is started, but the old values, stored locally on your computer, are still not set back to zero. From my point of view, one alternative to this would be to not being able to start a new objective, until the "flush" event is registered locally and all values are reset. However, if - because of an instable connection - this event never reaches your browser, you could end up in a loop where you can never start an objective. Or, on the other hand, you could end up not being able to end an objective if you want to have the reset of values being mandatory for an objective to finish. I don't have any insight into the games' logic, but from what I know about IT design and how I experienced the game so far, a fix is needed. However, the efforts to fix this issue (and others connected to instable connections like finishing boss levels/rewarding silver chests), seem to be huge and the danger to fix one issue while creating others - including downsides for users like you and me without the best connection - might be quite high. Because of this, the possible exploit seem to be the lesser of two evils. |
|
26 Posts |
Link to post
- Posted July 19th 2016 at 4:55 AM
AsquallThat makes sense. However, doesn't making the flush event server-side, instead of client-side, will make sense better? When the game starts, client checks server what is the current state (current level and crusader level sounds a good indicator), and if it doesn't match with the server state, overwrite it with the server one. (But I know I'm not a game engineer)
I was in impression that the game loads from the server, instead of local cache, but I was wrong. |
|
859 Posts |
Link to post
- Posted July 19th 2016 at 6:55 AM
AndreasAgain, this all is speculation, but as far as I have read, most game data is stored locally to make it easier on your connection. This happens with nearly all flash games as far as I have seen. This is why loading lasts quite a bit when your connection isn't good. Additionally, with the bug of the statistics doubling after reset, I think, the "flush" not only resets values locally, but also allocates new memory on your computer to store the data of the new objective. This also would fit into some of the statements where lag becomes more of an issue when you reset multiple times without reloading (or reopening) your browser.
But, even with the check being performed server-side, this is what might already happen. Let's see if can list a somewhat sensible order here (and apologies if I contradict my earlier post, since I didn't think it through before, of if there are errors in here - most likely for the same reason): - you're playing the game and want to reset. All your values (level, crusader level, gold) is stored locally in your computer's memory. - after you hit reset (the order might be different or things might be combined): - 1: a save action takes place. All your game's values are sent to the server and stored - 2: a objective reset action is taking place - my best guess is, on both sides, server and local game: - 2a) a reset is registered on the server. There is a check whether you have succeeded the objective granting you the incentive, plus idols - 2b) the incentives and idols are stored both on the server data and your local game I think the following stuff is different from what I described earlier, but this might make more sense than my first throw at this, so here we go: - now you are in the screen selection a new objective, when you select one of them to start them - 1: there probably is a sanity check whether you meet the requirements (event money, idol count) in case you might stumble into them by accident - 2: the server locks in this new objective as 'started' on the server side - 3: at the same time, the server sends an action to your browser to allocate new memory including the command to store the 'zero' or 'initial' values. Not all zeroes, since there is the cost to initialize your crusaders, the click dps, initial gold bonus, your max level on this campagin, the initial formation etc. - 4: now, in order to actually change the screen, my guess is that there is a feedback by the local game when all is set up there. - 5: once it is, the new objective is started and all local values (now, initialized, or 'flushed') are stored from the local side to the server again, bringing both sides in sync. And between three and five, this somehow goes wrong. Experiencing how finishing the boss level works with bad connections, the game doesn't have some kind of safegate. Meaning, it doesn't change things by itself if something takes longer, but instead gives an error message. The result is, however, on the server, your old values are still there, because the feedback from the local side is missing. Plus, the new objective is already activated on the server side by clicking the 'start'-button. As with the 'save' command, the server probably tries some part of the start-commands again. But when it does, it somehow reads the status of the objective or the active objective and finds the one it activated itself before, giving you the error message that there is an objective already activated. From that moment on, my guess is, no feedback from the local side is accepted anymore, even if it was coming in late. Now, when you refresh, your local game values become irrelevant, only the server data is used. So, even if the command to initialize everything was received, it doesn't matter anymore. The server still has the old values. As far as I remember, there were occasions when even my old formation was still active, so there is even a difference, which values are stored by the server before this 'Objective already started'-message. But all other values were not set back to initial and are still there and stored on your computer now. Well, this might be complete this time, but chances are high that this isn't all or correct. I also think, CNE will never give us details of how this process technically works. So, suggestions of how this might be improved are still speculation from our side. I had the same thoughts around how to improve the handling of boss levels during weak connections, but without insight and knowledge in game design this might be the same as listening to a toddler giving advice of how to drive a car :-) |
|
5565 Posts |
Link to post
- Posted July 19th 2016 at 7:30 AM
Raymondno game data is stored locally other then simple graphics.
all things are actually on their server and there is constant communication. http://forum.codenameentertainment.com/?thread_id=12508 |
|
859 Posts |
Link to post
- Posted July 19th 2016 at 9:44 AM
Andreasif this was true and no game data other than graphics reach the clients then I have two questions (crap, it turned into three, sorry):
- how is it possible for some users to cheat by using a hex editor or sorts? Wouldn't they need access to the server to manipulate the data? Didn't we have this case in a past thread where we suspected a user to manipulate stuff? - and - more importantly for me - why doesn't the game stop immediately when I lose connection to the server? Instead it gives the error message, but continues playing and retries a connection to the server by trying to save. So, at least for some time (and my suspicion is, all the time and snapshots are sent to the server during the 'save' action), some data is stored, locally. - how is lag experienced for some users on different levels? My suspicion here is the different computer setup trying to calculate and store bigger numbers locally. Some machines with better CPU and RAM are faster, so arent. If only the graphics were stored, these calculations would need to be done by the server, I guess, so the experience would be the same then. In the thread you linked, the issue was a little bit different. The action in question was the games' load. Now, to repeat this process over and over until it actually works is not an issue since - for this you are right - your savegame is stored on the server. So, loading once or five times doesn't disrupt the data on the server from my point of view but is simply sent over to the browser. This would also explain the immediate 'save' after the games' load, since your idle values (gained xp, gold, etc.) is stored back at the server so it doesn't get lost after the game is loaded. But, I might have missed the Yellow Brick Road completely. If so, sorry for the confusion I might have caused. |
|
5565 Posts |
Link to post
- Posted July 19th 2016 at 10:09 AM
Raymondthey cheat on the data stream to/from the servers is how i have understood it, http/html push/get intercepts and such. like someone who cheated years ago in bw1 or perhaps it was bw2 other flash based server stored games.
the 'signals' to the server don't happen every millisecond, you close out and it still might be seconds later. just try it, use storm rider and immediately close out. reload the game and storm rider is most likely not used. the game didn't get a 'save' signal on your closing out. lag I do not understand, a flash graphics issue but somehow level related? i wish the Devs would actually chime in more recently on this. I seem to remember Erika saying 'only graphics info is stored locally' at least a half a dozen different times in the last year |
|
26 Posts |
Link to post
- Posted July 19th 2016 at 8:16 PM
AsquallThis might give a clue :
I used hibernate a lot. In the past times, I sometimes hibernate my computer without closing the game. However, it seems the game resumes from hibernation and didn't check the server that some time has already passed, nullifying the idle gold and xp generation. After this, I always close the game before hibernating so I won't lose the idle gold and xp. This proves that the server doesn't check the submitted 'snapshot', and blindly overwrites the data on the server. In a sense, there is no data saved locally, but after the game is loaded, the game becomes client-side (hence, I think, can be hacked by hex editor) as any 'snapshot' it submit will overwrite the data on server side. Not cool, I know, but I imagine the dev already looked at this thread and discussing this. |
|
Log in to reply to this thread! | |