opengaming / osgameclones

Open Source Clones of Popular Games
https://osgameclones.com/
Other
1.66k stars 306 forks source link

Add genres to the list #353

Closed tukkek closed 7 years ago

tukkek commented 7 years ago

The language filter is awesome but I wish we could do the same with the game's genres. Let's be honest here: the list has grown to become over-500-items strong (document.querySelectorAll('dl>dt').length) and is practically impossible to navigate properly at this point. I guess many people come here to find their favorite game's clone but I bet possibly even more come to find new games (like I do) - and in this case it's extra hard to explore, since just by title you can't know much about the game and you're not going to open hundreds of links manually so it's pretty much just guess work.

My point being: just adding the genre tag would be a simple way to make the list a much better resource for open-souce gamers everywhere. A simple categorization of action/adventure/rpg/simulation/strategy should be enough to make the list easier to explore. Since it seems multiple tags can be used it would also be easy to add more granularity as well (FPS/RTS/TBS/platformer/puzzle...). For example: a single game can be tagged strategy and RTS (or even more, if multi-genre).

If adding a new "genre" section like the "languages" section at the start of the page is too much of a hassle an alternative would be to just have one section, renamed to "tag filters" or something, if it should make the change easier to implement.

If it is decided in favor of this I'm volunteering to dig for each game's genre and report it in a suitable format (only for games currently in the list, of course).

piranha commented 7 years ago

That sounds like a great idea to me! Obviously, it needs to have ability to have a multiple values.

As for adding a new section vs making languages a more general tag section... I'm a bit unsure what's the best way to proceed. On one hand having genres makes it easier to analyze something if anybody wants to do that, on the other making a general section makes it much easier to add new entry types, like we could stuff licenses and things like that there, and receive filtering for free!

Another idea is "typing" (for the lack of better word) tag section like this:

- lang:Python
- genre:RTS
- license:MIT

Ok, maybe that's a bit weird and it's just better to have various sections... But then we need a good/easy way to make those sections filtrable.

As I've said, I'm bit unsure what's the best way to proceed. :-))

tukkek commented 7 years ago

I'm a bit unsure what's the best way to proceed

For me the best way is clearly to add a new section "genres" and keep the original "languages", instead of repurposing it for a general "tags". It would seem to me that the "general" one is easier to implement though, which is why I suggested it - but if for you taking the time to "do things right" is not an issue I'd definitely add a new, separate "genre" section.

making a general section makes it much easier to add new entry types

Agreed but as I've said the list is gigantic already and bound to grow even bigger since every month new items are added. Adding any new piece of information as tags wouldn't be an easy task if it demands that someone open up each project individually to actually verify that information - so I wouldn't plan on adding any extra sections in the future unless people actually are foolish enough to actually volunteer to do the data gathering (like I did T.T).

On the other hand you already have some info on the list already like the license, active/halted/sporadic and even more important the game state (playable, completeable, etc). In that case if the extra work is not a problem for you I maintain that adding new tag sections ("license", "state") is the best way to go - much clearer and organized. In this case though it would be interesting to be able to apply multiple filters ("give me strategy games that are also playable") and it would become more important to keep the tags up-to-date, while genre is something very unlikely to change mid-project.

Possibilities aside, maybe it would be better to start out by adding the new genre tags/section and leave the rest for later down the road...

nikuda commented 7 years ago

For me the best way is clearly to add a new section "genres" and keep the original "languages", instead of repurposing it for a general "tags".

I agree, not to mention that just recently @wonea went through a big process of pulling out data from info (which served a dumping ground for all misc information, it worked as a tag field essentially) into lang, status and license fields. So adding a genre field seems most fitting with the direction this project has been going in recently.

I would suggest that the new genre field be locked down somehow with predefined genres, maybe they can be coded. ie. 1 = RPG, 2 = FPS etc.

Maybe another top level genre key is needed for mapping codes to genres.

genres:
  1: FPS
  2: RPG
  3: Strategy

games:
  somegame: 
    lang: C
    genre: 2, 3
tukkek commented 7 years ago

What is wrong with textual (string) genres? Makes very little sense to me to have genres as numbers unless there is an overwhelming technical constraint associated with it. Textual genres not only makes more sense since they are the natural representation of this piece of data (being easier to input and requiring no internal translation) but it also allows for more liberty on adding these.

I honestly think it would be a mistake to try and predefine all the possible genres. Even if it could be done for all the games in the list it's just a matter of time until a genre-defying project comes along. Also some games are multi-genre or hard to define, which would benefit from looser categorization. Leaving genres as text also allows for greater flexibility in the future. Today we might be fine with having "strategy" and "action". Tomorrow we might want platformer/shmup/FPS for action and RTS/TBS/MOBA for strategy, etc. Wanting all the projects currently on the list and future ones as well to conform to an arbitrary predetermined classification sounds like a bad idea to me.

I don't mean that the work regarding this issue should not have a list of genres to work with or that we shouldn't try to apply a definite set of labels - my point is that hard-coding this into the internals of the project would be most probably guaranteed to require change in the future. Better off having a flexible implementation to start with - even if I know nothing about how the list is created besides as a visitor to the site seeing the final product.

On 3 October 2016 at 22:40, nikuda notifications@github.com wrote:

For me the best way is clearly to add a new section "genres" and keep the original "languages", instead of repurposing it for a general "tags".

I agree, not to mention that just recently @wonea https://github.com/wonea went through a big process of pulling out data from info (which served a dumping ground for all misc information, it worked as a tag field essentially) into lang, status and license fields. So adding a genre field seems most fitting with the direction this project has been going in recently.

I would suggest that the new genre field be locked down somehow with predefined genres, maybe they can be coded. ie. 1 = RPG, 2 = FPS etc.

Maybe another top level genre key is needed for mapping codes to genres.

genres: 1: FPS 2: RPG 3: Strategy games: somegame: lang: C genre: 2, 3

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/piranha/osgameclones/issues/353#issuecomment-251274473, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpJMm2btKxMvYcgIr9fVJm0C07-l09Yks5qwa6igaJpZM4J4KeC .

nikuda commented 7 years ago

What is wrong with textual (string) genres?

People consistently put in nonsensical, mistyped and generally wrong data. Essentially this is a classification system, to put things in some kind of order, it's not a place to be creative.

Also some games are multi-genre or hard to define

There's no reason a game can't belong to multiple genre categories. If they're hard to define they're hard to define, textual input doesn't help. Textual input will just allow for sprawling notes. Instead what's commonly done is to use a genre that's closest, then add more information in the info field, in which you can describe how unique and different that game is.

Leaving genres as text also allows for greater flexibility in the future.

It also allows for random, non-informative, one-off genres that don't help sort the large amount of games that are already in the yaml file. There's nothing stopping you from adding a new genre to the genre index if none of the present ones fit. The process off adding a new genre is almost the same except that by having genres in one key you get a bet overview - which helps the classification process.

Either way, this is just a suggestion.

nikuda commented 7 years ago

Another possibility is for the genre field to be a string that is then checked against a list of predefined genres when the site gets build. If this is integrated into the site build pipeline you get automated content validation.

genres:
  - Puzzle
  - FPS

games:
  somegame:
    lang: Python
    genre: puzzle, 3d shooter

In the above case the build process would error out saying that '3d shooter' is not a valid genre.

nikuda commented 7 years ago

Above https://github.com/piranha/osgameclones/issues/353#issuecomment-251296325 will be possible when #358 is merged.

Some more changes need to happen for the genres to be possible though. See #360

nikuda commented 7 years ago

Genres and themes are now supported in https://github.com/piranha/osgameclones/pull/358#issuecomment-252410556

tukkek commented 7 years ago

I don't see any integer-to-text translation being done in the commit so I believe that you've went with strings instead?

here's nothing stopping you from adding a new genre to the genre index if none of the present one fit

Well it's not like the website is Wikipedia that anyone can edit. If someone provides a genre that isn't proper for the current set already in place someone in-between would likely fix it.

the genre field to be a string that is then checked against a list of predefined genres

I think that is the best way to go, or for this to be done manually and then automated if the need for it arises. I think it's important for the genres to be textual since it's easier to expand the genre list if needed. If at some point there are 300 "strategy" games it might be decided that it's better to define some as TBS, other as RTS, other as MOBA, etc. If there is no int-to-text translation and automated validation step then that is easier to do - just change the YAML data itself.

I understand your worries but it's pretty obvious to see when a "fuck up" happens - a new filter tag will pop-up saying "strtegy" (typo) with the number 1 by it. It's only a matter of fixing the data. Same if someone adds "turn-based strategy" by mistake instead of "turn based strategy" (hyphen)

Let me know if I should go data-gathering / genre collecting now that this is supported, as I mentioned I'd be up to on the opening comment - also what data format should I work with to minimize rework later on.

Also, out of curiosity, what templating system is being used here? Looks like jinja2 for me, from the code changes?

On 9 October 2016 at 03:52, Gareth notifications@github.com wrote:

Closed #353 https://github.com/piranha/osgameclones/issues/353 via 883f022 https://github.com/piranha/osgameclones/commit/883f0223ce3584d8b4c3375e32276c6a5172f845 .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/piranha/osgameclones/issues/353#event-817278286, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpJMryWp5jBqjabd5Gshq4dzK7g0y_vks5qyI85gaJpZM4J4KeC .

tukkek commented 7 years ago

Oh wow, just saw that the change is live on the website! Great work so far :)

Also if I'm to continue gathering the genres (please let me know) I think this issue should be reopened since the work is not complete.

On 10 October 2016 at 15:11, Alex Henry tukkek@gmail.com wrote:

I don't see any integer-to-text translation being done in the commit so I believe that you've went with strings instead?

here's nothing stopping you from adding a new genre to the genre index if none of the present one fit

Well it's not like the website is Wikipedia that anyone can edit. If someone provides a genre that isn't proper for the current set already in place someone in-between would likely fix it.

the genre field to be a string that is then checked against a list of predefined genres

I think that is the best way to go, or for this to be done manually and then automated if the need for it arises. I think it's important for the genres to be textual since it's easier to expand the genre list if needed. If at some point there are 300 "strategy" games it might be decided that it's better to define some as TBS, other as RTS, other as MOBA, etc. If there is no int-to-text translation and automated validation step then that is easier to do - just change the YAML data itself.

I understand your worries but it's pretty obvious to see when a "fuck up" happens - a new filter tag will pop-up saying "strtegy" (typo) with the number 1 by it. It's only a matter of fixing the data. Same if someone adds "turn-based strategy" by mistake instead of "turn based strategy" (hyphen)

  • it's a simple matter to correct, not the end of the world. I think you're worried about a problem that didn't even happen, which I think falls into the category of premature optimization but since you're the one coding this (and already done, at it) you should have the final say.

Let me know if I should go data-gathering / genre collecting now that this is supported, as I mentioned I'd be up to on the opening comment - also what data format should I work with to minimize rework later on.

Also, out of curiosity, what templating system is being used here? Looks like jinja2 for me, from the code changes?

On 9 October 2016 at 03:52, Gareth notifications@github.com wrote:

Closed #353 https://github.com/piranha/osgameclones/issues/353 via 883f022 https://github.com/piranha/osgameclones/commit/883f0223ce3584d8b4c3375e32276c6a5172f845 .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/piranha/osgameclones/issues/353#event-817278286, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpJMryWp5jBqjabd5Gshq4dzK7g0y_vks5qyI85gaJpZM4J4KeC .

nikuda commented 7 years ago

but it's pretty obvious to see when a "fuck up" happens

Simply not true, see the amount of errors that schema validation picked up in games.yaml in #358

what templating system is being used here?

It is jinja2.

Also if I'm to continue gathering the genres (please let me know) I think this issue should be reopened since the work is not complete.

There's a new ticket for content gathering #366