源码

为什么我在实时编码时失败了?

随着流媒体应用的逐渐增多,实时编码技术吸引了大量的开发者投身其中。但是对于实时编码技术的上手,真的有那么简单吗?

作者 | Luke Garrigan

译者 | 谭开朗,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

实时编码

实时编码仍处于起步阶段,但随着越来越多杰出流媒体的涌现,它肯定会越来越受欢迎。实时编码可能永远不会像视频游戏流媒体那样大受欢迎,但那只是因为没有那么多的需求。这并不能说明实时编码行不通,仍有很多正式节目流媒体吸引了大量的观众!

我的故事

好几个月的时间,我几乎每天都看实时编码节目,终于在2018年7月,我决定自己动手试一下。

对于首次尝试,我没有真正的计划,甚至没有告诉家人和朋友。我只是一头扎进去,乐观地等待£1000募资的出现。

当时我正在为一个朋友开发Java后端,所以我想为什么不在我编码的时候做直播,一举两得。但我并没有吸引到很多观众,反而是和为数不多的现场观众一起开怀大笑。

动起来

我决定做个不一样的流媒体。我知道一款名为Processing的开源图形库,即使是零基础我也想作出尝试。我会写Java,所以很快也就将其学会了,最终做了一款随机游戏。看了流媒体的人也都加入了这款游戏。

这款游戏非常非常简单,但相对于我的其他流媒体,它吸引了相当多的浏览量。我才发现,人们喜欢屏幕上的动态事物。而只有达到一定的测试数量,观看者才会查看且感兴趣。

我在同一款游戏中添加了一些小功能,比如升级功能,在玩家离开游戏流时动态添加或删除玩家等。它吸引了一些观众,但没有上次那么多。

在这里我学到了非常重要的一课,但我已错过了。这是我放弃后几个月才明白的道理。

P5.js学起来

我想做一个可以和观众一起玩的游戏。我已通过Processing完成了一些开发工作,而逻辑要切换到p5, 它实际上就是浏览器的Processing(是JavaScript而非Java)。

这款游戏以行星为构思,但是一个多人游戏版本:

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi9QbjRTbTBSc0F1aGljdG9FMThqcjBOMkJTeUhvNURadm04aWJsb053M014aWJPb0pIdkZlNGdpYjZoNEpYbkt4SzhMVmlhZExuOG1CYTNDT3dYNE5TSzBHSlJBLzY0MD93eF9mbXQ9Z2lm.jpg

我对游戏开发毫无经验,所以只能在工作中不断学习。多人游戏开发需要用到Node和Socket.io,这也是我需要学习的。这款游戏的前两个流是我最喜欢的,也可能是最成功的。我设置了AWS Lightsail服务器,每次提交新代码都会重新部署,大家都可以和我一起玩或做测试。

我太缺乏经验了,以致不能确定客户端或服务器应该处理游戏的哪些部分。不久之后,有人开始侵入游戏并在屏幕上进行远程控制,一次发射了1000颗子弹。这是最好的实时编码,现场观看者十有八九是程序员,毫无疑问他们会觉得你很愚蠢(即使你希望他们不要这么认为)。

显然,大家喜欢看热闹,我最终也将流的标题更改为“来破解我的多人游戏吧”。

但最终,我的代码得到了优化,我开始知道服务器应该做什么,客户端应该做什么。因此,黑客的数量急剧下降,观看者的数量也随之大幅下降。 

对这款游戏紧抓不放

我在开发这款游戏的过程中获得了很多乐趣,我不断给它添加功能,最终它从小行星游戏发展成为我自己的游戏《Spaceheir》!

目前还没有游戏的在线版,但这是我最新的gif。(现在看起来很不一样了,有了升级系统和电源)

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi9QbjRTbTBSc0F1aGljdG9FMThqcjBOMkJTeUhvNURadm1oMDBpY2RVaWMwOHAzZWc3alh0dXV3S2diYkVnMzRmTzBLN0FiV1RKblRvaWF1QTlhZHJCTDcybEEvNjQwP3d4X2ZtdD1naWY.jpg

每个流最终都与前一个流非常相似:收集想法并将其实现到游戏中,或者修复人们玩游戏时发现的bug。我认为,总是参照过去会让观众觉得单调乏味,也是收视率下降的原因之一。我被困其中,不知道该如何跨越。

像Daniel Shiffman这样的大型实时编码流媒体,他总是在做创新的事情,他从来没有一个庞杂的程序。Daniel的流媒体中都是大量的短代码挑战,人们能从头到尾看到东西的创建过程。我认为这非常重要,也是我喜欢他的流媒体的原因之一(以及他无与伦比的教学能力和性格)。

我喜欢观察他们解决问题,并且自省我对于解决该问题的想法。如果他们像我一样致力于一个大项目,能找到一个不需要先验知识的现有系统是很少见的。这意味着,如果他们从头开始,我可以立即进行比较,因为我不需要担心他们已经编写的一些现有代码。Daniel Shiffman很好地解决了这个问题。

反复无常

另一个主要问题是持之以恒,我要明确做流媒体的时间:每周三、周五和周日。而我只坚持执行了两次。在谷歌搜索“成为优秀流媒体的好用技巧”,得到的结果都有:持之以恒。而我没有坚持下来,我要去上班,有些下班还会很晚,嗯,我无法忍受。

组织性

因为我都在做着同样的事情,所以几乎每一个流项目我都没有做计划。我会直接开始,让观众看到我要做什么。现在,我知道这种做事方式是不对的,我应该计划好我想要做什么,即使是涉及到相同的游戏,至少我也应该对我想要完成的内容有一个清晰的愿景。

结论

约长达6个月的时间里,我进行了实时编码并从中获得了极大的乐趣。我遇到了很多才华横溢的人,并在过程中收获了快乐。不过最后,它变成了一件苦差事,我认为这体现在流本身的质量上。

我相信,我会在某个时间再回到这个话题上,并应用我所学到的经验。遗憾的是,我学到的很多关于实时编码的东西,都只变成了回顾而非工作。如果我学会了持之以恒,也许我会比忍者更强大。 

原文:https://dev.to/lukegarrigan/why-i-failed-at-live-coding-1eie

本文为 CSDN 翻译,转载请注明来源出处。

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/weishenmewozaishishibianmashishibaile.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9月 18, 2019 at 02:17 上午

热评文章