scribble-rs / scribble.rs

A skribbl.io alternative - Play at https://scribblers.fly.dev
BSD 3-Clause "New" or "Revised" License
369 stars 181 forks source link

Word List Gallery (Custom Word Lists) #84

Open Bios-Marcel opened 4 years ago

Bios-Marcel commented 4 years ago

Problem

Currently there's a set of fixed languages with fixed words. Not all languages necessarily have the same words and there might be translation errors. The user has to decide for one language and will have to play with all the words in it and can't choose to for example exclude car related words. Additionally, custom lists have to saved locally and can't be synced properly between people.

Summary

TODO Split this into multiple issues, for the advanced features.

Solution

If a user could just choose multiple sets of words, it would be easy to play a round where everyone likes the given words and it doesn't easily get boring if there's enough sets.

The component for this should be an autocomplete textfield where you can select multiple items. Similar to how the tag selection on StackOverflow works:

stackoverflow tag selection

The default would be a set called something along the lines of English - basic containing multiple thousand simple english words that most people would be able to understand. On top of that there will be certain theme-based default sets and sets for other languages than english.

All other sets will be user-created. The current homepage will be split into two tabs. The Create Lobby tab and the Word Gallery tab. Since I am planing to keep scribble.rs account-less, you should be able to create and edit any set via a custom password that you choose upon set-creation. If you loose the password, you are fucked :D. An already existing set can also be exported for usage in your own custom instance for example. Maybe there'll be regular dumps to a repository so that other scribble.rs instances can sync up with the main instance.

Language packs should have a voting mechanism. If for example there's 10 English - Pop Culture packages, not all of them might be of the same quality. The voting mechanism allows people to not always select the trashy ones. On top of that the creation date and last edit date should be displayed.

Technical

This will require statefulness across scribble.rs application sessions, therefore we need some kind of database. It would be quite cool if people could access the main word gallery from within there instance. Therefore it might be cool to internally use the REST-API even though there'll be a slight overhead. As for persistance, I'd simple go for sqlite, as it's basically a non-dependency installation-wise.

To keep hosting simple and keep allowing ephemeral hosting (Data lost on restart), we'll simply specify some directory that we expect our data to be in. The data can be mounted into a docker contaienr for persistence then. Since we want to keep hosting accessible, we'll not use a database, instead we'll simply write into basic files, where the file name is the password and the content the wordlist.

If more complexity is required at some point, we can simply run a migration.

Bios-Marcel commented 4 years ago

I am currently working on the selection component over at https://github.com/scribble-rs/multi-item-picker

Will probably take me a while to get it working well.

Bios-Marcel commented 10 months ago

UPDATE

I've started making a new frontend a while ago. I am working on it over at https://github.com/scribble-rs/frontend. The plan is to fully replace the homepage at first. This replace of the homepage might drop some existing feature, but also bring in some new ones. I have finished the multi item picker component in the new frontend, meaning it would be ready to select multiple (technically custom) wordlists.

Now the server needs to prepare for this as well.

I'll be closing other issues in favour of this one.