我在 Twitch 平台直播编程的经验
============================================================

去年 7 月我进行了第一次直播。不像大多数人那样在 Twitch 上进行游戏直播，我想直播的内容是我利用个人时间进行的开源工作。我对 NodeJS 硬件库有一定的研究（其中大部分是靠我自学的）。考虑到我已经在 Twitch 上有了一个直播间，为什么不再建一个更小更专业的直播间，比如 <ruby>由 JavaScript 驱动的硬件<rt>JavaScript powered hardware</rt></ruby>  ;) 我注册了 [我自己的频道][1] ，从那以后我就开始定期直播。

我当然不是第一个这么做的人。[Handmade Hero][2] 是我最早看到的几个在线直播编程的程序员之一。很快这种直播方式被 Vlambeer 发扬光大，他在 Twitch 的 [Nuclear Throne live][3] 直播间进行直播。我对 Vlambeer 尤其着迷。

我的朋友 [Nolan Lawson][4] 让我 _真正开始做_ 这件事，而不只是单纯地 _想要做_ 。我看了他 [在周末直播开源工作][5] ，做得棒极了。他解释了他当时做的每一件事。是的，每一件事，包括回复 GitHub 上的 <ruby>问题<rt>issues</rt></ruby> ，鉴别 bug ，在 <ruby>分支<rt>branches</rt></ruby> 中调试程序，你知道的。这令我着迷，因为 Nolan 使他的开源库得到了广泛的使用。他的开源生活和我的完全不一样。

你甚至可以看到我在他视频下的评论：

![](https://cdn-images-1.medium.com/max/1600/0*tm8xC8CJV9ZimCCI.png)

我大约在一周或更久之后建好了自己的 Twitch 频道，并摸清了 OBS 的使用方法，随后开始了自己的直播。我当时用的是 [Avrgirl-Arduino][6] ，现在我依然经常用它直播。第一次直播十分粗糙。我前一天晚上排练得很晚，但直播时我依然很紧张。

那个星期六我极少的几个听众给了我很大的鼓舞，因此我坚持了下去。现在我有了超过一千个听众，他们中的一些人形成了一个可爱的小团体，他们会定期观看我的直播，我称呼他们为 “noopkat 家庭” 。

我们很开心。我想称呼这个即时编程部分为“多玩家在线组队编程”。我真的被他们每个人的热情和才能触动了。一次，一个团体成员指出我的 Arduino 开发板不能随同我的软件工作，因为板子上的芯片丢了。这真是最有趣的时刻之一。

我经常暂停直播，检查我的收件箱，看看有没有人对我提及过但没有时间完成的工作发起 <ruby>拉取请求<rt>pull request</rt></ruby> 。感谢我 Twitch 社区对我的帮助和鼓励。

我很想聊聊 Twitch 直播给我带来的好处，但它的内容太多了，我应该会在我下一篇博客里介绍。我在这里想要分享的，是我学习的关于如何自己实现直播编程的课程。最近几个开发者问我怎么开始自己的直播，因此我在这里想大家展示我给他们的建议！

首先，我在这里贴出一个给过我很大帮助的教程 [“Streaming and Finding Success on Twitch”][7] 。它专注于 Twitch 与游戏直播，但也有很多和我们要做的东西相关的部分。我建议首先阅读这个教程，然后再考虑一些建立直播频道的细节（比如如何选择设备和软件）。

下面我列出我自己的配置。这些配置是从我多次的错误经验中总结出来的，其中要感谢我的直播同行的智慧与建议。（对，你们知道就是你们！）

### 软件

有很多免费的直播软件。我用的是 [Open Broadcaster Software (OBS)][8] 。它适用于大多数的平台。我觉得它十分直观且易于入门，但掌握其他的进阶功能则需要一段时间的学习。学好它你会获得很多好处！这是今天我直播时 OBS 的桌面截图：

![](https://cdn-images-1.medium.com/max/1600/0*s4wyeYuaiThV52q5.png)

你直播时需要在不用的“<ruby>场景<rt>scenes</rt></ruby>”中进行切换。一个“场景”是多个“<ruby>素材<rt>sources</rt></ruby>”通过堆叠和组合产生的集合。一个“素材”可以是照相机、麦克风、你的桌面、网页、动态文本、图片等等。 OBS 是一个很强大的软件。

最上方的桌面场景是我编程的环境，我直播的时候主要停留在这里。我使用 iTerm 和 vim ，同时打开一个可以切换的浏览器窗口来查阅文献或在 GitHub 上分类检索资料。

底部的黑色长方形是我的网络摄像头，人们可以通过这种更个人化的连接方式来观看我工作。

我的场景中有一些“标签”，很多都与状态或者顶栏信息有关。顶栏只是添加了个性化信息，它在直播时是一个很好的连续性素材。这是我在 [GIMP][9] 里制作的图片，在你的场景里它会作为一个素材来加载。一些标签是从文本文件里添加的动态内容（例如最新粉丝）。另一个标签是一个 [custom one I made][10] ，它可以展示我直播的房间的动态温度与湿度。

我还在我的场景里设置了“闹钟”，当有人粉了我或者给了打赏，它会显示在最前方。我使用 [Stream Labs][11] 网络服务来实现它，将它作为一个浏览器网页素材引进我的场景。 Stream Labs 也会在顶栏里给出我最新粉丝的动态信息。

我直播的时候，也会使用一个备用场景：

![](https://cdn-images-1.medium.com/max/1600/0*cbkVjKpyWaWZLSfS.png)

当我输入密码和 API keys 的时候，我另外需要一个场景。它会在网络摄像头里展示我，但是将我的桌面用一个娱乐页面隐藏起来，这样我可以做一些私密的工作：

![](https://cdn-images-1.medium.com/max/1600/0*gbhowQ37jr3ouKhL.png)

正如你看到的，我直播的时候没有把窗口填的太满，但我让我的观众尽可能多地看到我的内容。

但现在有一个现实的秘密：我使用 OBS 来安排我屏幕的底部和右侧，同时视频保持了 Twitch 要求的长宽比。这让我有了空间在底部查看我的事件（订阅数等），同时在右侧观看和回复我的频道聊天室。 Twitch 允许新窗口“弹出”聊天室，这很有用。

这是我完整的桌面看起来的样子：

![](https://cdn-images-1.medium.com/max/1600/0*sENLkp3Plh7ZTjJt.png)

我几个月前开始做这个，还没有回顾过。我甚至不确定我的观众们有没有意识到我进行的这些精心的设置。我想他们可能会把“我可以看到每个东西”视作理所应当，而事实上我常常忙于敲代码，而看不到正在直播的东西！

你可能想知道为什么我只用一个显示器。这是因为两个显示器在我直播的时候太难以管理了。我很快意识到这一点，并且恢复了单屏。

### 硬件

我从使用便宜的器材开始，当我意识到我会长期坚持直播之后，才将它们逐渐换成更好的。开始的时候尽量使用你现有的器材，即使是只用电脑内置的摄像头与麦克风。

现在我使用 Logitech Pro C920 网络摄像头，和一个固定有支架的 Blue Yeti 麦克风。花费是值得的。我直播的质量完全不同了。

我使用大屏显示器（27"），因为我之前说的，使用两个屏幕对我来说不方便。我常常错过聊天，因为我经常不检查我的第二屏幕。你可能觉得使用两个屏幕很方便，但对我来说，把所有东西放在一个屏幕上有利于我对所有事情保持注意力。

这基本上就是硬件部分的大部分内容了。我没有使用复杂的设置。

如果你感兴趣，我的桌面看起来不错，除了刺眼的麦克风：

![](https://cdn-images-1.medium.com/max/1600/0*EyRimlrHNEKeFmS4.jpg)

### 建议

最后这里有一些我通过实践得出的一般性建议，这使我的直播从整体来看变得更好，更有趣。

#### 布告板

花点时间建立一个好的布告版。布告板是位于每个人频道底部的小内容框。我把它们看作新的个人空间窗口（真的）。理想的布告板可以有类似于聊天规则，有关直播内容的信息，你使用的电脑和设备，你最喜欢的猫的种类，等等这样的东西。任何关于个人形象的内容都可以。我们可以看看其他人（尤其是热播播主）的理想的布告板是什么样的！

一个我的布告板的例子：

![](https://cdn-images-1.medium.com/max/1600/0*HlLs6xlnJtPwN4D6.png)

#### 聊天

聊天真的很重要。你可能会被中途观看你直播的人一遍又一遍地问同样的问题，如果可以像现实生活中那样聊天那样会很方便。“你正在做什么？”是我敲代码的时候别人最常问我的问题。我用 [Nightbot][12] 设置了一个聊天快捷命令。当你输入一些像 _whatamidoing_（我正在做什么） 这样的单词时，会自动给出我事先设好的解释。

当人们问问题或者给出一些有趣的评论时，要回复他们！和他们说谢谢，说他们的 Twitch 用的很好，他们会感谢你的关心和认可。一开始的时候很难对这些都保持注意力，但你做得多了之后，你会发现同时做这几件事变得更容易了。尝试着每两分钟就花几秒去关注聊天室。

当你编程的时候，_解释你正在做的事_ 。多说点。开开玩笑。即使我碰到了麻烦，我也会说：“哦，糟糕，我忘了这个方法怎么用了，我 Google 一下看看”。人们一般都很友好，有时他们还会和你一起寻找解决的办法。这很有趣，让人们一直看着你。

如果播主一直安静地坐在那敲代码，不去聊天，也不管他新粉丝的信息，我会很快对他失去兴趣。

很可能你 99% 的观众都很友好，并且都有好奇心。我偶尔还是会碰到挑衅的人，但 Twitch 提供的检查工具可以有效避免这种情况。

#### 准备时间

尽量将你的配置“自动化”。我的终端是 iTerm ，它可以让你保存窗口排列和字体大小的配置，这样你以后就可以再现这些配置。我有一个直播时的配置和一个不直播时的配置，这非常省事。我输入一个命令，所有东西就都在合适的位置并保持最完美的尺寸，并可以使用了。

还有其他的应用可以用来自动化你的窗口位置，看看有没有对你有用的。

让你的字体在终端和编辑器中尽可能的大，这样所有人都能看清。

#### 定期直播

让你的日程表更有规律。我一周只直播一次，但总是在同一时间。如果你临时有事不能在你平常直播的时间直播，要让人们知道。这让我保持了一些固定观众。一些人喜欢固定的时间，这就像和朋友在一起一样。你和你的社区在一个社交圈子里，所以要像对待朋友一样对待他们。

我想要提高我更新直播的频率，但我知道因为旅游的缘故我不能适应超过一周一次的直播频率。我正在尝试找到一种可以让我在路上也能高质量地直播的方法。或许可以临时将我聊天和写代码的过程保存起来，周末直播的时候再放出来。我仍然在探索这些办法！

#### 紧张心理

当你即将开始的时候，你会感觉很奇怪，不适应。你会在人们看着你写代码的时候感到紧张。这很正常！尽管我之前有过公共演说的经历，我一开始的时候还是感到陌生而不适应。我感觉我无处可藏，这令我害怕。我想：“大家可能都觉得我的代码很糟糕，我是一个糟糕的开发者。”这是一个困扰了我 _整个职业生涯_ 的想法，对我来说不新鲜了。我知道带着这些想法，我不能在发布到 GitHub 之前仔细地再检查一遍代码，而这样做更有利于我保持我作为开发者的声誉。

我从 Twitch 直播中发现了很多关于我代码风格的东西。我知道我的风格绝对是“先让它跑起来，然后再考虑可读性，然后再考虑运行速度”。我不再在前一天晚上提前排练好直播的内容（一开始的三、四次直播我都是这么做的），所以我在 Twitch 上写的代码是相当粗糙的，我还得保证它们运行起来没问题。当我不看别人的聊天和讨论的时候，我可以写出我最好的代码，这样是没问题的。但我总会忘记我使用过无数遍的方法的名字，而且每次直播的时候都会犯“愚蠢的”错误。一般来说，这不是一个让你能达到你最好状态的生产环境。

我的 Twitch 社区从来不会因为这个苛求我，反而是他们帮了我很多。他们理解我正同时做着几件事，而且真的给了很多务实的意见和建议。有时是他们帮我找到了解决方法，有时是我要向他们解释为什么他们的建议不适合解决这个问题。这真的很像一般意义的组队编程！

我想这种“不管重要不重要，什么都说”的情况对于直播这种媒介来说是一种优势，而不是劣势。它让我想的更多。理解一个观念很重要，那就是没有完美的程序员，也没有完美的代码。对于一个新手程序员来说这是令人耳目一新的经历，对我这个老手来说却是微不足道的。

### 总结

如果你想过在 Twitch 上直播，我希望你试一下！如果你想知道怎么迈出第一步，我希望这篇博客可以帮的到你。

如果你周日想要加入我的直播，你可以 [订阅我的 Twitch 频道][13] :)

最后我想说一下，我自己十分感谢 [Mattias Johansson][14] 在我早期开始直播的时候给我的建议和鼓励。他的 [FunFunFunction YouTube channel][15] 也是一个令人激动的定期直播频道。

另：许多人问过我的键盘和其他工作设备是什么样的， [这是我使用的器材的完整列表][16] 。感谢关注！

--------------------------------------------------------------------------------

via: https://medium.freecodecamp.org/lessons-from-my-first-year-of-live-coding-on-twitch-41a32e2f41c1

作者：[Suz Hinton][a]
译者：[lonaparte](https://github.com/lonaparte)
校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

[a]:https://medium.freecodecamp.org/@suzhinton
[1]:https://www.twitch.tv/noopkat
[2]:https://www.twitch.tv/handmade_hero
[3]:http://nuclearthrone.com/twitch/
[4]:https://twitter.com/nolanlawson
[5]:https://www.youtube.com/watch?v=9FBvpKllTQQ
[6]:https://github.com/noopkat/avrgirl-arduino
[7]:https://www.reddit.com/r/Twitch/comments/4eyva6/a_guide_to_streaming_and_finding_success_on_twitch/
[8]:https://obsproject.com/
[9]:https://www.gimp.org/
[10]:https://github.com/noopkat/study-temp
[11]:https://streamlabs.com/
[12]:https://beta.nightbot.tv/
[13]:https://www.twitch.tv/noopkat
[14]:https://twitter.com/mpjme
[15]:https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
[16]:https://gist.github.com/noopkat/5de56cb2c5917175c5af3831a274a2c8
