Jump to content

geordan

Members
  • Content Count

    341
  • Joined

  • Last visited

Everything posted by geordan

  1. Well, I finally got off my duff (who am I kidding? I'm a software engineer. I stayed right on my duff) and added support for tracking what expansions you own, and letting you know if the list you're building isn't possible given your expansions. You'll need to be logged in to access and save your collection. I've probably introduced a whole slew of bugs doing this. As always, bug reports/feedback/suggestions welcome! Builder in the sig below...
  2. Except for the Attack on Imdaar Alpha art card for Bandit Squadron Pilot.
  3. I'd like to buy a vowel, please.
  4. I'm convinced someone's cat walked across their keyboard when they named that thing.
  5. I believe they are doing tournaments every other Saturday? (I can't it make this weekend, either )
  6. geordan

    Astromech List?

    More information than you require: http://www.angelfire.com/droid/astromechs/page10.html
  7. Clearly this confirms Star Destroyers in Wave 7. *hides* Some say he stuck a banana in Boba Fett's jetpack as a prank, and he only receives payment in Koenigseggseggsegsgsgessegsgsgs. All we know is...
  8. In the event a release includes multiple new ships (we haven't seen this except for the Core set, but just in case) the ship ordering should be in alphabetical order.
  9. Fortunately, it wouldn't matter; both the shuttle version (13, 0) and E-Wing version (18, 0) would decode to the same thing. You could encode using either pair. What you're suggesting seems pretty close to my format; why the difference? Is it because you want to have more ship data directly encoded in the format (like the ship type)? Since we're heading in the direction of opaque IDs, we're already going to have to look them up in an ID mapping, so there's no need to re-encode that data. In other words, multiple ships in the same expansion pack wouldn't be a problem, because we'd have to look up what the eighth pilot in Most Wanted is, and the list would tell us it's New Boba Fett (or whatever) in a Firespray-31.
  10. After discussing this with WickedGrey offline, we came up with this: A card can be uniquely identified by the SWXnn ID of the expansion it appears in and the (0-based) index into the alphabetized list of cards per expansion. That is, suppose in the future, "SWX42 - Least Wanted Expansion Pack" is released, with the following cards: 0 - Bomb Torpedoes 1 - "Dakka Dakka" Cannon 2 - Redbeard McShootington Then "Redbeard McShootington" can be identified using the pair (42, 2). We can then base64 encode the uint8 array [42, 2] to "KgI=". Ships and their upgrades would be delimited by commas; we don't need delimiters for upgrades since we know we're using 4 characters per card[1]. I'm using the list of SWX numbers at: http://community.fantasyflightgames.com/index.php?/topic/113554-wgencon-today-are-all-the-skus-spoken-for/#entry1204216 To determine the card index, per-expansion sorting would be performed only on the alphanumeric parts of the card's name. In the case of similarly named cards in the same expansion (e.g. Dash Rendar pilot vs. crew) it's okay, because we'll always encode the pilot first and upgrades later[2]. This means each tool that uses this format must have an up-to-date list of cards and expansions it knows about. This should not normally be a problem, since for tournaments, only released content is available for play, and wave releases are infrequent. I've created a proof of concept encoder here: http://codepen.io/geordan/full/CxoBL In practical purposes, then, a Whisper/Howlrunner swarm (https://geordanr.github.io/xwing/?f=Galactic%20Empire&d=v3!s!79:27,36,46:-1:9:;18:-1:-1:6:;10::-1:-1:;10::-1:-1:;10::-1:-1:) would encode to Ewg=Bg4=DgQ=DQs=EwA=,AwQ=FQE=,AQA=,AQA=,AQA= which is not too onerous to type, and results in a nice, small QR code. [1] We could compress it to 3 characters per card if we allocated 9 bits for expansion number and index but I'm lazy, and WickedGrey likes the idea that the first two characters in the code mean the expansion, and the last two mean the index, so theoretically people could start to recognize codes. I think he's nuts. And I'm too lazy to try to get the bits lined up as it is. [2] In the event an expansion someday has two identically named upgrades but with different slots (e.g. suppose they released R2-D2 astromech and R2-D2 crew together), then... we'd have to disambiguate their names somehow.
  11. Welcome back from vacation, Killerardvark! ...Sorry about the mess. Have you finalized the format you're using to store the data for MJ? Because if you can afford to store and send more verbose data (instead of using IDs, use the card name and type spelled out) then you won't have to maintain a mapping from card to ID. And then we squad builder devs won't need to have to consult and collaborate on that mapping. (I'm with you on laziness.) I agree that Cryodex (or any other TO software) does not need a squad builder embedded in it. At the end of the day, it's the human TO's responsibility to verify the legality of the lists submitted; just because a squad builder app created a list doesn't mean it's tourney-legal. All we're concerned about is rapid entry. In terms of rapid entry, having to type in an opaque serialization is prone to errors (and suffers from that Master List problem above). Perhaps you could have a screen where the TO can enter text into text fields that have aggressive autocompletion for cards the software knows about (e.g. typing in "Red" autocompletes "Red Squadron Pilot"), and each pilot can have one or more associated upgrade card text fields? You won't have to check the legality of any of it. And for cards that may have been recently released but the running version of Cryodex hasn't been updated for it, it just accepts the new card name (if the TO types in "Redbeard McShootington" as the pilot, more power to them). Hopefully there's a Swing widget out there for this sort of thing. (Last time I wrote any Java UI stuff, it was with AWT, so...)
  12. https://github.com/pieroxy/lz-string
  13. Proof of concept converting a YASB permalink to QR code of compressed JSON: http://codepen.io/geordan/full/HvtsC/
  14. "Buy this 1st place list on Amazon" Hate you~
  15. I'm personally against paywalling the tool and the data; the way I see it, more people using a well-written set of tools means more smoothly run tournaments means MOAR X-WING! Regarding compressing JSON: I took a combination of WickedGrey's and GKi's formats, minified them, and compressed them at http://pieroxy.net/blog/pages/lz-string/demo.html which resulted in compressing 1,148 bytes of minified JSON compressing to 410 bytes via LZMA. Edit: grammar
  16. Regarding the future-proof argument: I make no claim at all to be any "authority" on software engineering. Had the entirety of Glentopher's response not been "Yes it is" we could have maybe had a discussion about this and his proposed format. Instead, he chose to ignore the issues I brought up immediately after the sentence he quoted. (No one cares about my degree or years of industry experience either. Chin up.) Anyway. No one agrees with your request more than me! We have a great ecosystem of tools, and no one should be forced to use just one of them. Which is why we're discussing a common interchange format. And like Mu0n, I don't want to dilute my work on the builder by creating a TO helper app. I thought about this, but I have in my head this requirement that the software be able to recreate the list details without ever having to consult a Master List of cards (to serve venues that don't have net access or haven't updated recently). I also agree with MJ that we can't just blithely dump data into a QR code and hope it's readable. In practice you want the TO to scan the code quickly and move on, instead of trying to get the camera positioned just right and it's not focusing perfectly and maybe it's too dark in here and oh god why. ...Maybe these last two paragraphs are at odds... Maybe (someone suggested this earlier I think) we should LZW compress the JSON representation and QR encode that bitstring? I'll mess around with that and see if that gets us to a reasonably-sized QR code. Oh, and I keep forgetting to link: http://shouldiuseaqrcode.com/
  17. is Luke with R2D2 and expert handling, Wedge with an R2 Astro, and a rookie. That's not what "future-proof" means. Who is going to be the curator of the mapping between cards and IDs? What if the venue doesn't have an Internet connection and someone comes in with a squad that has an ID for a ship that just came out, but the software hasn't been updated? This is why I advocate a deterministic transformation from card name and type. But if some card in the future comes out with a similar prefix, you'll get a collision (suppose in Wave 20 they release "Redbeard McShootington" -- "Red" becomes ambiguous). I suppose you could do some light compression by storing the shortcut mapping if there are multiple instances of the same card, e.g. in a 4 Red Squad list, it might be (representing it as JSON here for easier reading): { 'mapping': [ 'REDSQUADRONPILOT[23]', 'FLECHETTETORPEDOES(TORPEDO)[2]' ], 'ships': [ { 'pilot': 0 'upgrades': [1] }, { 'pilot': 0 'upgrades': [1] }, { 'pilot': 0 'upgrades': [1] }, { 'pilot': 0 'upgrades': [1] } ] }
  18. Representing a squad as a bit vector is not unlike how my or Fab's permalinks work. But in order to be common across squad builders there would have to be a single source of truth for mapping a given card to a given identifier, and I don't know if that's realistically feasible. Instead I was thinking of a deterministic canonical representation of a card: something like converting the English card name to upper case, stripping all non-alphanumerics, and optionally attaching the card type (to differentiate between identically-named cards like Luke). So "Luke Skywalker" the crew card would canonicalize to "LUKESKYWALKER(CREW)". Maybe for convenience we include the points value afterward. Then a given ship with upgrades would be of the form CanonicalPilotName[points]+List[points]+Of[points]+Canonicalized[points]+Upgrades[points], e.g. "LUKESKYWALKER[28]+ENGINEUPGRADE(MODIFICATION)[4]+R2D2(ASTROMECH)[4]". To guarantee that two identical squads canonicalize identically, ships and upgrades would be sorted. Admittedly this is pretty verbose, but let's consider how big a given list is going to be. Worst case we're dealing with Epic lists, so we have 300 points to work with. At most you can field 25 12-point ships (I'm ignoring 12 ship restrictions for now), so let's proxy that for the number of cards in play; the longest canonical card name that I could find is STYGIUMPARTICLEACCELERATOR at 26 characters, and the longest card type is MODIFICATION (12 characters). That works out (roughly) to 1000 characters, well within the QR limit. We'd also want to include a link to a squad builder representation, if possible, so that the TO can quickly inspect it if they have net access. The QR code would have to use bytes, not alphanumeric, in order to support full Unicode player names as well as URLs. We should still be able to fit in the 2,953 byte limit of the lowest error correction version. (Optionally we could also store a UUID generated by the squad builder.) I'm working on a proof of concept at http://codepen.io/geordan/pen/ljLJn -- at some point I'll link in a way to read in my card database and convert a permalink into this format.
  19. It was announced as part of the In-Flight report at Gen Con. All I ask is that it doesn't require Silverlight to use.
  20. I've been thinking about this over the last few days (ever since Osoroshii brought it to my attention), and I've also come to the conclusion that there shouldn't be The One App; after all, as mentioned we have several squad builders and multiple TO tools. I don't think we need to reinvent those wheels into one larger, all-consuming wheel. It sounds like we're trying to solve multiple problems here: Make it easy to register a player's list at an event Create a comprehensive database of matchups and results for MJ to analyze I agree about having a common interchange format to describe lists. While my builder has pemalink functionality, it's not compatible with, say, Fab's. The common format would have to feasibly fit in a reasonably-sized QR code for TO software to accept. (At which point, you have to figure out how to load that into a desktop-based TO app, if the desktop doesn't have a webcam.) Unfortunately I've had a migraine since 7am and so assembling my thoughts on this any more has proven difficult.
  21. You'll give us food now and then, right?
  22. Gamescape North in San Rafael does X-Wing stuff, but that's still pretty far. Less than an hour away though!
  23. I'll just leave this here. http://codepen.io/geordan/full/quneg
  24. geordan

    Best GenCon guess???

    · Jar Jar Binks Crew, 2 points You may treat the ship this card is equipped on as an enemy ship. Once per round, if an attacker hits, the attacker may remove one stress from their ship to immediately make another attack.
×
×
  • Create New...