写在前面:
一个写硬件的开发妹子在 游戏直播平台 Twitch 上直播写代码了一年后的总结,这篇文章非常轻快和可爱,跟妹子的颜值一样,读来也很轻松闲适。
决定翻译这篇,也是和最近跟进的讲堂项目有关。在她总结的 尴尬 部分确实道出了 Live coding 最奇妙的地方。另一点妹子提出了一个观点:做直播即是在创建一个社区,那么作为社区中心的 leader,就应该为营造社区自由交流互相沟通学习而努力。很是赞同。文中翻译不知道有没有传达这个意思,那么就单独将原文列出来当作这篇译文的重点划出来一下吧:
Some folks love routine and it’s exactly like catching up with a friend.
You’re in a social circle with your community, so treat it that way.
原文地址 : Lessons from my first year of live coding on Twitch
By: Suz Hinton
译文部分:
去年7月我第一次尝试了直播。我并没有像Twitch 上其它大多数人一样进行游戏直播,而是在利用业余时间直播我的一些开源项目。我主要在写一些 NodeJS 硬件资源库(大部分都是我自己的项目),同时我也是 Twitch 的NodeJS社区用户,为啥不是在一个更小的社区比如 以JavaScript驱动的硬件 :) (推测作者在这里应该是在讲笑话,不过没get到点),所以我注册了一个自己的频道,从那之后就开始定期直播了。
当然我不是第一个这么做的人,Handmad Hero 是我了解到的直播写代码的先行开发者之一,很快被 Vlambeer 工作室的开发者关注,这些开发者也在 Twitch 上创建了开发 Nuclear Throne 游戏的直播,也因为我也非常喜欢 Vlambeer 工作室的缘故。
真正让我下决定开直播的原因是我的好朋友 Nolan Lawson。我知道他每个周末都会直播总结他的开源项目,他会以他自己的方式解释他正在做的项目每一件事情:回复 GitHub 上提交的issue,分类 bugs,在分支上调试等等,所有你可能想到的关于代码的事情。我发现这样直播的方式非常有趣—— Nolan 的开源库活跃度非常高且使用度也很广。我的开源生活和他的比起来差距就非常大了。
你甚至可以看见我在他的直播视频下的这样的留言:
大概一个星期后 我试了一次,设置完 Twitch 频道之后我就开始用 OBS 推流直播了。我记得我的直播内容是 Avrgirl-Arduino 项目(现在推流时也经常在使用这个项目)。那真的是一次艰难的直播。我非常紧张,并且在直播前一晚我熬了一整夜来演练要直播的内容。
那场 周六的直播尽管只有几个访问用户量,依旧比较鼓舞人心,所以我坚持下来了。而最近我也已有了超过一千个关注者,其中也有些看我直播的“常客”,我称他们是我的 “noopkat 家人”。
我和观众们都感受到了直播的乐趣,我喜欢把直播编程的部分叫做「多人线上结对编程」。每个周末看到这些热心又有趣的开发者们加入我真的非常感动。目前我遇到的最有趣的一次是一个开发者指出我的 Arduino 板在我调试完软件后并没有起作用,其实是因为有一块芯片并没有在板子上(估计当时的场景是作者花了好长时间调试问题,无法插入视频,附上截图,和视频链接):
很多次推流中途我都“掉线”好几次,主要是在查收 Github 上的请求,这些请求都是我在直播中提及但还没来得及开始开发的需求问题。我必须承认,在 Twitch 社区中那些慷慨而又热心的开发者的帮助下,我的开源项目已经变得越来越完善了。
我还有许多话想表达在 Twitch 上直播的益处和乐处,但是也许就要另外开一篇文章了 ;p 最重要的是我想分享我从直播中学习到的一些东西,这对任何想试试代码直播的开发者应该会有帮助。最近我也收到一些开发者们关于如何开始直播的问题,下文也是我针对这些问题给出的一些建议和想法:
首先,给大家推荐 Twitch 在 reddit 上发表的一篇叫 在 Twitch 直播如何取得成就 的文章,非常有帮助。文章尤其针对了游戏直播,但是也有一些部分建议针对其他直播类型也很有参考价值。如果你正在考虑在 Twitch 上建频道做直播并考虑更多的细节问题(比如直播设备及软件选择等),在此之前我非常建议你读一下这篇文章。
我个人的建议会在下文中提出,都是根据我个人的直播总结和那些听我碎碎念的经验开发者(你懂的!)们收集而来。
软件
有很多免费的推流软件能进行直播,我用的是 Open Broadcaster Softeware(OBS).几乎所有直播平台都是适用。个人觉得它非常容易上手,但也有人觉得需要花些时间学习了解。下图是我今天截取的OBS桌面(点击查看大图):
在直播中可以通过切换「场景」来更改画面。「场景」是一系列「来源」集合,可以彼此间重复引用和排序。「来源」可以是摄像头、麦克风、你的电脑桌面、网页、实时文本、照片等等。OBS 真的非常强大。
截图的桌面场景就是我设置的所有代码直播场景,在直播的大部分过程中基本上我推流的都是这个画面。我用的是 iTerm 和 vim, 当然也会切换到浏览器窗口,因为有时候会查看一些文档或者查看 Github 上一些状态消息或者进行操作等等。
右下方底部的黑色方形画面是我的摄像头,观众们可以在直播中看到我的操作,让互动更紧密。
我有一个自制“标签”用来标识我的屏幕,主要在顶部作为banner给每个画面加上状态和信息(上述截图顶部绿色banner)。这个banner比较有些个人化,但也是一个直播中有用的提示信息。这是一个我用 GIMP 制作的图片,可以在 OBS 的选择「来源」中以图片来源导入到推流画面中。有些标签是通过一些文本文件(例如在线用户)导入的实时数据,有一些是我自制的直播参数显示,主要展示了直播间目前的人气(英文用到了温度和湿度 这两个词,感觉作者比较可爱)。
在屏幕上我还有设置了一个“提醒”,当有人关注或者赞赏了我的时候会出现一个很可爱的提醒banner,我使用了 Stream Labs 的 web 服务,将这些内容作为浏览器网页来源加入到 OBS 中,Stream Labs 同时也是将实时的在线用户展现到我的banner上的工具。
同时,在快要开播前,我还有个随时待命的提醒:
同时,在直播中如果我需要输入私密 token 或者 API keys 的时候也会需要一个转场画面。画面此时会有一个小插画,我的摄像头依旧在右下角,这样我就可以进行调试了(见下图):
正如你所见,直播的时候我都不是太严肃,但我很乐意为观看我直播的开发者们做最万全的准备。
现在给大家提一个真正的技巧:在保证 Twitch 要求的视频尺寸分辨率的基础上,我会用 OBS 来裁切掉我屏幕的底部及右边缘的部分。这样我自己的屏幕就有空间查看一些我自己的直播间信息(在线人数等等),以及能在右侧看到我频道中的聊天情况。 Twitch 针对聊天窗可以设置“弹出”功能新窗口查看,在直播过程中非常有帮助。
下图是我的全屏桌面的样子:
几个月前我开始使用这个小技巧,而且也没有看回放。我甚至都不确定观众是否意识到我这边的屏幕其实跟他们看到的不一样。我觉得他们可能理所当然认为我能看到所有东西——尽管事实上我都不知道在我敲代码的时候他们都看到了什么!
(这里提到的应该是产品层面上,讲师端跟观众端看到的直播画面不同的讨论,妹纸说话很可爱+1 ,以及提到twitch 的聊天窗口可以弹出确实是个很棒的小细节)
你可能好奇为什么我只用一个显示器,因为两个显示器对我而言要处理的内容太多,直播过程中会觉得很干扰,所以还是坚持只用了一个显示器。
硬件
最开始我都用的是比较便宜的硬件设备,在对直播越来越上心后开始买一些好的设备。如果你也打算直播,刚开始的时候可以直接利用身边的基础设备,比如你的笔记本电脑。
现在我用的是 Logitech Pro C920 摄像头。一个蓝牙 Yeti 麦克风 和麦克风支架。如果打算长期投入下去,这些设备的花费绝对是值得的。这也会让直播质量更进一步。
我用的是 27 寸显示器,因为在上文提出过我不太习惯双屏幕,双屏情况下我很可能因为专注编程而漏看了聊天信息。可能你的习惯和我的不一样,但对我而言单屏幕会让我更专注。
以上差不多是硬件方面的配置内容了;并没有太多复杂的设备配置。
下图可以看出我的桌面比较正常—-除了左上角比较尴尬的麦克风:
小Tips
最后是我收集整理的一些小的技巧推荐给大家,这些技巧慢慢让我的直播变更好也让我更乐在其中。
公告板
花一些时间设置你的公告板。公告板是在每个人的频道主页底部的一个内容区域。我把他们当作 My Space 一样的个人主页信息模块(LOL)。公告板里的内容可以是聊天规范、你的直播信息、你是用的直播硬软件设别、你最喜欢的猫品种(233333);任何可以建立你的个人特点的信息,可以看看其他人的频道公告板里的内容(尤其是热门的一些)作为参考!
我的一个公告板内容参考:
聊天
聊天非常重要。在直播中不断有人加入,你会不断收到相同问题。所以有一个“宏”聊天指令会非常有用。“你现在在做什么?”是我在敲代码的时候最常见的问题。我有一个使用 NIghtbot 制作的聊天快捷键commands。通过输入一些句子命令(例如 !whatamidoing), 它会直接把我提前输入的内容自动发出来回复观众。
当观众提问或者称赞你的时候,回应它们!说声感谢,说出它们的 Twitch 名称,他们会很感谢受到关注以及获得认可。在刚开始直播的时候会觉得非常困难,但随着更多地练习你就会对这种多任务处理方式更得心应手了。试着每过一段时间查看一下聊天窗口是否有新的消息。
在敲代码的时候,记得说出你现在在干什么。经常说。讲讲小笑话。当我卡住了,我会说:“噢早了,我忘记怎么用这个方法了 让我 Google 一下哈哈哈哈”,观众们都会很耐心,有的时候他们会和你一起读并帮助你解决出来。这非常有趣也很有参与感,也会让观众乐于看下去。
如果直播的开发者只是坐在那里安静的敲代码,忽略聊天和新观众的提醒,我会很快失去兴趣。
99% 以上关注你的频道的用户都是友好和带有好奇心的,但偶尔也会有些不友好的事情发生,但 Twitch 和 NIghtbot 提供的模块化工具都能很好的缓解这种情况。
准备时间
尽量自动化你的设置内容。我的终端是 iTerm,你可以保存你的窗口设置以及字号大小,这样有利于随时取用。我有个直播窗口配置和非直播窗口配置。这样节省了很多时间。只需键入一条命令所有内容都会被设置好。
还有其他的应用也会自动化你的窗口设置情况,也可以自己Google 一下找到适合你自己习惯的应用。
确保你的终端和编辑器的字号足够大,这样观众才能看清楚。
常规化
让你的直播安排常规化。我一周只直播一次,但是是在同一时间。要让观众们提前知道如果你临时有事而无法直播。这为我积累了常驻观众。有些人喜欢制定计划,就像和老朋友约会聊天一样。你是你建立的社区的社交中心,那么也要认真对待社区的成员。
我本身也想进行更多的直播,但因为路途的问题我无法承诺比一周一次更多的频率。我正在努力想在路上直播能给到更好质量效果的办法,或者只是随意聊天到了常规周末直播时间再保存代码。我还在思考当中!
尴尬
你刚开始的时候会觉得有些奇怪。有人看着你敲代码你会非常紧张。这很正常!在刚开始我也会这样感觉,尽管我还有在公开场合演讲的经验。我感觉好像我无处可藏,这让我觉得很可怕。我想,“大家肯定都会觉得我的代码很烂,我是个水平低的开发”。说实话,这种思考模式自我进入这个行业来就一直萦绕着我。我知道如果有了这个想法,在把代码推到 GitHub 之前我是不会重构代码的,这也对我作为开发者的声誉有一些保障。
通过直播写代码我逐渐了解到了自己的编程风格。我了解到我绝对是那种“先把功能跑通,再让代码可读,最后再考虑效率”的编程类型。现在直播我已经不再提前预演了(直播3到4次之后我就不再预演了),所以在 Twitch 上直播的时候我的代码写的很“粗糙”,我也渐渐接受这个现状。只有在不看聊天窗口而且不说话只是想着代码和思路的时候我的代码才会写到好,这样也没关系。我忘记了我用了成千上万次的方法声明、在几乎每场直播中都会犯愚蠢的错误。总结为一句话,直播其实不是一个发挥你最佳状态的编码环境。
我的 Twitch 关注者从来不会以此来评判我,而且他们也会帮我很多忙。他们理解我正在多任务处理,会给出非常有用的意见和建议。有时候是他们把我从困境中解救出来,也有时候我也会向他们解释为什么他们的提议没有用。真的很像结对编程!
我认为这种“毫不掩饰”的方式对直播而言是一个优势而不是缺点。它会让你们更有互动和关联。向大家传达没有完美的开发者和完美的代码是非常重要的。对新手而言,这样会更有激励性;对像我一样的经验开发者,也学会了谦逊和不断学习的重要性。
结论
如果你对在 Twitch 上直播写代码蠢蠢欲动,我鼓励你试一试!希望这篇文章会对游移不定的你有一些帮助。
如果想在周日加入我,可以关注我在 Twitch 上的频道 :)
最后想感谢 Mattias Johansson 的鼓励,他的 FunFunFunction Youtube channel 也是我的直播灵感来源