cover of episode Engineering at Discord with Justin Beckwith

Engineering at Discord with Justin Beckwith

2024/12/10
logo of podcast Software Engineering Daily

Software Engineering Daily

People
J
Justin Beckwith
Topics
Justin Beckwith: 本期节目讨论了在Discord领导工程的经验,特别是平台生态系统组织的工程领导工作。他分享了加入Discord的经历,以及Discord作为开发者平台的演变过程。他重点介绍了从基于WebSocket的聊天机器人过渡到基于斜杠命令的模式,以及在保证用户体验和安全性的前提下进行这一重大更改的挑战。他还详细介绍了Discord的Activities平台,包括其技术架构、安全措施、盈利模式以及与其他游戏引擎厂商的合作。最后,他还讨论了生成式AI对Discord平台的影响以及未来发展方向。 Sean Falconer: Sean Falconer作为主持人,引导Justin Beckwith分享了他从企业软件开发到面向消费者的开发者平台的转型经历,并探讨了企业级开发者平台和消费者级开发者平台在开发模式、速度、稳定性以及对破坏性更改的容忍度方面的差异。他还就Discord平台的可扩展性、用户体验、安全性和盈利模式等方面与Justin Beckwith进行了深入的探讨,并对Discord平台在游戏开发和社交互动方面的成功经验进行了分析。

Deep Dive

Key Insights

Why did Justin Beckwith join Discord?

Justin was drawn to Discord because of its vibrant developer ecosystem and the opportunity to work on a consumer platform for the first time after a career in enterprise software.

What was the state of Discord's developer platform when Justin joined?

When Justin joined, Discord already had a thriving developer ecosystem with developers building chatbots, slash commands, and rich presence features. The platform was core to the product and inspired developers to extend its functionality.

How is building a developer platform for consumers different from enterprise platforms?

Consumer platforms require faster velocity and adaptability, as they need to react quickly to user demands and trends. Enterprise platforms, on the other hand, prioritize stability and long-term roadmaps with minimal breaking changes.

What was the first major project Justin worked on at Discord?

The first major project Justin worked on was transitioning chatbots from listening to every message to using slash commands, which improved scalability and privacy while maintaining feature parity for users.

What challenges did Discord face when transitioning chatbots to slash commands?

The main challenge was ensuring that users didn't lose any functionality during the transition. Discord had to provide a structured system that felt familiar and user-friendly while improving privacy and scalability for developers.

How does Discord balance user-friendliness with developer extensibility?

Discord allows developers to build creative experiences, even if they don't look perfect, as long as they don't compromise the out-of-the-box user experience. The platform provides structured tools like slash commands to ensure consistency and ease of use.

What is Discord's Activities platform, and how does it work?

The Activities platform allows developers to build HTML5 JavaScript games that can be embedded within Discord. These games can be played in voice calls or text channels, with Discord handling the social infrastructure like voice, video, and chat.

What are the security limitations for games built on Discord's Activities platform?

Games are restricted to web-based technologies (HTML5, JavaScript) and cannot expose users' IP addresses. Discord proxies all communication to ensure security and prevent direct user-to-user or user-to-developer interactions.

How does Discord's Activities platform impact game distribution?

Discord provides a fast path to users and distribution for game developers, making it easier to reach a large audience. The platform also offers social features like voice and video chat, which enhance the gaming experience.

What are some technical challenges Discord faced with the Activities platform?

The main challenges included ensuring a seamless user experience within a chat app, securing the iframe environment to prevent data leaks, and optimizing performance for web-based games to run smoothly on both desktop and mobile.

How does Discord support niche games and experiences?

Discord attracts communities of interest, allowing niche games and experiences to thrive. Developers can build apps that cater to specific communities, leveraging Discord's social layer to create unique, engaging experiences.

What is the future focus for Justin and his team at Discord?

The focus is on improving the Activities platform, making it easier for developers to build high-quality games that feel native to Discord. This includes enhancing social interactions, performance, and user experience for embedded games.

Shownotes Transcript

Discord 是一个流行的沟通和流媒体平台,最初于 2015 年推出。它最初在游戏领域流行起来,但其用户群已发展到包括广泛的社区、企业和社交群体。Justin Beckwith 是 Discord 的工程总监。他领导平台生态系统组织的工程工作,并在开发 Discord 的嵌入式应用程序 SDK 中发挥了关键作用。

Justin 与 Sean Falconer 一起参加播客,讨论在 Discord 领导工程方面的工作。本集由 Sean Falconer 主持。请查看节目说明,了解更多关于 Sean 的工作以及在哪里可以找到他的信息。Justin,欢迎来到节目。您好,Sean。感谢您的邀请。是的,当然。您是 Discord 的工程总监,领导平台生态系统。我想

我想先请您带我们一起回顾一下您加入 Discord 的历程。当您加入时,产品作为开发者平台处于什么状态?是的,加入 Discord 对我来说是一个非常独特的机会。我在这里快三年了,这难以置信。在此之前,我的大部分职业生涯都在企业软件领域。

我做过很多云开发者平台的工作,有机会在 Azure、谷歌云和一些其他的平台上工作。但这是我有机会参与的第一个面向消费者的平台。真正吸引我的一件事是,这是一个庞大、充满活力、令人兴奋的平台。

这里已经有了一大批开发者。他们已经在构建东西了,构建聊天机器人、斜杠命令、丰富的内容展示,以及他们可以扩展 Discord 上任何内容的各种方法。人们都在尝试这样做。这是一个独特的机会,在这个生态系统已经定义好的地方进入。它对产品来说至关重要。我将有机会参与一些能激励人们的事情。

您认为在构建本质上类似于,您知道,仍在构建类似开发者平台的东西时,

开发者的最终用户将是消费者。您认为这与您所做的工作相比,与 B2B 类技术的 SaaS 或某种托管服务有何不同?这是一个非常有趣的问题。我认为有很多地方最终是相似的。企业开发者仍然是开发者。消费者开发者是开发者。我们想要很多相同的东西。我们想要优秀的文档。我们想要分步指南。我们想要 SDK、命令行工具等。

我认为不同之处在于速度和稳定性。我认为在一个企业平台上,你会受到打击,就像,你想知道你的路线图,你想拥有那个三年的路线图。在我工作过的一些地方,我们有公开的 12 个月路线图,我们讨论我们将要发布什么,对吧?

关于如何打破规则以及永远不要破坏平台,有这些非常非常严格的规则。在很多情况下,有时在企业软件中,糟糕的 UX是可以接受的。你需要的第一件事是完成工作的能力。首先,使 API 存在。然后,如果我们想让它易于使用,或者如果我们想让它有很好的 UX,那么我们可以专注于此。

我认为我发现的是,面向消费者的开发者平台的期望值有点不同,对吧?就像预期你会更快地行动。预期产品的本质本身就是

我们从一个季度到下一个季度不会那么容易预测我们将走向何方,因为我们试图追逐用户,并且我们试图比大型企业规模的平台更快地做出反应。是的,在我们开始录音之前,你我都在谷歌工作过。你从事云计算工作。我在云计算领域工作。我认为在云计算领域,你处理的是 18 到 24 个月的公开路线图。

任何 API 的重大更改可能都需要至少一年半的弃用周期才能完成。您认为,当您构建一个开发者平台时,最终用户将是消费者,人们是否对这种重大更改更宽容,或者期望值相同?

是的。我认为这就是期望值相同的地方。我们不能做任何会破坏最终用户的事情,对吧?这对我们来说将是彻底的失败。我们绝对不想随意引入重大更改。因此,这就是我们推出的活动平台非常小心的原因之一,对吧?我们与许多合作伙伴合作过。我们实际上花了几年的时间来构建这个东西,使其稳定,确保我们很好地掌握了它的基本原理。

但是,仅仅因为它是一个面向消费者的平台,并不意味着你可以随意破坏东西。这只是意味着周期可能有点不同。我认为该行业只是发展得快了一点。是的。我认为 Discord 非常有趣的一点是,据我了解,它从第一天起就被设计成可扩展的和适应性强的。我认为构建一个具有单一焦点并且

拥有产品市场契合度并且非常擅长此点,同时又擅长可扩展性和以创始人可能从未想过任何人会以这种方式扩展它的方式进行扩展的产品非常困难。你能谈谈,就你所知,背后的决定以及完成其中一些工作有哪些特别困难的地方吗?

是的,我的意思是,我认为你提到它可能以创始人可能没有想到的方式进行扩展。这实际上并不正确。Discord 的联合创始人 Jason 和 Stan 经常谈论它作为一个可扩展平台的价值,以及这实际上从第一天起就是他们的目标之一。

我认为这让我更容易胜任这份工作,因为他们已经有了这种领先优势。我已经提到它已经拥有这个充满活力的充满激情的开发者社区。这是因为它从一开始就是这样构建的。他们有点倾向于让它保持开放,让人们以他们将要使用的方式使用该平台。早期,我们可能会更改一些东西。我们可能会破坏一些东西,没关系。我们知道人们只是进来尝试构建它。但他们肯定从保持一切开放的理念开始,然后

看看人们会构建什么。当我加入这里时,我最喜欢的事情之一是,当然,我们在 Discord 上的所有沟通都是通过 Discord 进行的。我们与团队进行大部分沟通的 AppCity 频道在其上有一个频道描述,上面写着:“你真的不会相信人们会创造什么东西。”这对我来说非常有共鸣。事实证明,正如你所看到的,人们想出来并构建的东西完全正确。

是的,这在某种程度上很有趣,在 Reddit 和 X 或 Twitter 等公司实际上已经关闭了它们的 API 的时代。感觉 Discord 正朝着相反的方向发展,他们实际上更加重视这一点。它已经成为一个开发者平台,但他们似乎真的在投资资源。

鉴于您加入时已经拥有这个蓬勃发展的开发者生态系统,您最初进入并认为是问题领域或今天没有做但需要您的专业知识来处理的事情的一些重点和领域是什么?

正确。因此,我的意思是,就需要我的专业知识而言,这当然不是我大部分时间为团队提供的东西。我是在那里指导、解除障碍,非常符合让我们的专家尽其所能工作的风格。但是,当我加入团队时,我们花费大量时间的第一件事是帮助引导与聊天机器人的这种转变,最初聊天机器人在 Discord 上诞生的方式是因为一切都是开放的,就是

您将构建一个机器人,您将监听通过 Websocket 传输的每条消息。如果该消息召唤了您的机器人,有时会使用类似于感叹号和机器人名称的内容,然后您将解析消息并对其做出反应,然后像用户一样做出响应,对吧?它有效地使用了我们在客户端用于发送和接收消息的相同 API。这最初可以开箱即用,但是随着我们的发展和越来越多的用户加入,我们意识到,好吧,

首先,这是一种非常困难的构建机器人的方法,因为您必须处理监听每个服务器中的每条消息并对其做出响应的规模。其次,从隐私的角度来看,我们不希望将用户置于这样的位置,即随着这些机器人的激增,它们可以开始收集所有这些消息并对其进行任何操作。

因此,在我来之前已经启动的一件事,但我必须帮助完成它,就是向我们所说的斜杠命令的转变。这有效地构建了一个模型,用户必须以非常特定的方式召唤机器人。您注册您的命令。它具有不同的数据集类型。我们可以为此提供真正漂亮、花哨的 UX,以创造出色的用户体验。而之前它更像是一种黑客行为,有点像终端的感觉。现在,我们拥有广泛、丰富的 UI,使它易于使用。

但是,帮助团队完成这项工作以及这一重大更改意味着什么,为开发者提供合理的时间是多少,我们如何沟通,我们如何确保在进行此迁移之前已准备好所有必要的特性?我认为这是我加入时参与的第一个大型项目。所以具有讽刺意味的是,它是在思考重大更改。

以及我们如何以对用户安全的方式推出它。是的,那么为了优雅地做到这一点,必须做出哪些决定?我认为那里最大的问题总是试图提供用户习惯的相同数量的特性。因此,我们希望进行我们认为对开发者有益并且对用户有益的更改。我们希望确保我们以不会丢失任何东西的方式做到这一点,对吧?因此,我们希望获得相同水平的灵活性,但最重要的是,我们希望每天都在使用这些机器人的用户能够做大部分相同的事情。

因此,许多决策都是关于我们构建到什么程度,对吧?我们如何采用这个完全开放的系统,在其周围设置一些结构,赋予它一些不错的基本要素,使其感觉良好,使其感觉不像我们只是因为我们要求他们而要求用户移动。我们希望他们想要这些机器人,对吧?就像我们希望他们想要迁移到这个新系统一样。因此,我们花费大量时间来思考我们正在构建的内容的用户和用户影响。是的。您如何才能在……之间取得平衡……

使某些东西对消费者友好,但也对开发者可扩展,以至于您无法扩展它

它变得难以使用。如果您想到,在 MySpace 早期以及人们可以做的一些事情,您会访问一个 MySpace 页面,您的浏览器基本上会停止运行,因为有很多音乐在播放,并且有很多缓慢加载的图形等等。因为周围没有任何防护措施可以限制任何人的行为。所以你只是让人们创建这些可怕的网站。您如何才能基本上让人们自由创建,同时

基本上对可能发生的事情设置一些限制,以便他们始终创建像样的用户体验?这是一个很好的问题。老实说,我认为我在这里有两种不同的想法。我认为,一方面,如果您想拥有一个真正开放的平台,您必须能够接受人们将构建可能看起来不太好或看起来不像您构建的那样的东西。

如果它不受欢迎,如果它看起来很糟糕,如果它不是一种很好的体验,他们就不会使用这些应用程序。如果有人为您的手机创建了一个看起来很糟糕并且没有使用正确基本要素的应用程序,那么您可能不会去下载和安装它。对。但如果它做了一些很棒的事情,如果它做了一些新奇的事情,如果它以我们从未想过您会构建它的方式去做。

这才是目标,对吧?除非你获得更多关于他们可以构建什么的自由,否则你无法获得这种创造力,也无法打破常规和期望。

所以这有点像我肯定有的一方面,这是我的总体心态。话虽如此,我们也希望让开发者更容易。我们最不想做的事情是让开箱即用的体验受到损害,就像在 Discord 上你可以使用开发者做的事情一样。我认为斜杠命令就是一个很好的例子,我们花费了大量时间来设计它,让开发者以声明式的方式告诉我们,这些是我的命令,这些是输入。

为他们提供结构化的方法来提供输出,而不是完全放弃格式。我们从中获得的一个明显的优势是用户获得这种一致性水平。您从中获得的另一个隐藏优势实际上是管理从拥有桌面 Web 和移动平台带来的许多事情。

开发者不必过多考虑如何在移动设备上格式化?它在这种设备上的外观如何?在这种情况下它是什么样的?我们可以为他们做很多事情。是的,我认为有很多事情不仅使开发更容易,而且特别是在游戏开发方面,我认为 Discord 非常成功。很多事情都变得更容易了。我认为大约 20 年前,当我开始构建游戏一段时间时,我

这只是很多工作。它是 C++、OpenGL、DirectX。有很多数学、物理,但是

但是游戏引擎已经降低了门槛,使事情变得更容易。然后在 Discord 上,您获得了跨平台兼容性。然后作为游戏设计师,您拥有通向用户和分发的快速路径。现在您加入了 Gen AI,甚至将其用作开发工具,现在构建游戏可能比以往任何时候都更容易。我很好奇,我知道您更多的是在开发者生态系统方面,但是您对这些事情以及……的一些想法是什么?

特别是像 Discord 和那里可用的分发方式如何影响我们构建游戏、设计游戏以及哪些游戏是可能的。

是的,我认为这与使开发者平台民主化有关,对吧?我认为在行业的任何地方,如果我们可以让更多人更容易构建,尤其是那些有创造力并且没有传统背景的人,也许在计算机科学方面,那么我们就像打开了可以构建的东西的可能性,对吧?我认为这些都是积极的。我认为在 Discord 工作期间,我最有趣的项目之一就是活动的发行。

并使其能够让开发者构建 HTML5 JavaScript 游戏,并将它们直接放入 Discord 中。我的意思是,网络游戏并不完全是新的,但我认为我们能够实现的有趣之处在于将社会结构带入游戏。

因此,您不必独自开始游戏,然后独自玩游戏,而是您可以与朋友一起玩。您可以在视频通话中进行,拥有上下文、视频、语音、聊天,所有这些都已在其中处理好,然后将您的游戏带入该环境。参与这项工作非常有趣。

是的,您会得到很多,您基本上提供了许多社会沟通基础设施,对于任何现代游戏来说,如果您没有通过像 Discord 这样的平台开箱即用,您可能需要从头开始构建。是的,我的意思是,如果您已经在这里,您正在闲逛,您与朋友在一起,并且想要找一些事情做,那么开箱即用地进入我们的应用程序启动器,选择一个游戏,您就可以免费获得所有这些东西。嗯哼。

向我详细介绍一下活动以及它从开发的角度来看是如何工作的。我该如何开始构建其中一个?是的,我们有很多很棒的指南。我们之前谈到过在过去几年中在 Discord 这里组建我们的第一个开发者关系团队很有趣。因此,我们在 discord.dev 上有很棒的文档,它会一步一步地进行讲解。但最终,我们目前在平台上支持的游戏是网络游戏。

它们是 HTML5 和 JavaScript。您托管它们。我们有一个 NPM 模块,其中包含我们的 SDK,它可以为您提供与 Discord 的所有挂钩。因此,您可以获得诸如会话开始、了解人们正在玩什么、邀请、将游戏中发生的有趣事情分享回游戏等内容。但是,在很大程度上,您可以构建一个独立的 HTML5 JavaScript 游戏,使用 Discord 添加社交层,然后执行一些轻量级步骤以将其发布到我们可以通过 Discord 本身访问和启动的方式。

但最终,如果您精通 Web 开发,特别是 Web 游戏开发,那就很容易了。然后作为开发者,我使用嵌入式 SDK 来构建这些体验。然后这基本上像一个 iframe 直接嵌入到 Discord 中一样加载了吗?正是如此。好吧,它是……

它是一个 iframe,但它以多种方式被锁定,以确保它对所有使用它的用户都是安全的。但是是的,它有效地在客户端的 iframe 内加载整个体验,这既包括桌面平台也包括移动平台。是的,为了确保它的安全,对它施加了什么限制?我相信这也会带来许多隐私挑战。与拥有世界一流安全工程团队的公司合作的一件好事是

这是他们真正帮助我们确保正确地做到了这一点。我们已经有几年的时间可以从一开始就处理它了。关于它限制您可以构建的内容,大多数真正限制它的内容是,好吧,A,它仅限于 Web。因此,我们目前还无法提供本地游戏开发。这不是我们可以构建的东西。因此,它仅限于 HTML5、JavaScript,

任何有暴露用户 IP 地址给其他用户或最终开发者的风险的特性,我们也尽量避免这些特性。我会说,这可能是大多数限制来自的地方,老实说,这是

最终,Discord 是一个通信平台,主要与游戏玩家合作。游戏社区中的一大风险是有人获取您的 IP,然后在您尝试玩竞技游戏时受到 DDoS 攻击。因此,我们对此非常敏感。当您处理像 iframe 或这样的 Web 应用程序时,

我们必须非常小心地限制您可以使用的 API 以及您构建它的方式,以确保您以没有用户到用户或用户直接到开发者的直接通信的方式进行操作。我们实际上代理一切。然后对我来说,如果我构建了这些游戏,这些活动,我将它们放在 Discord 的应用商店中,人们正在安装它,它变得非常流行。我是否需要能够扩展基础设施以匹配基本上有多少兴趣?

完全正确。我们确实讨论过拥有我们自己的托管平台的想法。这是我们多次反复讨论的事情。但最终,人们构建这些后端的方式多种多样,它们的丰富程度,从一个游戏到下一个游戏的差异以及它的需求是什么样的,我们真的希望将此留给开发者来拥有该堆栈的复杂性。

并拥有他们将如何扩展它。我们有一些开发者拥有他们自己的整个后端生态系统,这在他们的所有游戏中都是通用的,无论它们在哪里运行。因此,我们不想对开发者指定后端。但是是的,最终,他们负责他们如何扩展以及胜利的基石,他们如何承担这一点。我可以通过下载或安装来将我的游戏获利吗?

是的,当然。所以,我的意思是,不是通过下载或……不是真的下载。具体来说。是的。下载,在这种情况下并不是一件事情。是的。但这也是我们在过去一年中一直在努力的事情,这就是所谓的付费应用程序。这实际上适用于斜杠命令、Discord 上的传统应用程序以及活动。我们推出了一些功能,我们将为您完成所有支付平台的工作。您只需要集成即可。您可以销售应用内购买、订阅,

我们有一些新功能即将在接下来的几周内推出,这将继续改进它。但我们已经为此工作了一段时间,所有这些内容都已推出,您可以绝对获利。是的。然后,是否有特别,我想,像技术挑战一样重新品牌?

推出嵌入式 SDK?你说活动平台是你工作了几年的东西。除了我们提到的安全问题之外,还有一些什么重大挑战?好吧,我认为我们谈到过为消费者生态系统构建开发者平台以及这可能会有所不同。我认为我们真正需要确定的事情首先是用户体验。

在聊天应用程序中玩游戏会带来一些有趣的 UX 挑战,并弄清楚如何以令人愉悦的方式做到这一点,让用户回来,并且不会干扰应用程序的主要目的,例如与人们聊天。对。所以我认为第一个挑战就在这里。我的意思是,是的,有很多有趣的技术挑战,但首先是 UX,并确保我们做对了。

在技术方面,我会说我们最初遇到的第一个挑战是安全问题。您知道,我们在这里想要非常小心,因为我们有一个在 Discord 中运行的 iframe,确保没有任何东西可以逃脱该 iframe,确保它无法访问用户系统上它不应该访问的任何内容,渗透测试它,尝试各种不同的方法来确保我们已经覆盖了所有方面。

这是我们开始时面临的关键技术挑战之一。对于标题本身,因为实际上许多最初的活动实际上是由 Discord 构建的。我们有一个内部工作室,专门构建 Web 游戏,用于

性能确实是一个挑战,因为我们想要构建这些游戏。我们想要拥有很棒的体验。这些是游戏开发者。我们有一群在大型 AAA 游戏中工作过的 Discord 开发者,他们对这种体验有非常具体的要求。他们希望它很棒。

但是以一种在 Web 上运行的方式构建它,这种方式也具有丰富的功能、游戏机制、性能,并且不仅可以在桌面上运行,还可以通过 iframe 在移动设备上运行,这实际上是一个相当大的技术挑战。看着他们克服这个挑战真是令人鼓舞。

您是否必须做一些工作来像播种应用程序商店的市场一样,基本上通过构建一些内部应用程序来启动这样的东西?空市场并不令人兴奋。是的,活动实际上已经在 Discord 上存在了几年了,但它们都是我们构建的第一方活动。因此,这些游戏包括《公园里的国际象棋》、《扑克之夜》、《让》

《字母联盟》,我们想要推出的一些经典游戏,以感受一下,这是用户想要的吗?因此,我认为从一开始,在我们去年去 GDC 并向所有人开放开始构建之前,我们就有超过 40 个标题可用。然后,即使在那段时间里,在过去的几年里,我们也一直在与许多其他游戏工作室合作。所以我们自己尝试过。我们构建了一些标题。我们有一些我们感觉很棒的游戏。我们与 FRVR 等其他公司合作,以及

发布我们认为在平台上非常令人兴奋和引人入胜的标题。还要确保我们的 API 正确。如果您是唯一测试 API 的人,您无法确定您是否正确或其他人可以使用它。我们也希望获得这种验证。就 UX 而言,什么

嵌入在 Discord 中的游戏与我基本上与也在玩游戏的其他人进行对话相比,看起来是什么样的?是的,您可以通过两种不同的模式玩这些游戏。一种是从语音通话开始,这是一种经典模式,并且是目前我们最流行的模式。

我们进入服务器,加入语音频道,开始交谈,然后决定,嘿,我想玩个游戏或听听音乐。这是另一件事。我们还有多种可用的音乐活动。在通话过程中,有人可以点击应用启动器。你选择活动,然后其他人可以立即加入。你仍然在语音频道中。你仍然在Discord中。

你可以发文字,也可以语音,你可以在应用的其他部分四处移动,但你只是在主屏幕上玩游戏。我们还在语音通话之外提供服务,如果你想要一些更异步的内容,你也可以从文本频道内部启动这些游戏。假设你想开始一个游戏,让其他人看到游戏正在进行,然后加入而无需先进入语音通话。你也可以这样做。

本期《软件工程日报》由Jellyfish赞助播出,Jellyfish是一个软件工程智能平台,它由获得专利的分配模型提供支持,并拥有业界最大的客户数据集。您知道,过去一年左右最大的变化之一是采用Gen AI编码工具,例如GitHub Copilot。

工程领导者正试图弄清楚他们的团队是否真的在使用它,使用了多少,以及它如何影响业务。他们的交付量增加了?是否完成了更多的路线图工作?除了轶事和调查,你如何知道?这就是为什么Jellyfish在2024年与GitHub合作推出了Copilot仪表板。

从那时起,他们分析了200多家公司4200多名开发人员的数据。想知道一个有趣的发现吗?使用Copilot的开发人员交付量增加了20.9%。Jellyfish的员工拥有更多见解,您可以开始查看您自己团队的数据,以便更好地进行规划和管理。立即访问jellyfish.co/copilot了解更多信息。

多人游戏怎么样?例如,如果我正在构建这些活动之一,作为开发者,我该如何知道有多少人在那里,以及我该如何帮助他们互相互动等等?

当然。所以我们为此提供了API。将其构建到Discord中的主要好处之一就是你可以免费获得这些内容。因此,我们会给你一个当前参与通话的人员列表,以及参与活动的人员列表,然后你可以围绕这些内容构建你的游戏。其中一件很有趣的工作是思考所有多人游戏模型,例如有些游戏你可以独自加入,但如果你只有一个人,你就必须与通话中的其他人一起加入。例如小型派对游戏。

其他在平台上构建的人会进行全局排队。

所以你可以自己加入,并且有一个玩该游戏的每个人的全局队列。然后你仍然可以只与频道内的你的小组进行沟通。但我认为这是正在发展的事情,开发人员自从我们开放以来,一直在做各种我们意想不到的有趣的事情,这正是我们所希望的。但我认为对于构建这些游戏的人来说,要清楚地了解沟通结构非常重要。你想要全局排队吗?你真的想要私人匹配吗?

认真思考这一点有助于弄清楚你的游戏将有多成功。曾经有一段时间,Facebook和其他社交媒体平台在游戏方面非常盛行,你知道,在Facebook的Farmville时代等等。我的意思是,我现在不经常使用Facebook,所以我可能需要问一下我的父母,他们都在使用。但看起来像

它们迅速发展,然后衰落了,至少这是我的感觉。你认为Discord在这方面如此成功的原因是什么?它与10年前Facebook等平台上发生的一些事情有什么不同?我认为归根结底,Discord是一个由游戏玩家为游戏玩家构建的平台。游戏是公司DNA的一部分。这是这里的人们非常关心的事情。

而且我认为我们不会推出一个我们自己都不想使用的平台。这在我们心中是首位的,也是我们真正考虑到的第一批用户。所以我认为首先,这不是一个我们后来添加游戏功能的社交媒体平台。它一直是我们的核心,也是我们所构建的核心。

我认为第二点是首先从社交群体开始。我们不想构建一个通用的游戏平台。已经有许多这样的平台了。这已经做过很多次了。

对我们来说,这是关于找到与朋友一起做的事情。所以这里的人们,我们想要更好的方式来一起玩耍,更好的方式来联系和在一起。这就是我们添加到整个过程中的社交方面,这使得它取得了成功。是的,既然你拥有这些社交群体,并且很多内容都集中在与你的朋友联系或至少与你相似的在线社区联系上,你认为

这允许某种程度上比其他东西更利基的游戏、更利基的体验在大规模上取得成功,我的意思是,如果你在一个利基市场中,如果没有这样的东西,很难找到你的受众。我很高兴你问了这个问题。这实际上是Discord的魔力,它吸引了所有这些兴趣社区,并帮助那些对利基事物充满热情的人找到彼此并建立他们的社区。

这不仅仅适用于服务器本身或在那里发生的沟通。它也适用于应用程序。我们今天在传统的斜杠命令应用程序中看到了这一点……

你知道,你可以构建一些东西。你非常喜欢万智牌吗?是的,有一个应用程序。有人为此构建了斜杠命令。龙与地下城,我们实际上有Rule 20加入了平台并通过Discord发布了他们的平台。然而,比这更利基,因为它很开放,这又回到了我之前所说的内容,我们无法预测人们将构建什么。你可以以任何对你社区有意义的方式扩展Discord。所以我认为这一切中最令人兴奋的部分是观察,是的,大型游戏很重要。

我们希望人们发布游戏并获得各种关注,并成为一个非常成功的企业,这一点至关重要。就我个人而言,我喜欢利基的东西。我喜欢只对一个社区和一个服务器有意义的东西,但它恰好解决了他们的问题。对我来说,这非常非常令人兴奋。是的,这就像我职业生涯中构建的大多数东西一样。它非常利基,只有我和少数其他人关心。就平台上构建的利基群体和利基体验而言,哪些真正让你印象深刻?

哦,天哪。我喜欢那些只是很傻的应用程序。

就我个人而言,我的核心价值观之一,也是我非常享受的事情之一是异想天开。而我们构建的第一个应用程序之一,这不是一个活动。这只是一个在这里构建的标准机器人,这是一个萝卜应用程序。有趣的是,它被构建为如何使用用户应用程序的示例,这些应用程序就像应用程序一样,而不是将其安装在服务器中,用户可以进行控制,并且可以随身携带。它允许你给人们萝卜,它允许你拥有一个萝卜经济,并且

它变成了一个赠送礼物的东西,如果有人为你做了好事,你会说,给你一个萝卜。享受它。这是一件很傻的事情。它有点无意义,但它让很多人感到快乐。它在Discord内部像野火一样蔓延开来。我们自己总是使用这些机器人作为沟通和表达感激的方式。我认为这些类型的体验,帮助我与人联系,表达感激……

玩得开心,做些傻事。这就是Discord的魔力。这也是扩展它的魔力。我认为这可能是使一些人能够构建这些类型的体验的民主化访问的魔力。如果你没有受到实际构建某些东西的技术障碍的限制,并且你可以更多地关注你的想象力,那么它可能会打开世界

过去可能无法做到这一点的人实际上可以创建这样的体验。是的,我的意思是,将许多底层通信原语构建到你的游戏中非常困难。如果你从游戏开始,然后尝试构建所有这些,它会让你分心,让你无法获得最终体验,对吧?让你分心,无法进行游戏本身的创作过程。

所以我喜欢我们就像一个你可以构建其中的社交盒子。你现有的社区会扩展,就像你可以从非常少的代码开始,你不需要为简单的机器人构建大量代码,一直到完整的,你知道的,

在内部运行的游戏标题。你可以根据你的能力和你想要深入的程度来扩展。是的,我的意思是,我认为Midjourney在Discord上启动,然后从那里兴起,这真的很有趣,你知道的,这可能不是你认为使用Midjourney最自然的方式,但你知道的,它对他们有效。我很好奇,人们是否将Discord用作几乎是测试和

既然你可以访问,我认为Discord上有2亿月活跃用户左右。因此,理论上,你可以快速接触到非常庞大的受众。所以人们是否在那里进行实验,然后随着事情发展和普及,将其带到Discord之外?我认为

是的,肯定有一部分应用程序正在这样做,并且你知道Midjourney是一个有趣的例子,它始于Discord,并利用它来获得病毒式增长和知名度,并通过社区传播

我知道他们正在去那里构建一些独立的体验,但大多数在Discord中构建的应用程序的魔力在于与你的朋友一起使用它。所以,如果它只是一个你为自己构建的应用程序,或者是一个针对一个人的实用程序应用程序,你可以在Discord中构建它,我们会成功地帮助你扩展它,你会成长。你不会以这种方式充分利用平台。像最佳点真的是那些帮助人们一起做事的人。

我认为对于一些早期的AI应用程序来说,这并不是说我可以生成图像,这很有趣。它是生成图像,然后与我的朋友分享,然后让他们随意发挥,然后让它激发新的想法。所以我认为Discord上真正成功的应用程序将是那些采用这种社交方面的应用程序。与传统的机器人和其他类型的集成相比,嵌入式活动的参与度如何?

它仍在发展中。我认为对于传统的机器人,你必须记住的是,这些机器人自第一天起就存在于平台上。随着Discord的增长,所有这些现有的机器人也随着平台的增长而变得至关重要、集成和重要。活动,就像我们拥有强劲的数字一样,我们正在增长,越来越多的人正在使用它。它还没有赶上机器人,但这需要一些时间。

作为第三方开发者,在使用Discord上提供的某些开发者工具时,我可能会面临哪些挑战?是的,我认为到目前为止,我们已经看到来到平台上的开发人员面临的一些最大挑战是,如果你是一个现有的游戏工作室,你是一个现有的开发者,并且你想构建一些东西,你知道的,Discord很受欢迎,它在那里,你知道的,你想要弄清楚它,但你没有很多专业知识,那就是,

以一种方式构建事物,就像我之前所说的那样,利用社交方面。我认为,如果你尝试构建一个游戏,就像你只是进来,使用它,玩它,并且你没有完全接受人们一起沟通和玩耍的想法,那么你将不会像真正理解Discord动态和这些社区如何运作的人那样成功。所以我认为这是那些可能来自传统游戏背景的人必须学习和必须学习如何最好地整合的地方

在技术层面上,你之前也稍微谈到了这一点。我认为最大的挑战是应对你自己的成功。

所以,如果你是独立的,你是独立工作室,你构建一个游戏,你把它发布出来,你认为它可能会很受欢迎。然后我们可以通过将2亿月活跃用户指向一个应用程序并快速扩展它来产生影响,如果它变得受欢迎的话。因此,作为一名开发者,我认为帮助人们认识到他们成功规模的潜力一直是另一个有趣的挑战。是的,我的意思是,过去曾经有过整个像,是Slashdot效应还是?Slashdot效应。

明白了。我们正在进入时光机。是的,我们正在进入时光机,你知道的,它就像一篇博客文章或类似的东西。但这是否影响了在平台上构建应用程序的现有用户?就像,哦,我为我的朋友构建了这个,然后它突然火了,我就像我的服务器完全,你知道的,沸腾了。这可能会发生。是的,这绝对是一个风险。我认为对于活动来说,因为这是我们第二次这样做,我们第一次与机器人一起经历了这一点。

对于我们合作的许多合作伙伴来说,我们为他们提供了一些控制来进行缓慢的扩展,对吧?我们可以控制他们将获得多少印象,例如他们在我们的货架上获得多少位置。对于一些合作伙伴,我们会进行地理位置推出,我们只会说在加拿大开始,并以这种方式进行缓慢推出,以便他们能够随着它一起扩展。这很有效。到目前为止,这帮助我们处理了活动,特别是确保对于我们知道将存在此问题的更大游戏而言,我们可以与他们合作。我们有一些工具,工具箱中的工具可以提供帮助。

但是,一旦某些东西变得病毒式,它就会被削减,并获得Reddit死亡之抱,你知道的,所有Discord激光束。这些都是你必须考虑的事情。在Discord方面,就基础设施挑战而言,例如,你知道的,你已经发展了很多,特别是面向开发者的平台,例如

我认为,即使人们正在构建游戏,并且游戏变得流行,它实际上也可能会为平台带来新用户。这有点像在流媒体平台上播放一个非常热门的节目或类似的东西。突然间,你获得了大量的注册。所以,

这如何影响你必须在后端处理的流量?是的,我将诚实地说,我们还没有遇到过如此成功的事情,以至于它实际上在Discord的整体规模方面对我们提出了挑战。该平台现在已经有八年历史了。它已经存在很长时间了。就像我说的,2亿月活跃用户。我想说我们最接近的是我们有一些真正流行的AI应用程序。Midjourney就是一个很好的例子,我们注意到这一点。

当它真正流行起来时。因此,对于这些应用程序来说,我们的核心技术工程团队有时必须解决一些有趣的后端挑战。但在很大程度上,这并不是我们无法处理的事情。

在疫情期间,Discord的增长经历了巨大的繁荣。现在它处于一个非常稳定、非常好的位置来处理这种流量。那么八年前,后端堆栈是什么样的呢,就你所了解的程度而言。是的,我们实际上有一个很棒的博客,经常详细介绍一些移动部件的工作方式。我喜欢在面试中提出这个问题。当我从事招聘工作时,这实际上非常有趣,我就像,哦,你使用什么语言?我可以深吸一口气,然后谈论

从使用React Native的顶部开始。有时你使用Swift和Kotlin。有时你主要使用TypeScript或React。一直工作到我们有一个Python API层,它是最基本的HTTP API。古老的Python和Flask,就像其他人一样。对于核心通信,真正有趣的部分是用Elixir在Beam VM上运行的,对于任何构建消息应用程序的人来说,这都是一种神奇的技术。

一旦你找到Beam VM,你就会发现一切开始变得容易一些,并且你可以在其上很好地扩展。对于我们拥有非常非常高性能需求的部分,特别是来自该API层的部分,我们现在大量使用Rust来处理性能,处理对性能有要求的内容。

我不熟悉Beam VM。那么这个项目是什么呢?是的,Beam VM只是虚拟机,如果你构建应用程序,最初是Erlang,所以许多电话系统都是基于在Beam VM上运行的Erlang构建的。最近,大多数以其为目标的人都在使用Elixir作为编程语言,它有点像

一种功能性Ruby的感觉。它有Jean-Claude Ruby。如果你从未使用过Erlang,并且开始使用它,但它确实使消息传递和构建高吞吐量消息系统变得更容易。

你有点脱离了基础设施问题,转向了业界正在发生的一种越来越普遍的趋势,即Gen AI。我们谈到了Midjourney及其产生的影响。但是,Gen AI如何影响Discord平台?你是否看到越来越多的应用程序开发人员试图构建与之相关的功能,甚至是你们自己对该领域的投资?

我认为这与互联网上出现的任何潮流都非常相似。我并不是说这一个会来来去去。

但现在它很热门。它很有趣。所以当然,当这种情况发生时,人们会将其带到他们的社交空间。观看Discord成为许多案例的中心,尤其是在Midjourney之后,现在Vigil也做了很多同样的事情,但使用的是视频,这很有趣。我认为Discord是一个非常适合它的场所,因为它可以帮助人们分享、建立彼此的想法,并在团队环境中进行创作。而我

我认为在某个时候,将会出现下一波浪潮,希望它也会在Discord上出现。但我真的认为这归结于使它流行的社交方面和分享。你和你团队在未来六到十二个月中关注的是什么,你可以分享吗?是的,我们希望让在Discord上构建游戏、构建活动变得更好。

这意味着为用户提供更多与他们互动的方式,使其感觉像是一流的体验,使其感觉像是在运行。你可以构建一些与在Discord内部运行的原生游戏一样好的东西。我们希望为他们提供更多彼此沟通、邀请人员、建立社交网络以及在应用程序上执行所有这些操作的方法。因此,今年实际上是让它成为可能。明年将是转动曲柄并使其变得伟大的时刻。

这就是我们所希望的。为了能够构建感觉像原生的游戏,你是否认为你实际上会提供库支持来实现游戏的图形?我认为这就是我们利用社区中已经存在的许多伟大工作的地方。我们一直在合作的一家公司是buildsphaser.io。

一个很棒的HTML5 JavaScript Web游戏平台。我们从一开始就与其他合作伙伴合作,使这些成为可能。我们希望加强和加强这些关系,并与所有构建游戏技术的公司更紧密地合作,这些技术使你可以将Web作为目标进行导出。我认为我们做得越多,开发人员就越能获得一流的,你知道的,构建这些类型游戏时的开发人员体验。我们可以专注于我们擅长的那部分。

对。是的。所以更多的是关于合作,并可能创建一个像这样的集成体验,这是我们在Discord上构建游戏的观点。但你不是从头开始构建所有东西,你知道的,从头到尾。没错。Unity在那里可以导出到Web,Phaser在那里,你知道的,有很多这样的Web平台非常好。我们如何才能使它们更好?我们如何与他们合作?这就是我们将要做的事情。太棒了。还有什么你想分享的吗?是的。

没有,只是过去几年这是一个非常有益的经历。我认为,就像我提到的那样,Discord的魔力在于它可以让大家玩得开心。它是为了异想天开。它是为了将人们团结在一起。如果人们从这一点上得到任何启发,那就是为什么你应该在Discord上构建,那就是融入社交层。这是关于整合,就像去人们已经与朋友联系的地方,并考虑一下如何构建可以利用这种联系的体验。是的,就是这样。

太棒了。Justin,非常感谢你的到来。我真的很喜欢这个。是的,这太棒了。非常感谢你邀请我。干杯。