大家好,我是XGN,这次是在Mac上写这篇文章。这次来谈一谈WWDC Swift Student Challenge 2021.
传送门
工程介绍
我的工程是MIST,MayISolveIt,是一个教育游戏为一体的2D Playground。在游戏中你扮演一名返乡有志青年希望通过自己的技术和政府的补助帮助当地的老乡脱贫致富。
在游戏中,你需要摆放建筑,考虑到自己的经济因素和老乡们对环境的要求,实现和谐自然的可持续发展。
该项目开源。
段1
事情的开头是2020年9月,也就是我上高一的第一个学期,LS不知道怎么的开设了Apple WWDC的选修课,作为无路可选的我于是就报名了课程。当时的我一无所有,没有iphone,没有mac,只有一个ipad mini。ls老师第一节课果然就说:「你们必须有mac,不然上你🐎!」于是我就花重金买了一个macbook Pro我的9000啊。当时还犹豫了好久,还考虑过退课的事情。但是ls说选修课下学期还会有只是不开课后我就觉得蛮值得,就下定决心买了。结果高一下没有了,ls啊
然后跟着hqy学长学习了一个学期的SwiftUI和乱七八糟的东西(说实在的,每次上课前我就已经把之后好多课的东西写完了)。同时也批判了一个学期的Swift语法和编辑器……当时还写了好多测试项目。hqy学长的课一开始还有许多人来上,后来人就越来越少,最后就没几个了,还有好多摸鱼的……
总体来说,苹果对开发者不算特别友好,尽管他们的用户体验绝对NB。买回mac后被炫酷的设计、高级的UI和动画惊艳了。顺便说一下,这个键盘用起来也很爽,输入法比Windows的不知道智能到哪里去了。
段2
差不多2021年1月左右我们就开始为WWDC做准备了。当时,hqy和ls让我们想一个idea,不想出来不许走,要求用上「SwiftUI」,「CreateML」或者是「ARKit」,还要结合时事。于是当时MIST的想法就诞生了:
摆放道具,帮助村民脱贫致富。需要考虑许多自然、人文因素,要因地制宜。
这就是MIST的雏形。
段3
MIST的一开始想要通过纯SwiftUI实现,毕竟swiftUI中也有拖拽事件什么的。本着这样的想法,我写了MIST v1。结果发现SwiftUI难用的一批,再加上不知道是我的问题还是苹果框架的bug,实现起来非常不优雅,也非常困难。
MIST v1,非常的丑陋。
段4
为了解决swiftUI不给力的问题,我将目光转向了sprite kit。简单评价一下SK,SK是一个非常强力的框架,它的动画系统和引擎理念都非常先进,只不过生不逢地,选在了Swift这一语言,而且是苹果独占,结果实现效率也不太行(详见TestSTG4)。假如有人能够完整的实现SK的动画系统,再加一点优化,让他全平台化,一定能成为非常NB的引擎。
于是我就采用了SK和swiftUI结合的方式开发v2。不过我当时非常憨憨的写了一个XCode App,还是为iOS设计的App……于是,当时的MIST中就有了陀螺仪的功能。
MIST v2,其中部分内容是SwiftUI,部分内容是SK。
不过开发中由于我的Swift功底实在不行,还得感谢Stackoverflow上的同志们和Google这一强大的搜索引擎。差不多到这个时候这个工程的总用时已经达到了50小时。
一切似乎非常顺利,直到我知道要做Swift Playground……
段5
我从Apple官网上下载了Playground的模版,准备移植。本来以为移植只是简单地把代码复制过去加一点playground的特色,没想到大错特错了。
结果是playground的doc非常少,Xcode的debug工具也用不了,每次测试时还需使用AirDrop转移到ipad上测试,非常的繁琐(这个时候我还把代码合并到了一个文件),而且代码崩溃了只有简单的一句错误信息「Playground出现了错误,请检查你的代码是否有问题」然后让你重置playground。到了后期又发现swiftui在ipad上总是崩溃,运行效果跟没有一样,甚至做到了把整个ios搞崩溃的程度。
这个时候我得知可以做macos项目。于是我就转向了macOS的Playground。期间还升级了好多次系统和XCode。
段6
之后的事情反而非常顺利,部署在Playground上不是很困难。
最终发布版
最终发布版中删除了陀螺仪的功能,并且提高了SK的比重。
而文书对于我这个外语天才也并不难写,很快就凑满了500词。
于是在2021/4/16晚9点CST我提交了作品。
2021/4/20晚9点CST开源并添加到Github WWDC21
EXTRA
其实在这个过程中,我还在偷偷的干其它工程,比如Pressing Competition 2和TestSTG4,以及大量的音乐创作。学业的繁忙和苹果的开发难度曾让我不知多少次想要退出,可是只要一写起代码就开始无尽的探索了。www
非常感谢ls老师和hqy学长从头到尾的支持和帮助!非常感谢NFLS能够给我提供这个平台和机会。
此外,非常感谢:
- Zzzyt和Zhuky.RLG一直陪伴着我在这条未知的道路上前进并且为文书提出建议。
- Zhuky.RLG为MIST的设想提出建议。
- Hikari和Ninetail大人一直充实着我的精神生活,鼓励着我。
- MonkeyKing的热情似火
- XIZCM为本文章提供稿费
- 一直读到现在的你
给后辈的建议
- 钻研精神
- 学好英语好写文书。
- 先学Java,C#或其他语言后再开始学习Swift
- 优先掌握SwiftUI。
- 有点💰。无论是macos还是ipad还是去美国的✈️都不便宜。
- 平时多参加一些信息方面的活动,比如社团、比赛、开发等。