Content Package Subsystem Working

Hallelujah, task #354 of 13,8771 for the Early-Access Beta seems to be working!

The past few days I’ve been working on a package system, so I can bundle up all the content files for SpyParty into a single compressed blob, rather than having a zillion files in a directory hierarchy.  This is good for load times, versioning, patching, and is just a lot cleaner.  However, during development, you want to work with the exploded content file system so you can edit individual files, and what you really want is for both to work together.  So, in the new system I made it so the disk files have a higher priority than the same file found in a package, which is pretty easy to do, until you let the code iterate directories, and then you realize you need to iterate both the disk and the package directories simultaneously and Do The Right Thing.  Anyway, it seems to be working now.  Here is one of the ways I tested the hybrid case:

I put all the content into a package, and then extracted only Jim Bondo’s property file to the disk.  To make sure the disk file was shadowing the package file, I scaled him up by 2x.  I really like how the lookat controller uses the head bone of the target character, so he looks down at people, and they look up at him!

The one additional thing I need to do is add priorities between packages, so I can ship a patch that doesn’t have to update the entire content package, it can just contain the patched files, and they’ll override the existing versions in the old package.

But, it’s progress!

Next up, I’m going to integrate Google’s Breakpad crash reporting system so I can get crash dumps from beta testers…

  1. I just made those numbers up.  The first is probably high, and the second is probably low, sadly.  I’m afraid to actually compute the real numbers. []

20 Comments

  1. Marc says:

    Any reason you’re not using physicsFS?

  2. Michaël says:

    I’m a total layperson when it comes to stuff like this, so please forgive my ignorance.
    Is this just for beta or will you use a similar system in retail? If the latter, will there be checks and balances so people can’t abuse this by creating their own “disk files” which will get prioritized over the package, thus allowing for cheating? Or is this entirely not an issue :) (I’m really not sure, as I said I’m a layperson :))

    • checker says:

      Yeah, there’s going to have to be a bunch of anti-cheat stuff, but I’m not worrying about that too much right now. I’m assuming the people invited into the beta will play fair, at least for a while. :)

  3. jordy says:

    Yay for new progress on beta! Booeh, for the amount of work that still has to be done ;(.
    I imagine that if someone wanted to bug the ambassador now it would look like he was patting him on the head.

  4. So excited, I can’t wait to play!

  5. Tim K says:

    Step 733,214: Profit!

  6. Jon says:

    So if a patch doesn’t overwrite an existing package (necessitating priorities between packages) but the game recognizes which of the two versions is the more recent one, wouldn’t that kind of waste disk space?

    • checker says:

      You’d use the priorities for smaller updates. If a significant amount of stuff changed, you’d probably just replace them all.

  7. Bara Kathawa says:

    Can you provide a graph that is automatically updated showing the total number of beta signups? I’d love to keep track of how much attention the beta is getting, if only out of curiosity.

    • checker says:

      I’ll look into putting up a counter at least after I’ve got the first round of invites out in mid-June. Heads down on that for now!

    • jordy says:

      My days go so slow now I know I hopefully won’t have to wait too much longer, you’re still planning to invite partially in order of sign-ups right?!
      Worse of all, I can’t seem to enjoy any game anymore, in anticipation of this, not even GO.. or is that blasphemy? ;p

    • checker says:

      Yes, that is blasphemy.  :)

    • Bara Kathawa says:

      Thank you, it’s much appreciated :)

  8. Martijn says:

    Will there be input recording ?? so we can watch replay of rounds that where recorded ? would be handy for reproducing bugs AND learning from mistakes :P

    • checker says:

      Yeah, I want to get Spectation and replays in as soon as possible.

    • Martijn says:

      Cool, i can’t wait to get playtesting. Besides loving this game’s design, i love trying to get past rules and finding bugs in games

  9. Chris says:

    Oh no the beta’s out!

    I went on vacation the day the beta started… hope I get in, I’ve been following this project for quite a while.

    • jordy says:

      I got the same shock after being away for a while, but in fact Chris Hecker only opened up the beta sign-up page for the big public with correlating announcements. If you’ve already signed up before the beta sign-up page was online you should be alright.
      Beta MIGHT come around mid-June, after E3 and invites will go in phases with invites being probably partly in order of sign-ups and partly randomized.

      The information I provided may be partly or wholly false.

  10. Jeff says:

    Came here to mention PhysicsFS too..

I have temporarily disabled blog comments due to spammers, come join us on the SpyParty Discord if you have questions or comments!