A gathering place for Vindictus players of any region or server to get together and discuss the game.


    September 2016

    Shippuu
    Shippuu
    That Guy
    Server :
    • NA East

    IGN : Shippuu
    Posts : 359
    Joined : 2015-12-17

    September 2016 Empty September 2016

    Post by Shippuu Thu Sep 01, 2016 2:48 pm

    September 1


    All of my monthly Dev Log threads have so few posts. I feel bad about how little work ethic I have.

    To break trend from my last couple of Dev Logs, this one includes references to actual progress being made. The last few weeks being mostly empty had nothing to do with 70 hours of playtime on No Man's Sky. Nothing to do with it at all...

    Stat recalculation for handling base stats is now basically complete. It still uses placeholder values for the skill bonuses, but they can very easily be switched to the proper versions once that section of the Armory is operational again. In the process of reviewing over handling skills/titles, I came to realize something about the new stat structure, and decided to take advantage of it.

    The new base stat setup requires entering your entire Character Info page of stats into it, due to the new titles that give those various stats. This happens to cover stat gains such as STR Mastery and etc, as well as those such as Critical Hits, and also titles. The only variables that it can't determine based off of these is the set of Proficiency skills, and Stone Skin. Since Stone Skin is probably not significant to most builds, and Lv.90 equipment requires max proficiency, these can be safely assumed as max. This leads to a pair of new options on the Base Stats tab:

    You will be able to disable all extraneous stat calculating from your base stats, or alternatively only titles. What this means is for someone who just wants to quickly make a set for a Lv.90 character, they can just use the default settings, and their base stats will be used directly, without them having to set their skill ranks or which titles they have. For regular use, this has absolutely no repercussions, and the results will still be 100% exact. It's simply a faster way to use the Armory exactly as you always have been. The difference will be for those who enable these calculations.

    When enabling inclusion of skill ranks, you will need to fill in the skill rank you have for every stat related skill. Instead of just the proficiency skills as it is now, this will also include STR mastery, Critical Hits, HP Mastery, and so on. The difference will be that you will be able to use the Skills tab to quickly preview what impact, if any, gaining or losing these ranks will have on your set. This could be beneficial when performing a full reset to restore a weapon, and having to decide what stat skills to get back first, or for deciding what skills to rank on a lower level character.

    As an entirely new feature, the second extra option will be to enable inclusion of titles. When enabled, you will indeed have to fill in which titles you have, which can be time consuming. In return, you will be able to "soft toggle" titles that you don't yet have, for testing purposes in setting up builds. This will allow you to determine things like how effective (or ineffective) the Ein Lacher titles would be for strengthening your build, or if the mass completion titles from Neamhain even matter to you.

    I haven't worked out where I want them on the UI yet, but there will also be a set of options that function as an "Apply Max" setting. When checked, it will use the max possible stats for your character, in place of whatever you currently have set for your stats, skills, or titles, whichever you have enabled it on. This will not overwrite your current entered values, and will serve as a way to quickly mess around with "max potential" builds, if that is a goal you intend to reach. If my huge drive to figure out the level up stats of each character confused you before, now you know why I wanted it.

    No pictures are included today, as even despite the incredible flexibility of my new UI setup, I am drawing a mental blank on what I want to do with these settings and what I want them to look like.
    Shippuu
    Shippuu
    That Guy
    Server :
    • NA East

    IGN : Shippuu
    Posts : 359
    Joined : 2015-12-17

    September 2016 Empty Re: September 2016

    Post by Shippuu Sat Sep 10, 2016 2:29 pm

    September 10


    It sounds silly initially, but I actually spent several days debating whether to use a numeric ID for skills, or a string name ID. It turned out to actually be a pretty tricky issue.

    Using actual string names (text) would make the code easier to work with, being able to reference them as skills.STRMastery.ranks[3] instead of skills[10].ranks[3], to make up an example. The flip side to this is that skill data needs to be preserved in the URL, as part of the base stats of the set. So while that is more readable, notice how long it is. The set links are already absolutely massive, and I'd rather not make them any larger...

    For this specific functionality, I decided to sacrifice a bit of simplicity and efficiency, to make it work in a way that's actually practical. Rather than picking one way or the other, I'm going to implement both. The actual data will use string IDs (STRMastery, criticalHits, etc), but when it comes time to read the set link or create a set link, the link "module" will convert to and from string and numeric IDs. So while the data itself may be accessed as skills.STRMastery, the JSON for the URL will save it as profileID:{skills:{10:"3"}}. This allows it to be both easily memorable for writing the code, and short for existing in the URL. I wanted to go in-depth about the new data format for profiles vs the old, but I haven't quite finalized it yet to do that. It will be in the next Dev Log.

    I can talk about some efficiency changes that have arisen, though. If you have seen the raw, unshortened version of an Armory link before, you may have been shocked at its sheer length. It's paragraph sized. It has been bugging me for a while that the URL length is actually longer than manually typing out the description of the set as readable by a human. The fact that this is possible means that the URL is not as efficient as it could be at condensing data. It just means that I have not yet been clever enough to come up with ways to cut its size down.

    With v3.00, the first of hopefully many changes will be made to cut down the length of the URL to the bare minimum possible. While I'd like to compare the URL size before and after the changes, I'd like to avoid wall of texting this Dev Log more than necessary, so I will focus on specific parts of the URL for this bit. To start with, let's focus on skill ranks, as they were the subject of much internal debating for me this week.

    If you have been paying attention to the Armory URLs in detail over the years, though I don't know why you would, you will notice this recurring, likely always identical piece of the URL:
    `ranks`+[`3`,`6`,`5`,`5`,`5`,`5`,`5`,`5`,`5`,`6`],

    This is, as easily guessed, the saved skill ranks of the profile. You might notice that they are all max rank. Infact, they are almost always max rank. If it can be assumed that the rank is max, why include it in the URL at all? With the v3.00 URLs, what if I was to do this?
    "skills":{1:6}

    If I assume that all nonspecified skills are max rank, then this is sufficient to explain all of them. On the technical perspective, I can simply have a copy of the skill ranks with all of them maxed, and then merge this ontop of it, immediately creating a valid set of skill ranks, while immensely reducing the amount of characters required to make it. Simultaneously, this also makes it more resistant to changes in the future, as missing ranks will simply assume max, rather than throw off the script as they would now.

    Taking this a step further, what if I did the same for Lv.90 equipment data? Here is a Regina Twin Spear, with every material maxed:
    `3`+(`id`+1133,`e`+15,`p`+`p52`,`s`+`s29`,`q`+3,`i`+[3,2],`mats`+[[7080,7080,4,0],[30,31,0],[45,44,24,59,32,0],[21,5,0],[4720,4720,66,35,89,48,0]]),

    With the release of Composite Enhance/Composite Synthesis/whatever NA calls it, it's fairly safe to assume that all endgame weapons will have max rolls inevitably, which means they generally will in shared endgame builds. Like with skill ranks, I can omit this data, and simply generate this in the link:
    `3`+(`id`+1133,`e`+15,`p`+`p52`,`s`+`s29`,`q`+3,`i`+[3,2]),

    On their own, these changes are still somewhat minor, URL will remain extremely massive, but it is the beginning of a gradual fight to slash down the URL to a reasonable size. As a random example, this is the "goal" I currently hope to reach for URL length, for the same fully maxed Lv.90 weapon:
    3:046D03401D303801

    I don't yet know if this is the route I will go for, but this is a mockup example of a hexadecimal version of the data. To break it down:

    3: - The slot ID, still in decimal format

    046D - The hexadecimal item ID, that will always have a length of 4 characters. It is sufficient for any item ID between 1 and 65,535.

    034 - The prefix scroll ID, that will always have a length of 3 characters. It is sufficient for any scroll ID between 1 and 4095.

    01D - The suffix scroll ID, same as prefix.

    3 - The item quality value. It will always have a length of one, and is sufficient for any quality value between 1 and 15 (though the max is 5).

    03 - The stat ID for which stat the infusion bonus applies to. It will always have a length of two, and is sufficient for any stat ID between 1 and 255.

    801 - The bonus value for the infusion. It will always have a length of three, and is sufficient for any bonus between -2047 and 2048. How would it do this? Rather than declaring a negative or positive, it would actually be taking the raw value and subtracting 2047 from it. EX: 801 represents 2049 in Hexadecimal, which would become +2 after subtracting 2047 from it. To represent Critical -3, I could use the value 7FC (2044), which would become -3 after subtraction. This lowers the max from 4095 to 2048, but is clearly more than enough for any infusion uncaps down the line.




    ...As you can tell, a fair bit of work is being put into it at this point, to cut down the size of the URL. This may seem like a futile and pointless battle, since URL shorteners exist, but controlling their length is actually extremely important. Aside from being unsightly and unwieldy to share, the URL length could actually gradually bulge to beyond the size that modern browsers can successfully read. This would result in set links simply throwing errors instead of loading the site. As a bonus result of these efforts, some day, Item Compare links might even become short enough to paste raw.
    Shippuu
    Shippuu
    That Guy
    Server :
    • NA East

    IGN : Shippuu
    Posts : 359
    Joined : 2015-12-17

    September 2016 Empty Re: September 2016

    Post by Shippuu Sat Sep 17, 2016 9:09 am

    September 17


    As is typical, I expected to do something, and then ended up working on something else just slightly different toward that goal.

    I've been poking away still at the base stats tab's code, for how it handles base stats, skill ranks, and later title stats. Slight details are turning out to have major impact to the entire Armory, when it comes to this feature. Not surprising I suppose, since base stats and the link system are two of the most significant functionalities of the entire Armory.

    The system I am setting up now to handle base stats is so dramatically different to what I had before in actual structure that it amazes even me. My old code is messy shit in comparison. I used to have sections of code divided into individual objects carrying related data and functions, but those objects were for entire windows rather than serving as any form of "module". They were so messy and entangled that removing or disabling any one function would cripple the entire Armory. The structure of the site is what I now believe could truly be called modular.

    Each tab is given its own object to contain all of its data and functions. Unlike before though, references to data or functions in other objects (modules) are cut down to a minimum. Ontop of this, they are coded in a much more sturdy way. Every time another objects resources are needed, the function first confirms the object exists and that it has the needed data. If it doesn't, the function has a fallback to still manage to complete the task it intended to do, instead of just crashing JavaScript on the page until the user refreshes. This sounds minimal, but the sheer *difference* that is present in the structure now is astounding.

    On the actual task of reading the base stats given by the player, the actual needs are much different now, due to the new titles giving extra stats. The v2 base stats are no longer sufficient for fully accurate profiles. The process for base stats on the v2 Armory is VERY roughly the following, when first clicking Start:

    v2 Armory Startup:

    Aside from the pointed out flaws with the format the data is stored in, this also leaves the Armory rather blind as to where the stats are coming from. For simple stat calculation this is actually entirely fine, but for more advanced/fancy features, it closes the door on them entirely. It just isn't capable of doing it. However, with v3, I have an opportunity to open that door, and then rip the entire wall down...

    v3 Armory Startup (Not fully finalized yet):

    Notice several small but significant differences in the process.

    Namely, Step 1 of v3. This change was required, due to my decision to implement and use base character stats. Since the character icons will be here to select characters, the actual Character Select tab becomes redundant, and thus no longer exists in v3. The layout of the character icons will be the same, and they will function the same, so the user experience will not be very different despite this.

    Secondly, the Armory sure is going out of its way to separate out what stats came from where. This actually goes in two directions. For one, it will allow the implementation of an "Analytics Tab", allowing you to see a breakdown of where your stats come from in chart form. EX: A pie chart showing how much of your total ATT is coming from level ups, from STR Mastery, from titles, from buffs, or from equipment. Optionally, equipment can be divided again into either weapons/armor/accessories, or equipment/modifications (ES, infusions, quality).

    On the other, it allows you to entirely skip having to type in base stats, and lets you automatically generate base stats to fill in. If your build is just for curiosity and doesn't need accuracy, or you just want to see what the very max possible is, you don't need to bother filling everything in. Just select a character, provide a valid level in the Level field, and click Start. For each empty field, it will automatically generate the value based on that character's base stats at the entered level, the skill ranks provided (or max if toggled off), and from applying every title's stats. Essentially, this will serve as a "Use Max Stats" feature.

    ...And all of that is why this part is going so slow. This is one of the few Armory key pieces that definitely impacts everything, and really needs care to be setup to offer as much as possible. I still need to finish filling in level up stat data, which is taking a fair bit of time since manually typing in this much data is almost physically painful. I have another 520 levels to fill in, across all of the characters. Ontop of the bit of extra time required to double check these values to ensure that they are all exactly correct.

    Once all of that is filled in, all base stat related info that will be used on v3 launch will be completed (titles will not be part of v3.00.00 to expedite release), and I can get back to handling URL generation. The skill and skill rank data happens to already be filled in, and has the distinguishable honor of being the first piece of Archives data that will be unified to the Armory. On that curious teaser, I'll end today's Dev Log.
    Shippuu
    Shippuu
    That Guy
    Server :
    • NA East

    IGN : Shippuu
    Posts : 359
    Joined : 2015-12-17

    September 2016 Empty Re: September 2016

    Post by Shippuu Sat Sep 24, 2016 7:18 pm

    September 24


    I have finished filling in the level up stats for every character except Delia. I am missing a few of the early levels for her, so I can't fill hers in just yet. Using a certain other source, I was able to validate the base stats at each level for the first nine characters (all but Sylas and Delia). Some of the level up stats I had been provided were actually shown to be wrong with this check, which makes me somewhat skeptical of the Sylas and Delia data I had. The Stat Analytics tab will be able to reverse calculate the base stats by stripping titles and skill rank bonuses, but unfortunately this will only cover Lv.90.

    I've devised a rough plan for how I want to handle titles in the URL, even though titles will not be part of the initial v3.00.00 release. I will have plenty of time to refine it as I go, and it will likely need it. Sanitee's Vindictus Inn lists 838 titles currently, potentially plus some that have been added since its last update (since she is busy IRL currently). That is a LOT of data...or is it?

    Logically, you would think that to state whether or not a character has each title, it would require at least 838 characters. Interestingly, it doesn't. With my current rudimentary idea, I should be able to express having/not having 838 titles with 112 characters, with full precision. So, you might be wondering, what black magic am I using? Binary.

    Let's take a single character as an example, R. It has an ASCII value of 82. Let's look at that in Binary, it's barest form: 01010010. Binary is a base 2 system, where the only digits are 0 and 1. Titles only have two possibilities: having it (1), and not having it (0). You can probably see where I am going with this. I can take each series of 8 sequential titles, and assemble them into one character. In this way, 838 titles only needs 104 characters to represent it. The other 8 are simply formatting, for specifying the highest title ID to handle, and etc.

    Naturally, there is a catch to this. While ASCII itself has all 256 values required for this, a fair number of them are not actual characters, and thus not compatible for this use. As such, I will have to dive into unicode to find filler characters for those spots to have a complete set of 256. Thankfully, as the set links for the URL will never include titles, that particular restriction will not hinder me here.

    You might be wondering, what about Account Shared Titles? I plan to handle these roughly the same way Vindictus does. You will be able to specify a group of profiles (up to 20) as an "account" and all of them except the selected profile will be used to determine shared title bonuses when you are using a profile that has its titles filled in manually.




    To quickly step back to a slight change mentioned in the last Dev Log, I had made a mention that character selection was now built into the Base Stats tab. At the time, I had no actual UI to show for this, only back end code. Now, however, I have a rudimentary but more than halfway finished implementation of it. When you first open the v3 Armory, you will be greeted by this window:

    September 2016 RhIxIeF

    As the level up base stats vary per character, it is now required for calculation to select one. Thus, you cannot enter your base stats until you do so. Once you select a character, the rest of the tab pops into view:

    September 2016 L43KX7a

    In this pic, Lann is selected, and I have hovered over Vella's button to show the effect. Colors and spacing are not yet final, but this is what the layout will look like. These take up more space than I thought, so it is entirely possible that an option will be placed in the Settings Window to revert the button images to text. If I decide to do so, this will be a v3.00.00 release feature, its implementation would be trivial.

    On a last note, title stat reverse calculation is now at full power, and no longer uses any placeholder code. Unfortunately, the Stat Analytics tab doesn't even exist yet, and will not be in development until near release likely; it's far from essential. This means that it will be quite a while before I can show off exactly why I wanted it to be able to do this.

    That aside, now that base stats are being handled correctly, my next two steps will be to begin assembling the code that generates set links and character profile links, and from there the creation of the Stats tab (not yet sure of a name for it that won't be confusing alongside the Base Stats tab).
    Shippuu
    Shippuu
    That Guy
    Server :
    • NA East

    IGN : Shippuu
    Posts : 359
    Joined : 2015-12-17

    September 2016 Empty Re: September 2016

    Post by Shippuu Wed Sep 28, 2016 9:33 pm

    September 29


    The Base Stats tab is now finished, as far as existing features are concerned. This is a nice progress landmark, letting me finally start working on other tabs. From here on, the only thing the Base Stats tab still needs is interactions with other tabs (of which those don't exist to call the functions yet). I have also finalized what the character selection buttons will look like, on the default settings:

    September 2016 NJknktQ

    Lann is the selected button, and the mouse is hovering over Vella, to show the graphics for both states.

    The next task to take on is the URL, which is going to involve some placeholder gear data, for the nonfunctional Gear tab. That one will be interesting to figure out. I have some ideas for reducing the URL size of non-90 equipment that I REALLY want to try. Aside from title info, which can be safely omitted in character profile data, I do happen to have almost everything needed for that now. I'll likely create the format using a placeholder -1 for Transformation Path data, and fill it in after. I really want to see what the full assembled set link and character profile data formats look like in v3.




    I also want to use this Dev Log to address some things I said that didn't end up happening.

    I have been saying for a while that I was going to add an Ein Lacher Placeholder item to the Wings slot, that would allow the user to specify custom Balance and Critical values as a quick fix to tide over until v3 is ready. Several days ago I finally stopped being afraid of messing with the live site's code, and started on adding this. I added in the Placeholder item as ID 10001, I added the functionality to the right click menu to display the sub-menu, and even set the stats correctly. Only to realize that the URL is absolutely not going to put up with a huge edit like that without a fight.

    I'll say it outright: Yes, the v2 Armory URL format absolutely would allow me to make the edits to support these custom stat items. I am just afraid to mess with the code to actually do it. The v2 code was a huge step up from v1 in tidiness and cleanliness, but it is still a disorganized mess that falls over easily when presented with situations that aren't 100% perfect. It has been too long since I worked with heavy editing of the URL format for me to trust myself to successfully implement this without breaking it entirely. If it breaks, the entire site will stop working, and it would be a mess to fix. A full reversion would work, but any profile that used those custom items would suddenly become corrupt and unusable. Thus, I don't want to mess with this one. I'm sorry about that.

    On another note, weeks ago I announced that I would be switching back the Nav bar links to the subdomain for these forums. I decided to group that update with the Ein Lacher Placeholder item update. At this point you now know how that one turned out. As of about half an hour ago, those links are now updated, though.

    I took a look at the Vindictus Manual site's footer section while updating the forum links, and holy mother of god was it outdated. It was still linking to the Vindictus IRC channel, which I believe died off back in like January or February. It now links to the Vindictus Discord server instead, and a link to the Vindictus subreddit was added to the helpful sites section.
    Sponsored content

    September 2016 Empty Re: September 2016

    Post by Sponsored content


      Current date/time is Thu Mar 28, 2024 1:51 pm