Skip to content

Commit ea80cff

Browse files
committed
Merge branch 'main' of github.com:DataForgeOpenAIHub/Steam-Sales-Analysis
2 parents ec00b21 + ffc5e01 commit ea80cff

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

notebooks/data_exploration.ipynb

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
},
4949
{
5050
"cell_type": "code",
51-
"execution_count": 10,
51+
"execution_count": 3,
5252
"metadata": {},
5353
"outputs": [
5454
{
@@ -333,7 +333,7 @@
333333
"4 {\"FPS\": 919, \"Gore\": 58, \"Co-op\": 43, \"Retro\":... "
334334
]
335335
},
336-
"execution_count": 10,
336+
"execution_count": 3,
337337
"metadata": {},
338338
"output_type": "execute_result"
339339
}
@@ -354,6 +354,26 @@
354354
"game_data.head()"
355355
]
356356
},
357+
{
358+
"cell_type": "code",
359+
"execution_count": 7,
360+
"metadata": {},
361+
"outputs": [
362+
{
363+
"data": {
364+
"text/plain": [
365+
"'Prismata\\'s new free-to-play edition is\\nradically fair\\n, featuring\\nno card packs, no grinding, and absolutely no pay-to-win\\n. We steadfastly refuse to sell items that provide advantages in competitive multiplayer. Instead, you can support us by purchasing cosmetics or premium single-player content. Thank you!\\nPrepare yourself for the ultimate strategy game.\\nPrismata—the gripping debut from Lunarch Studios—radically redefines the strategy genre by combining elements of real-time strategy, card games, and tabletop strategy games to create something entirely new and unique.\\nCompeting against other humans or ruthlessly efficient AI, you\\'ll plan devastating attacks through a series of quick-fire turns. Will you outwit your opponents by striking at the perfect moment? Or will you fall victim to a devious trap?\\nGame Modes\\nCampaign:\\nan enthralling 40-mission story-based single player adventure\\nCasual Match:\\nplay friendly games against other humans or one of 30 different AI personalities\\nCombat Training:\\nover 50 hand-crafted puzzles and scenarios dripping with fascinating strategy insights\\nRanked Play:\\nget paired against opponents of similar skill and compete for a spot on the leaderboards\\nCustom Games:\\nplay bots or friends with fully editable unit pools, time controls, handicaps, AI difficulty, and more\\nExpert Challenge:\\nultra-difficult mission variants for players seeking extreme challenges\\nEvent Mode:\\nheart-pounding blitz brawl tourneys and crazy mode-of-the-week events with prizes\\nThe Story\\nHundreds of years in the future, humans have engineered a prosperous new civilization on the distant planet Beacon, where the sun never sets. Meanwhile, the planet\\'s frigid dark side has been colonized by an enigmatic faction of intelligent machines that threaten humanity with conflict.\\nIn these new cybernetic times, human soldiers are obsolete. Instead, warfare is conducted swiftly with massive armies of robots. The\\nSwarmwielders\\n—human commanders of these mechanical forces—are the defenders of society, training relentlessly for the day when the machines strike again. However, when their own robots start to mysteriously malfunction, the humans find themselves endangered by something much closer than the machines lurking beyond the fringe.\\nFeatures\\nState-of-the-art enemy AI\\ncreated by Professor David Churchill, winner of the 2013 StarCraft AI competition\\nA custom\\nreplay browser\\nwhere you can watch, share, and analyze game replays\\nNew Prismata\\nunits\\nadded regularly, each with a unique role and purpose in combat\\n100+\\nSteam Achievements\\nto unlock\\nReal-time\\nspectator mode\\n: watch live matches featuring top players\\nAbsolutely\\nzero pay-to-win\\n—no card packs to open; all units are free for all players\\nOver 500 customizable\\nemotes\\nand 250 awesome\\nunit skins\\nto collect\\nNo randomness!\\nYour fate is determined by your skill alone\\nOver\\n100 trillion\\nunique gameplay scenarios, each with a different optimal strategy to discover\\nGameplay\\nIn Prismata, you’ll collect resources, create workers and technologies, assemble an all-conquering army, and trade blows with your opponent until one of you is obliterated. Prismata blends elegant turn-based mechanics with the tactical decision-making elements that are at the heart of real-time strategy games.\\nFeaturing simple and intuitive economic and combat systems, Prismata is incredibly easy to learn. However, no two Prismata matches are ever the same. Every game, players get a new pool of extra buildable units that must be used to their fullest potential. There are always new builds to plan and discover, and new threats to respond to. Each battle is fresh and unique.\\nContaining no pre-built decks, random advantages, or luck-of-the-draw moments, Prismata’s cat-and-mouse duels celebrate quick-fire tactics, deep thinking, and decisive strategy. Will you execute a perfectly-timed attack, or will you build up a monstrous economy and overpower your opponent with a massive army?\\nTestimonials from supporters and Kickstarter backers:\\n\"Almost nothing comes close to achieving this level of polish, depth, and replayability.\"\\n-\\nKevin \"qxc\" Riley, retired StarCraft pro-gamer and game designer\\n\"This game is unbelievable. Someone said it’s like Magic the Gathering meets Chess meets Starcraft and they weren\\'t lying.\"\\n-\\nParadox Gaming Network\\n\"Full skill, full focus, no RNG. It is beautiful!\"\\n-\\nAdrian \"Lifecoach\" Koy, Hearthstone and Gwent professional\\n\"It\\'s so good. I wake up and I\\'m like \\'Yes, I get to play this game again.\\' I love it.\"\\n-\\nFrederick \"Freddybabes\" Bird, Gwent Challenger, Open, and Slam champion\\n\"I\\'m over-the-top addicted. Best game I\\'ve ever played.\"\\n-\\nMike \"Timex\" McDonald, poker professional\\n\"A game I have been looking for all my life.\"\\n-\\nSteel_hs\\n\"One of the most intricate, well-thought-out, and best games I have ever played... the first and only game of its unique genre.\"\\n-\\nRachenite\\n\"More worthwhile than any other game.\"\\n-\\nAetherllama\\n\"Truly unique in its ability to refine RTS and card game themes down to the core strategic decisions without the RNG or APM.\"\\n-\\nDiamondGP\\n\"Finally, a card game that removes the ‘luck’ aspect.\"\\n-\\nhepcecob\\n\"When I start Prismata, it feels like my inner child is opening a bottomless toy box that\\'s always holding something new and exciting.\"\\n-\\ndaxtrax\\n\"I honestly feel like a genius after I play a good game.\"\\n-\\nDDarkray\\n\"Prismata is very approachable, yet there\\'s always more to learn.\"\\n-\\nzihkrihk\\n\"I\\'m a filthy casual and I love playing a quick competitive game.\"\\n-\\nRupertE\\n\"10/10 strategy game! Phenomenal concept, unlimited replay value.\"\\n-\\n4nonym0u5\\n\"Why did I even bother with those other games.\"\\n-\\narisuMizuki\\n\"I feel fortunate to live in the age of Prismata—the best game I\\'ve ever played.\"\\n-\\nGameking511\\n\"No mortal has 400 real APM. That\\'s why we play Prismata, and leave StarCraft to the demigods.\"\\n-\\njrkirby\\n\"If you ever thought you\\'d be great at StarCraft if only you had the APM, now you can prove it.\"\\n-\\nLenor4ever\\n\"After 3 years and 11,000 games, I\\'m still innovating new strategies, and I don\\'t expect that to ever stop.\"\\n-\\nApooche\\n\"Prismata is the best thing that ever happened to me.\"\\n-\\nArkanishu\\n\"It\\'s as good as they say.\"\\n-\\nNaitso Prismata\\'s new free-to-play edition is\\nradically fair\\n, featuring\\nno card packs, no grinding, and absolutely no pay-to-win\\n. We steadfastly refuse to sell items that provide advantages in competitive multiplayer. Instead, you can support us by purchasing cosmetics or premium single-player content. Thank you!\\nPrepare yourself for the ultimate strategy game.\\nPrismata—the gripping debut from Lunarch Studios—radically redefines the strategy genre by combining elements of real-time strategy, card games, and tabletop strategy games to create something entirely new and unique.\\nCompeting against other humans or ruthlessly efficient AI, you\\'ll plan devastating attacks through a series of quick-fire turns. Will you outwit your opponents by striking at the perfect moment? Or will you fall victim to a devious trap?\\nGame Modes\\nCampaign:\\nan enthralling 40-mission story-based single player adventure\\nCasual Match:\\nplay friendly games against other humans or one of 30 different AI personalities\\nCombat Training:\\nover 50 hand-crafted puzzles and scenarios dripping with fascinating strategy insights\\nRanked Play:\\nget paired against opponents of similar skill and compete for a spot on the leaderboards\\nCustom Games:\\nplay bots or friends with fully editable unit pools, time controls, handicaps, AI difficulty, and more\\nExpert Challenge:\\nultra-difficult mission variants for players seeking extreme challenges\\nEvent Mode:\\nheart-pounding blitz brawl tourneys and crazy mode-of-the-week events with prizes\\nThe Story\\nHundreds of years in the future, humans have engineered a prosperous new civilization on the distant planet Beacon, where the sun never sets. Meanwhile, the planet\\'s frigid dark side has been colonized by an enigmatic faction of intelligent machines that threaten humanity with conflict.\\nIn these new cybernetic times, human soldiers are obsolete. Instead, warfare is conducted swiftly with massive armies of robots. The\\nSwarmwielders\\n—human commanders of these mechanical forces—are the defenders of society, training relentlessly for the day when the machines strike again. However, when their own robots start to mysteriously malfunction, the humans find themselves endangered by something much closer than the machines lurking beyond the fringe.\\nFeatures\\nState-of-the-art enemy AI\\ncreated by Professor David Churchill, winner of the 2013 StarCraft AI competition\\nA custom\\nreplay browser\\nwhere you can watch, share, and analyze game replays\\nNew Prismata\\nunits\\nadded regularly, each with a unique role and purpose in combat\\n100+\\nSteam Achievements\\nto unlock\\nReal-time\\nspectator mode\\n: watch live matches featuring top players\\nAbsolutely\\nzero pay-to-win\\n—no card packs to open; all units are free for all players\\nOver 500 customizable\\nemotes\\nand 250 awesome\\nunit skins\\nto collect\\nNo randomness!\\nYour fate is determined by your skill alone\\nOver\\n100 trillion\\nunique gameplay scenarios, each with a different optimal strategy to discover\\nGameplay\\nIn Prismata, you’ll collect resources, create workers and technologies, assemble an all-conquering army, and trade blows with your opponent until one of you is obliterated. Prismata blends elegant turn-based mechanics with the tactical decision-making elements that are at the heart of real-time strategy games.\\nFeaturing simple and intuitive economic and combat systems, Prismata is incredibly easy to learn. However, no two Prismata matches are ever the same. Every game, players get a new pool of extra buildable units that must be used to their fullest potential. There are always new builds to plan and discover, and new threats to respond to. Each battle is fresh and unique.\\nContaining no pre-built decks, random advantages, or luck-of-the-draw moments, Prismata’s cat-and-mouse duels celebrate quick-fire tactics, deep thinking, and decisive strategy. Will you execute a perfectly-timed attack, or will you build up a monstrous economy and overpower your opponent with a massive army?\\nTestimonials from supporters and Kickstarter backers:\\n\"Almost nothing comes close to achieving this level of polish, depth, and replayability.\"\\n-\\nKevin \"qxc\" Riley, retired StarCraft pro-gamer and game designer\\n\"This game is unbelievable. Someone said it’s like Magic the Gathering meets Chess meets Starcraft and they weren\\'t lying.\"\\n-\\nParadox Gaming Network\\n\"Full skill, full focus, no RNG. It is beautiful!\"\\n-\\nAdrian \"Lifecoach\" Koy, Hearthstone and Gwent professional\\n\"It\\'s so good. I wake up and I\\'m like \\'Yes, I get to play this game again.\\' I love it.\"\\n-\\nFrederick \"Freddybabes\" Bird, Gwent Challenger, Open, and Slam champion\\n\"I\\'m over-the-top addicted. Best game I\\'ve ever played.\"\\n-\\nMike \"Timex\" McDonald, poker professional\\n\"A game I have been looking for all my life.\"\\n-\\nSteel_hs\\n\"One of the most intricate, well-thought-out, and best games I have ever played... the first and only game of its unique genre.\"\\n-\\nRachenite\\n\"More worthwhile than any other game.\"\\n-\\nAetherllama\\n\"Truly unique in its ability to refine RTS and card game themes down to the core strategic decisions without the RNG or APM.\"\\n-\\nDiamondGP\\n\"Finally, a card game that removes the ‘luck’ aspect.\"\\n-\\nhepcecob\\n\"When I start Prismata, it feels like my inner child is opening a bottomless toy box that\\'s always holding something new and exciting.\"\\n-\\ndaxtrax\\n\"I honestly feel like a genius after I play a good game.\"\\n-\\nDDarkray\\n\"Prismata is very approachable, yet there\\'s always more to learn.\"\\n-\\nzihkrihk\\n\"I\\'m a filthy casual and I love playing a quick competitive game.\"\\n-\\nRupertE\\n\"10/10 strategy game! Phenomenal concept, unlimited replay value.\"\\n-\\n4nonym0u5\\n\"Why did I even bother with those other games.\"\\n-\\narisuMizuki\\n\"I feel fortunate to live in the age of Prismata—the best game I\\'ve ever played.\"\\n-\\nGameking511\\n\"No mortal has 400 real APM. That\\'s why we play Prismata, and leave StarCraft to the demigods.\"\\n-\\njrkirby\\n\"If you ever thought you\\'d be great at StarCraft if only you had the APM, now you can prove it.\"\\n-\\nLenor4ever\\n\"After 3 years and 11,000 games, I\\'m still innovating new strategies, and I don\\'t expect that to ever stop.\"\\n-\\nApooche\\n\"Prismata is the best thing that ever happened to me.\"\\n-\\nArkanishu\\n\"It\\'s as good as they say.\"\\n-\\nNaitso A perfect-information strategy game inspired by RTS, deckbuilders, and board games. Choose from three distinct technology classes and outwit your foes by snowballing your starting resources into a powerful cybernetic army. ABSOLUTELY NO PAY-TO-WIN.Website: http://prismata.net Game Image: https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/490220/header.jpg?t=1584722754'"
366+
]
367+
},
368+
"execution_count": 7,
369+
"metadata": {},
370+
"output_type": "execute_result"
371+
}
372+
],
373+
"source": [
374+
"game_data['description'].iloc[10000-4-1]"
375+
]
376+
},
357377
{
358378
"cell_type": "markdown",
359379
"metadata": {},

steam_sales/steam_etl/cleaner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,13 @@ def process_descriptions(self, df: pd.DataFrame) -> pd.DataFrame:
347347
df["description"] = df.apply(
348348
lambda row: (
349349
f"{row['detailed_description']} {row['about_the_game']} {row['short_description']}"
350-
f"Website: {row['website']} Game Image: {row['header_image']}"
350+
# f"Website: {row['website']} Game Image: {row['header_image']}"
351351
),
352352
axis=1,
353353
).replace("", "Not available")
354354

355355
df.drop(
356-
columns=["detailed_description", "about_the_game", "short_description", "website", "header_image"],
356+
columns=["detailed_description", "about_the_game", "short_description"], # , "website", "header_image"],
357357
inplace=True,
358358
)
359359
return df

steam_sales/steam_etl/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class CleanData(Base):
9292
publisher = Column(Text, nullable=False)
9393
price = Column(Float, nullable=False)
9494
description = Column(LONGTEXT, nullable=False)
95+
website = Column(Text, default="")
96+
header_image = Column(Text, default="")
9597
year = Column(Integer, nullable=True)
9698
month = Column(Integer, nullable=True)
9799
day = Column(Integer, nullable=True)

steam_sales/steam_etl/validation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ class Clean(BaseModel):
158158
publisher: str = Field(..., description="Publisher of the game")
159159
price: float = Field(..., description="Current price of the game")
160160
description: str = Field(..., description="Description of the game")
161+
website: Optional[HttpUrl | str] = Field(..., description="Official website of the game")
162+
header_image: HttpUrl = Field(..., description="URL to the header image of the game")
161163
year: Optional[int] = Field(None, description="Year of the game release")
162164
month: Optional[int] = Field(None, description="Month of the game release")
163165
day: Optional[int] = Field(None, description="Day of the game release")

0 commit comments

Comments
 (0)