makegirlsmoe / crypko

133 stars 20 forks source link

User-based randomized pages #11

Open Siuwa opened 6 years ago

Siuwa commented 6 years ago

I'm not sure how well this would be received but I think we would benefit from a system where each user has a decent chance of having their Crypkos shown to a viewer.

Currently, the default Crypko sort is by new lists. The most viable way to generate income at a glance is to write an automated algorithm that fuses acceptable Crypkos regularly and sell them at some profitable price quickly at all times. The result is that users who handpick their fuses and put forth their best attempts on the market get quickly pushed down into obscurity after a very short time thanks to the tendency of most people to not dig past the first few pages of a long list(see Google search results).

I believe this significantly increase the entry barrier of technical skills required to play the game and remain enjoyable as players engage in creating Crypkos and see the sale of their works without needing to automate which personally feels distant to me.

My suggested solution is to create a new, encouraged way to sort Crypkos. Starting from the first slot of the first page, any Crypkos have a base weight to be displayed, but each subsequent Crypkos after the first one displayed from the same user have their weight decreased to what I assume resulting in a (rather large) finite sum to infinity so that more productive users get their works shown more prominently but users who produce Crypkos sparingly get their recognition too.

Please correct me on any inaccuracy and enlighten me if I understand things wrong on a fundamental level.

zhangjk95 commented 6 years ago

Thanks for your suggestion. Your concern is also what we are worrying about.

Your idea is a good idea! It is like xQuAD to some extent, which is a result diversification algorithm for search engines. However, if we sort Crypkos in this way, the computation cost and IO cost is high. Since the default market page is accessed frequently, we prefer a fast sorting algorithm. (And we also want the default page to be responsive to new changes, so we will not use cache with a long TTL.)

Our idea is to sort Crypkos by "last updated time", where "last updated time" is defined as max(last_liked_time, created_time). Or we can split the default page into two sections where one section is sorted by last liked time and the other one is sorted by created time. In this way, a Crypko will pop to the top when liked by someone. Users who put effort into creating good Crypkos will get more chance to have their Crypkos shown on the default page. Of course we will have some mechanism to prevent duplicate likes (a user likes a Crypko again and again). What do you think?

Bottersnike commented 6 years ago

Using the latest like time in the "last updated time" could cause some serious problems. It would not be hard at all to write a script to repeatedly like and unlike a crypko to keep it at the top of search results. I feel like some way of sorting beyond just time of creation is important, however.

zhangjk95 commented 6 years ago

We can prevent that from happening. The "last updated time" will be updated only if a user likes a Crypko for the first time. Besides, we only allow users who have a least one Crypko to click "like".

Siuwa commented 6 years ago

I would prefer the first method for trying to balance the two factors against each other. However I still see some probable issues coming up.

First it relies on users liking Crypkos to send anybody up the pages. From my experience the practice of liking Crypkos isn't really common, but that should fix itself as the userbase expands and if this sort gets launched.

The other problem would be the time one gets to stay at the top. With this method there might be two worrying things that can happen to a newly listed Crypko: one is that it was liked and get to lurk around the top page of the sort, where a constant influx of views brings likes that keep her afloat; or quickly pushed downed a page or two by more new Crypkos and the constant lurkers. Assuming people are still unwilling to dig past the first few pages it means a Crypko still only have one chance to prove herself, which is shortly after being created.

Last is that already created Crypkos doesn't really benefit from it because they will be pretty low on the list to start with and short of being liked by their owner they won't be going to the top anytime soon.

I could see the problems being solved by added a small scaling penalty from time created to the rating score when sorting so that even well-liked Crypkos gradually fades away to give way to new creations. The old girls can be aided by adding a simple random display and if the calculation power and respond time allows making the sorting score into a weight for randomization. I advocate randomization a lot because I think it exposes a high variety of Crypkos to users at all times but I understand the constraints.

Thank you for your quick reply!

zhangjk95 commented 6 years ago

Yes, as you said, there might be some issues.

If we are going to add this feature, it will come in Crypko's official release since we plan to close beta test on July 24th. So there is no worry about already created Crypkos. And we believe that users will be more willing to click "like" when they find out its importance. These answers your first and last concern.

For the second concern, what we really hope to see is a "dynamic" default page, which changes frequently when a large number of users are clicking "like". In this situation, it adds some randomization by nature as users will see different Crypkos when visiting the page at different times. If this is possible, then no Crypko can stick on the default page. Instead, Crypkos which are more popular will have a larger probability to be exposed on the default page. If it does not work as we expected, we will consider adding a scaling penalty from time created.

Another idea is to have a brand new default page instead of the current one so that we can disable pagination on the default page and try various ranking algorithms. The cost of getting the top X results from the ranking is not very high.

Siuwa commented 6 years ago

And old Crypkos can be exported to the official release as stated on the FAQ correct? Just confirming.

I would say that the second idea is good but don't have any further concerns, at least until I see it in action.

zhangjk95 commented 6 years ago

Unfortunately, no. You can only export old Crypkos as images and store them on your computer.

On Jul 18, 2018, at 01:32, Siuwa notifications@github.com wrote:

And old Crypkos can be exported to the official release as stated on the FAQ correct? Just confirming.

I would say that the second idea is good but don't have any further concerns, at least until I see it in action.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.