Loading External Database in runtime

Thu 29. Aug 2019, 14:37

Hi,

Firstly thank you for your support email speed :)


I have some questions about the Articy Draft export process.
Exporting an articy database to a unity project before building works perfectly fine. But what if I modify my articy project to update an already built and deployed application ?

I read about ArticyDatabase.ClearDatabase / LoadPackage / ArticyDabasePath. Is that the way to do ?
Maybe i miss some part of the documentation, or some available examples explaining this process ?

If loading and updating my articy database without rebuilding is possible. Is there some limitation ?
- ArticyRef id are always the same ? Even if i add other nodes or change the connections between them ? (Because i have a process to bind unity function with ArticyRef id)
- Dialogues will be automatically updated if i add new elements ?
- Adding new GlobalVariable with new articy script, will not break existing compiled c# class ?
- And other wierd behaviours which i didnt think ?...

Thank you in advance for your clarification.

--Selim
Selim
 
Posts: 4
Joined: Thu 29. Aug 2019, 12:06

Re: Loading External Database in runtime

Thu 29. Aug 2019, 15:17

Hi Selim,

But what if I modify my articy project to update an already built and deployed application ?


That depends on what you mean by "deployed"? If you continue working on your game in unity after releasing it and create a new patch you had to rebuilt your game anyway and could have imported new articy:draft data. People need to patch their game after you release this updated version. There is nothing special here, its basically no different than updating a texture.
But the plugin for unity is a necessary part in building your project and getting the data from articy:draft into your project.

If loading and updating my articy database without rebuilding is possible


Not supported, no. Part of importing is generating source code for you to use inside your project, generating your script code that is converted to C# code and compiled into your binaries. This generated code is then used to instantiate objects to be placed into the database. In fact the plugin takes 3 unity "script compiles" to fully finish an import (Plugin generates code -> Wait for unity to compile it, Generates more code -> waits again ...). This process makes it impossible to add anything at runtime. On top of that comes the dependency to json.net and excel parsing for localization, which is done in the editor to keep the run time footprint small and lightweight.

Hope that helps

Best regards

Nico
Nico Probst
Senior Software Engineer | Articy | LinkedIn
User avatar
[Articy] Nico Probst
Articy Staff
Articy Staff
 
Posts: 217
Joined: Wed 23. Nov 2011, 09:45
Location: Bochum

Re: Loading External Database in runtime

Thu 29. Aug 2019, 15:26

Perfectly clear and makes sense.

I'm very sad to hear that :'(

Anyway, thank you for enlightening me.
Have a good day,
--Selim
Last edited by Selim on Fri 30. Aug 2019, 09:53, edited 1 time in total.
Selim
 
Posts: 4
Joined: Thu 29. Aug 2019, 12:06

Re: Loading External Database in runtime

Thu 29. Aug 2019, 15:38

Another point coming in my mind. :p

I'm building serious game for training. But the problem is similar with a traditional game studio.

If I have developed and sold a MMORPG, and I want to patch a quest or some dialogue, i have to re-build the entire game and ask for people to download all the game again for a single patch ?
Is there a template/tricks to avoid this ?
Selim
 
Posts: 4
Joined: Thu 29. Aug 2019, 12:06

Re: Loading External Database in runtime

Fri 30. Aug 2019, 14:48

If I have developed and sold a MMORPG, and I want to patch a quest or some dialogue, i have to re-build the entire game and ask for people to download all the game again for a single patch ?
Is there a template/tricks to avoid this ?


Yes that would be necessary. A naive brute force approach would be to store a "from" version and a "to" version and check all files against the 2 different versions and build a list of binary changes and where to apply them. Basically building a list of deltas between each file version. Now a patch only needs this "delta" information, instead of everything. This is certainly not the only approach and sometimes not really advisable, its just one of many approaches.
But as usual for unity, there are solutions in the asset store taking care of that. For MMOs it makes sense to combine this with auto patching and potentially clever download mechanisms like torrent. It could also make sense to look into Assetbundles for unity and maybe update only those.

Hope that helps

Best regards

Nico
Nico Probst
Senior Software Engineer | Articy | LinkedIn
User avatar
[Articy] Nico Probst
Articy Staff
Articy Staff
 
Posts: 217
Joined: Wed 23. Nov 2011, 09:45
Location: Bochum

Re: Loading External Database in runtime

Mon 2. Sep 2019, 10:25

Thank you Nico.

My main concern is how to let my clients to edit the scenario themself :)

I will take a look to manage that with assebundle pipeline.

Have a good week.

--Selim
Selim
 
Posts: 4
Joined: Thu 29. Aug 2019, 12:06

Return to articy:draft Unity Importer

Who is online

Users browsing this forum: No registered users and 9 guests

Who We Are
Contact Us
Social Links