> 文档中心 > 程序员会怎么打发业余时间?

程序员会怎么打发业余时间?

网上好多程序员加班加到GG的消息一堆,那么程序员真的没有业余时间吗?在大厂我就不知道了,因为没去过,但一般企业,其实忙的时候,也就忙那么几天,我在上一家公司的时候,我们一个同事,一般就干2个小时的工作,其他时间就学习,老板还很喜欢他,他也挺喜欢那种感觉,也许很多人都会觉得这样的生活也太爽了吧。其实我也一样,只不过我自己不太喜欢那种状态,自从我加入程序员的行业,我就想凭借自己的所学,去打造那些去改变世界、造福人类的软件出来,但只在公司上班,那我的这个想法估计就得变成白日做梦了,永远不可能实现。于是乎一年前我离职和朋友开始创业,一年过去了,虽然没有多大的成果,但是过得非常开心,虽然累,但自己每一次的努力,都在走向那个初衷。前几天和前同事打电话聊天,他说他过得很压抑,想换环境。我就在想一个问题,再换环境,不就是再换一个地方给别人挣钱,去帮别人实现别人的梦想吗?做出结果,有多少和你有关系呢?那么为什么不拿自己多余的时间,去和一些志同道合的人,共同筑梦呢?不成,你也没什么损失,唯一就是损失点你打游戏、少睡几个小时的时间。但是万一成了呢?那可能就会改变你的整个人生了呢?程序员业务时间应该干点什么?我觉得应该找些志同道合的人,共铸宝剑,施展自己的平生所学,去实现一个梦。但只局限于大神级别的人物哈,刚毕业的小白还是好好学习,后期才能去筑梦。

我有个朋友,业余时间就是开发游戏打发时间:

开发游戏……

我先说个秘密,要想有业余时间,最好找个全远程在家办公的工作,每天光通勤时间就能省俩小时。俩小时啊,干点啥不香?如果是海外远程的就更好了,大部分时间都是天高皇帝远想浪就浪没人管你……

我大概从4年前开始有个想法,学习编程的过程和游戏很像(闯关打怪,同时闯关之后有无比的愉悦感,当然我是说我有愉悦感,根据我的观察不是每个人都有愉悦感,有些人甚至会厌烦),那么我能不能设计一个游戏,闯关的过程就是学习的过程呢?这个过程中游戏性的拿捏需要恰到好处(我感觉我还没做好……),不能太好玩,否则玩家会倾向于耍小聪明不写代码,也不能太无聊,否则玩家根本玩不下去。

后来这个想法愈发的强烈,我就从2020年10月开始搞。10月跟我媳妇回丈母娘家,晚上十点钟把娃哄睡了之后一个人抱着电脑到客厅开工。周末有的时候把娃跟她妈丢到商场里我自己在KFC点一杯可乐开工。日常早上六七点间起床开工到9点上我正经的班,然后下午四五点本职工作结束之后开工。

现在是2022年3月,一年半已经过去了,离我设想的成品还有很远,不过终于可以放一个预览版出来见人了,在这里,浏览器打开就能玩

游戏的类型应该算是MMORPG吧,每个人都拥有自己的一个副本。现在的情节主要是完成简单的编程任务摧毁外星虫子防御塔拯救世界什么的(我玩的游戏少,这个脑子目前想不出来啥更好的情节了)……

 

这里有个双关梗……

至于多人游戏之间的新玩法我还没想清楚(比如你和你的队友一起刷题可以额外拿金币?或者你可以和队友结婚(无论男女),然后经验加倍?)。

大部分的代码是开源的,没开源的未来迟早也会开源:https://github.com/ByteLegend/ByteLegend

我觉得游戏的主要亮点在于催促你去真正的写代码,去思考,而不是只看视频,看完了一堆视频一动手发现还是啥也不会。比如你要学习Git,我们会在野外放一个宝箱,打开宝箱的钥匙就是git version的输出:

你要学习调试器,我们会放一个仓库,需要你真正调试之后获得密码。

你要通过这里的两扇门,就必须运行程序获得通关密码。在这个过程中你被迫配置好了IDE,学会了切换分支操作。

游戏的后端依赖GitHub API和GitHub Actions。因为众所周知的原因,国内访问这些东西是很痛苦的,所以游戏用了很多魔法保证用户的体验:

所有的项目都配置了项目级别的Maven仓库镜像,Maven wrapper的下载地址也指向了国内CDN。所有的GitHub API调用,包括GitHub头像的地址都被魔法劫持到了国内地址:

魔法在里面

用的技术栈主要是Kotlin Multi Platform/React/Canvas/WebSocket/Vert.x。这一套玩意有多新呢,这么说吧,我开始做的时候,前端的Kotlin JS还是alpha状态(现在好像也是)。其实我做了几天就意识到我需要自己发明一系列的东西:地图格式、动画效果、CI/CD,等等等等,还好最后都发明出来了。

虽然目前还是个玩票项目,但是我一直在认真做,连自动化测试也有好好在写,比如这个是浏览器自动化测试,用代码把整个游戏流程跑一遍:

还有很多想做的东西没有做,现在看来目测要继续做个几年了:

我想搞个地图,上面游荡着很多野怪,每个野怪就是一道算法题目,刷题就是杀怪……

我想往游戏里面嵌入一个音乐播放器……

我想让玩家可以互相沟通,碰到问题一起讨论……

我还希望扩展到更多的语言,Python、Go、Rust……