..patching/modifying distributed data

Hi folks.

Once project is completed, SDK will nicely wrap it up all in to dist folder, ready to deploy. No issues. Now, if i need to patch up already distributed parts (media, sounds, etc), or add brand new content, how to that over already distributed jars(Models, scenes, sounds and so on) ?

Well, that’s what the AssetManager is for. You can using registerLocator to add any “expansion pack” ZIP / JAR files that have extra assets. Which asset gets chosen depends on the order that the locators are added.

I think hes asking about remotely bringing updates in, and patching the game files. If you added a brand new jar for each update, you’d be wasting a lot of hard drive space with duplicates of stuff.

You would need to Patch/copy SimpleGame.jar for any Code changes and lib/assets.jar for any models (assets).

Two choices:
a) DLC Functionality like Momoko says (you can even use an ziplocator so you just need to copy new zips in a Folder, however this can’t change, only add)

B) use a fileResourceLocator and change the sdk to not bundle the assets into jar but instead have a real asset Folder.

Then you can add assets to that Folder or modify them.

This is what I would do. Also, AFAIK, most games do not have some kind of binary diff implementation. If a file (for example a model of the player) is changed and needs to be updated, the entire file is redownloaded and replaces the old file. And if the jar file that contains all the games code is updated, its much easier to just redownload the whole thing, because text is relatively small in file size. If you have one file that is 500+mb now… that is a different story, you should probably try to split that up into multiple files if you can.

Of course, to do something like this you’d probably need a “launcher” program that runs before your program runs, checks online for an update, updates any necessary files, then launches your game when it’s all done. It doesn’t need to even open a window, except maybe a progress bar or something if it is downloading new assets or code. This could be pure java, no jme involved.

With a tool like rsync you can make sure only the parts of the zip file that changed will be sent along the wire.

With the AssetManager, you can have a game-base.zip and game-patch.zip, where the game-base comes included while game-patch is updated automatically before the game loads.

Most people don’t want games to dump all their assets into folders, as there could be thousands of assets.

Isn’t rsync only available on unix flavours? I’ve never heard of using a tool like that to update programs. Anyway, @Ecco, as you can see, there are many different ways to achieve what you want, its really just personal preference.

Also, if your game gets greenlit on steam, valve has their own game updating tools so that the game will update through steam.

…hi guys…yes, idea is to patch/upload new game packs…its my new project im using JME3 for (fully procedural game, world creation and most importantly, AI/self building NPC’s)…so idea is to be able to upload new ‘themes’ which will be then loaded and eventually used in world creation process(depending on settings user chose in menu settings)…‘themes’ will be delivered/packed by me, including content created by users(i want to make sure that content is ‘proper’), but later, i want to make it that users can do their own uploads as well, without sending whole thing to me (thats at latest stage)…i have already released some games, and i have greenlighted games, but, i do not want to rely on Steam servers/service, or at least that could be just one of the options, but i do not want to depend on that only, regarding packs/media management…so winning option for me in terms of updates of game assets, would be something which is OS agnostic…