Page 1 of 1

Note on inventory and score saving at the HyperCoop servers

Posted: Tue Aug 16, 2016 12:35 pm
by Hyper
Last year I received several e-mail messages from players whose inventories and scores got lost at the HyperCoop servers. I have not been able to help these players. I very well know that it sucks to lose everything because it contributes many hours of playing to build that impressive score and inventory. It is not unwillingness from my side that I am unable to help but these are inherent limitations of the Old Unreal game. Many other Unreal coop servers don't even *try* save your inventory to disk and the ones who do likely have similar limitations. If you cannot stand the risk of losing everything, you may want to look for another game with true user accounts like Guild Wars and many others.

For years, Unreal and my servers saved scores and inventories to the server's memory (RAM) only and players could easily steal each others work by logging on to their names. With the GemDagger, JCoopZ and Unreal 227's features my server attempts to at the same time save your inventory to disk at every map change and as well prevent other players from stealing it. Technically, this is quite a difficult job to achieve in a game that never supported this. The current situation is that it works, but only most of the time. This means that your inventory and score can get lost. For example when:
  • Playing from different computer from before with the same player name. (Or changing things on the computer like operating system and computer name)
  • Playing with another player name
  • If the server crashed/restarted before map change, all progress is only saved to last map change.
  • When your Unreal.ini and User.ini files are read-only or deleted at all.
Thank you for your understanding.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Tue Aug 16, 2016 3:49 pm
by BobIsUnreal
i dont play there so its not a issue for me , but here are some suggestions.

alot of the issues can be resolved by disabling bnoinvenntory stealing etc.

while i know it is of no real interest to you-

it KNOW it would be fairly straightfoward to rewrite a modern equivalent more reliable system to save player scores/kills/inventory as a gamerules mutator that could even do all the stuff gemdagger does ( assuming that's part of the problem)


i originally made jsaver 2 years ago its purpose is to bruteforce save score/realkills from jcoop in almost realtime and recover them after a crash. it has know issues and its somwhat obsolete at this point.

but what you need is differnt then that -
you need a combination of 2 of my projects jsaver and statssys-generic - statsys provides the account system where clients creat a password accocated with the name and the combo is remembered based on there 227 uid hash- if they wipe there install, goto a differnt pc all they need do is validate the playername with the password they gave at creation time and the new hash is cached.

name changes can be addressed manually- user emails password and name to admin and admin replaces name in database.
jsaver would provide the score saving connector to jcoopz1
newer builds of stat system hook inventory recived callbacks , so any weapons you gain are recoved at verified login.

no its not somthing you are going to use / want/carefor - i am just pointing out that it is fairly simple to do



Re: Note on inventory and score saving at the HyperCoop servers

Posted: Tue Aug 16, 2016 4:31 pm
by []KAOS[]Casey
players could easily steal each others work by logging on to their names.
yeah. no. it was a measure of anti-tedium. Way back before any custom gametypes were created at all and even after some were, the name change thing was used explicitly to actually have a weapon other than the dispersion pistol after the inevitable server reset because 225f/gold were buggy as shit. I know I personally even went out of my way to give custom easy to remember names a bunch of inventory so people could join in and use that.

have fun potentially being DP only with near-zero ammo for anything else for several maps :)

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Tue Aug 16, 2016 6:54 pm
by jaden88
Hey remember that one time this problem has been solved for literally over 20 years in the form of logins with user/pass? :|?

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Tue Aug 16, 2016 11:26 pm
by Hyper
Well, it would not be fair to just disable inventory theft prevention and allow anyone to take over each other's score and inventory. Some players really played for hundereds of hours or maybe even more to get what they have now.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Aug 17, 2016 12:45 am
by []KAOS[]Casey
Without a custom gametype or scorerecovery, once you disconnect your score is gone, as the score does not travel. Score linked to player inventory is a manufactured connection


skore. skore. skore.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Aug 17, 2016 4:10 am
by BobIsUnreal
would not be fair to just disable inventory theft prevention
but its fair to you for everyone including them to lose everything because it has flaws ehh.... ummm

so "somone took advantage of my earning" > " I lost many years worth of my earnings becuase no reason"?

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Aug 17, 2016 1:20 pm
by Hyper
Yes, it is flawed, as said in the start post. But this is the most I can offer. Sorry. If you want true user accounts, you'll need to find a better game.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Thu Aug 18, 2016 3:09 am
by []KAOS[]Casey
Wish I remembered this earlier;

I will revise my previous post as

"[url=http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1395035189]lol,[/url] [url=http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1314001633]really?[/url]"

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 1:30 am
by Hyper
Wish I remembered this earlier;

I will revise my previous post as

"[url=http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1395035189]lol,[/url] [url=http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1314001633]really?[/url]"
LOL comments do not change the core of the matter. But well, I'm somewhat open to improvements. Over the years I have seen some possibilities come by, but they never left the beta, development or niche group state.

Before I even start considering to use one, it needs to be:
  • Finished and complete. Or better: mature.
  • Well-tested (by the developer and/or his/her testers). I'm NOT willing to beta-test this, I'm already beta-testing unreal 227 and that's enough for me.
  • Well-documented. Everything about the setup, usage and settings should be explained in a well-written manual, step by step, complete and well-written. (Like Winged Unicorn's or }TCP{Wolf's manuals)
  • Easy enough for me to use it. I have no knowledge about programming, UnrealScript, databases, DBMS, SQL, MySQL, SQLite etc. I have knowledge about Unreal servers and settings, INI files, PC's in general and the Windows OS.
  • Stand-alone / self contained. The last thing I need is another Windows service or 3rd party background program. (database engine).
  • Compatible with JCoopZ and Unreal 227j.
  • Stable, reliable and secure (Cheating).
  • It also needs to be able to convert or transit from the current stored scores and inventories to the new databases, because current players should not lose their stuff and scores in the transition.
  • It must turn out to be compatible with the GemDagger, and item which allows you to purchase items from your score. (Without introducing new ways to cheat) (And I'm NOT allowed to share my GemDagger mod versions as disallowed by the developer, Boodaflow).
So yes, I'm reluctant to change the current setup. Even when I know it has it's limitations. The inventory, score and shop system I have now is already the results of many years of intensive testing, communicating and fine tuning. I do not have the energy to do this again. And even when a tool exists that fits with the above requirements, it likely requires a lot of troubleshooting. My server setup is quite complex, more complex than most of the other servers, and this tends to have unforeseen negative consequences. And for myself: I do not have the amount of time nor energy I once had for Unreal. The years I tried everything new this great community produced are over. I try to be there and keep my projects alive while making small improvements but that is is. And for me, this is enough. While I may have the resistance/rigidity of a grandpa who complains about newfangled-junk like smartphones or the internet, I also think I prove to be somewhere among the most reliable services within this small community. And this resistance/rigidity and realized reliability are probably reflect some of the core values of my personality.

I've quickly seen some nice projects come and go by varying developers within the Unreal community, but as far as I've seen did they never left the stage of a proud developer showing off their skills. Sure, they probably work for them, and have some cool implementations and maybe are they in use by some server owners, but these are insider projects and miles away from a finished product for the general public.

Sorry, but this is by far not as simple as it seems.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 5:57 am
by []KAOS[]Casey
tl;dr

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 12:28 pm
by gopostal
Why is this such an issue? OFC you can have true user accounts. Internal code can generate a password that is saved on the client as well as the server and then it checks this match before saving/restoring. You don't need player name or IP or anything.
Playing from different computer from before with the same player name. (Or changing things on the computer like operating system and computer name)
Playing with another player name
If the server crashed/restarted before map change, all progress is only saved to last map change.
When your Unreal.ini and User.ini files are read-only or deleted at all.
May I respectfully point out that you are shouldering a burden that is primarily the player's responsibility with most of those. If a player elects to reformat without saving their ini or force settings like 'read only' then that's on them and not you. They are adjusting the normal relationship between server and client and so it's up to them to deal with the results. Don't ever chase players, this allows them too much say over how YOU run YOUR server.

The only real issue I see above is score loss because of reset. That's easily fixed though. Just force a save every X minutes. Server crashes are rare and I wouldn't try to save anything during one of those. Too high a chance of corruption. In fact it might be a good idea to save a backup copy from within the code too. I do this with my Unreal.ini file and I've had to go to the backup several times to restore something.

This seems like much ado about not a really serious issue. Do you not have someone to fix your code Hyper? I'd be glad to help you if you don't.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 2:30 pm
by Hyper
tl;dr
Do you require me to spoon-feed it to you with this short attention span? It took considerably more time writing a well thought over reply than it will take someone to actually read it. Well, maybe I'm just wasting my time here addressing your comments.

Why is this such an issue? OFC you can have true user accounts. Internal code can generate a password that is saved on the client as well as the server and then it checks this match before saving/restoring. You don't need player name or IP or anything.
Playing from different computer from before with the same player name. (Or changing things on the computer like operating system and computer name)
Playing with another player name
If the server crashed/restarted before map change, all progress is only saved to last map change.
When your Unreal.ini and User.ini files are read-only or deleted at all.
May I respectfully point out that you are shouldering a burden that is primarily the player's responsibility with most of those. If a player elects to reformat without saving their ini or force settings like 'read only' then that's on them and not you. They are adjusting the normal relationship between server and client and so it's up to them to deal with the results. Don't ever chase players, this allows them too much say over how YOU run YOUR server.
Well, I'm just trying to help and prevent some foreseeable problems here.
The only real issue I see above is score loss because of reset. That's easily fixed though. Just force a save every X minutes. Server crashes are rare and I wouldn't try to save anything during one of those. Too high a chance of corruption. In fact it might be a good idea to save a backup copy from within the code too. I do this with my Unreal.ini file and I've had to go to the backup several times to restore something.
The server saved during map switch. To me, that is good enough. I do have some backups of the server and ini files. So in the rare case that a crash would cause a currupted INI file I can revert to my backup. I always make backups before installing a new build of Unreal 227 beta. Normally when the server crashes, only the state of the active map gets lost.
This seems like much ado about not a really serious issue. Do you not have someone to fix your code Hyper? I'd be glad to help you if you don't.
I don't have any code to fix. I only use 3rd party mods and software together. Mostly Unreal 227j, JCoopZ and a beta of the [url=http://www.hypercoop.tk/indexg.htm]Gemdagger[/url].

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 3:04 pm
by gopostal
Seems to me that GemDagger is the place to fix this since it's already accessing the variables you want saved. How interested is the guy who made you the private version in fixing it to where you want it? It's 80% of the way there already, it just needs a bit of functionality added into the checks. If he's not interested then if he gives permission I'd add it for you. After your graciousness in posting the megacache I'd say that gives you preferential treatment in most things from now on as far as I'm concerned ;)

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 3:20 pm
by Hyper
The Gemdagger version I use just saves the gemdagger score (I think this is the score in the current level but I'm not sure here) (Which differs from the scoreboard score) to server memory. Unreal 227 saves the actual inventory data including the gemdagger state to .ini and JCoopZ has some protections against inventory stealing. Most gemgagger versions also have some theft prevention but because JCoopZ does a better job on this I do not use this gemdagger feature anymore.

The best improvement would be if Unreal itself would save the inventory and score data to SQLite database instead of ini and have some form of good, reliable authentication. This then included the gemdagger state because it is just another inventory item to Unreal. (To the gemdagger, it does not matter if the state of it gets saved to RAM, InventoryData.ini or an SQLite database)

But this is a lot of work again and I'll not burden the U227 team and mostly Smirftsch with this. He really is busy enough with all my previous bug reports and in the past my feature requests. Their focus should be on finishing and polishing 227J for public release.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 4:26 pm
by gopostal
Are you talking about an external check to a remote php database? I've done that before (UTrustedPlayer network) but it's pretty unwieldy for what you really need. Simple stuff like just a few variables per player are much better saved on the gameserver. I can't speak for 227 as I'm not sure if this is something Smirf has addressed but in UT it was problematic to get the server to access a remote db for anything more than a very simple, rudimentary information request and even that caused lag and could crash the server unless you allowed it to wait for the information return.

Casey's links honestly look like the way to go if you must have a db. I'm surprised I hadn't seen that before. I'd have used the shit out of that had I seen it.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sun Aug 21, 2016 6:51 pm
by Hyper
No, nothing remote or external. I think it should better be self-contained, as said in my [url=http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1471350930/11#11]earlier post[/url].

But for this thread I really only meant to communicate about a few limitations in the current score and inventory saving.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Sat Aug 27, 2016 9:14 am
by Leo T_C_K
a better game.
that exists?
He means not a better game, but a game that is connected to the BIG BROTHER and IS WATCHING YOU!

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Sep 07, 2016 9:44 am
by subzer0
That sure sucks I had the second highest score and now it seems all that effort is for nothing.

But no matter time to start over again.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Sep 07, 2016 4:38 pm
by []KAOS[]Casey
That sure sucks I had the second highest score and now it seems all that effort is for nothing.

But no matter time to start over again.
If only the server ran a persistent storage tried and true sqlite3 database instead of known buggy .ini storage.

If only.

Re: Note on inventory and score saving at the HyperCoop servers

Posted: Wed Sep 07, 2016 7:49 pm
by Hyper
That sure sucks I had the second highest score and now it seems all that effort is for nothing.

But no matter time to start over again.
I only see your name (and possibly related names) with low scores in the servers InventoryData.ini file. I checked both HyperCoop and HyperCoop custom map servers.