Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Pathfinder Roleplaying Game
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
dentaa
Member
 
Join Date: Sep 2016
Posts: 55

Old January 1st, 2017, 06:47 PM
Hello All,
I am running a game using Hero Lab (and Realm Works) and I have a decent amount of custom rules, items, races, etc.
I have 4 players (of 6) who have purchased Hero Lab.
We play weekly and changes to characters are frequent.
What is the best practice for syncing and/or distributing characters between their laptops and my master copy?
DM » Players
Players » DM
Random » Random
By the above I mean my real issue is this... If during the game a player gets a +2 ROP I really have to add it to my version or it isn't calculated into the game. But that means if the want to have real numbers I have to stop and sync their characters...
I was thinking about a group dropbox account...
But that leads to second issue where I have and use resource books they do not have...
So I am looking for best practice suggestions from those of you who have ran across this issue before.
Thanks
dentaa is offline   #1 Reply With Quote
Silveras
Senior Member
 
Join Date: Aug 2010
Posts: 1,528

Old January 1st, 2017, 08:51 PM
You may want to limit the books used in your game to ones that everyone has, or for each player to use only books that you and they both have.

One issue to watch out for is the "random to random" scenario. If you don't keep careful control over the "version" of the files being moved around, it is likely that there will be mistakes .. such as old files being used instead of the correct one... and changes could be lost or backed-out.

You may want to limit updates to between sessions. Trying to manage it during sessions will slow things down. The players' use of HeroLab is for "live" calculations, while the GM's can be a little different. You and they can each modify your own copies independently, and not worry about sharing the POR files except at specified intervals (such as when the adventure is over, or at level up).

Discrepancies like ammunition used, potions used, charges used, and such can become hard to reconcile. If your copy is the master, then don't take updated files from the players.. have them email you any changes that aren't part of "in-play" (such as skill point allocation on level-up) and export your master copy to separate PORs for them. You can work out disagreements on accounting by email between sessions.

If you intend to treat their copies as being the "master" copies, then you should only accept updates from them.. and not send any back. A "master" implies that it is the authoritative version ... in which case, updated files should only flow from the "master" to others after being manually updated.

If you intend to pass updates around between any two people, then there is no "master" really, and the chances of disputes are higher.

Last edited by Silveras; January 2nd, 2017 at 07:14 AM. Reason: missed a word
Silveras is offline   #2 Reply With Quote
Chemlak
Senior Member
 
Join Date: Aug 2012
Posts: 432

Old January 2nd, 2017, 06:12 AM
Silveras has the right of it.

When I play, I maintain a single GM "master" portfolio, a copy of which goes into the game's Dropbox folder (which all of my players have access to). I do all of the updates to the master file, on consultation with the players (who will generally do their own updates in their copy of HL, and tell me what changes they made). I've never been particularly bothered about ammunition and rations, so discrepancies there aren't a worry.

Chief Calendar Champion Chemlak

Join the unofficial Realm Works IRC channel! Join #realm-works
Chemlak is offline   #3 Reply With Quote
dentaa
Member
 
Join Date: Sep 2016
Posts: 55

Old January 2nd, 2017, 08:38 AM
Ok appreciate the input. I am going to try the dropbox with me adding the new stuff during the game as needed and they can update. I have not seen it in the notes, but is Lonewolf considering a. server based Hero Lab like realm works. ( and live sync on Realm works???) Love the products!!!
dentaa is offline   #4 Reply With Quote
Azhrei
Senior Member
 
Join Date: Sep 2015
Posts: 435

Old January 2nd, 2017, 09:21 AM
This is background information and doesn't apply directly to HL, I just thought some of the more technical folks might find it interesting.

We have an issue in MapTool where the tokens (digital representations of figs on a map) are copied from one machine to another in real time. (MapTool is a distributed virtual tabletop application.) Obviously, there's a possible conflict: what if field A is changed on the server while field B is changed at the same instant on one of the clients?

MapTool currently sends the entire token when a single field is changed. So whichever machine "sends" the token last will be the one whose update is preserved (because it will overwrite the other).

In an ideal world (and the one we're working towards), each individual field would have a timestamp and just that field would be transmitted to other machines. That way, when the receiving machine gets an update -- along with a timestamp -- it could check and see that the timestamp is more recent and thus overwrite the field as it should. And if the timestamp coming from the other system is older, the update would be rejected. The machine that rejects the update would provide the timestamp and field value that it has to the other system, which would then need to decide how to handle it. For example, let's say a field value was being incremented. It could choose to use the newer value, increment it, then send that one out to clients. If the value was being overwritten by user input, it could take the new value and display it, letting the user know their input wasn't accepted because it was out of date and letting them enter a new one. But the semantics of the change would need to be considered, not just the functionality of the operation itself.

This gets very complicated. There has to be some kind of expiration time for stale data, but we don't want to be rejecting user input all the time either. And we can't really use timestamps because not all computers connected to the server necessarily have the same idea of what time it is, so a different technique must be used instead. Since there's no timestamp, we have to send the old value and the new value whenever there's an update. Now the machine receiving the update can compare the old value with what it thinks the field has in it, then decide whether to update its copy. Some extra logic might be needed when multiple systems change the same field at once, but change it to the same value, depending on the semantics of the change.

Sorry, I didn't mean to derail the thread. But I wanted to point out that what seems simple at first glance is actually quite a bit more difficult. One obvious and simple solution is to only allow one machine to have the "master copy" of any given data, but then that system becomes a bottleneck for any updates to that data. And what if that machine goes offline at a critical point? That could slow down or even halt the operation of the other nodes.

As Murphy once said, "Nothing's ever easy."

Last edited by Azhrei; January 2nd, 2017 at 09:27 AM.
Azhrei is offline   #5 Reply With Quote
Aaron
Senior Member
 
Join Date: Oct 2011
Posts: 6,793

Old January 2nd, 2017, 09:31 AM
Continuing the derailment.

"Nothing's ever easy" is the unofficial motto of my campaigns. To the point where whenever something seems to go the parties way without a struggle they immediately get suspicious.
Aaron is offline   #6 Reply With Quote
dentaa
Member
 
Join Date: Sep 2016
Posts: 55

Old January 2nd, 2017, 11:02 AM
Quote:
Originally Posted by Azhrei View Post
This is background information and doesn't apply directly to HL, I just thought some of the more technical folks might find it interesting.
As Murphy once said, "Nothing's ever easy."
Thanks that gave me an idea... using the timestamps.... Might write an app to curate files in dropbox...
dentaa is offline   #7 Reply With Quote
Azhrei
Senior Member
 
Join Date: Sep 2015
Posts: 435

Old January 2nd, 2017, 11:20 PM
That could work, as long as the data is never saved unless there's a change. Otherwise an unchanged file will have an updated timestamp. So a user that chooses File > Save without actually changing anything could mess you up.

The other thing to consider is that what you really want to do is unpack the XML and only add new elements (or subtract existing elements) without affecting anything else. For example, the original file A might have a piece of data removed, and the new file B might have had a field added. You can't just take the most recent one since it won't have both changes. Instead, you need to merge the XML together, adding and removing pieces appropriately.

This won't be an easy task, although a Unix version of the diff command (without any options to control formatting of the output, so no "-u" or "-c" options) would be a good start. If I were to tackle this, I'd probably use Python since it works across platforms and has pretty good coverage for XML reading and writing. Or maybe I'd use JavaScript or Go.
Azhrei is offline   #8 Reply With Quote
Farling
Senior Member
 
Join Date: Mar 2013
Location: Greater London, UK
Posts: 2,623

Old January 3rd, 2017, 12:05 AM
Quote:
Originally Posted by Azhrei View Post
This won't be an easy task, although a Unix version of the diff command (without any options to control formatting of the output, so no "-u" or "-c" options) would be a good start. If I were to tackle this, I'd probably use Python since it works across platforms and has pretty good coverage for XML reading and writing. Or maybe I'd use JavaScript or Go.
Or store the files inside a simple github repository, then github will manage the differences if the file has been changed at both ends :-)
Farling is offline   #9 Reply With Quote
dentaa
Member
 
Join Date: Sep 2016
Posts: 55

Old January 3rd, 2017, 07:06 AM
» Farling "Or store the files inside a simple github repository, then github will manage the differences if the file has been changed at both ends :-) "

Have you done this? If so results?
dentaa is offline   #10 Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 07:34 AM.


Powered by vBulletin® - Copyright ©2000 - 2024, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.