godotengine / godot-asset-library

PHP frontend for Godot Engine's asset library
https://godotengine.org/asset-library
MIT License
291 stars 86 forks source link

Extending the Godot Asset Library with a section for community challenges. #200

Closed willnationsdev closed 2 years ago

willnationsdev commented 4 years ago

So, I have spent some time on Exercism where people create language courses, devise a series of programming assignments in each language, and then users login and try to learn the language by submitting their own approach to solving the problem. They then publish their solution when they are done and are able to review the solutions that other users have submitted to learn from their work.

Now, once Calinou's Laravel refactor is done, we will be able to...

Now, I imagine that we could create another section of the site where people can upload challenges (would most often be mechanics or tools) for the community to solve with assets (so not like the engine repository at all). And then users could upload their solutions to those challenges for learning purposes. You could outline a whole educational curriculum to slowly introduce things to users and have it all be guided by community ratings about the difficulty and tagged subject matter.

It's a slightly different flavor than submitting assets that you intend for the community as a whole to use, but maybe the most upvoted assets for these "challenges" (submitters would need to flag them as being published to the Asset Lib) could show up in searches in the main part of the Asset Library.

If all this stuff was added, and then we made creating, browsing, uploading, and downloading assets associated with these challenges user-friendly in the Web API and Editor, then you could conceivably extend the AssetLib tab to have a full community-based learning system be bundled into the Godot Editor, further increasing the documentation examples and accessibility of the engine.

WDYT?

bojidar-bg commented 4 years ago

Wouldn't this be better suited to the forums or perhaps even the Q&A section? Note that the Godot Wild Jam community has a few Discord channels dedicated to challenges, though they were a bit more math-related when I last checked them.


Overall, the idea does not sound too bad; it is something like itch.io providing both a place to share games (assets) and game jams (challenges).

Costs:

Benefit:

Looking at the costs and benefits, I'm not completely sure this has a place in the official asset library, because it will take a good chunk of effort to implement, while likely benefiting only users new to game development and programming. I think that a good/better documentation can benefit both those new users and old users alike.

On the other hand, the idea still has its value, so maybe it could be made, but not as part of the official asset library. For example, a new section/tag in the Q&A site, or perhaps in the forums, could be a good starting point, to see how the idea turns out in practice. Later on, it could become a separate website; perhaps with an addon which allows browsing challenges and uploading solutions directly from the editor.

This is my opinion of the issue. Feel free to correct/persuade me.

willnationsdev commented 4 years ago

Wouldn't this be better suited to the forums or perhaps even the Q&A section?

The forums and Q&A have little possibility for any integration into the editor itself. They also lend themselves more to having one specific question, getting one specific answer that is "good enough" (or discussing until you find that) and then people moving on to the next question, with no one bothering to come back to already solved problems.

You could argue that the forum could support it, but then, to actually share assets, you'd still need to upload the files somewhere and share them. So you're gonna be doing that anyway, and you want it shared in an accessible way for the Godot Editor AND not have the files locked into a single platform (Godot Asset Library merges content from all over the Internet: GitHub, GitLab, BitBucket, etc.) under one unified API.

Also, forum has no notion of relating together and tracking multiple assets submitted by the community. It's all just in whatever one "challenge" post someone makes. You can't just pull up a list of source code links, who submitted them, and then click to see what other challenges they have done or sort the collection by which submission has the best reviews, etc. Neither the forum nor the Q&A site are really built for that kind of thing.

something like itch.io providing both a place to share games (assets) and game jams (challenges).

With the caveat that uploading games to a game jam only works so long as the game jam is open. Itch doesn't really have the notion of a "permanent" jam afaik. And of we just started popping up tons and tons of permanent jams for the sake of this stuff, then Itch might not take too kindly to it since it would potentially clog up other lists they have of ongoing jams and whatnot.

  • The whole challenge section along with tagging an asset with a challenge has to be implemented.
  • (optional) Adding uploading and challenge browsing to the editor is some work.

I agree.

Might need slight moderation if too many low-quality challenges are opened.

I imagine, of we have upvote/downvote of challenges themselves, then, like Reddit, you could have negatively scoring challenges (from people saying the challenge isn't set up well) get red flagged and maybe hidden from big views (e.g. a popular challenges view or something).

there is some risk involved

Risk?

  • New users can quickly search for assets by mechanic/problem, taking code and inspiration from there.
  • New users can have something like a step-by-step quest to learning Godot, by following those challenges

Having a clear cut introduction to Godot with examples, and having a database of example code to search through are both things that are highly requested in the community anyway, so it seems like these are greatly valued benefits to me.

Old users.. Not sure what the benefit for them is, maybe suggesting new challenges?

Well, the solutions that the community comes up with could have most upvoted options appear in asset searches, so what they would get is a certain a group of assets that are organized around solving the same problem.

For example, a new section/tag in the Q&A site, or perhaps in the forums, could be a good starting point, to see how the idea turns out in practice. Later on, it could become a separate website; perhaps with an addon which allows browsing challenges and uploading solutions directly from the editor.

My thoughts are...if the ultimate goal would be to create a fully fledged website that does about 80-90% of the stuff that the Asset Library will already be able to do in Laravel, and if the Laravel GAL will be a self-coded app that we completely control versus the forums or Q&A which run on predefined systems with their own expectations of features and largely operate out of the box with some configuration (my understanding), and if you are going to be having such a site upload it's solutions to the asset library anyway just for the sake of sharing them, then I don't think there is a very good reason to invest so much in putting everything into a different platform and building up a presence there when there is a stronger natural advantage in congregating all community asset development in one place.

bojidar-bg commented 4 years ago

The forums and Q&A have little possibility for any integration into the editor itself.

I suggest using an existing platform in order to validate the idea first. This way, the community can help iron out slight problems with the idea before anyone sits down to implement it.

You could argue that the forum could support it, but then, to actually share assets, you'd still need to upload the files somewhere and share them. Neither the forum nor the Q&A site are really built for that kind of thing.

I suggested using the forums or Q&A, since they are existing platforms which can be used for this. But, I do not consider them a good long-term solution if the idea proves popular.

Risk?

As you might notice, I ended my previous sentence with "if the idea proves popular". While I think the idea will be fun, and might get a good amount of submissions, I cannot claim to be able to predict how things will turn out. Perhaps, everyone would decide to not post their solutions, instead just reading challenges for inspiration and checking solutions if they get stuck. Or maybe, no challenges would be posted.

That's why I suggested trying to make a prototype of this on an existing platform first. This way, the risk and benefits can be evaluated. If challenges make it to the asset library eventually, all existing challenges and assets can be ported over.

Well, the solutions that the community comes up with could have most upvoted options appear in asset searches, so what they would get is a certain a group of assets that are organized around solving the same problem.

Not sure how this applies to old users. It is definitely helpful for someone making a game, but what about people who are perfectly capable of solving all the challenges related to their game?

[...] if you are going to be having such a site upload it's solutions to the asset library anyway just for the sake of sharing them

If an existing platform is used for challenges, the assets created might be uploaded on that platform or on existing file sharing platforms. Note that the asset library expects you to have a GitHub/GitLab repository for your asset, which might be an overkill for the 60-th reimplementation of "2D platformer movement with double-jump".

then I don't think there is a very good reason to invest so much in putting everything into a different platform and building up a presence there when there is a stronger natural advantage in congregating all community asset development in one place.

You are right on this point. If we can put it as part of the Laravel asset library without too much rewriting, there is no reason to move from a forum to a custom platform to the asset library, since moving from a form directly to the asset library is simpler.

willnationsdev commented 4 years ago

This way, the risk and benefits can be evaluated. If challenges make it to the asset library eventually, all existing challenges and assets can be ported over.

That's fair.

Not sure how this applies to old users. It is definitely helpful for someone making a game, but what about people who are perfectly capable of solving all the challenges related to their game?

By that logic, the entire Godot Asset Library and use of Godot Engine itself would have no purpose. Just because someone can do something on their own doesn't mean they wouldn't rather save time and effort by building off of the work shared by others.

It benefits experienced users just as much as inexperienced users if a community solution to a given problem has already been worked on. And the more people there are trying to tackle the issue, experimenting on ways to improve it, the more variety and development of that idea there will be. In addition, if there are more people learning from this material, that means more learned developers growing in the community which naturally leads to more productive development of projects and resources the world over (which always helps all developers).

Note that the asset library expects you to have a GitHub/GitLab repository for your asset, which might be an overkill for the 60-th reimplementation of "2D platformer movement with double-jump".

I'll admit, I didn't consider this aspect of the issue. I wonder if there'd be a way to enable it to support more lightweight code samples (like a GitHub gist for example). I'm guessing we don't want to be in the business of hosting any code itself.

bojidar-bg commented 4 years ago

Alright, I guess I overexaggerated the problem with existing users. Indeed, if there is a readily available list of community-developed solutions to common problems, all users will be happy to use them.

vnen commented 4 years ago

I feel this would just clutter the Asset Lib. Listing challenges could be interesting, just so it's easier for people to download, but uploading solutions sounds pointless to me (that is, without any auto-validation system, which would be better-suited in another platform anyway, and not at all easy to do). You can just upload the solution to GitHub if you want, no need to put it back in Asset Lib itself.

eon-s commented 4 years ago

I was going to open something like this, but more simple.

We could have a list of asset lib requests (on web), simple, with few words, where other users can upvote until it is addressed by an asset lib entry.

Community requests can solve a lot of problems that otherwise will end on github, because there is no place to ask for external solutions as the new issue template suggest.

willnationsdev commented 4 years ago

@eon-s I very much like that idea, but that would be a different thing than this proposal which is about people being able to submit their own implementations of certain ideas and then share it with others / inspect others' implementation of the same idea. Your proposal seems like it deserves its own Issue, but I would definitely support that being done as it would catch a lot of stuff that cannot currently be represented in an official channel, as you stated.

Edit: Actually, if you could add a description to a tag, then you might be able to get pretty close to the idea already since the description of the feature could reside in the tag itself and then you could look up past implementations of said tag. But I definitely agree that it could bloat the Asset Library if that was done. There's need to be a nice way of filtering search results to include decently upvoted stuff, to filter out basic/repetitive learning solutions.

Calinou commented 2 years ago

Closing, as this won't be done officially (not on the asset library itself at least). That said, nothing prevents third parties from hosting add-on jams :slightly_smiling_face: