NPBruce / valkyrie

Valkyrie GM for Fantasy Flight Board Games
Apache License 2.0
506 stars 105 forks source link

Better Internet Quest Distribution #111

Closed NPBruce closed 6 years ago

NPBruce commented 7 years ago

Quests are downloadable, but want to move to something like ModDB to allow users to log in, rank, comment, browse content.

NPBruce commented 7 years ago

From #5

NPBruce commented 7 years ago

I've been experimenting with moddb and I can't get it to work well for this function. Looking to add author, time, difficulty, etc to the quest instead.

It world still be best to have a page to list available quests, post info and get comments. I have submitted Valkyrie as a bgg item as that is one option. Still considering other ideas.

redwolf2 commented 7 years ago

Sites like minecraftmods.com seem to use wordpress as a CMS. So the idea is to use a cms, where people can upload and rate files and write a script, that exports all uploaded files with additional meta data like rating and a thumbnail, which can then be used in the in-game scenario browser. If a user wants to rate the scenario, the game will be minimized and the web site of the cms will be opened with System.Diagnostics.Process.Start("https://valkyrie-hub.net/content/37814");

NPBruce commented 7 years ago

I was trying to avoid maintaining such a system. Now I am working on making the in game system better, maybe just use that for now.

facit commented 7 years ago

This feature is so important and has to be really, really easy to use. Both for the creator and for users. The way it is now it's really easy to use for the player, but not easy for creators. Until it is, this program won't get much traction. I can help if you need help but I would need some guidance of where to start. How does the program get the mod files?

NPBruce commented 7 years ago

Here is where to start: https://github.com/NPBruce/valkyrie/wiki/QuestPublish

Valkyrie checks the manifest file (https://github.com/NPBruce/valkyrie-store/blob/master/MoM/manifest.ini) and fetches images and packages from there.

Really though Valkyrie can do anything, as long as it can get the info.

The problem is having a web interface that is robust, easy, allows user account but without being annoying, and has all of the modern web features people expect. I still think using an existing service is a good path, but I can't find any that are suitable. Obviously something custom could be created, but a half job would be worse than what we have currently.

As for the 'not easy for creators' I don't think this is such a big deal. Creators can just send me a copy and not have to use git. The big advantage to using a web system is promoting community, allowing discussion, ratings and collaboration.

redwolf2 commented 7 years ago

For a first step choose a CMS. Then install something like WP Download Manager on it (here is a Sandbox Demo (user: demo, password: demo)). For a forum Discourse could be used (Demo here). it also comes with a wordpress integration.

I'd say worry about the valkyrie store integration later.

It could just be a second repository url to a httpd directory listing service. The result is something like this: http://srp.nu/

ChadMcCallum commented 7 years ago

I'm actually a web developer by trade and would be able to contribute to this, although it really should be its own repo with features and whatnot (linking back to the manifest file in this repo). Is there a centralized document / communication platform you guys use for planning?

NPBruce commented 7 years ago

I completely agree it should be it's own repo if that is the solution. There is no planned communication, but implementing on the Valkyrie side really isn't hard, just need to be able to do a public http request for:

It may get a little trickier in the future for content pack support which could be a lot bigger, but it wouldn't change much.

I would still like to use an off the shelf solution as much as possible, I don't want to maintain another project.

massimoregoli commented 6 years ago

Any news about the web interface guys? Do you still need help to find a good solution? I think it would be great to have it, not just for scenarios rating, but because it would be a good way to attract people.

NPBruce commented 6 years ago

No good solution has been found at this point.

eorahil commented 6 years ago

My scenario is near to an end and I decided to create a google docs poll in order to let people rate it in a centralized way. The link to the poll will be available in the scenario itself.

scrubbless commented 6 years ago

A central place for rating and feed back would be nice, though its important that it is not half hearted. As it will be a platform to build a community.

redwolf2 commented 6 years ago

Here is the idea. Implement a REST service in nodeJS with a single sqlite database.

This REST service can then be utilized by both the Valkyrie App and the Community Site.

Every request has to supply the following infos:

Some requests also require account infos:

Requests

Remarks

The server database should only hold the meta data, not the scenario files. Those should be stored on the file system maybe also on another server and be accessible via http call. For example in data/users/[userid]/content/[contentid].

BenRQ commented 6 years ago

Hi all, I see this ticket as been voted as quite important, and it's true it would help to build a community to have better communication between players and authors.

But technical implementation is not moving much, mainly because of the amount of different request stacked on this topic. I agree it would be great to do it all, but I would suggest to do it step by step.

I would divide all requests into these tasks/topics: 1) be able to rank / provide simple feedback for a scenario that has been played (I would suggest from the app once the scenario is finished) 2) Present the scenarios with the rank / number of voters (inside the app) 3) Present a better description / additional metadata and allow filter (rank, author, languages, number of time played, average duration ...) #832 4) Have an easy(easier?) way to push new scenario. 5) have a portal to enable discussion between authors and players ( discord? reddit? ) #860 6) Have a website with all of the metadata available for each scenarios

1 and 2 would be top priority I think. 5 would probably be the easiest thing to do.

@redwolf2, I think your proposal for implementation is very good. I would be ready to take part in the coding, but I have one main question: where would we host this ? It would have to be free, reliable (and last for a few years).

Otherwise, I was thinking about google forms / google spreadsheet. It would not be as efficient, as flexible as a database, but it would be quite easy to implement, and reliable. How do you feel about using google platform for this?

@NPBruce, I will not work on this before I have your go on this :) And maybe you prefer working on this yourself ?

NPBruce commented 6 years ago

I don't have capacity to work on this (as you have no doubt noticed I'm not on top of core development).

I am happy for anyone else to take this on. I don't entirely agree that doing things inside the app is the first step. I would suggest starting a web interface first, even if very basic, and the form that it takes will shape how the data is stored and how the app interacts.

Though I guess you can just move it later. Either way, the issue with feedback in the app is how do you authenticate the write to whereever the data is stored? Perhaps something as simple as sending an email to a specific account with a volunteer who can manually vet the reponses will do for now? The email could still be checked by a script later.

BenRQ commented 6 years ago

Hi @NPBruce , I'm happy to help and I have to say that the code is really well thought and structured. It's really nice to work on this project also for this.

To answer your questions:

I would suggest starting a web interface first, even if very basic, and the form that it takes will shape how the data is stored and how the app interacts.

I agree, and I have done a first draft of Google forms. Here it is : https://goo.gl/forms/sCiwEojsoK6yWNSk1 Feel free to have a look and comment. This form will be filled mostly by the app, without user interaction, except for the field marked as 'manual' where question would be asked in game.

Either way, the issue with feedback in the app is how do you authenticate the write to wherever the data is stored?

The form would have to be without authentication. I don't see that as a big problem. Entering data would be without authentication, but reading/modifying would be managed via google sheet. As it would be called from the app, the Form URL would not be shared publicly. It would still be in the code, but we can add one or two points of security/obfuscation, just to discourage the few ill intended geek.

The email could still be checked by a script later.

All scripted actions would require a specific hosting. If we have a specific hosting, I would rather use a db than a google forms + google sheets. But I don't see an easy way to get that. Also Google comes with rights/sharing management which is nice : nothing to maintain.

NPBruce commented 6 years ago

Assuming you can submit google form data with a simple http request that look easy enough.

BenRQ commented 6 years ago

Yes, it should be easy enough with a single HTTP Post request. Form result will be pushed to a spreadsheet that will have its own script attached. This script will generate a JSON with the rating, numbers of play session for each scenario. Generation will be done automatically. Json file will be free to access, but read-only.

Full spreadsheet will be available in read-only to authors, via authentication.

It seems feasible, now I will see how easy it is when I will start working on it :)

One thing I don't know is how to detect that the scenario is ended. Is there a way to do this, so I can display rating popup at the right time ? Or should I do it every time players leave the session?

NPBruce commented 6 years ago

The var $end is set when the scenario ends.

BenRQ commented 6 years ago

I've been spending some time on this :

Not started yet:

I will be out of home for two weeks, and I plan to work on this when I'm back.

Any design suggestion would help me a lot :)

NPBruce commented 6 years ago

Asking if you won is interesting, as 'winning' is not a concept Valkyrie is aware of, there may be different endings.

I think including the log would be a great help for scenario developers, they could see exactly what choices are made and what happened. This may be what you mean by 'data from ongoing QUEST'.

Edit: Or even better, just save the full game state rather than just the log. It shouldn't be too large.

BenRQ commented 6 years ago

Yes exactly, all player choices will be recorded and sent to the form, and it will be available to quest authors.

I also send the number of players, name of investigators, language selected and of course scenario id.

Scenario id will be the filename as I think it is unique and it does not change with the language selected.

Please tell me if you think of something else we could use.

BenRQ commented 6 years ago

Here is a preview of the rating screen. Please tell me if you have any suggestion for improvements :

image

BenRQ commented 6 years ago

Hello I just finished implementing the core functions of the rating system in Valkyrie Design is not final yet, it is just here for test purposes (I don't really like the 'hearts') but here is the quest list with rating, , number of play session, average win ratio: https://cdn.discordapp.com/attachments/473586525477666826/480880321806598175/unknown.png

And the end game rating form look like this : https://cdn.discordapp.com/attachments/473586525477666826/480880685348028446/unknown.png

Any help/suggestion for the design of the scenario selection screen with rating, number of play session, average win ratio would be welcome For the end game form, i think it is OK as it is for a V1, but any suggestion for improvement would be welcome too.

Feel free to join on discord, if you want to discuss this directly :)

BenRQ commented 6 years ago

The ratings are now available :
image

Even with some tentacles !

Please join in the Discord if you would like to alpha test the version.

BenRQ commented 6 years ago

Beta test version available with implementation of this issue: https://github.com/BenRQ/valkyrie/releases/tag/release%2F2.1%2FBrynhildr_2.1.0b

You can see rating when browsing quests. You can rate, comment a scenario at the end of the game. Authors can access statistics and comments from player in a Google sheet.

To access the file, you should create a new issue and tag me, I will share the read-only access to the file.

@NPBruce @redwolf2 tell me if I can close this issue or if you want to keep it open until all points have been addressed.