数据集:
TheGreatRambler/mm2_level
语言:
multilingual计算机处理:
multilingual大小:
10M<n<100M源数据集:
original其他:
text-mining许可:
cc-by-nc-sa-4.0Mario Maker 2 Dataset Collection 的一部分
Mario Maker 2 关卡数据集包含了任天堂在线服务中的 26.6 百万个关卡,总共约 100GB 的数据。该数据集是使用自托管 Mario Maker 2 api 在 2022 年 2 月的一个月时间内创建的。
Mario Maker 2 关卡数据集非常庞大,因此对于大多数使用情况,建议使用 datasets 的流式 API。可以使用以下代码加载和迭代数据集:
from datasets import load_dataset ds = load_dataset("TheGreatRambler/mm2_level", streaming=True, split="train") print(next(iter(ds))) #OUTPUT: { 'data_id': 3000004, 'name': 'カベキック', 'description': 'カベキックをとにかくするコースです。', 'uploaded': 1561644329, 'created': 1561674240, 'gamestyle': 4, 'theme': 0, 'difficulty': 0, 'tag1': 7, 'tag2': 10, 'game_version': 1, 'world_record': 8049, 'upload_time': 193540, 'upload_attempts': 1, 'num_comments': 60, 'clear_condition': 0, 'clear_condition_magnitude': 0, 'timer': 300, 'autoscroll_speed': 0, 'clears': 1646, 'attempts': 3168, 'clear_rate': 51.957070707070706, 'plays': 1704, 'versus_matches': 80, 'coop_matches': 27, 'likes': 152, 'boos': 118, 'unique_players_and_versus': 1391, 'weekly_likes': 0, 'weekly_plays': 1, 'uploader_pid': '5218390885570355093', 'first_completer_pid': '16824392528839047213', 'record_holder_pid': '5411258160547085075', 'level_data': [some binary data], 'unk2': 0, 'unk3': [some binary data], 'unk9': 3, 'unk10': 4, 'unk11': 1, 'unk12': 1 }
关卡数据是描述实际关卡的二进制数据块,等同于任天堂游戏中使用的关卡格式。数据是经过gzip压缩的,需要解压缩后才能读取。您只需要使用提供的 level.ksy kaitai 结构文件,并安装 kaitai 结构运行时将其解析为对象来读取:
from datasets import load_dataset from kaitaistruct import KaitaiStream from io import BytesIO from level import Level import zlib ds = load_dataset("TheGreatRambler/mm2_level", streaming=True, split="train") level_data = next(iter(ds))["level_data"] level = Level(KaitaiStream(BytesIO(zlib.decompress(level_data)))) # NOTE level.overworld.objects is a fixed size (limitation of Kaitai struct) # must iterate by object_count or null objects will be included for i in range(level.overworld.object_count): obj = level.overworld.objects[i] print("X: %d Y: %d ID: %s" % (obj.x, obj.y, obj.id)) #OUTPUT: X: 1200 Y: 400 ID: ObjId.block X: 1360 Y: 400 ID: ObjId.block X: 1360 Y: 240 ID: ObjId.block X: 1520 Y: 240 ID: ObjId.block X: 1680 Y: 240 ID: ObjId.block X: 1680 Y: 400 ID: ObjId.block X: 1840 Y: 400 ID: ObjId.block X: 2000 Y: 400 ID: ObjId.block X: 2160 Y: 400 ID: ObjId.block X: 2320 Y: 400 ID: ObjId.block X: 2480 Y: 560 ID: ObjId.block X: 2480 Y: 720 ID: ObjId.block X: 2480 Y: 880 ID: ObjId.block X: 2160 Y: 880 ID: ObjId.block
如果需要,可以使用 Toost 将关卡数据呈现为图像。
也可以下载完整的数据集。请注意,这将下载大约 100GB 的数据:
ds = load_dataset("TheGreatRambler/mm2_level", split="train")
{ 'data_id': 3000004, 'name': 'カベキック', 'description': 'カベキックをとにかくするコースです。', 'uploaded': 1561644329, 'created': 1561674240, 'gamestyle': 4, 'theme': 0, 'difficulty': 0, 'tag1': 7, 'tag2': 10, 'game_version': 1, 'world_record': 8049, 'upload_time': 193540, 'upload_attempts': 1, 'num_comments': 60, 'clear_condition': 0, 'clear_condition_magnitude': 0, 'timer': 300, 'autoscroll_speed': 0, 'clears': 1646, 'attempts': 3168, 'clear_rate': 51.957070707070706, 'plays': 1704, 'versus_matches': 80, 'coop_matches': 27, 'likes': 152, 'boos': 118, 'unique_players_and_versus': 1391, 'weekly_likes': 0, 'weekly_plays': 1, 'uploader_pid': '5218390885570355093', 'first_completer_pid': '16824392528839047213', 'record_holder_pid': '5411258160547085075', 'level_data': [some binary data], 'unk2': 0, 'unk3': [some binary data], 'unk9': 3, 'unk10': 4, 'unk11': 1, 'unk12': 1 }
Field | Type | Description |
---|---|---|
data_id | int | Data IDs are unique identifiers, gaps in the table are due to levels deleted by users or Nintendo |
name | string | Course name |
description | string | Course description |
uploaded | int | UTC timestamp for when the level was uploaded |
created | int | Local timestamp for when the level was created |
gamestyle | int | Gamestyle, enum below |
theme | int | Theme, enum below |
difficulty | int | Difficulty, enum below |
tag1 | int | The first tag, if it exists, enum below |
tag2 | int | The second tag, if it exists, enum below |
game_version | int | The version of the game this level was made on |
world_record | int | The world record in milliseconds |
upload_time | int | The upload time in milliseconds |
upload_attempts | int | The number of attempts it took the uploader to upload |
num_comments | int | Number of comments, may not reflect the archived comments if there were more than 1000 comments |
clear_condition | int | Clear condition, enum below |
clear_condition_magnitude | int | If applicable, the magnitude of the clear condition |
timer | int | The timer of the level |
autoscroll_speed | int | A unit of how fast the configured autoscroll speed is for the level |
clears | int | Course clears |
attempts | int | Course attempts |
clear_rate | float | Course clear rate as a float between 0 and 1 |
plays | int | Course plays, or "footprints" |
versus_matches | int | Course versus matches |
coop_matches | int | Course coop matches |
likes | int | Course likes |
boos | int | Course boos |
unique_players_and_versus | int | All unique players that have ever played this level, including the number of versus matches |
weekly_likes | int | The weekly likes on this course |
weekly_plays | int | The weekly plays on this course |
uploader_pid | string | The player ID of the uploader |
first_completer_pid | string | The player ID of the user who first cleared this course |
record_holder_pid | string | The player ID of the user who held the world record at time of archival |
level_data | bytes | The GZIP compressed decrypted level data, kaitai struct file is provided for reading |
unk2 | int | Unknown |
unk3 | bytes | Unknown |
unk9 | int | Unknown |
unk10 | int | Unknown |
unk11 | int | Unknown |
unk12 | int | Unknown |
数据集仅包含一个训练集。
数据集中包含一些枚举整数字段。这可以用于将其转换回相应的字符串等效项:
GameStyles = { 0: "SMB1", 1: "SMB3", 2: "SMW", 3: "NSMBU", 4: "SM3DW" } Difficulties = { 0: "Easy", 1: "Normal", 2: "Expert", 3: "Super expert" } CourseThemes = { 0: "Overworld", 1: "Underground", 2: "Castle", 3: "Airship", 4: "Underwater", 5: "Ghost house", 6: "Snow", 7: "Desert", 8: "Sky", 9: "Forest" } TagNames = { 0: "None", 1: "Standard", 2: "Puzzle solving", 3: "Speedrun", 4: "Autoscroll", 5: "Auto mario", 6: "Short and sweet", 7: "Multiplayer versus", 8: "Themed", 9: "Music", 10: "Art", 11: "Technical", 12: "Shooter", 13: "Boss battle", 14: "Single player", 15: "Link" } ClearConditions = { 137525990: "Reach the goal without landing after leaving the ground.", 199585683: "Reach the goal after defeating at least/all (n) Mechakoopa(s).", 272349836: "Reach the goal after defeating at least/all (n) Cheep Cheep(s).", 375673178: "Reach the goal without taking damage.", 426197923: "Reach the goal as Boomerang Mario.", 436833616: "Reach the goal while wearing a Shoe.", 713979835: "Reach the goal as Fire Mario.", 744927294: "Reach the goal as Frog Mario.", 751004331: "Reach the goal after defeating at least/all (n) Larry(s).", 900050759: "Reach the goal as Raccoon Mario.", 947659466: "Reach the goal after defeating at least/all (n) Blooper(s).", 976173462: "Reach the goal as Propeller Mario.", 994686866: "Reach the goal while wearing a Propeller Box.", 998904081: "Reach the goal after defeating at least/all (n) Spike(s).", 1008094897: "Reach the goal after defeating at least/all (n) Boom Boom(s).", 1051433633: "Reach the goal while holding a Koopa Shell.", 1061233896: "Reach the goal after defeating at least/all (n) Porcupuffer(s).", 1062253843: "Reach the goal after defeating at least/all (n) Charvaargh(s).", 1079889509: "Reach the goal after defeating at least/all (n) Bullet Bill(s).", 1080535886: "Reach the goal after defeating at least/all (n) Bully/Bullies.", 1151250770: "Reach the goal while wearing a Goomba Mask.", 1182464856: "Reach the goal after defeating at least/all (n) Hop-Chops.", 1219761531: "Reach the goal while holding a Red POW Block. OR Reach the goal after activating at least/all (n) Red POW Block(s).", 1221661152: "Reach the goal after defeating at least/all (n) Bob-omb(s).", 1259427138: "Reach the goal after defeating at least/all (n) Spiny/Spinies.", 1268255615: "Reach the goal after defeating at least/all (n) Bowser(s)/Meowser(s).", 1279580818: "Reach the goal after defeating at least/all (n) Ant Trooper(s).", 1283945123: "Reach the goal on a Lakitu's Cloud.", 1344044032: "Reach the goal after defeating at least/all (n) Boo(s).", 1425973877: "Reach the goal after defeating at least/all (n) Roy(s).", 1429902736: "Reach the goal while holding a Trampoline.", 1431944825: "Reach the goal after defeating at least/all (n) Morton(s).", 1446467058: "Reach the goal after defeating at least/all (n) Fish Bone(s).", 1510495760: "Reach the goal after defeating at least/all (n) Monty Mole(s).", 1656179347: "Reach the goal after picking up at least/all (n) 1-Up Mushroom(s).", 1665820273: "Reach the goal after defeating at least/all (n) Hammer Bro(s.).", 1676924210: "Reach the goal after hitting at least/all (n) P Switch(es). OR Reach the goal while holding a P Switch.", 1715960804: "Reach the goal after activating at least/all (n) POW Block(s). OR Reach the goal while holding a POW Block.", 1724036958: "Reach the goal after defeating at least/all (n) Angry Sun(s).", 1730095541: "Reach the goal after defeating at least/all (n) Pokey(s).", 1780278293: "Reach the goal as Superball Mario.", 1839897151: "Reach the goal after defeating at least/all (n) Pom Pom(s).", 1969299694: "Reach the goal after defeating at least/all (n) Peepa(s).", 2035052211: "Reach the goal after defeating at least/all (n) Lakitu(s).", 2038503215: "Reach the goal after defeating at least/all (n) Lemmy(s).", 2048033177: "Reach the goal after defeating at least/all (n) Lava Bubble(s).", 2076496776: "Reach the goal while wearing a Bullet Bill Mask.", 2089161429: "Reach the goal as Big Mario.", 2111528319: "Reach the goal as Cat Mario.", 2131209407: "Reach the goal after defeating at least/all (n) Goomba(s)/Galoomba(s).", 2139645066: "Reach the goal after defeating at least/all (n) Thwomp(s).", 2259346429: "Reach the goal after defeating at least/all (n) Iggy(s).", 2549654281: "Reach the goal while wearing a Dry Bones Shell.", 2694559007: "Reach the goal after defeating at least/all (n) Sledge Bro(s.).", 2746139466: "Reach the goal after defeating at least/all (n) Rocky Wrench(es).", 2749601092: "Reach the goal after grabbing at least/all (n) 50-Coin(s).", 2855236681: "Reach the goal as Flying Squirrel Mario.", 3036298571: "Reach the goal as Buzzy Mario.", 3074433106: "Reach the goal as Builder Mario.", 3146932243: "Reach the goal as Cape Mario.", 3174413484: "Reach the goal after defeating at least/all (n) Wendy(s).", 3206222275: "Reach the goal while wearing a Cannon Box.", 3314955857: "Reach the goal as Link.", 3342591980: "Reach the goal while you have Super Star invincibility.", 3346433512: "Reach the goal after defeating at least/all (n) Goombrat(s)/Goombud(s).", 3348058176: "Reach the goal after grabbing at least/all (n) 10-Coin(s).", 3353006607: "Reach the goal after defeating at least/all (n) Buzzy Beetle(s).", 3392229961: "Reach the goal after defeating at least/all (n) Bowser Jr.(s).", 3437308486: "Reach the goal after defeating at least/all (n) Koopa Troopa(s).", 3459144213: "Reach the goal after defeating at least/all (n) Chain Chomp(s).", 3466227835: "Reach the goal after defeating at least/all (n) Muncher(s).", 3481362698: "Reach the goal after defeating at least/all (n) Wiggler(s).", 3513732174: "Reach the goal as SMB2 Mario.", 3649647177: "Reach the goal in a Koopa Clown Car/Junior Clown Car.", 3725246406: "Reach the goal as Spiny Mario.", 3730243509: "Reach the goal in a Koopa Troopa Car.", 3748075486: "Reach the goal after defeating at least/all (n) Piranha Plant(s)/Jumping Piranha Plant(s).", 3797704544: "Reach the goal after defeating at least/all (n) Dry Bones.", 3824561269: "Reach the goal after defeating at least/all (n) Stingby/Stingbies.", 3833342952: "Reach the goal after defeating at least/all (n) Piranha Creeper(s).", 3842179831: "Reach the goal after defeating at least/all (n) Fire Piranha Plant(s).", 3874680510: "Reach the goal after breaking at least/all (n) Crates(s).", 3974581191: "Reach the goal after defeating at least/all (n) Ludwig(s).", 3977257962: "Reach the goal as Super Mario.", 4042480826: "Reach the goal after defeating at least/all (n) Skipsqueak(s).", 4116396131: "Reach the goal after grabbing at least/all (n) Coin(s).", 4117878280: "Reach the goal after defeating at least/all (n) Magikoopa(s).", 4122555074: "Reach the goal after grabbing at least/all (n) 30-Coin(s).", 4153835197: "Reach the goal as Balloon Mario.", 4172105156: "Reach the goal while wearing a Red POW Box.", 4209535561: "Reach the Goal while riding Yoshi.", 4269094462: "Reach the goal after defeating at least/all (n) Spike Top(s).", 4293354249: "Reach the goal after defeating at least/all (n) Banzai Bill(s)." }
数据集是在2022年2月份的一个多月时间内使用自托管 Mario Maker 2 api 创建的。由于对任天堂服务器的请求需要验证,因此必须小心进行处理,并限制下载速度,以免过载API并冒着被禁止的风险。目前没有创建此数据集的更新版本的计划。
数据集包含来自全球各地的许多不同的 Mario Maker 2 玩家的关卡,因此它们的标题和描述可能包含有害的语言。如果选择呈现关卡数据,可能还会出现有害的描绘。