• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.
  • We have made minor adjustments to how the search bar works on ResetEra. You can read about the changes here.
Status
Not open for further replies.

eonden

Member
Oct 25, 2017
17,091
Did 2 Discovery queues, lets show first some for Wok


Now something more strategy:

store.steampowered.com

SolSeraph on Steam

Build your cities and set up defensive structures to protect them from the constant threat of monsters. Brought to you by ACE Team, SolSeraph combines action and strategy for a rich gameplay experience reminiscent of the 16-bit era.

A game based on Actraiser!!


City builder for Dwarves

Now weirder stuff:

looks really cool and quirky?

Nice quality FMV game.

Quirky VR minigame collection?

And my biggest wtf:

https://kuljettajakoulutus.fi/adr-labelling-game-julkaistu/

Steam version clarification

Steam version of ADR-Labelling Game is meant for educational use by institutes and schools, and purchasing this version grants the right to use the software in their education. If you are using ADR-Labelling for your personal use, we recommend getting the Android or iOs version."
 

Wok

Avenger
Oct 26, 2017
3,258
France
If we look at the variables of the automatic recommender, there are:
  • All the store tags, and their ids:
JavaScript:
window.gTags = {
  "9": "Strategy",
  "21": "Adventure",
  "113": "Free to Play",
  [...]
  "8093": "Minigames",
  "5230": "Sequel",
  "6276": "Inventory Management"
};
  • The input for the algorithm, which are your 50 most played games:
    • n: a counter of the last played games. The most recently played game is assigned 0. The previous one 1. The one played before 2. Etc.
    • a: appID,
    • p: playtime in hours,
    • l: the date (in Unix time) on which the game was last played.
JavaScript:
window.gInputApps = [
  {
    "n": 38,
    "a": 570,
    "p": 3707,
    "l": 1555954754
  },
  [...]
  {
    "n": 470,
    "a": 278100,
    "p": 19,
    "l": 1496011976
  }
];
  • Store information about the games, indexed by their appID:
    • n: game name,
    • r: release date in Unix time,
    • t: the tags,
    • o: whether the game is owned by the user.
JavaScript:
window.gAppInfo = {
  "363970": {
    "n": "Clicker Heroes",
    "r": 1431565500,
    "t": [ 9, 21, 113, 122, 492, 597, 599, 1684, 3859, 3871, 4136, 4182, 4190, 5350, 379975
    ],
    "o": true
  },
  [...]
  "1059150": {
    "n": "Ritual: Crown of Horns",
    "r": 1558094437,
    "t": [ 19, 492, 493, 1647, 1734, 1756, 1774, 4026, 4182, 4345, 4637, 4667
    ]
  }
};
  • the personalized recommendations, are presented with different options:
    • a setting "algorithm_variant" which is always set to 0, so it must be to switch between recommender versions, which we do not have access to,
    • a "popularity" bias, which must affect the recommendations at the end,
    • a "release recency" bias, which must affect the recommendations at the end,
    • a setting "include_already_played_in_results" to choose whether to filter out owned games,
    • a score scale,
    • the normalized scores for each recommended app, with the top recommendation always having a score of 1000,
JavaScript:
window.gRecommendations = [
  {
    "algorithm_options": {
      "algorithm_variant": 0,
      "popularity_bias": "-0.333333343267440796",
      "release_recency_bias": "120",
      "include_already_played_in_results": 0
    },
    "recommended_apps": [],
    "score_scale": "0.008876836858689785",
    "app_ids": [ 363970, 247080, 49520, [...] 409690, 373970, 560380 ],
    "scores": [ 1000,  903,  822,  [...] 106, 106, 105 ]
},
[...]
{
  "algorithm_options": {
    "algorithm_variant": 0,
    "popularity_bias": "1",
    "release_recency_bias": "6",
    "include_already_played_in_results": 0
  },
  "recommended_apps": [],
  "score_scale": "0.0626560673117637634",
  "app_ids": [ 933390, 781990, 504620, [...] 840430, 1034900, 1059150 ],
  "scores": [ 1000, 903, 673, [...] 16, 16, 16 ]
  }
];

So I think it is safe to assume that:
  • the neural network predicts the probability that a game is the next purchase given a set of 50 games,
  • the probabilities are then scaled to obtained the scores, so that the top recommendation is always assigned the score of 1000,
  • the ranking is computed after transforming the scaled scores with some formula like:

tweaked_score = score_scale * score + popularity_bias * popularity + release_recency_bias * release_recency

Edit¹:
Actually, "release_recency_bias " takes the values 120, 60, 36, 24, 12, and 6, so it must be the value in months. It might just be used as a cut-off.
"FilterAge_120": "10 years",
"FilterAge_60": "5 years",
"FilterAge_36": "3 years",
"FilterAge_24": "2 years",
"FilterAge_12": "1 year",
"FilterAge_6": "6 months",

The formula ought to be either:

tweaked_score = score_scale * score + popularity_bias * popularity

Edit²:
What is weird is that there are only 30 different sets of values for "algorithm_options". I would have expected more for all the slider combinations.

Edit³:
As for "popularity_bias", it takes the values -1/3, 0, 1/3, 2/3 and 1. It is interesting that it can have a negative value to boost the "popular" games even more, I guess.
 
Last edited:

dex3108

Member
Oct 26, 2017
22,618
After 7+h spent in Blood & Wine i love it. Story is great, so are the characters. But i must admit that playing W3 after RDR2 is a bit rough. So much pop-in and low poly object in the distance are really noticing. What R* achieved on those consoles really is unbelievable.
 

eonden

Member
Oct 25, 2017
17,091
I don't understand?
All I can see is that it was released on some POS called EGS?
Man, dont be so agressive. Lets try and avoid shit storm in here for minor stuff.

Also yeah Nappael

unknown.png
 

xeroborn55

Member
Oct 27, 2017
952
So, what do you people think of Griftlands? The alpha was released yesterday.
seems pretty cool so far. just barely scratched the surface though. i kind of got sucked into night in the woods from the steam sale at a friend's recommendation and think i'll finish that before getting back to griftlands. The actual card combat seems pretty similar to StS, i'm not far enough to see yet if there are enough synergies and cards to make deck building interesting. i hope and to some extent expect that will be the case. I like the art quite a bit and the game's history as an RPG definetly shows through in conversations and quests that you encounter.

On a related note, i'm very happy about the proliferation of single player deck builders. Slay the Spire scratched an itch i didn't even know i had... I used to play Magic when i was a kid and that deck building loop is just immensely satisfying to me. Someone earlier in the thread mentioned nowhere prophet and, well, it seems i'll be getting that one as well.
 
Last edited:

Wok

Avenger
Oct 26, 2017
3,258
France
I have found some javascript code here. I think some info is hiding in there.

JavaScript:
            Object.assign(N, window.gRecommendations),
            Object.assign(D, window.gAppInfo),
            Object.assign(d, window.gInputApps),
            Object.assign(U, window.gTags),

K = function(a) {
                function e(e) { var t = a.call(this, e) || this; return t.state = { sortedRecommendedApps: [] }, t } return i.d(e, a), e.prototype.render = function() {
                    var e = se.m_fRecencyValue * (O.NUM_RECENCY_STEPS - 1 - .001),
                        t = Math.floor(e),
                        a = t + 1,
                        r = 1 - (e - t),
                        n = 1 - r,
                        o = se.m_fPopularityValue * (O.NUM_POPULARITY_STEPS - 1 - .001),
                        i = Math.floor(o),
                        c = i + 1,
                        l = 1 - (o - i),
                        s = 1 - l,
                        u = [];
                    u.push({ index: i * O.NUM_RECENCY_STEPS + t, weight: l * r }),
                    u.push({ index: c * O.NUM_RECENCY_STEPS + t, weight: s * r }),
                    u.push({ index: i * O.NUM_RECENCY_STEPS + a, weight: l * n }),
                    u.push({ index: c * O.NUM_RECENCY_STEPS + a, weight: s * n });
                    for (var _ = new Map, p = 0, d = 0, h = u; d < h.length; d++) {
                        var m = h[d],
                        E = N[m.index]; if (p = Math.max(p, E.score_scale), E)
                        for (var v = 0; v < E.app_ids.length; v++) {
                            var b = E.app_ids[v]; if (D[b] && !D[b].o && !D[b].i) {
                                var g = (_.get(b) || 0) + E.scores[v] * m.weight * E.score_scale;
                                _.set(b, g)
                            }
                        }
                    }
                    _.forEach(function(e, t) { return _.set(t, e / p) }); var f = [];
                    _.forEach(function(e, t) { return f.push({ appid: t, score: e }) }),
                    0 != se.m_nTagFilterValue && (f = f.filter(function(e) { return D[e.appid].t && -1 != D[e.appid].t.indexOf(se.m_nTagFilterValue) })),
                    0 != se.m_nTagExcludeValue && (f = f.filter(function(e) { return D[e.appid].t && -1 == D[e.appid].t.indexOf(se.m_nTagExcludeValue) }));
                    for (var y = (f = f.filter(function(e) { return 0 < e.score })).sort(function(e, t) { return t.score - e.score }), S = 0, T = 0, k = y = y.slice(0, 30); T < k.length; T++) { k[T].rank = S, S++ }
                    for (var L = [], R = 0, C = y.sort(function(e, t) { return t.appid - e.appid }); R < C.length; R++) {
                        var P = C[R];
                        L.push(A.a.createElement(Z, { key: P.appid, appID: P.appid, score: P.score, rank: P.rank, width: this.props.width })) } return A.a.createElement("div", { className: I.a.RecommendationList }, A.a.createElement("div", { className: I.a.Header }, B("#Recommendations_Header")), A.a.createElement(J, null), A.a.createElement("div", { className: I.a.List }, L)) }, e = i.c([n.a], e) }(A.a.Component),

Edit: Actually, I think it is only there to be able to interpolate the scores for all the possible slider positions based on the 30 known "algorithm_options".

All the info is hidden in scores and score_scale, with no way to know what was done before.

seems pretty cool so far. just barely scratched the surface though.

Thanks for the feedback. Considering that we would get a Steam key in a year anyway, it is pretty tempting.
 
Last edited:

Aaron D.

Member
Oct 25, 2017
9,333
Man, Iron Maiden Fury don't mess around.

Maybe I should turn the default auto-aim back on even though I'm playing k/m!
 

TheLetdown

Member
Oct 25, 2017
2,812
After 7+h spent in Blood & Wine i love it. Story is great, so are the characters. But i must admit that playing W3 after RDR2 is a bit rough. So much pop-in and low poly object in the distance are really noticing. What R* achieved on those consoles really is unbelievable.

This reminds me that I need to play the expansion.

It took me years to finish W3 proper despite having read all of the books translated into a English. I get so burnt out on open world games that even the setting I love can't pull me through.

But I'll sit my ass right here and grind the same sections of the Bloodstained map like it's my career.
 

Wok

Avenger
Oct 26, 2017
3,258
France

If my understanding of the javascript code is correct, then there are 30 different combinations of setting values, and for each, there is a ranking of 200 apps, with 150 of them hidden by default. So, if you wanted to check the whole ranking, you would have to wishlist (and thus exclude) 150 games.
 

eonden

Member
Oct 25, 2017
17,091
If my understanding of the javascript code is correct, then there are 30 different combinations of setting values, and for each, there is a ranking of 200 apps, with 150 of them hidden by default. So, if you wanted to check the whole ranking, you would have to wishlist (and thus exclude) 150 games.
I dont think there are only 30 combinations of setting values, as the popular <-> niche slide by itself has more than 30 positions, and the total number of combinations would be a multiplication between the total position of both sliders. In each position it recalculates the value of the recomendation.

It might have 30 positions where it recalculates the 200 apps as the variation in the lower levels should be enough not to miss the top 50 in that span of values?
 

Wok

Avenger
Oct 26, 2017
3,258
France
I dont think there are only 30 combinations of setting values, as the popular <-> niche slide by itself has more than 30 positions, and the total number of combinations would be a multiplication between the total position of both sliders. In each position it recalculates the value of the recomendation.

I get what you mean, but everything happens in the browser based on 30 rankings. The rest is interpolated for the 100 ticks of each slider.
I don't know javascript, but the code seems clear. Every ranking is based on the 4 closest rankings of 200 games. If a game appears in a ranking but not in the 3 others, its score is set to 0 for the 3 other rankings, and the interpolation is then computed.


It is a nice trick to allow people to play with the sliders without giving too much information away, especially the formula and the popularity values for each game, and without overloading the browser with data. There are 30 rankings instead of 100x100.
 
Last edited:

eonden

Member
Oct 25, 2017
17,091
No, there are 30. The rest is interpolated. I don't know javascript, but the code seems clear. Everything happens in the browser based on 30 rankings.
Nice to know !

Now, I just want them to be able to let me:
  • Select a specific year
  • Be able to have a window of time (as in Less than 10 years but more than 5 years) - Double point in the sliders!

And I would be kinda happy. (Also open it to more tags and allow multi tagging, but I guess that the first one is gonna happen in the near future as this is just a beta).
 

Tizoc

Member
Oct 25, 2017
23,792
Oman
Played a few more hours of Bioshock Infinite and made it to the air docks.
I like the shotgun in this game, but easy is...well it is easy! I prob. should've gone for Normal if would've made enemies a little more tankier.
Now I confess, the jamming of the melee weapon into skulls is gross....btu I like me some SHOTGUN DECAPITATIONNNNNNNNNNNNNNNNNNNNNN
 

Wok

Avenger
Oct 26, 2017
3,258
France
(Also open it to more tags and allow multi tagging, but I guess that the first one is gonna happen in the near future as this is just a beta

You can already use more tags. The only reason so few tags appear in the drop-down menu is to avoid overwhelming people with 337 tags.

DZsIjHq.png


atpe7TK.png


All you need is the id for the tag of interest, which is available in window.gTags. Check my post.

The full list of tags is on Github.

Here is another example:

mPI75TB.png


JPqJkhz.png


I only have two recommendations due to the limitation of 200 entries mentioned above. If I move the slider, a new game pops in due to the interpolation of rankings.

7PmZ9iI.png


It gets more crowded and more anime if we focus on recent niche releases with the tag "Sexual Content".

 
Last edited:

eonden

Member
Oct 25, 2017
17,091
You can already use more tags. The only reason so few tags appear in the drop-down menu is to avoid overwhelming people with 337 tags.

DZsIjHq.png


atpe7TK.png


All you need is the id for the tag of interest, which is available in window.gTags. Check my post.

The full list of tags is below:



Here is another example:

mPI75TB.png


JPqJkhz.png


I only have two recommendations due to the limitation of 200 entries mentioned above. If I move the slider, a new one pops in due to the interpolation of rankings.

7PmZ9iI.png

Yeah, I got 0 recommendation in cats. FOR SHAME.
Thanks so much for your input ^^
 

Wok

Avenger
Oct 26, 2017
3,258
France
Yeah, I got 0 recommendation in cats. FOR SHAME.
Thanks so much for your input ^^

Do not forget to move the sliders. You might have a recommendation in one of the other rankings.

This is a misleading slider: the recommendations for the past 10 years do NOT include the recommendations for the past 6 months.

GOnUTmG.png
 

Teeth

Member
Nov 4, 2017
3,940
The Outer Worlds being New Vegas 2 is all cool but Unreal Engine isn't Gamebryo when it comes to modding. It's also not the same when it comes to bugs.

But modding generally means more to me.

So that's unfortunate.
 

Wok

Avenger
Oct 26, 2017
3,258
France
The two mysteries left are:

1) what "n" means in window.gInputApps. I have checked and the value is different for each user.

JavaScript:
window.gInputApps = [
  {
    "n": 38,
    "a": 570, # appID
    "p": 3707, # playtime in hours
    "l": 1555954754 # last played in Unix time
  },

2) a challenge which I might try, but I do not want to talk too much about it, in case Gabe reads this forum. I mean, I know you do.
 

eonden

Member
Oct 25, 2017
17,091
The two mysteries left are:

1) what "n" means in window.gInputApps. I have checked and the value is different for each user.

JavaScript:
window.gInputApps = [
  {
    "n": 38,
    "a": 570, # appID
    "p": 3707, # playtime in hours
    "l": 1555954754 # last played in Unix time
  },

2) a challenge which I might try, but I do not want to talk too much about it, in case Gabe reads this forum. I mean, I know you do.
mmm about n... maybe it is a ranking of how valuable that game is to you as a combination of last played and playtime? As they said those were the two main inputs.

For instance, Imperator is n:1 in my case, and is a game I played 40+h in the last weeks.

Also:

https://steamcommunity.com/groups/SteamLabs#announcements/detail/1600384168193240269
 

Wok

Avenger
Oct 26, 2017
3,258
France
a combination of last played and playtime? As they said those were the two main inputs.

Did they mention that?

In any case, I think you are onto something.

I have seen one game at "0" while it was being played. I need to check if its value gets incremented to 1 if another game is being played.

Edit: It is a counter of the last played games. The most recently played game is assigned 0. The previous one 1. The one played before 2. Etc.

Edit: haha! we got to the same results nearly at the same time.

True, but you pointed in the right direction. I was clueless about it.
 
Last edited:

eonden

Member
Oct 25, 2017
17,091
Did they mention that?

In any case, I think you are onto something.

I have seen one game at "0" while it was being played. I need to check if its value gets incremented to 1 if another game is being played.
Edit: It could actually be a counter of the last played games. The most recently played game would be assigned 0. The previous one 1. Etc.
It is a counter of the last played game, starting with n=0. I launched two more games and Imperator moved to n=3 and the game I launched last moved to n=0. I guess they use it to see what are the kind of games you are playing recently.

They kinda mentioned the info in here:


Edit: haha! we got to the same results nearly at the same time.
 

eonden

Member
Oct 25, 2017
17,091
Did they mention that?

In any case, I think you are onto something.

I have seen one game at "0" while it was being played. I need to check if its value gets incremented to 1 if another game is being played.

Edit: It is a counter of the last played games. The most recently played game is assigned 0. The previous one 1. The one played before 2. Etc.



True, but you pointed in the right direction. I was clueless about it.
I mean, it was just a lucky guess, as I wondered what the n=1 game was and found it was Imperator and made sense for games to be ranked somehow in "importance". It being "last played game" makes sense. But then I hope they allow me to select the games for my queue with "last played games" or remove games from my list.

Now I am just curious what the second mistery is...
 

PC-tan

Member
Feb 25, 2018
1,321
I'm really hoping that SE changes their minds and ends up releasing Dragon Quest Builders on PC, I can understand why the first one would not be popular but the second one would sell pretty well.
 

Wok

Avenger
Oct 26, 2017
3,258
France
Are you sure about the part of the misleading sliders? With 10 years not including the games released in the last 6 months?

Yes, it is a consequence of cutting the pre-computed rankings after 200 entries. Maybe I did not word it correctly though.

Edit: I have tried to clarify that the remark was aimed at rankings filtered with rare tags.
 

Veidt

Member
Oct 27, 2017
511
This reminds me that I need to play the expansion.

It took me years to finish W3 proper despite having read all of the books translated into a English. I get so burnt out on open world games that even the setting I love can't pull me through.

But I'll sit my ass right here and grind the same sections of the Bloodstained map like it's my career.

Both expansions are very much worth playing. Hearts of Stone has possibly the best story arc in The Witcher 3 along with some great characters, although you might feel like you're still playing the base game as you'll be traversing through very familiar places, since they've only added a few new areas in and around Oxenfurt.

Blood & Wine on the other hand feels like a fresh, brand new adventure. As if CD Projekt took what they learnt from the TW3's development and decided to make a smaller game set in this gorgeous, larger than life location taken straight out of a fairy tale. It feels simultaneously like a 'Greatest Hits' collection and a definitive conclusion to Geralt's story (for the time being, at least).

A big advantage of Blood & Wine is that Toussaint works as a self-contained location for all the new quests, so there's no need to go anywhere else once you're there. Rather than jumping around between Velen, Novigrad and Skellige - not to mention other small locations like White Orchid and Kaer Morhen - as you're going through the story, you can just spend your time discovering Toussaint.

The game actively encourages you to build your home there (both figuratively and literally) and taking your time to explore the region, with most side quests being focused on mundane, everyday affairs with a fair amount of humor involved, which is also a good change of pace from TW3's far more serious "everything is at stake" approach. All of this contributes to the overall pacing and should keep you from feeling burnt out from having to roam around yet another open world.
 

Parsnip

Member
Oct 25, 2017
3,913
Finland
I started a Deadly Obsession ng+ on Shadow of the Tomb Raider. Not too bad so far, though only having checkpoints at the campfires is a bit of an annoyance. Up to Paititi so far, you can kind of book through the game when you don't bother with any of the collectables and such.
 
OP
OP
Uzzy

Uzzy

Gabe’s little helper
Member
Oct 25, 2017
27,232
Hull, UK
I started a Deadly Obsession ng+ on Shadow of the Tomb Raider. Not too bad so far, though only having checkpoints at the campfires is a bit of an annoyance. Up to Paititi so far, you can kind of book through the game when you don't bother with any of the collectables and such.

100% it or bust.

In other news, get a partner that looks at you the way Lara looks at her one true love.

O7E4h5h.png

MgxGKHu.png
 
Status
Not open for further replies.