Jump to content
FoaS

[KDYv2] Development Blog Thread

Recommended Posts

It's a bit more than just that.

Old system behaved like this:
I hand 10 different creators $1 each. A 2-10% fee was reduced from the pledge and the remainder given to the creators. The creator then got hit with a 5% transaction fee when they withdrew some sum.

The new system: 
I hand 10 different creators $1 each. I get charged 2.9% + 0.35 PER PLEDGE. This means that each of my $1 pledges cost $1.38. The creator still needs to deal with the 5% transaction fee.

Again by the numbers:

In the bottom half of this chart, the "Creator Gets" is what the creators gets from your TOTAL CHARGE, not the PLEDGE AMOUNT.
As you can, see - creators wouldn't get 95% of what you'd be contributing at all. Would creators get more? marginally? but at the cost of many people whose pledges increase by 40%, and thus cannot support as many creators netting in many creators losing money more than the marginal increase can compensate for.

EDIT2: Wrong numbers - updated

DQeDg3rUMAACJZf.jpg:large

 

Basically, it encourages people to support fewer creators at a higher rate, or just fewer supporters in order to keep their cost the same.

This comes under the guise of supporting creators more (and the creators would get a larger amount because they only have to deal with the 5% instead of the 5% on top of the 2-10% removed from the TOTAL pledge coming in), however, many many many creators rely on a large number of $1 contributions, which just increased in cost by 140% with minimal gain to the creator. Basically: it hurts the little guy quite a bit.

 

EDIT:
From a giver on Patreon:

Quote

Did the math on my Patreon pledges.
- Creators will get 4.62% more
- I'm going to pay 8.67% more
- The actual fees to pay have changed 0%
Patreon is getting 118% more

 

Edited by FoaS

Share this post


Link to post
Share on other sites

I heard this afternoon. I think it's a wise choice for them to take some time to reconsider how they want to do things and to do better research with some better outreach. 70% faith restored.

Share this post


Link to post
Share on other sites

Man, web development for web apps sure has changed in the last 2 years. What I'm seeing is a lot of hacky frameworks to try to address some really inherit flaws in the entire system.

I've been a web-dev in the past and I've moved into more SASS app development and rarely touch the web-side of things anymore and ho-man, if I am not tempted to just create a proper application in java that just communicates with a server.

This stuff has gotten rough, man.

Share this post


Link to post
Share on other sites
On 23.11.2017 at 2:04 PM, FoaS said:

Not for nothing, Scipio, but that came off as significantly rude.

I've clearly worked my butt off, and will continue to work my butt off, to make and improve KDY and this came across as very dashing to that. Now if you have some constructive advice for the rendering, I'm all for it, but saying "it's just ugly" doesn't fly with me.

After I read it I also found it a bit rude, I am sorry, I somehow thought it would be honest, but the wording was to rude.. I deeply appricate your effort and I know how that is, as I had similar projects (Vassal 40k for example). I know how silly it sometimes sounds if someone does nothing but critizes the hard work of others. 

Still you should always strive for the better (as you seem to do), and while I can only wonder how you maintain such a vast database, the templates are dragging your marvelous effort down a bit.

I am very sorry to came out rude and not constructive. Here are some suggestions:
 

  • A bit more calm background, the heavy machine background produces a very gritty, unclean look. 
  • Dont make the dark fields (shields and attack dice / speed and manouvers/ upgrade bar) dont translucent. It promotes the background even more and pushes the image of a uniform block on the lower half. Even better (if possible) would be to use a graphic (like the blue/green Techgrid on the FFG cards
  • More bars like the upgrade bar. For example around the top fields (from hull to Eng. value). Just a black rounded bar or something similar would be optical appeasing.

I hope this just didnt sound picky, but I just lead a political campaing here and was involved in design matters and their psychological effects and reception.


BTW I love your tutorial "Making small art work"

Edited by DScipio

Share this post


Link to post
Share on other sites

Fair enough. I appreicate the honest critique - we're good, man.

 - I'm not convinced that the backgrounds are a deal breaker, if I were to take your other points in mind, but I think I can lower the contrast of those and you may be right.

- Just so I understand, you're saying that those should be opaque instead of faded black? I'm confused what you mean about the Attack Dice/speed. Are you saying that there should be an opaque black bar behind all those various fields for contrast's sake? If so, you're also not wrong here ;)

 - Also confused by this one because it feels counter to your second point. Upgrade bar is a translucent bar, but it seemed like you were suggesting not using translucent. What about the upgrade bar appeals to you, specifically, as opposed to other regions of the cards?

If there's any chance you can grab a card and use some visual aids, I may be able to understand better (though, that's potentially a lot of work).

Share this post


Link to post
Share on other sites

Dropped $30 on a ReactJS class, just to see what the hubub as all about. Not gonna lie, there is a very large part of me that is very tempted to turn KDY into a single page app. There would not be a late functional difference to you end users, but it would be significantly easier to seperate the front and back end for me.

Share this post


Link to post
Share on other sites

Okay. I'm sold. KDYv2 will be a full API backed ReactJS app.

Anything you you'll be able to do on KDYards.com, you'll be able to do through the API (because KDYards.com will be using the same exact API).

I'm also going to make it so that anyone who wants to will be able to make something to hook into KDY's API to their heart's content, if they get an API key (I'm looking at you @Nevetz).

Share this post


Link to post
Share on other sites
6 hours ago, FoaS said:

Okay. I'm sold. KDYv2 will be a full API backed ReactJS app.

Anything you you'll be able to do on KDYards.com, you'll be able to do through the API (because KDYards.com will be using the same exact API).

I'm also going to make it so that anyone who wants to will be able to make something to hook into KDY's API to their heart's content, if they get an API key (I'm looking at you @Nevetz).

When you'll have the API ready, feel free to PM me. I guess it is going to be some kind of listener that replies with JSON or XML content, is it?

Share this post


Link to post
Share on other sites

Today on things I hate in the current KDY user interface:

bIFBtof.jpg

I absolutely loathe that I did this. Whilst it's fairly intuitive, it's not exactly the most extensible thing I've ever made. Since people will be able to add their own defense tokens, how do I make it so that people can find their own content, or someone else's content easily?

Introducing the Picker.

I know people don't generally like modal dialogues, but this is really a very good case use for them. Imagine that you'll be able to click on "edit defense tokens" and you'll get a dialogue that lists out the available tokens. Not only that, but you can filter in or out types of tokens, like Official, Community-endorsed, those that you yourself have made, or even ones that you have chosen to be your favorites. Plus a search box so you can filter by defense token names. Once you click "Apply" it will update the list on the ship edit page and close the modal dialogue. I feel like a lot of things will be making use of this, from Dice to Faction selectors, and so on.

Edited by FoaS

Share this post


Link to post
Share on other sites

Finally laying out the spec and scaffolding for the API. To be honest, I have no idea what I'm doing except making DB queries to the MySQL database backing everything and outputting JSON in the response header. I have a couple questions for those who may have had experience with such things:

 - Is it better to use the HTTP Response Codes as my error codes or can I get away with just inserting error codes and messages into the response?

 - Should I have users send the API Key (and user token if the endpoint requires elevated user status) in the header or in the URI?

 - How common is it to send Warning messages in the response body. For example, if it turns out that I'm going to deprecate a method, should I send warning messages in the response, or should I just rely on people to watch the blog on the Developer site (once that gets put up)?

Share this post


Link to post
Share on other sites

I'm almost done writing the account management and developer's portal.

Application makers will be able to hook into the API (if they get a key, of course) in an anonymous state, much like browsing the site as it exists now.

However, if you allow users to log in and get an access token for them from the API, they will enable that user to access their private content through the app. However, an application will not be able to register a new user directly. They will instead need to have the user register on the KDY Account Management site (I hope to streamline this as much as possible) and that user will need to grant access to that application within their account. A user will be able to set an application-specific password for each app that they grant access to, and revoke the permissions at any time they so wish.

But, again, this only really applies to people who want to make use of elevated features of the API. Once you have an API Key you'll be able to browse public data to your heart's content.

Edit: Also exciting news. Tabletop Simulator now supports HTTP requests in scripting, so I'll be able to revisit my efforts to make the TTS integration an actual thing.

Edited by FoaS

Share this post


Link to post
Share on other sites

Work continues on the API.

I'm finding it difficult to really design the endpoints, though. Taking, for example, the Genre collection and resource. For those of you who are familiar with web APIs using HTTP requests (think RESTful), this is what I mean:

let's say I have two endpoints for genres:
get api.kdyards.com/v1/swa/genres/
get api.kduards.com/v1/swa/genres/{someId}
 

Should the first one, the collection of genres, just return an array of IDs, or should it return an array of trimmed down objects that describe the genre?

If I go for an array of just IDs, that means that people will need to query each individual resource to get any kind of useful information to display a genre, such as it's name, it's canocity, etc - which means lots of queries - one for each ID returned from the collection, plus getting the collection itself.
If I go for the idea that the collection endpoint returns an array of objects that describes the genre in some detail, then the {someId} endpoint becomes redundant. It's not like there is a large amount of data for a genre that would be included on the resource that isn't in a detailed collection. (granted, this isn't always the case. for example: if you GET api.kdyards.com/v1/swa/ships/ you won't know ever ship's speed chart from that collection, but you'd get it's name, it's id, and so on.

 

I guess I should go for the semi-detailed collection, just to make queries a lot easier.

Share this post


Link to post
Share on other sites

Fun times ahead.

I've rebuilt the framework to the API about 3 times, but I think I finally have a winner. I'm building out each endpoint bit by bit (pun!) and hope to have something substantial soon.

One thing looming on the horizon is the Rendering system. I've mentioned it before, but one of the things that I want to do is make it so that people can add their own renderers and have card images that have the look that they want. This WILL be complex - no matter how I slice it. I hope that my front-end will make it more consumable, but for anyone making their own app, it will be a very busy set of API calls.

Have an API code dump, because why not...

This describes a "genre", or a category of content - I envision people being able to make their own genres as they see fit. Obviously there will be a star wars one for Armada right off the bat, but if you want to have Babylon 5 as a genre? so be it - make one.

{
    "content_id": "ynOUWAM4",
    "name": "Test Genre",
    "slug": "Test Genre",
    "label": "Test Genre",
    "status": "NORMAL",
    "visibility": "PUBLIC",
    "canonicity": "HOMEBREW",
    "created_dtm": "2018-01-24 01:09:41",
    "edited_dtm": "2018-01-24 01:17:58",
    "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": []
    },
    "icon": {
        "asset_id": "MxllvS9V",
        "name": "Star Wars Symbol",
        "slug": "Star Wars Symbol",
        "status": "NORMAL",
        "visibility": "PUBLIC",
        "created_dtm": "2018-01-23 10:49:34",
        "edited_dtm": "2018-01-23 10:49:34",
        "description": "It's the star wars icon.",
        "icon_url": "http://localhost/kdy2_ast/WeeOCbVWzJujnjXG.svg",
        "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": []
        }
    }
}

 

Edited by FoaS

Share this post


Link to post
Share on other sites

Genre and Faction definitions are (mostly) working... and there was much rejoicing.

 

I say mostly because I haven't fleshed out how I want to structure the Rendering definition and database structure, and that's going to be a pretty big part of factions - after all, you've gotta define how your Card backs are going to look, right?

{
    "content_id": "QlQmGPOK",
    "name": "Rebel Alliance",
    "slug": "Rebel Alliance",
    "label": "Rebel Alliance",
    "status": "PUBLIC",
    "canonicity": "OFFICIAL",
    "created_dtm": "2018-01-26 03:48:01",
    "edited_dtm": "2018-01-26 03:48:01",
    "genre": {
        "content_id": "ifYohUXD",
        "name": "Star Wars",
        "slug": "Star Wars",
        "label": "Star Wars",
        "status": "PUBLIC",
        "canonicity": "OFFICIAL",
        "created_dtm": "2018-01-26 03:20:51",
        "edited_dtm": "2018-01-26 03:20:51",
        "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": []
        }
    },
    "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": "4ypXwN9e",
        "name": "Rebel Alliance Logo",
        "slug": "Rebel Alliance Logo",
        "status": "PUBLIC",
        "pending": 0,
        "created_dtm": "2018-01-26 03:43:57",
        "edited_dtm": "2018-01-26 03:43:57",
        "icon_url": "http://localhost/kdy2_ast/q5VEKPmXCpn2Nkj4.svg",
        "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_primary_light": "#880000",
    "color_secondary_light": "#ffffff",
    "color_tertiary_light": "#FF0000",
    "color_primary_dark": "transparent",
    "color_secondary_dark": "transparent",
    "color_tertiary_dark": "transparent"
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×