smb wonder, modify a few tags here and there

This commit is contained in:
Wouter Groeneveld 2023-12-03 11:08:53 +01:00
parent 39d2803f84
commit 2507be6612
11 changed files with 127 additions and 15 deletions

View File

@ -35,6 +35,6 @@ Second, the level design is quite confusing. You'll need to collect colored keyc
Third, as bright and colorful _Commander Keen_ as is, the lack of depth and the overall sameness frequently had me mistake a field of spikes for the background and vice versa. It's even sometimes difficult to spot the teleporter exits! It seems that Smilie and Palmer forgot the existence of the term contrast and used their Splatoon guns to spread colors of joy instead. Don't get me wrong, apart from the lack of multiple scrolling background layers, difficult to discern stuff and stiff animations that could do with a few more frames, I like the pixel art. Perhaps if things had been black and white on the original Game Boy, the designers were forced to look into the issue of contrast.
Despite the questionable implementation of pretty much anything, after having learned the quirky level design philosophy, I kind of enjoyed pogoing through them in a weird way. The catchy 8-bit tunes by Commodore 64 music chip expert Mark Cooksey certainly helped.
Despite the questionable implementation of pretty much anything, after having learned the quirky level design philosophy, I kind of enjoyed pogoing through them in a weird way. [The catchy 8-bit tunes](https://www.zophar.net/music/gameboy-gbs/commander-keen) by Commodore 64 music chip expert Mark Cooksey certainly helped.
If you're a _Keen_ die-hard fan, it's certainly worth to check out the GBC version, as it's not simply a watered-down port of existing DOS levels. Just don't expect as decent platforming mechanics as on your trusty 80486.

View File

@ -9,7 +9,7 @@ game_name: "Rayman Legends Definitive Edition"
game_developer: 'Ubisot Montpelier'
game_genre: '2D Platformer'
tags:
- platformer
- '2D platformer'
---
Back in October last year, I picked up Rayman Legends for a very reasonable price at the local mall. The problem was, the inside was empty. Read more about that in [questionable game publishing methods](https://brainbaking.com/post/2021/10/questionable-game-publishing-methods/). Suffice to say I was annoyed. It took me until January to get out the box---and stupid download code---to finally give the game a try on the Nintendo Switch.

View File

@ -0,0 +1,50 @@
---
title: "Super Mario Bros. Wonder: Pipe Dreams Do Come True"
date: 2023-12-03T08:47:00+01:00
score: 5
game_release_year: 2023
howlongtobeat_id: 130444
howlongtobeat_hrs: 9.3
game_name: "Super Mario Bros. Wonder"
game_developer: 'Nintendo EPD'
game_genre: '2D Platformer'
tags:
- '2D Platformer'
- Mario
---
2023 has been an amazing year for games, and Nintendo's wonderful _Wonder_ is no exception. _Super Mario Bros. Wonder_ is the first truly new [2D Mario game](/tags/mario) since the release of the [New Super Mario Bros.](/games/ds/new-super-mario-bros) (NSMB) franchise in 2006---that's a stunning 17 years, for anyone who's counting! When it comes to bringing back to life beloved 2D genres, Nintendo seems to be on a roll. Just like the recent [Metroid Dread](/games/switch/metroid-dread), _Wonder_ scored wonderfully high among critics, and just like _Dread_, there's very little here to complain about, besides perhaps the fact that the wonderfulness is over too quickly.
In _Wonder_, Mario and his friends are invited to a party in the Flower Kingdom, giving Nintendo a good excuse to get rid of the conventional Mushroom Kingdom mechanics. Taking a cue from the [Super Mario Land](/games/gameboy/super-mario-land) Game Boy series, the Flower Kingdom's level structure, fauna, and flora is unique to say the least. Besides the occasional Goomba and Koopa Trooper, the overwhelming part of Mario's adversaries---besides the ubiquitous Big Bad---are completely new and fresh. You've got flying gnawlers eating up coins, strange birds that shoot out temporary platforms, weird shapes that _are_ both platform and enemy, bull stampedes, and much more. Both the enemy and the location design is a radical departure from the conventional _NSMB_ backdrops we're all tired of seeing appear in Mario platformers.
![](slime.jpg "Slime in a cave, just like Mario Land 2?")
During our playthrough, I was regularly reminded of the oddities of [Super Mario Land 2: Six Golden Coins](/games/gameboy/super-mario-land-2), as that game also came with delightfully weird enemy design. Even the slime-like jelly Mario has to wade through makes a return. But _Wonder_ also steals ideas from _Super Mario Odyssey_, as catching a Wonder Flower might transform Mario himself into one of his enemies.
Speaking of Wonder Flowers, in (almost) every level, you're on the hunt for two Wonder Seeds: one gained by exiting the game via your expected flag pole, and the other by nabbing it after making it through a trip after the Wonder Flower completely transforms the level into something else. One minute you're playing... well... a Mario game: hitting blocks, shooting enemies with your fire flower ability, and the next, you're suddenly running from a pack of angry bulls, or you _become_ the bull. Some flowers even change the camera angle and turn _Super Mario Bros. Wonder_ into a top-down game!
I won't spoil the most wonderful (ha!) surprises, but suffice to say, we had a big grin on our face while playing through every single level. The variation and creative inventiveness the team managed to come up with is simply jaw-dropping. Every level does something else, and just when you're about to say "hey, I think I've seen it all", the game throws something new at you.
![](darkness.jpg "Did someone turn off the lights?")
That _new_ isn't limited to the mechanics of the Wonder Flower, though. The color palette and the theme of each world is atypical for a 2D Mario game as well. After finishing three worlds, you can choose in which order you tackle the rest of the worlds---again, just like in _Mario Land 2_. World 4 is called _Sunbaked Desert_, and I was afraid that that world would contain nothing but uninspired piles of sand, pyramids, and various yellow-to-brown texture work. Instead, I find myself in the middle of an _Arabian Nights_ story, and the palette shifts from yellow to deep purple. Suffice to say, even though the game's conventional world system _wants_ you to think it's going to serve conventional levels, that's just there to misdirect the player (and surprise them even more).
Power-ups, then. Everybody has seen the weird Mario-elephant in the promotional videos, and although it was fun to run around with a trunk full of water, it wasn't as ground-breaking as I thought it was going to be. And perhaps that's not bad. The other two new power-ups---shooting bubbles and drilling into the ground or ceiling---are just as subtle, but still introduce a significant enough gameplay element that enables hunting for secrets in a new way. For instance, your trunk can bash blocks that would otherwise require a shell, or you could simply drill down and ignore the blocks all-together. The bubbles you shoot out can be used as temporary platforms and can pass through solid walls, making the power-up a good leverage booster. They're not as ground-breaking or wow-ing as the rest of the game, though.
![](postcard.jpg "After finishing each level, a postcard recording an event during your run is shown to highlight the atmosphere of that level.")
The power-ups shine a light on another superb aspect of _Wonder_: its sound and music design. As soon as you turn into an elephant, the soundtrack evolves into a more trumpety variant, fit for a true gray jungle beast. As soon as you dig into dirt, the soundtrack becomes muffled, not unlike submerging yourself into water or the jelly of the first screenshot here. On top of that, tiny Mario's jumps actually sound puny, if that makes any sense.
But it doesn't stop there: some levels feature singing piranha plants where the vocals can temporarily drop off if you manage to shoot the plants. This sounds silly, but its effect is very impressive in-game. Many new fully orchestrated soundtracks come with the game, and a few clever remixes such as [the underground theme](https://www.youtube.com/watch?v=-Vojy-2Wt0Q) left me yearning for more underground-like levels. Koji Kondo's team did it once again.
In case the ample showcase videos and above screenshots fail to highlight yet another strong point of _Wonder_: the animation work is truly stunning. The way Mario tucks his hat over his head when ducking, the way he enters and exits pipes by wiggling and grabbing the hat he sometimes forgets, the way Elephant Mario crawls along the level, it's all just wonderful. I know, I know, it's getting old, but it deserved a mention. It all runs flawlessly (wonderfully? okay I'll stop) on the Switch, in both docked and handheld mode.
![](castlebowser.jpg "Bowser this time is... a colorful castle?")
Is there something less wonderful present in _Wonder_? Perhaps not. We didn't care for the online mode, so I can't comment on that, but if there's something I'd have to remark, it would be the needless jabbering of some of the characters you encounter during your adventure. It's just weird to see that many text boxes in a 2D Mario platformer, and to be perfectly frank, we jammed the `A` button as quickly as we could every time someone had something insignificant to say.
Other than that, Mario's "slippery" movement mechanics take some getting used to, especially if you came from a (S)NES or GB Mario game before it. It's not as bad as the NSMB games, but you better keep that run button pressed---otherwise the jumps suddenly lose momentum and cover not even a third of the distance you'd expect it to cover.
![](captaintoad.jpg "If you look well enough, you'll find lots of hidden exists, such as this one leading to Captain Toad who is happy to hand out even more treasure.")
Is _Super Mario Bros. Wonder_ the best (2D) Mario game out there? I don't think so. _Super Mario World_ is extremely tough to beat, but as my wife neatly summarized it: "this is the best Mario game since the SNES one I played as a kid!". I completely agree. 2023, what a year.

View File

@ -7,9 +7,9 @@ howlongtobeat_id: 46441
howlongtobeat_hrs: 8.2
game_name: "Yoshi's Crafted World"
game_developer: 'Good-Feel'
game_genre: 'Platformer'
game_genre: '2D Platformer'
tags:
- Platformer
- '2D Platformer'
- Yoshi
---

View File

@ -3,7 +3,10 @@ import glob
import re
import os
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import sys
from dateutil import parser
from datetime import datetime
def is_in_year(year, content):
return re.search(r"date:\s?\"?" + str(year) + "-", content) is not None
@ -34,9 +37,18 @@ def to_game_entry(content, name):
return float(val.group(1))
if type(defval) is int:
return int(val.group(1))
if type(defval) is datetime:
return parser.parse(val.group(1).replace("\"", ""))
return val.group(1).replace("\"", "")
return { "cover": cover, "hltb": pry_out("howlongtobeat_hrs", 0.0), "name": pry_out("game_name", ""), "platform": game_platform, "score": pry_out("score", 0) }
return {
"cover": cover,
"hltb": pry_out("howlongtobeat_hrs", 0.0),
"name": pry_out("game_name", ""),
"platform": game_platform,
"score": pry_out("score", 0),
"release_date": pry_out("game_release_year", datetime.now())
}
def montage(games_list, year):
coverlist = list(map(lambda game: game["cover"], games_list))
@ -46,10 +58,20 @@ def montage(games_list, year):
os.system(cmd)
os.system("open " + file)
def group_per_platform(games_list):
per_platform = {}
for game in games_list:
if game["platform"] not in per_platform:
per_platform[game["platform"]] = [game]
else:
per_platform[game["platform"]].append(game)
return per_platform
def print_stats(games_list):
games_list = sorted(games_list, key=lambda game: game["hltb"])
total_hours = sum(list(map(lambda game: game["hltb"], games_list)))
print(" -- total #games: " + str(len(games_list)))
print(" -- total hours: " + str(total_hours))
print(" -- average hours: " + str(round(total_hours / len(games_list), 2)))
print(" -- average a day: " + str(round(total_hours / 355, 2)))
@ -59,23 +81,63 @@ def print_stats(games_list):
print(" -- shortest game: " + str(games_list[0]["hltb"]) + " hours; " + games_list[0]["name"])
print()
per_platform = {}
for game in games_list:
if game["platform"] not in per_platform:
per_platform[game["platform"]] = [game]
else:
per_platform[game["platform"]].append(game)
for k, v in per_platform.items():
for k, v in group_per_platform(games_list).items():
print(" -- Platform: " + k + " (" + str(len(v)) + "/" + str(len(games_list)) + ")")
recent_years = 2
print()
print("The **Recent GOTY** list:")
recent = list(filter(lambda g: datetime.now().year - g["release_date"].year <= recent_years, filter(lambda g: g["score"] >= 4, games_list)))
for game in recent:
print("- 💖 " + game["name"] + " (" + game["platform"] + "; " + str(game["release_date"].year) + ")")
print()
print("The **Vintage GOTY** list:")
vintage = list(filter(lambda g: datetime.now().year - g["release_date"].year, filter(lambda g: g["score"] >= 4, games_list)))
for game in vintage:
print("- 💖 " + game["name"] + " (" + game["platform"] + "; " + str(game["release_date"].year) + ")")
def generate_chart(games_list):
x = list(map(lambda g: g["name"], games_list))
y = list(map(lambda g: g["score"], games_list))
games_list = sorted(games_list, key=lambda game: game["score"])
mean_list_x = []
mean_list_y = []
legend_keys = []
legend_lines = []
legend_colors = {
'3ds': 'mediumaquamarine',
'ds': 'mediumturquoise',
'gameboy': 'olivedrab',
'gameboycolor': 'yellowgreen',
'gamecube': 'darkviolet',
'gba': 'slateblue',
'megadrive': 'royalblue',
'nes': 'firebrick',
'pc': 'dimgray',
'snes': 'orange',
'switch': 'red',
'wii': 'lightgrey'
}
for k, games in group_per_platform(games_list).items():
x = list(map(lambda g: g["name"], games))
y = list(map(lambda g: g["score"], games))
plt.bar(x, y, color=legend_colors[k])
legend_lines.append(Line2D([0], [0], color=legend_colors[k], lw=4))
legend_keys.append(k)
mean_list_x.append(x[len(x)//2])
mean_list_y.append(sum(list(map(lambda g: g["score"], games))) / len(games))
plt.plot(x, y)
plt.xticks(rotation = 90)
plt.plot(mean_list_x, mean_list_y, color='black')
plt.scatter(mean_list_x, mean_list_y, color='black')
for i, x in enumerate(mean_list_x):
y = mean_list_y[i]
plt.text(x, y + .2, round(y, 2))
plt.legend(legend_lines, legend_keys, loc="upper left")
plt.show()

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB