Optimizing Nintendo 64 Code with Kaze Emanuar——程序员-听播客-学英语-02
主题:Optimizing Nintendo 64 Code with Kaze Emanuar
来源/音频链接:https://softwareengineeringdaily.com/2024/04/05/bonus-episode-optimizing-nintendo-64-code-kaze-emanuar/
全文(带中文翻译和注释):
EPISODE 1666
[INTRODUCTION]
[0:00:00.0] ANNOUNCER: Kaze Emanuar is a ROM hacker who is famous for the array of mods he's made for Super Mario 64. He's implemented remarkable optimization to the decompiled game code, even pushing Super Mario 64 to run at 60 frames per second. Kaze joins the show to talk about his interest in Super Mario 64. ROM hacking, the N64 architecture, coding and Assembly, and more. Be sure to check out Kaze's YouTube channel to see his work, including breakdowns of how he accomplished his optimizations.
(播音员:Kaze Emanuar是一名ROM黑客,以他为《超级马里奥64》制作的一系列MOD而闻名。他对反编译的游戏代码进行了显著的优化,甚至推动《超级马里奥64》以每秒60帧的速度运行。Kaze加入节目,谈论他对《超级马里奥64》的兴趣。ROM破解、N64架构、编码和组装等。一定要查看Kaze的YouTube频道,看看他的工作,包括他如何完成优化的详细信息。)
Joe Nash is a developer, educator, and award-winning community builder, who has worked at companies including GitHub, Twilio, Unity, and PayPal. Joe got a start in software development by creating mods and running servers for Garry's Mod, and game development remains his favorite way to experience and explore new technologies and concepts.
(Joe Nash是一位开发者、教育家和屡获殊荣的社区建设者,曾在GitHub、Twilio、Unity和PayPal等公司工作。乔通过为Garry's Mod创建Mod和运行服务器开始了软件开发,游戏开发仍然是他最喜欢的体验和探索新技术和概念的方式。)
[INTERVIEW]
[0:01:03.9] JN: Welcome to the showcase, how are you doing?
(JN:欢迎参加节目,你好吗?)
[0:01:06.0] KE: Hello, I'm doing very well.
(KE:你好,我很好。)
[0:01:07.5] JN: Awesome. Well, thank you for joining me today. This has been a long-anticipated episode by many folks here on the team. So, I guess to kick everything off for listeners who are not familiar, what is a ROM hack? Can you explain briefly, you know, what that is fundamentally for folks who haven't heard of it before?
(JN:非常不错,谢谢你今天和我一起。这是团队中许多人期待已久的一期节目。所以,我想为那些不熟悉的听众拉开序幕,什么是ROM破解?你能简单地解释一下,你知道,对于以前没有听说过它的人来说,这从根本上是什么吗?)
[0:01:23.7] KE: Right. So, if you release a game, like on a console, you're going to have your game on a cartridge or on a CD. And a ROM hack is basically, you dump the cartridge onto your computer, you modify the contents of it and then you put it back into the console and then you get to play it.
(KE:好吧。所以,如果你在游戏机上发布一款游戏,游戏会存储在卡带或光盘上。而ROM破解基本上是指,你把卡带的内容拷贝到电脑上,修改其内容,然后再放回游戏机里,然后就可以玩了。)
[0:01:38.7] JN: Awesome. So, in the context of you know, Nintendo 64, that you know, we're talking the big beefy cartridges and what is it that coming off that when you dump those?
(JN:太棒了。所以,在任天堂64的背景下,我们谈论的是那些又大又重的卡带,当你拷贝那些卡带时,会从中提取出什么东西?)
[0:01:47.3] KE: Well, it's just a huge file of just binary data and you have got to somehow make sense out of it.
(KE:它只是一个巨大的二进制文件然后你得想办法搞懂它的含义。)
[0:01:53.4] JN: Awesome. So, I mean, that is a pretty esoteric way to go about programming. How did you get started doing this?
(JN:真不错。所以,这是一种相当深奥的编程方式。你是如何开始这样做的?)
[0:02:00.9] KE: So, I think this was 2012, I randomly saw another mod someone made and I've always liked making games. So, I saw it, I was like, dude, this is possible, I want to make some too.
(KE:我认为那是在2012年,我偶然看到了别人做的一个mod(修改),我一直喜欢做游戏,所以,当我看到了,我想这是可行的,我也想自己做一些。)
[0:02:11.5] JN: Awesome. Okay, so when I was first introduced to your content, I was, you know, doing lots of mods for Super Mario 64, and then I was looking for those mods and was like, oh, these are increasingly intricate. Wait a minute, these are just like, straight-up other games. And so, I'm kind of getting this idea that like, you have made Super Mario 64 like your personal game engine at this point, would you say that's an accurate description of what you're doing with it?
(JN:太棒了。好的,当我第一次接触到你的内容时,对,就是为《超级马里奥64》做很多mod。然后我寻找这些mod,发现它们越来越复杂。等等,这些简直就是其他游戏。所以,我有点这种感觉,就是你已经把《超级马里奥64》变成了你个人的游戏引擎,你认为这样的描述对你所做的来说是准确的吗?)
[0:02:35.6] KE: Yeah, pretty much, it's really just like using the visuals of Mario 64 and like the physics at this point. Although, even those have changed a lot. The underlying engine at this point, I basically reprogrammed the whole thing because I wanted it to run well on the real N64. So, I did use it for as like a game engine for like the longest time but slowly, I'm starting to replace the entire engine to like, my own thing.
(KE:是的,基本上是这样的,我现在主要是使用《超级马里奥64》的视觉效果和物理引擎。尽管如此,即使是这些也已经发生了很大变化。到了这个阶段,我基本上重新编写了整个引擎,因为我想让它能在真正的N64上运行良好。所以,我确实用了很长时间将它作为一个游戏引擎,但逐渐地,我开始将整个引擎替换成我自己的东西。)
[0:02:58.8] JN: Just like hollowing out and living inside it.
(JN:就像把它掏空了然后住在里面一样。)
[0:03:01.1] KE: Yeah.
(KE:是啊。)
[0:03:00.9] JN: So, why SM64? Like, where did that start? Why that game in particular?
(JN:那么,为什么是SM64呢?这一切是从哪里开始的?为什么选择这款游戏?)
[0:03:06.1] KE: It was always the game during my childhood that I was involved with. I didn't have the game when I was a little kid, I could only play it at the cousin's house. So, it was a game that was in my mind for like, years because I just couldn't, never play through it because I didn't have the game. So, it stuck in my mind and then it just, the interest grew.
(KE:在我小时候,这款游戏是我一直参与其中的游戏。当我还是个小孩子的时候,我们家没有这款游戏,我只能在表亲家玩。所以,这是一款我在脑海中想了多年的游戏,因为我一直没能完整地玩过它,因为我没有这个游戏。所以,它留在了我的脑海中,然后兴趣逐渐增长。)
[0:03:23.6] JN: Interesting. So, you've said you've got, like loads and loads and loads of live things built on top of Super Mario 64. Do any of them, you know, for viewers who haven't seen them before, is anything sticking out with like, your favorite that you'd recommend they'd check?
(JN:有趣。你提到了你在《超级马里奥64》上构建了许多许多实时的东西。对于那些之前没看过的人,有没有什么特别突出的,是你特别喜欢的,推荐他们去查看的?)
[0:03:34.9] KE: My favorite mod is usually always the last one I made. I think one that is very, very underrated that a lot of people should play that's actually not a Mario 64 mod is Missing Link, which is an integral between Ocarina of Time and Majora's Mask. Like, tells a story between those two games and it's a very polished experience that I think is very fun.
(KE:我最喜欢的模组通常总是我最近制作的那个。我认为一个非常被低估的、很多人都应该玩但实际上不是《超级马里奥64》的mod是《失踪的链接》(Missing Link),它是《塞尔达传说:时之笛》和《塞尔达传说:荒野之息》之间的桥梁。它讲述了这两款游戏之间的故事,并且是一个我非常认为很有趣的精细体验。)
[0:03:55.1] JN: Awesome. Yeah, I would love to play that one. Similar to your story about playing Super Mario 64 as a kid, I had Ocarina of Time but never got to play Majora's Mask and so, it's kind of stuck there as like a game that I might one day, I will go back and I own that game, so that sounds awesome as an interstitial between them.
(JN:太棒了。是的,我很想玩那个mod。就像你小时候玩《超级马里奥64》的故事一样,我玩过《塞尔达传说:时之笛》但从未玩过《塞尔达传说:荒野之息》,所以,它在我心中一直是一个我总有一天会回去玩的游戏,而且我已经拥有了那个游戏,所以作为这两款游戏之间的过渡听起来很棒。)
So, could you walk us through a little bit on the process of like, how you're doing these ROM hacks, like what that looks like as a development process? And also, I imagine, we'll get into some of it later, I guess but that process has changed for you over the years as well, right?
(所以,你能稍微介绍一下你进行ROM破解的过程吗?就像开发过程是什么样的?而且我想,我们稍后会涉及到一些内容,但这个过程随着时间的推移也发生了变化,对吗?)
[0:04:23.0] KE: Yeah, of course, especially with the decomp, everything changed.
(KE:当然,尤其是随着解构(decomp)的出现,一切都有所改变。)
[0:04:25.6] JN: Right, awesome. So, like where did it start? So, back into ROM hacking days, I guess.
(JN:对,很棒。那么,它是从哪里开始的呢?所以,让我们回到ROM黑客的时代。)
[0:04:29.4] KE: Yeah, back in the ROM hacking days, we would kind of make assets with the hacks editor, like little scripts that could convert OVJ files into microcode data, which is you know, the model format that Mario 64 uses. We would use an Assembly editor called NASM, which would just have the Assembly code of the entire ROM listed, like, top to bottom and you had to enter lines one by one.
(KE:好的,在ROM黑客的时代,我们会用黑客编辑器制作资产,比如可以将OVJ文件转换成微代码数据的小脚本,这是《超级马里奥64》使用的模型格式。我们会使用一个叫做NASM的汇编编辑器,它会把整个ROM的汇编代码列出来,从上到下,你得一个一个输入行。)
We didn't even have like, anything to put the lines in. It was very, very painful to do. Every time you enter the line, your computer would make the Windows error sounds. I get used to hearing that like a thousand times a day. That's it.
(我们甚至没有东西来输入这些行。这样做非常痛苦。每次输入一行,你的电脑都会发出Windows错误声音。我习惯了每天听一千遍那种声音。就这样。)
[0:05:04.3] JN: Yeah. So, did you have any experience with Assembly before you started doing this? So, is this like, where you learned about Assembly?
(JN:是的。所以在开始这样做之前,你有任何汇编语言的经验吗?这是你学习汇编的地方吗?)
[0:05:11.1] KE: No, Assembly was basically my first programming language.
(KE:没有,汇报语言基本上是我的第一门编程语言。)
[0:05:13.9] JN: Incredible. I think, like to a lot of developers, especially, you know, people with my development background, you know, web development and that kind of stuff, which a lot of you know, I think a lot of our audience live in that space, the idea of just like, writing raw Assembly to make something as complicated as a game happen. It's probably like, absolutely nightmare-inducing but how do you even begin to ... Is it just a case of like, change it off and see what happens to like, get to grips with it?
(JN:难以置信。我认为,对于很多开发者来说,特别是像我这样的开发者背景,也就是Web开发之类的事情,很多人都知道,我认为我们很多观众都在这个领域。仅仅为了让像游戏这样复杂的事情发生而编写原始的汇编语言,这可能就像绝对的噩梦一样,但你是如何开始... 难道只是关掉它看看会发生什么,以此来掌握它吗?)
[0:05:37.7] KE: Okay, Assembly is actually one of the easier things to learn I think. Not because like, it's easy to program in it but because the N64 uses a MIPS architecture, which means there's just like 50 or 60 instructions you will ever need. You can just look through them and learn them in just a few hours. The difficult part is putting them together but that's like the fun part, right? That's like solving a puzzle, that's like, yeah, there's things about that.
(KE:好的,汇编实际上是我认为比较容易学习的东西之一。不是因为编程起来容易,而是因为N64使用了MIPS架构,这意味着你只需要了解大约50到60个指令。你只需查阅它们并在几小时内学会。困难的部分是它们之间的组合,但那是有趣的部分,对吧?就像解谜一样,那是...类似这样的事情。)
The barrier to entry for Assembly I think is a lot lower because when you program with CEF to deal with compilers, you have to Google so many errors and figure out how it all works. Assembly, it just works.
(我认为汇编的入门门槛要低得多,因为你用CEF编程时,要处理编译器,你必须谷歌查询很多错误并弄清楚它是如何工作的。而汇编,它就能正常工作。)
[0:06:11.7] JN: It makes a lot of sense actually, yeah. I guess that kind of reminds me of like, I got obsessed with a fourth dialect during the lockdown, just because there was like so little to it that it just felt like a really freeing environment and I guess that kind of applies same to Assembly.
(JN:实际上,这是有道理的,是的。我想这让我想起了,在封锁期间,我迷恋上了第四种方言,只是因为它非常简单,所以感觉就像一个非常自由的环境,我想这种说法也适用于汇编语言。)
So, you mentioned the N64's architecture there. I don't want to make you just repeat your YouTube videos, which are excellent but you've got, you do a really great job of like, describing the memory architecture and how it interacts with the CPU and the GPU in rendering. Can you briefly tell us like, how the Nintendo, I guess, like, how the N64 works as a console?
(所以,你提到了N64的架构。我不想让你重复你的YouTube视频,那些视频非常出色,但你有,你做得非常好的是描述内存架构以及它是如何与CPU和GPU在渲染中相互作用的。你能简要告诉我们,比如,任天堂,我想知道,N64作为游戏机是如何工作的吗?)
[0:06:41.2] KE: Yeah. So, the N64 has the shared memory so the CPU and the GPU, which you know, in the N64 it's not called GPU, it's called the RCP, the Reality Co-Processor, something like that, they share the same memory. So, whenever you use the CPU, you also slow down the rendering, which makes this a very weird situation because like, every time you optimize, you also optimize your rendering even if it's completely unrelated.
(KE:是的。所以,N64有共享内存,CPU和GPU(你知道,在N64中不叫GPU,而是叫做RCP,现实共同处理器之类的),它们共享相同的内存。所以,每当你使用CPU时,你也会减慢渲染速度,这使得这种情况非常奇怪,因为每次你优化,你也在优化你的渲染,即使它们完全不相关。)
[0:07:04.1] JN: Right, and so, that's been, as far as I understand it, that's been a focus quite a lot of your optimization at first at SM64. Can you, I guess, first of all, explain like, why did you have to start optimizing SM64? Like, what were you trying to achieve?
(JN:对,所以,据我理解,这在一开始是你在SM64优化工作中的一个重点。你能否首先解释一下,你为什么开始优化SM64?你试图实现什么目标?)
[0:07:20.2] KE: Yeah, so while I was working on my mod, Return to Yoshi's Island and while I was working on it, I think I was in like the fourth level and I noticed a spot ran at like nine frames a second and it wasn't really like, I didn't really think it should run that poorly. So, I looked under the hood, it's like, what's going on in the engine and I know this is like truly, truly terrible, what's going on nowadays with my optimizations that sport run like 60 FPS.
(KE:是的,所以当我正在制作我的mod《Return to Yoshi's Island》时,我在制作过程中,我认为我正在第四个关卡,我注意到有一个地方运行得只有九帧每秒,而且它并不是,我真的不认为它应该运行得那么糟糕。所以,我看了看引擎内部,而这真的是非常、非常糟糕的情况。现在我的优化已经可以让这个场景以60帧每秒运行,)
[0:07:45.5] JN: Do you actually like, on the hardware, the max is 30, right? So like, your ...
(JN:真的吗?硬件的极限不是30帧吗?)
[0:07:49.2] KE: No, on the hardware, the max is 60.
(KE:不是,硬件的极限是60帧。)
[0:07:51.1] JN: Oh, okay, cool, awesome, nice. So, we've mentioned the hardware and the rendering thing, I know you did some things to get around that. What are some of the like, most interesting optimizations you've run into? I know there's a lot so I don't know if that's an easy question to answer but.
(JN:哦,好的,酷,太棒了,很好。所以我们提到了硬件和渲染方面,我知道你做了一些事情来解决这个问题。你遇到过哪些最有趣的优化方法?我知道有很多,所以我不知道这个问题是否容易回答,但是……)
[0:08:05.8] KE: It depends on who you are, what you find interesting, it's kind of difficult answer. I guess, the interesting part is like, that every time you optimize the CPU with the GPU, it gets faster. So, a lot of my optimizations is like making sure that stuff is like better aligned to cache lines, making sure that like, an entire thread on the CPU, like the render, like if it's into just one block of cache or like sound print as well that way, you never have to like, use the RAM and the GPU goes very fast.
(KE:这取决于你是谁,你认为什么是有趣的,这是一个有点难以回答的问题。我想,有趣的部分是,每次你优化CPU和GPU的交互,它都会变得更快。所以,我很多优化工作都是确保事物更好地对齐到缓存行,确保像CPU上的整个线程,比如渲染,如果它只用到缓存中的一个块或者像声音打印也是如此,这样你就永远不需要像使用RAM,GPU运行得非常快。)
[0:08:29.9] JN: Awesome. Yeah, that makes a lot of sense. Actually, I think James mentioned something similar where he was doing something to make sure it will all fill in the cache and wasn't hitting the RAM. So, you mentioned earlier, this like, decomp effort. So, originally, you've working from like the ROM dom but now, you have access to you know, the Super Mario 64 code or a version of the code. How did that come about?
(JN:太棒了。是的,这很有道理。实际上,我认为James也提到了类似的内容,他做一些事情来确保一切都能填充到缓存中,而不是访问RAM。所以,你之前提到了这种解包工作。所以,最初,你是从ROM镜像开始工作的,但现在,你有访问超级马里奥64代码或代码的某个版本的能力。这是怎么发生的?)
[0:08:51.5] KE: So, there was a guy called Revo. He found out which compiler Nintendo originally used to make Mario 64 and if you have the execs and compiler, you can just take a function and if you write a Sync code that's equivalent, it will compile to the exact same binary. And they use this to make the compilation that compiles one to one to the exact same byte codes.
(KE:有一个人叫Revo。他发现了任天堂最初用来制作超级马里奥64的编译器是哪个,如果你有可执行文件和编译器,你就可以直接取一个函数,如果你写一个等效的同步代码,它会编译成完全相同的二进制文件。他们使用这个方法来制作编译器,这个编译器可以一对一地编译成完全相同的字节码。)
[0:09:11.6] JN: Wow, fascinating. So, they decompiled it and they're more able to determine if it was direct implementation of each match by code, is that, have I?
(JN:哇,太吸引人了。所以他们解构了它,并且能够更准确地确定是否是直接通过代码实现的每一轮关卡,是这样的吗?)
[0:09:22.9] KE: Yeah, exactly.
(KE:是的,正是如此。)
[0:09:23.1] JN: Yeah, awesome. Wow, okay, that's very cool, and I imagine that opened up a lot of doors for you in terms of like, what you were then able to do in the ease of what you're be able to do. Was that like, were there some things that that enabled that you weren't quite able to do before, I guess, optimization is one of them.
(JN:是的,太棒了。哇,好的,这真的很酷,我想这为您打开了许多门,使您能够更容易地做到一些以前做不到的事情。比如,有哪些事情是因为这个而变得可能,我想优化就是其中之一。)
[0:09:36.8] KE: Yeah, it's been a lot, a lot easier to work on Sync code than Assembly code, you can make much more powerful changes very easily.
(KE:是的,与汇编代码相比,编写同步代码要容易得多,你可以很容易地做出更强大的更改。)
[0:09:43.2] JN: Absolutely, that makes a lot of sense. So, along the way now, you've got access to that Sync code, you meant to do some optimizations like, what are some of the... I guess, gameplay features you're been able to do that you weren't able to do before?
(JN:当然,这很有意义。所以现在在这个过程中,你已经能够访问同步代码了,你打算进行一些优化,那么一些...我猜,是哪些游戏玩法特性你之前做不到,现在却能做到呢?)
[0:09:54.3] KE: One thing that was very easy also, the multiplayer mode and binary, I never really gave a try. There was a multiplayer mode but it shared the camera between both players but with the decomp and this was my first week of even learning C and within one week, it was very easy to just add multiplayer and it literally just worked.
(KE:还有一件非常容易的事情,就是多人模式和二进制文件,我从来没真正尝试过。原本有个多人模式,但它共享摄像头,不过通过反编译以及这是我学习C语言的第一周,我很快就添加了多人模式,它实际上就这样直接工作了。)
[0:10:11.4] JN: That's crazy. That's the first time I've heard of the multiplayer, how did that work? Was there a server, like, managing the multiplayer, was it peer-to-peer?
(JN:太疯狂了。这是我第一次听说多人模式,它是如何工作的?有没有服务器来管理多人游戏,还是说是点对点的?)
[0:10:18.5] KE: No, it was on a cartridge. Right, it was just the ROM, you could just play it on N64, it was like, two screens.
(KE:没有,它是在卡带上的。对,就是只读存储器(ROM),你可以在N64上直接玩,就是两个屏幕。)
[0:10:24.4] JN: Oh, interesting. Okay. Huh, fascinating. So, you just plug two screens into the N64 and then just play?
(JN:哦,有趣。好的。嗯,太神奇了。所以你是把两个屏幕插到N64上然后就开始玩吗?)
[0:10:30.7] KE: You just play it on the TV and it's a split screen, like the old N64 games.
(KE:你只是在电视上玩,是一个分屏模式,就像老式的N64游戏。)
[0:10:34.7] JN: Okay, so, it's like the local multiplayer, awesome. Sorry, I thought it was a online multiplayer for a minute. That shows you where games have gone where I'm just like, so the world of split-screen multiplayer has been so eviscerated, it didn't even occur to my brain as an option.
(JN:好的,所以这是一种本地多人游戏,太棒了。抱歉,我刚才以为它是线上多人游戏。这说明了游戏的发展到了什么程度,我甚至没有考虑到分屏多人游戏这个选项。)
[0:10:48.2] KE: There is an online multiplayer that I made in I think, 2017 or 2018. That was a lot easier to do because all you have to do like send the player position to each other. This was also in Assembly, which you know, much less powerful.
(KE:我在2017年或2018年做了一个在线多人模式。这很容易实现,因为你只需要把玩家的位置发送给对方。这也是在汇编语言中实现的,你知道,汇编语言的性能要弱得多。)
[0:11:01.4] JN: Yeah, absolutely, awesome. So, I want to talk a little bit about you know, some of the... I guess, less on the technical, well, less on like the coding side and more I guess on like the implementation of the games and design side. Because I was watching one of your videos recently. It was, I think a video, you're showing off a little bit of a new mod you are working on, the underwater domes one.
(JN:是的,绝对很棒。所以,我想谈一点关于,嗯,一些不那么技术的方面,好吧,不那么编码方面的内容,而更多的是关于游戏实施和设计方面。因为我最近看了一个你的视频。那是一个视频,你展示了一个你正在制作的新mod,the underwater domes(水下穹顶)的那个。)
You said something really interesting where you were describing your level of design, eFAST. So, wanting everything to have a sense of placeness. Can you tell us a little bit about that?
(你提到了一个很有趣的点,你描述了你的关卡设计,eFAST。所以,你希望一切都有“身临其境感”。你能告诉我们更多关于那方面的内容吗?)
[0:11:27.7] KE: Yeah, placeness is just a random word that I made up and it's kind of a meme that I make bad variable names like farawayness instead of distance but it makes sense in this scenario because it wasn't distance. Yeah, so placeness is basically how much the level feels like an actual place you're in, right? The Dome is a good example because it's, you are like the deep in the sea and it's like a reverse aquarium, you're like in these glass domes.
(KE:是的,"placeness" 是一个我自己随便想出来的词,它算是一个我起的变量名很糟糕的玩笑,比如用 "farawayness" 而不是 "distance"(距离)。但在这种情况下它是有意义的,因为它不是指距离。所以,"placeness" 基本上是指一个关卡感觉上有多么像一个你实际所在的地方,对吧?穹顶就是一个很好的例子,因为它让你感觉像是深入海洋,就像是倒置的水族馆,你就像置身于这些玻璃穹顶之中。)
It really feels like a place you can imagine yourself being in and that's something I like in my levels.
(它真的让人感觉像是你可以想象自己身处其中的地方,这是我喜欢我关卡中的一个特点。
)
[0:11:53.8] JN: What are some things that you think, really like, make those sense of place in terms of like, features you add to the game?
(JN:你认为有哪些事物,比如你添加到游戏中的功能,真正能让游戏产生那种场景感?)
[0:11:59.1] KE: I guess it's important that it's like an interesting fantasy, right? Something where you play the game and then you go to bed and you're like, wouldn't it be cool, to like, explore this? I think what you need in your game is like, you need like decent platforming. It doesn't need to be anything super special, and then cool ideas on top of that, and you already got a good game. So, that't the idea here.
(翻译:我认为重要的是它有一个有趣的幻想元素,对吧?就是那种你玩了游戏然后上床睡觉,你会想,探索这个会不会很酷。我认为你的游戏需要的是像,像样的平台跳跃机制。它不需要特别特别出色,然后在那个基础上再有酷炫的想法,那样你就有了个不错的游戏。所以,这就是这里的想法。)
[0:12:20.3] JN: Yeah, that's awesome, that makes a lot of sense. Yeah, I guess like another one of your levels, which like, I always think kind of like gives me that feeling like, just from watching the videos, it's like the theme park level, I think, particularly, when there is like the Whomp being like posing for the photo, is like one where everyone is just like, oh, that just makes it feel like... When there were like generic enemy NPCs that are like doing people stuff, you're just always like, oh, this is a living world, it's very cool, it's very interesting.
(JN:是的,这很棒,这很有道理。是的,我想你的另一个关卡,我一直觉得那给了我那种感觉,只是从看视频就能感受到,那个主题公园关卡,特别是当有一个像Whomp这样的角色在摆姿势拍照的时候,大家都像是在说,“哦,这让我感觉...” 当有那些普通的敌人NPC在做一些人的事情时,你总会想,这是一个真实的世界,这非常酷,非常有趣。)
[0:12:45.3] KE: Yup, exactly like that.
(KE:正是如此。)
[0:12:46.7] JN: So, one of the things that I saw very recently actually, was that your mods are very popular for speed runners. Whenever we get a game dev on whose got speed-running community, I always like to ask, have there been any runs of your content that have surprised you?
(JN:所以,实际上我最近看到的一件事是,你的mod对于speed runner玩家来说非常受欢迎。每当我们请到一个游戏开发者,而他们有speed runner社区时,我总是喜欢问,有没有哪些你的内容的运行让你感到惊讶?)
[0:13:01.8] KE: Oh, I'm not actually sure if it's that popular with speed runners. I feel like the Mario 64 speed runners, what they value is just the platforming part. Without any of the ideas, they just want, like, raw platforming. There are some content creators for like, mods that are super popular for speed runners but they have basically zero casual audience, and I think it's like Bruzia. I think, like 80 or 90% of Mario 64 on speed runs are his games.
(KE:哦,我不确定speed runner玩家们是否真的那么喜欢它。我觉得《超级马里奥64》的speed runner玩家所追求的只是纯粹的平台跳跃部分。没有其他创意,他们只想要最原始的平台跳跃。有一些为mod制作的内容创作者,他们的作品对于speed runner玩家来说非常受欢迎,但对于普通玩家来说几乎无人问津,我想象中的例子是Bruzia。我认为,《超级马里奥64》中大约80%到90%的speed runner都是他的游戏。)
[0:13:26.6] JN: Right.
(JN:对。)
[0:13:27.2] KE: But he has just like a thousand subscribers on YouTube because it's not accessible to like a casual audience.
(KE:但是他在YouTube上只有大约一千名订阅者,因为它对普通观众来说并不容易接触。)
[0:13:33.1] JN: Of course, yeah. As like most, pushing games to their absolute limit, it just becomes nonsense pretty quick.
(JN:当然,是的。像大多数挑战将游戏推向极限的行为,很快就会变得没有意义。)
[0:13:41.4] KE: Yeah.
(KE:是的。)
[0:13:42.9] JN: I feel like Super Mario 64 speed running has really become a surprisingly large content category, especially on Twitch that I just...
(JN:我觉得《超级马里奥64》的速度跑已经成为一个非常大的内容类别,尤其是在Twitch上,我...)
[0:13:50.1] KE: Oh yeah, in Twitch.
(KE:噢,是的。在Twitch(直播平台)上。)
[0:13:51.9] JN: Awesome. So, I guess, kind of wrapping up, one of the questions that you know, being very new to this space and not you know, being familiar with you and being familiar with James, are there any other N64 or Super Mario 64 in particular, ROM hackers or content creators that you're excited about and you'd recommend to the audience?
(JN:太棒了。我想,作为结束,有一个问题,你知道,因为这个领域对我来说是很新的,而且我不熟悉你,也不熟悉詹姆斯,你是否能推荐一些其他的N64或《超级马里奥64》特定的ROM黑客或内容创作者,你对他们的作品感到兴奋,并且可以向观众推荐?)
[0:14:12.6] KE: So, there is two very talented Mario 64 modders I can think of. The first is Biomac. He's actually helping me with Return to Yoshi's Island. He's like, insanely good at 3D modeling. He has super cool ideas and the other one is Dan from Gong Play TV. He like, what he does, dude, it looks so good. He's like very, very good at 3D modeling and also very creative.
(KE:我想到了两位非常才华横溢的《超级马里奥64》MOD制作者。第一位是Biomac。他实际上正在帮助我制作《回到耀西岛》。他在3D建模方面非常出色,有非常酷的想法。另一位是Gong Play TV的Dan。他的作品,伙计,看起来真的很棒。他在3D建模方面非常、非常出色,而且也非常有创造力。)
[0:14:35.5] JN: Awesome, cool. That's just some great recommendations, thank you so much, and thank you so much for joining us on the show today.
(JN:太酷了。这真是很棒的推荐,非常感谢你,感谢你今天来参加我们的节目。)
[0:14:40.7] KE: No problem. I enjoyed it.
(KE:没问题,我很享受。)
[END]