Page 1 of 2

Working on v0.7

Posted: Sat 2016.10.15, 20:56
by KAMIKADzE
I have finally done some work on v0.7. Yeah it has been quite a while since I did anything substantial to the Launcher *SKULL*.

Currently I'm working on implementation of "real" Projects and Mods. Mainly I want to move all of my projects "brains" out of the program into the projects themselves and "teach" Launcher how to use that. This will allow you to edit the process of patching with my projects. I also want to add the ability to change project used in simple patching to any other suitable project. Along with that I might also finalize Project/Mods auto-updates.
All those things combined together will finally allow all interested BDO patch creators to redistribute their patch easier and for everyone who uses that patch to update it without waiting the update from patch creator.

I'm currently stuck at the way of saving project info, here is what it looks like now:

Code: Select all

[General]
Name = KAMI JP
Author = KAMIKADzE
Description = Description
Version = 2.9d
FolderPath = KAMI JP
Server = JP
[Web]
HomePage = https://dota.invokami.com/viewtopic.php?t=1002
Update = https://googledrive.com/host/0B6hl_qHX1yIsT2JqbmlyZnBocVU/KAMI%20JP.bpc
[RAW]
GetFullRAW = false
[ProjectFiles]
JP1 = \languagedata.xml
JP2 = \stringtable_jp.xml
JP3 = \stringtable_cutscene_jp.xml
JP4 = \symbolnostringtable_jp.xml
[Steps]
1 = Merge|M1|RAW1|JP1
2 = Push|M1|1
3 = Merge|M2|RAW2|JP2
4 = Push|M2|2
5 = Merge|M3|RAW3|JP3
6 = Push|M3|3
7 = Merge|M4|RAW4|JP4
8 = Push|M4|4
[StepsDev]
1 = Merge|M1|RAW1|JP1
2 = Out|XML|M1
3 = Out|Log|\languagedata.txt
4 = Push|M1|1
5 = Merge|M2|RAW2|JP2
6 = Out|XML|M2
7 = Out|Log|\stringtable_jp.txt
8 = Push|M2|2
9 = Merge|M3|RAW3|JP3
10 = Out|XML|M3
11 = Out|Log|\stringtable_cutscene_jp.txt
12 = Push|M3|3
13 = Merge|M4|RAW4|JP4
14 = Out|XML|M4
15 = Out|Log|\symbolnostringtable_jp.txt
16 = Push|M4|4

Now you're like *WHAT*
Don't worry I'll explain it all when I'll be done with it.

Originally I wanted to make it as human-readable as I can, and the KAMI JP project was just like that^ for quite a while already. On top of that I don't think that I'll add the possibility to create/edit Projects/Mods from the program itself for a very long time after the release of this version, as that will take a lot of time.

Now the problem is in this particular line (and similar ones):

Code: Select all

1 = Merge|M1|RAW1|JP1

So basically this line says - as a first step after getting everything ready - merge RAW languagedata with Project's languagedata, save the result in M1 (for a later use). The thing is that there also should be a place for actions (after JP1), and in theory there could be a lot of those, basically all planned features related to regex and other automatic text editing/google translation, etc. will go there, so the lines will end up redunculously long. This is also not the best thing from programming standpoint.
There is a workaround with this "style" (to create a lot of entries for each action, like for example 1_1, 1_2, 1_3...), but this will get clunky very fast + not the best thing from programming standpoint.
Of course there is a way to avoid all of that with more nested structure, similar to what I use in scheme, e.g. here is the piece of it:

Code: Select all

{
  "languagedata": {
    "1_LongSword": {
      "Keys": {
        "Index": "^Index",
        "Enchant": "^Enchant"
      },
      "Values": {
        "Description": "~Description"
      },
      "Actions": {
        "AllowNullKeys": false
      }
    },
    "2_Blunt": {
      "Keys": {
        "Index": "^Index",
        "Enchant": "^Enchant"
      },
      "Values": {
        "Description": "~Description"
      },
      "Actions": {
        "AllowNullKeys": false
      }
    },
    "3_TwoHandSword": {
      "Keys": {
        "Index": "^Index",
        "Enchant": "^Enchant"
      },
      "Values": {
        "Description": "~Description"
      },
      "Actions": {
        "AllowNullKeys": false
      }
    },

The thing is, that it might not look like hard to edit (especially when it is as repetitive and simple as this scheme), but it is a lot less human-readable than the first one. No one will care when it will be editable from the program itself, but as I said - it won't be soon.

For now I'm the only one who's using projects, so I don't really mind to change it. If you'll happen to have some better idea then let me know, and I'll think about a better way myself, I just don't want to change it when(if) it will be used by quite a few patch creators.

Re: Working on v0.6i

Posted: Mon 2016.10.17, 08:40
by Margo
Maybe use the first way for everything but the steps, for which use the second way?

Re: Working on v0.6i

Posted: Mon 2016.10.17, 08:54
by KAMIKADzE
Margo wrote:Maybe use the first way for everything but the steps, for which use the second way?

It is possible, but it will be even more confusing for the average Joe and will be more complicated than the choice of either of 2, so no.

Re: Working on v0.6i

Posted: Fri 2016.11.04, 18:18
by Magano
How is it going?

Re: Working on v0.6i

Posted: Fri 2016.11.04, 19:03
by KAMIKADzE
Magano wrote:How is it going?

Almost haven't done anything since the first post in this thread. No ETA.

Re: Working on v0.6i

Posted: Wed 2016.11.16, 23:22
by KAMIKADzE
Just a small update on how things are going. Basically I've spent a couple of hours on v0.7 through the course of this week. The main work is done, now before the release I need to:
1) Replace existing simple patching code with the one that will use standardized project (easy/time-consuming).
2) Add the ability to select the used projects (easy/might be time consuming, depending on the way that I'll implement it firstly, I might go for the simple way at first and just change that later).
3) Add few things to advanced patching, so that it won't fall behind the functionality of new simple patching =D

This update will introduce fully featured projects only, mods will be just as they are now. I'm definitely not going to add auto-updates in this version, a lot of time has passed without any updates already, so maybe with the next version. There won't be any simple way to create projects for the nearest future, you will need to take my projects as an example, I'll also try to explain how, where, and what you can do sometime after the update will go live. That's probably it for now, I'll keep you updated on the progress.

Re: Working on v0.7

Posted: Tue 2016.12.06, 11:37
by KAMIKADzE
I actually decided to merge all KAMI projects into 1, since it's one anyway. Now any project will be able to support multiple clients. Due to this change and more additions, that were not mentioned in this thread (like fonts), I decided that the next version will be v0.7, which doesn't mean a lot to you, but if you'll keep using v0.6x then be ready to adapt new Projects manually (it will be easy), I'll post more info on how and what after the actual release.

Re: Working on v0.7

Posted: Wed 2016.12.07, 01:46
by Magano
KAMIKADzE wrote:I actually decided to merge all KAMI projects into 1, since it's one anyway. Now any project will be able to support multiple clients. Due to this change and more additions, that were not mentioned in this thread (like fonts), I decided that the next version will be v0.7, which doesn't mean a lot to you, but if you'll keep using v0.6x then be ready to adapt new Projects manually (it will be easy), I'll post more info on how and what after the actual release.

You say that you will add fonts - do you mean you will add injector?

Re: Working on v0.7

Posted: Wed 2016.12.07, 02:28
by KAMIKADzE
Magano wrote:
KAMIKADzE wrote:I actually decided to merge all KAMI projects into 1, since it's one anyway. Now any project will be able to support multiple clients. Due to this change and more additions, that were not mentioned in this thread (like fonts), I decided that the next version will be v0.7, which doesn't mean a lot to you, but if you'll keep using v0.6x then be ready to adapt new Projects manually (it will be easy), I'll post more info on how and what after the actual release.

You say that you will add fonts - do you mean you will add injector?

I guess you mean direct injection of fonts into the client? If so - then no, not with this version. Font can be changed without modifying game files (at least with JP client), I've just added that as a "feature" for those that can't do it manually. That said, since KR client is now "very picky" and don't want to "eat patches", I'll probably add injection with the next version just after this one, so if you need it for whatever reason stay tuned, but it would be great if you could tell me for what do you need it (if for font injection - then in which version it is required?).

Re: Working on v0.7

Posted: Wed 2016.12.07, 18:16
by Magano
KAMIKADzE wrote:
Magano wrote:
KAMIKADzE wrote:I actually decided to merge all KAMI projects into 1, since it's one anyway. Now any project will be able to support multiple clients. Due to this change and more additions, that were not mentioned in this thread (like fonts), I decided that the next version will be v0.7, which doesn't mean a lot to you, but if you'll keep using v0.6x then be ready to adapt new Projects manually (it will be easy), I'll post more info on how and what after the actual release.

You say that you will add fonts - do you mean you will add injector?

I guess you mean direct injection of fonts into the client? If so - then no, not with this version. Font can be changed without modifying game files (at least with JP client), I've just added that as a "feature" for those that can't do it manually. That said, since KR client is now "very picky" and don't want to "eat patches", I'll probably add injection with the next version just after this one, so if you need it for whatever reason stay tuned, but it would be great if you could tell me for what do you need it (if for font injection - then in which version it is required?).

For Korean version English patches.