[KDYv2] Development Blog Thread

By ThatRobHuman, in Star Wars: Armada

Just a quick question, will existing KDY content be ported over to KDY v2, or will we be starting over? Not judging, just wondering what your vision is.

Thanks for all the hard work FoaS!

To be honest, I'm not sure yet.

The problem is that a lot of the inherit structure of content is changing. For example: the addition of genres to the system will radically alter how a lot of the content is currently set up without the ability to have a fallback. There is someone on KDY who has done a lot of WW2-themed content. That kind of stuff should probably have it's own Genre, which means it's own renderers, which a conversion cannot necessarily dictate when to create a new genre, and a new renderer, and how those renderers should be defined.

I wish it could have a 1-to-1 conversion, but I'm not sure it's possible, yet.

What I'd like to do is a keep KDY1 open for a given amount of time once KDY2 is up and give folks a chance to decide for themselves what they want to convert over and how (once they grow familiar with the new system), then close down KDY1.

So, to explain why I'm pulling my hair out, as I had mentioned before, I'm making it so that people can build their own renderers.

Each renderer can have a nested list of Rendering Nodes which can contain more nodes, or a piece of content related to the content they are rendering.

For example: I'm working on the Squadron Card Back rendering engine. This get's rendered with a Faction as it's content. So, I could say "put the faction Icon in X node with the faction's primary color as the icon color and the faction's secondary color as the background, and put X node instead of node Y. Node Y is the root node of the rnederer.

The problem is that there are some dynamic properties that I want to put in. for example: "If this faction's genre doesn't isn't an official genre, don't display this node" - the interrelationship between the content's definition structure and the rendering nodes nested nature is making me very frustrated.

Another example that is problematic is suppose I have a Node that has a NodeType of SquadronKeywordList. Well, that node has properties for both the container, and each of the keywords that a squadron has. How do I allow the Keyword on a squadron to influence the rendering of each keyword node.

Suffice it to say, it's a hairy and convoluted set of "ugh"...

Makes sense. Don't let it eat your brain. You will get it figured out.

I was thinking of taking an online programing course. Anything in particular I should look for that would allow me to be of help?

In other news, I am making headway on the silhouettes, and even if the existing library on KDY1 can't be ported over, I still have all the PNG silhouettes on my computer. It will take me a fraction of the time to enter them into a new system.

I may just "print" all existing content, by user, as a PDF file before 1 gets shut down. That way it will all still exist somewhere.

On another note, I am going to take a look at using printerstudio.ca, from Wes Jansons article, to print a set of cards. Hopefully I will be able to get you all the formatting information, so the hi res cards will be print ready... If that is still a possibility.

So, fair warning, I'm probably going to have silhouttes be vector SVG files instead of PNGs in KDY2. I realize that this will be a pain, particularly for you, but I hope to make a few resources available to help folks out.

I will also be keeping a download of all the content on KDY1 after I set it to read-only mode, so it'll exists in more than one place to be sure.

I'm currently writing the API in PHP and I'll be making the front-end using ReactJS and WebComponents, if that helps.

I'm totally down with supporting print-ready formats (the joy of this system, too, is that people can make card definitions of their own. Want a Ship renderer that does a 3in x 3in card for some reason? You'll be able to make one).

Don't sweat it. Now I just need to learn how to create vector SVG files. Stuff like that is fun, and at least I have my computer and my kegerator in the same room in my basement.

PHP was already on my short list, so, cool. I will look for both ReactJS and php as options though.

I will endeavour to take good notes on the entire print formatting process.

More problems with the rendering system.

Resolving constants. For example, if you REALLY want to be able to have the color of a squadron's text be the color of the squadron's faction icon, you should be able to do that, but passing those values down from the Renderer object is proving to be difficult.

Mathematical Expressions. Best example is the squadron dial. Each number of the squadron's hull should rotated by an amount equal to the iterator times 5 degrees. that's proving to be interesting to figure out how to do.

Looping elements. Best example is on the squadron keywords. It's a list of variable length. One should be able to design how each keyword is displayed, and then the renderer should layout all keywords of a squdaron by that definition in a repeated way. This is proving difficult for how I had hoped to style those elements.

ugh.

Feature request:

Additional Filter options

- Edition

- Visibility

Already planned, though the editions system is being retired in favor of genres.

More on the rendering system.

I've gotten it down to where I can (mostly) setup the conditional statements and constants that I want. I'm sure that folks will want more conditional statements, but I'll only be adding in a handful of them at launch. I imagine that once folks get used to the rendering system and what more features, I can add them in relatively easily.

I've also got a good handle on how I should style the HTML that the renderer uses, now, so now is the part where I hunker down and really go to town on building out the rendering engine.

I am guessing that the new system will support multi-slot upgrades, and multi-ship, non unique titles, but I'm curious how easy it will be for you to modify for FFG's next curve ball.

That seems to be an issue that was frustrating you with KDY1.

The new system will indeed support dual-slot upgrades (but not more than 2 EDIT: unless a reasonable case can be made for supporting 3).

The non-unique titles are actually not as bad as I once thought, but to support them I am going to break a few things out. Right now KDY1 finds the "related" content by silhouette. This will no longer be the case. Instead what I'm doing is just making silhouette a parameter just like any other that you can select. I could do parent classes where the "MC" silhouette has all the MC-esque silhouettes as children, but I feel like that distinction is too much work for too little benefit.

As for what FFG's next curve ball will be? Hopefully it won't be as bad as others, but just in case: I hope that the way that I'm building this will allow for expansion of content a bit more easily.

Edited by FoaS

I got the rendering system to work as expected. Most of the property parsers are in place, and a good chunk of the heavy /initial/ programming is done. I still have tons to work out as I build each rendererer, but I've got a solid start.

It's not much to look at, but here's what my rendering system has produced: SO43tyG.jpg

The reason that this is impressive is that this was built and rendered NOT by me laying out code, like I do in KDY1, but rather by records in my dev database. Once one understands how the properties and render-nodes work, y'all can make your own rendering system.

This is going to be so cool!

Thanks for all your hard work FoaS!

I'm glad your amped about it. It helps to keep me motivated to know that others are looking forward to it.

Tangentially related to the idea of renderers, does anyone have any of the Open Stele tournament cards that were around?

Wave 7 has been added to KDY1

I have a couple of Icons for my Star Trek Armada "mod" (Phasers, Disruptors, Torpedos). Any chance to see them incorporated?

And I just did a lot of "Strik-class Cruiser" content. Possible to make an Expansion out of it?

On 2/7/2018 at 6:00 AM, DScipio said:

I have a couple of Icons for my Star Trek Armada "mod" (Phasers, Disruptors, Torpedos). Any chance to see them incorporated?

And I just did a lot of "Strik-class Cruiser" content. Possible to make an Expansion out of it?

Absolutely. The icons that you have made, what format are they in?

I just made you a contributor - so you can make expansions to your hearts content :).

@FoaS

Thanks a lot.

What format do you need?

Edited by DScipio
1 minute ago, DScipio said:

@FoaS

Thanks a lot.

What format do you need?

SVG is best but if it's a large grayscale PNG I can work with that (JPGs get a little iffy with the compression-induced noise).

In development news, regarding the API:

I've got the API creating renderers with node structures just fine, which was probably the hardest part of the rendering system (except maybe the preview feature, which will take some more work). Now what I need to do is start fleshing out the component library - basically a definition of a node "Type" that says what properties each node can use and how it's displayed.

Right now, I only have 2 types of nodes: Icon and Container. Icon is exactly what you'd expect - it outputs a previously defined icon, either by a variable (such as the current card's faction icon) or by a static asset that you define. A container has references to other nodes that you can place inside it, like the box on a squadron card that contains the unique-text and keyword list. Now I need to flesh out that list of node types - those will be determined by what renderers I need, which will be determined what types of content I add to KDY, which means I need to go back to the top-level and start adding database schema for things like Ships, Squadrons, DiceTypes, etc.

Time to get cracking :)

Edit: Also, I've realized that given the JSON structure that the API uses, it'll be really really easy to add a Fleet feature to the new version.

Edit 2: Actually, this makes me realize that it'll be REALLY handy for the TabletopSimulator plugin if you can insert an entire fleet into the game. You type "spawn 12345678" and it'll reach out to the API, grab the fleet composition that constitutes fleet 12345678, grab ALL the content of that fleet. bring it into the game, and then wrap it up into a bag for you to set up as you see fit.

Edited by FoaS

I give you a data dump of the Rebel Alliance faction object in KDYv2

{
    "content_id": "CXYoKoJU",
    "name": "Rebel Alliance",
    "slug": "Rebel Alliance",
    "label": "Rebel Alliance",
    "status": "PUBLIC",
    "canonicity": "OFFICIAL",
    "created_dtm": "2018-02-16 16:26:43",
    "edited_dtm": "2018-02-16 16:26:43",
    "genre": {
        "content_id": "1lTIc011",
        "name": "Star Wars",
        "slug": "Star Wars",
        "label": "Star Wars",
        "status": "PUBLIC",
        "canonicity": "OFFICIAL",
        "created_dtm": "2018-02-14 14:34:36",
        "edited_dtm": "2018-02-14 14:34:36",
        "creator": {
            "user_id": "X5XZbkv5",
            "name": "FoaS",
            "joined_dtm": "2017-12-24 21:28:22",
            "status": "SUPERADMIN",
            "login_dtm": "2018-01-22 16:19:06",
            "administrator": [],
            "contributor": []
        },
        "editor": {
            "user_id": "X5XZbkv5",
            "name": "FoaS",
            "joined_dtm": "2017-12-24 21:28:22",
            "status": "SUPERADMIN",
            "login_dtm": "2018-01-22 16:19:06",
            "administrator": [],
            "contributor": []
        },
        "icon": {
            "asset_id": "EkU3M5fl",
            "name": "Star Wars Logo",
            "slug": "Star Wars Logo",
            "status": "PUBLIC",
            "created_dtm": "2018-02-14 14:33:03",
            "edited_dtm": "2018-02-14 14:33:03",
            "icon_url": "http://localhost/kdy_assets/UdqvPpnAJOEajBVk",
            "thumbnail_url": "http://localhost/kdy_assets/rMJojS8v7bgrRuib",
            "creator": {
                "user_id": "dDGPssoe",
                "name": "TestUser",
                "joined_dtm": "2017-12-27 04:44:01",
                "status": "NORMAL",
                "login_dtm": "2018-01-10 16:58:20",
                "administrator": [],
                "contributor": []
            },
            "editor": {
                "user_id": "dDGPssoe",
                "name": "TestUser",
                "joined_dtm": "2017-12-27 04:44:01",
                "status": "NORMAL",
                "login_dtm": "2018-01-10 16:58:20",
                "administrator": [],
                "contributor": []
            }
        },
        "color_iconfore_hi": "#ffcc33",
        "color_iconfore_lo": "#000000",
        "color_iconback_hi": "#000000",
        "color_iconback_lo": "#ffffff",
        "color_custom_1": "transparent",
        "color_custom_2": "transparent",
        "color_custom_3": "transparent",
        "color_custom_4": "transparent",
        "color_custom_5": "transparent",
        "color_custom_6": "transparent",
        "color_custom_7": "transparent",
        "color_custom_8": "transparent"
    },
    "creator": {
        "user_id": "X5XZbkv5",
        "name": "FoaS",
        "joined_dtm": "2017-12-24 21:28:22",
        "status": "SUPERADMIN",
        "login_dtm": "2018-01-22 16:19:06",
        "administrator": [],
        "contributor": []
    },
    "editor": {
        "user_id": "X5XZbkv5",
        "name": "FoaS",
        "joined_dtm": "2017-12-24 21:28:22",
        "status": "SUPERADMIN",
        "login_dtm": "2018-01-22 16:19:06",
        "administrator": [],
        "contributor": []
    },
    "icon": {
        "asset_id": "EkU3M5fl",
        "name": "Rebel Logo",
        "slug": "Rebel Logo",
        "status": "PUBLIC",
        "created_dtm": "2018-02-16 16:23:06",
        "edited_dtm": "2018-02-16 16:23:06",
        "icon_url": "http://localhost/kdy_assets/UdqvPpnAJOEajBVk",
        "thumbnail_url": "http://localhost/kdy_assets/rMJojS8v7bgrRuib",
        "creator": {
            "user_id": "X5XZbkv5",
            "name": "FoaS",
            "joined_dtm": "2017-12-24 21:28:22",
            "status": "SUPERADMIN",
            "login_dtm": "2018-01-22 16:19:06",
            "administrator": [],
            "contributor": []
        },
        "editor": {
            "user_id": "X5XZbkv5",
            "name": "FoaS",
            "joined_dtm": "2017-12-24 21:28:22",
            "status": "SUPERADMIN",
            "login_dtm": "2018-01-22 16:19:06",
            "administrator": [],
            "contributor": []
        }
    },
    "color_iconfore_hi": "#ffffff",
    "color_iconfore_lo": "#880000",
    "color_iconback_hi": "#880000",
    "color_iconback_lo": "#ffffff",
    "color_arclines_hi": "#FF0000",
    "color_arclines_lo": "#880000",
    "color_custom_1": "transparent",
    "color_custom_2": "transparent",
    "color_custom_3": "transparent",
    "color_custom_4": "transparent",
    "color_custom_5": "transparent",
    "color_custom_6": "transparent",
    "color_custom_7": "transparent",
    "color_custom_8": "transparent"
}

I've gotten asset uploads working for icons, fonts, and plates (plates are what I call static images on cards, like the background or what have you). Things are progressing really nicely.

I'm ready to say that I should have kdy2 ready for launch by end of June.

I wanted to create a lot of cards. Better to wait for the new system so I dont have to redo them then?

On 16.2.2018 at 11:52 PM, FoaS said:

I've gotten asset uploads working for icons, fonts, and plates (plates are what I call static images on cards, like the background or what have you). Things are progressing really nicely.

I'm ready to say that I should have kdy2 ready for launch by end of June.

10 hours ago, DScipio said:

I wanted to create a lot of cards. Better to wait for the new system so I dont have to redo them then?

Probably, especially since you're going to need to define your upgrade types, factions, and genres, too