Weekly Comment
We Need More "Wukong"
Black Myth: Wukong is an action role-playing game developed over several years by the Chinese game studio Game Science, inspired by the classic Chinese novel "Journey to the West". It was officially released on multiple platforms on August 20th (the same day this weekly newsletter is published).
As the first true AAA game produced by a Chinese game developer, "Wukong" has garnered widespread attention from Chinese players. The game quality showcased before its release has also won the anticipation of players worldwide. During the pre-sale period, sales exceeded 1.2 million copies. Although it still can't be compared to some famous established IPs, this achievement is already delightful.
On its launch day, "Wukong" broke several records, including the one for the most concurrent players in a paid single-player game on Steam.
Beyond expectations for the game's quality, as Chinese players, we hope that "Wukong" can bring some positive changes to China's game industry. As a market that ranks among the top in the world in terms of gaming population and consumption, China has long suffered from a severe imbalance in game types, with mobile and online games occupying the vast majority of market share, while single-player games account for an extremely low proportion.
Since most single-player games adopt a one-time purchase model (not primarily relying on microtransactions), developers usually pay more attention to the integrity of the story and strive to attract user consumption by improving the game's first impression.
I'm not entirely against non-one-time purchase games. However, whether a game can make consumers continuously invest time, energy, and money should depend on whether it can bring players sustained freshness and good gaming experiences. Yet, in the current market, to stimulate player consumption, the development of many games has completely deviated from the original intention of the word "game", instead exploiting human weaknesses to create addictive activities. Games are making more money, but they're also becoming less fun.
Once product development is completely dominated by business thinking, its essence undergoes a huge change. This situation exists not only in the game industry but is also increasingly common in the mobile application field. More and more applications have adopted subscription-based charging methods without offering a one-time purchase option. Compared to the paid update mechanism from a few years ago, the subscription model means that users lose access to the product if they don't renew, and the spread of this trend undoubtedly increases consumers' cost burden and the uncertainty of user data.
As Chinese players, we need more works like "Wukong" to improve the market environment. As a consumer of digital products, I also hope that more products can retain the one-time purchase mechanism to reduce user burden and provide guarantees for product and data ownership.
BTW: ❤️ Our email-based weekly newsletter subscriptions surpassed 2,000 last week.
Previous Issue|Newsletter Archive
If you appreciate my work and want to promote your product to the Swift and iOS developer community, sponsoring my platform could be an excellent opportunity for you.
Your support through Patreon, or Buy Me a Coffee helps keep this newsletter and blog running. Thank you for finding this content helpful!
Originals
Considerations for Using Codable and Enums in SwiftData Models
Compared to Core Data, SwiftData has fundamentally revolutionized the way data models are constructed. It not only supports a purely code-based declaration method but also allows the direct use of types conforming to the Codable
protocol and enum types within models, which are its significant new features. Many developers are inclined to leverage these new capabilities because they seem to fit very well with the Swift language’s declaration style. However, a lack of understanding of the implementation details and potential limitations of these new features may lead to various issues in the future. This article aims to discuss several key points to consider when using Codable
and enums in SwiftData models, helping developers avoid common pitfalls.
Recent Selections
Global Sheets Pattern in SwiftUI
SwiftUI offers a highly flexible way to declare and display modal forms, allowing developers to declare and dynamically show or hide forms based on state. However, as the application scales, this highly flexible implementation may lead to complexity and difficulty in global management. In this article, Mohammad Azam explores how to optimize form display management through the implementation of the "Global Sheets Pattern". This pattern centralizes form logic, not only simplifying the management process but also providing a clear, maintainable solution with an easy-to-use API. This method effectively resolves the common issues of redundancy and confusion in managing forms across multiple views, making the code cleaner and easier to maintain.
SwiftUI in 2024: Bridging Perception and Reality
Rizwan Ahmed discusses the challenges and opportunities of developing with SwiftUI at the iOSKetchup2024 event, providing detailed solutions in the article. The article starts with the challenges of SwiftUI, covering its features, behavior differences across platforms, solutions to navigation issues, enhancing accessibility, and its potential as a design tool. The author emphasizes that despite the challenges, the dynamic cross-platform development potential of SwiftUI is immense, serving as a bridge between technological perception and reality, and facilitating close collaboration between developers and designers.
The (too?) complex state of the Emoji standard in 2024
In this article, Daniel Saidi discusses the current state of the emoji standard, particularly emphasizing the complexity brought by supporting skin tones, genders, and directional variants, and the significant decision by Apple to remove emojis in iOS 17.4 for the first time and its deeper implications. The article notes that as emoji support for more variants has grown, so has its complexity exponentially, leading to unprecedented technical compatibility issues. Saidi believes that while the initial intention of adding these variants was well-meaning, this approach might have diverted the emoji standard from its original goal of providing a simple, universal standard. He hopes that future emoji standards will more comprehensively reflect human diversity, rather than just revolving around skin tone and gender changes.
Disabling Xcode Asset Symbol Generation
Starting with Xcode 15, a new feature was introduced that allows for the creation of Swift and Objective-C symbols for colors and images in the asset catalog. This enables developers to use these generated symbols directly in SwiftUI views, reducing errors and leveraging autocomplete and compiler validation. However, when used in Swift Package Management (SPM), the default auto-generation setting could pose problems. Particularly in Xcode 15, there was no way to disable this feature. Keith Harrison discusses in this article how to disable asset symbol generation in the asset catalog in Xcode 16, which is particularly important for developers who want to avoid symbol name conflicts or do not rely on Xcode to auto-generate code. This feature update allows developers to more finely control the generation of asset symbols, enhancing project flexibility and code maintainability.
Thought: App Review Should Grant Core-Function Default Entitlements to Apps on the App Stores
With the launch of macOS 15 Sequoia, the management of app permissions has become stricter, for example, screen recording permission now requires weekly user confirmation. Matthias Gansrigler proposes that apps reviewed by the Apple App Store should automatically receive default permissions for their core functions, sparing users the hassle of repeated confirmations. He believes that App Review should be a key factor in determining whether an app receives certain permissions. This approach would not only enhance the user experience of apps downloaded from the Mac App Store, making them more friendly and refined but also highlight the superiority of Apple products. However, Gansrigler also notes that, given the frequency of oversight incidents in the App Review process, such an automatic authorization mechanism might still be an idealized notion. This further triggers a deep questioning of the value and effectiveness of App Review.
肘子的话
我们需要更多的《悟空》
《黑神话:悟空》是由中国游戏工作室 Game Science 历经多年开发的一款动作角色扮演游戏,灵感源自中国古典小说《西游记》。它于 8 月 20 日(本期周报发表的同一天)在多个平台正式发布。
作为中国游戏开发厂商制作的第一款真正意义上的 3A 游戏,《悟空》受到了中国玩家的广泛关注。其在上市前展现的游戏品质,也赢得了全球范围玩家的期待。预售期间销量突破 120 万份,虽然仍无法与一些著名的老牌 IP 相提并论,但这个成绩已经令人欣喜。
在首日发售,《悟空》就打破了包括 Steam 上同时在线最多玩家的付费买断制单机游戏等多项记录。
除了对游戏品质的期待,作为中国玩家,我们更希望《悟空》能为中国的游戏产业带来一些积极变化。作为一个游戏人口和消费金额均在世界上名列前茅的市场,中国长期以来游戏类型比例严重失衡,移动和网络游戏占据了绝大多数市场份额,而单机游戏占比极低。
由于单机游戏大多采用买断制(不以氪金为主),开发者通常会更加注重故事的完整性,并努力通过提高游戏的第一印象来吸引用户消费。
我并非完全反对非买断制的游戏。但是,游戏能否让消费者持续投入时间、精力和金钱,应取决于其能否给玩家带来持续的新鲜感和良好的游戏体验。然而,目前市场上,为了刺激玩家消费,许多游戏的开发已经完全偏离了"游戏"一词的初衷,转而从人性弱点出发,将其打造成具有成瘾性的活动。游戏越来越赚钱,但也越来越不好玩。
一旦完全用商业思维来主导产品开发,其本质就会发生巨大变化。这种情况不仅存在于游戏行业,在移动应用领域也日益普遍。越来越多的应用采用了不提供买断选项的订阅制收费方式。相较于数年前的付费更新机制,订阅制意味着如果不续费就失去了对产品的使用权,这种趋势的蔓延无疑增加了消费者的成本负担和用户数据的不确定性。
作为中国的玩家,我们需要更多像《悟空》这样的作品来改善市场环境。作为数字产品的消费者,我也希望更多的产品能保留买断机制,以减轻用户负担并提供产品和数据所有权的保障。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
原创
在 SwiftData 模型中使用 Codable 和枚举的注意事项
相较于 Core Data,SwiftData 在数据模型的构建方式上实现了根本性的革新。它不仅支持纯代码的声明方式,还允许在模型中直接使用符合 Codable
协议的类型及枚举类型,这些都是其显著的新特性。许多开发者都倾向于利用这些新功能,因为它们似乎非常契合 Swift 语言的声明风格。然而,若对这些新功能的实现细节和潜在限制理解不足,开发者可能会在未来遇到不少问题。本文旨在探讨在 SwiftData 模型中使用 Codable
和枚举时需要注意的几个关键点,帮助开发者避免走入误区。
近期推荐
SwiftUI 中的全局表单模式 ( Global Sheets Pattern in SwiftUI )
SwiftUI 提供了一种高度灵活的方式来声明和展示模态表单,允许开发者就地声明和根据状态动态展示或隐藏表单。然而,随着应用规模的扩大,这种高度自由的实现方式可能会导致全局管理上的复杂性和困难。在本文中,Mohammad Azam 探讨了如何通过实施“全局表单模式”(Global Sheets Pattern)来优化表单的展示管理。这种模式通过集中管理表单逻辑,不仅简化了管理过程,还提供了一个清晰、可维护的解决方案,并配备了易于使用的 API。这种方法有效地解决了在多个视图间管理表单时常见的冗余和混乱问题,使得代码更加整洁并易于维护。
感知与现实 ( SwiftUI in 2024: Bridging Perception and Reality )
Rizwan Ahmed 在 iOSKetchup2024 活动中探讨了使用 SwiftUI 开发的挑战和机遇,并在文章中详细介绍了解决策略。本文从 SwiftUI 的挑战开始,涵盖了对其特性的理解、不同平台上的行为差异、导航问题的解决方案、提高可访问性及其作为设计工具的潜力等多个方面。作者强调,尽管面临挑战,SwiftUI 的跨平台动态应用开发潜力巨大,是连接技术感知与现实的桥梁,有助于开发者与设计师之间的紧密合作。
2024 年表情符号标准的复杂状态 ( The (too?) complex state of the Emoji standard in 2024 )
在本文中,Daniel Saidi 探讨了表情符号标准当前的状况,特别强调了支持肤色、性别和方向变体所带来的复杂性,以及 Apple 在 iOS 17.4 版本中首次删除表情符号的重大决定及其深层含义。文章指出,随着表情符号支持更多变体,其复杂性呈指数级增长,这在技术层面引发了前所未有的兼容性问题。Saidi 认为,虽然增加这些变体的初衷本是出于好意,但这种做法可能使表情符号标准偏离了其最初的目标——提供一个简洁、通用的标准。他希望未来的表情符号标准能更全面地反映人类的多样性,而不仅仅是围绕肤色和性别的变化。
禁用 Xcode 资产符号生成 ( Disabling Xcode Asset Symbol Generation )
从 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 )
随着 macOS 15 Sequoia 的推出,对应用权限的管理变得更加严格,例如,屏幕录制权限现在需要每周用户确认一次。Matthias Gansrigler 提出,经过苹果 App Store 审核的应用应自动获得其核心功能所需的默认权限,免去用户反复确认的麻烦。他认为,App Review 应成为决定应用是否获得相关权限的关键因素,这样做不仅能提升从 Mac App Store 下载的应用的用户体验,使其更加友好和精致,也能彰显出苹果产品的优越性。然而,Gansrigler 同时指出,鉴于以往在 App Review 过程中漏审事件的频发,这样的自动授权机制可能仍属于理想化想法。这进一步引发了对 App Review 存在价值和有效性的深入质疑。