★欢迎访问 weekly.fatbobman.com[1] 订阅本周报的中英文电子邮件版本。你也可以直接访问我的网站 肘子的 Swift 记事本[2] 更多的周报内容。
肘子的话
我们需要更多的《悟空》
《黑神话:悟空》[3]是由中国游戏工作室 Game Science 历经多年开发的一款动作角色扮演游戏,灵感源自中国古典小说《西游记》。它于 8 月 20 日(本期周报发表的同一天)在多个平台正式发布。
作为中国游戏开发厂商制作的第一款真正意义上的 3A 游戏,《悟空》受到了中国玩家的广泛关注。其在上市前展现的游戏品质,也赢得了全球范围玩家的期待。预售期间销量突破 120 万份,虽然仍无法与一些著名的老牌 IP 相提并论,但这个成绩已经令人欣喜。
在发售首日,《悟空》就打破了包括 Steam 上同时在线最多玩家的付费买断制单机游戏等多项记录。
除了对游戏品质的期待,作为中国玩家,我们更希望《悟空》能为中国的游戏产业带来一些积极变化。作为一个游戏人口和消费金额均在世界上名列前茅的市场,中国长期以来游戏类型比例严重失衡,移动和网络游戏占据了绝大多数市场份额,而单机游戏占比极低。
由于单机游戏大多采用买断制(不以氪金为主),开发者通常会更加注重故事的完整性,并努力通过提高游戏的第一印象来吸引用户消费。
我并非完全反对非买断制的游戏。但是,游戏能否让消费者持续投入时间、精力和金钱,应取决于其能否给玩家带来持续的新鲜感和良好的游戏体验。然而,目前市场上,为了刺激玩家消费,许多游戏的开发已经完全偏离了"游戏"一词的初衷,转而从人性弱点出发,将其打造成具有成瘾性的活动。游戏越来越赚钱,但也越来越不好玩。
一旦完全用商业思维来主导产品开发,其本质就会发生巨大变化。这种情况不仅存在于游戏行业,在移动应用领域也日益普遍。越来越多的应用采用了不提供买断选项的订阅制收费方式。相较于数年前的付费更新机制,订阅制意味着如果不续费就失去了对产品的使用权,这种趋势的蔓延无疑增加了消费者的成本负担和用户数据的不确定性。
作为中国的玩家,我们需要更多像《悟空》这样的作品来改善市场环境。作为数字产品的消费者,我也希望更多的产品能保留买断机制,以减轻用户负担并提供产品和数据所有权的保障。
前一期内容|全部周报列表
原创
在 SwiftData 模型中使用 Codable 和枚举的注意事项[4]
Fatbobman( 东坡肘子 )[5]
相较于 Core Data,SwiftData 在数据模型的构建方式上实现了根本性的革新。它不仅支持纯代码的声明方式,还允许在模型中直接使用符合 Codable
协议的类型及枚举类型,这些都是其显著的新特性。许多开发者都倾向于利用这些新功能,因为它们似乎非常契合 Swift 语言的声明风格。然而,若对这些新功能的实现细节和潜在限制理解不足,开发者可能会在未来遇到不少问题。本文旨在探讨在 SwiftData 模型中使用 Codable
和枚举时需要注意的几个关键点,帮助开发者避免走入误区。
近期推荐
SwiftUI 中的全局表单模式 ( Global Sheets Pattern in SwiftUI )[6]
Mohammad Azam[7]
SwiftUI 提供了一种高度灵活的方式来声明和展示模态表单,允许开发者就地声明和根据状态动态展示或隐藏表单。然而,随着应用规模的扩大,这种高度自由的实现方式可能会导致全局管理上的复杂性和困难。在本文中,Mohammad Azam 探讨了如何通过实施“全局表单模式”(Global Sheets Pattern)来优化表单的展示管理。这种模式通过集中管理表单逻辑,不仅简化了管理过程,还提供了一个清晰、可维护的解决方案,并配备了易于使用的 API。这种方法有效地解决了在多个视图间管理表单时常见的冗余和混乱问题,使得代码更加整洁并易于维护。
感知与现实 ( SwiftUI in 2024: Bridging Perception and Reality )[8]
Rizwan Ahmed[9]
Rizwan Ahmed 在 iOSKetchup2024 活动中探讨了使用 SwiftUI 开发的挑战和机遇,并在文章中详细介绍了解决策略。本文从 SwiftUI 的挑战开始,涵盖了对其特性的理解、不同平台上的行为差异、导航问题的解决方案、提高可访问性及其作为设计工具的潜力等多个方面。作者强调,尽管面临挑战,SwiftUI 的跨平台动态应用开发潜力巨大,是连接技术感知与现实的桥梁,有助于开发者与设计师之间的紧密合作。
2024 年表情符号标准的复杂状态 ( The (too?) complex state of the Emoji standard in 2024 )[10]
Daniel Saidi[11]
在本文中,Daniel Saidi 探讨了表情符号标准当前的状况,特别强调了支持肤色、性别和方向变体所带来的复杂性,以及 Apple 在 iOS 17.4 版本中首次删除表情符号的重大决定及其深层含义。文章指出,随着表情符号支持更多变体,其复杂性呈指数级增长,这在技术层面引发了前所未有的兼容性问题。Saidi 认为,虽然增加这些变体的初衷本是出于好意,但这种做法可能使表情符号标准偏离了其最初的目标——提供一个简洁、通用的标准。他希望未来的表情符号标准能更全面地反映人类的多样性,而不仅仅是围绕肤色和性别的变化。
禁用 Xcode 资产符号生成 ( Disabling Xcode Asset Symbol Generation )[12]
Keith Harrison[13]
从 Xcode 15 开始,新增了一个功能,可以为资产目录中的颜色和图片创建 Swift 和 Objective-C 符号。这使得开发者可以在 SwiftUI 视图中直接使用这些生成的符号,而无需使用字符串引用,从而减少错误并利用自动完成和编译器验证。然而,在 Swift 包管理(SPM)中使用时,默认的自动生成符号设置可能会引起问题。特别是在 Xcode 15,没有办法关闭这一功能。Keith Harrison 在本文中介绍了在 Xcode 16 中如何禁用资产目录中的资产符号生成功能,这对于希望避免符号名称冲突或不依赖于 Xcode 自动生成代码的开发者尤其重要。此功能的更新允许开发者更精细地控制资产符号的生成,提高了项目的灵活性和代码的可维护性。
App 审核应为应用程序自动授予核心功能默认权限 ( Thought: App Review Should Grant Core-Function Default Entitlements to Apps on the App Stores )[14]
Matthias Gansrigler[15]
随着 macOS 15 Sequoia 的推出,对应用权限的管理变得更加严格,例如,屏幕录制权限现在需要每周用户确认一次。Matthias Gansrigler 提出,经过苹果 App Store 审核的应用应自动获得其核心功能所需的默认权限,免去用户反复确认的麻烦。他认为,App Review 应成为决定应用是否获得相关权限的关键因素,这样做不仅能提升从 Mac App Store 下载的应用的用户体验,使其更加友好和精致,也能彰显出苹果产品的优越性。然而,Gansrigler 同时指出,鉴于以往在 App Review 过程中漏审事件的频发,这样的自动授权机制可能仍属于理想化想法。这进一步引发了对 App Review 存在价值和有效性的深入质疑。
THANK YOU
如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞、赞赏,并将其 转发 给更多的朋友。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
《黑神话:悟空》: https://store.steampowered.com/app/2358720/Black_Myth_Wukong/
[4]
在 SwiftData 模型中使用 Codable 和枚举的注意事项: https://t.ly/TeLVu
[5]
Fatbobman( 东坡肘子 ): https://x.com/fatbobman
[6]
SwiftUI 中的全局表单模式 ( Global Sheets Pattern in SwiftUI ): https://t.ly/NS-3k
[7]
Mohammad Azam: https://x.com/azamsharp
[8]
感知与现实 ( SwiftUI in 2024: Bridging Perception and Reality ): https://t.ly/0clqB
[9]
Rizwan Ahmed: https://x.com/rizwanasifahmed
[10]
2024 年表情符号标准的复杂状态 ( The (too?) complex state of the Emoji standard in 2024 ): https://t.ly/crGQz
[11]
Daniel Saidi: https://x.com/danielsaidi
[12]
禁用 Xcode 资产符号生成 ( Disabling Xcode Asset Symbol Generation ): https://t.ly/HfiW7
[13]
Keith Harrison: https://x.com/kharrison
[14]
App 审核应为应用程序自动授予核心功能默认权限 ( Thought: App Review Should Grant Core-Function Default Entitlements to Apps on the App Stores ): https://t.ly/5Lppc
[15]
Matthias Gansrigler: https://x.com/eternalstorms