isowords

isowords

立方体上的单词探索游戏

isowords是款创新iOS单词游戏,玩家在消失的3D立方体上探索单词。连接相邻字母组词,字母用三次后立方体消失显示新字母。游戏用Swift开发,采用Composable Architecture,UI基于SwiftUI。开源代码展示模块化、依赖管理和自动化测试最佳实践。

isowords游戏开发SwiftiOS开源项目Github

isowords

CI

这个仓库包含了 isowords 的完整源代码,这是一款在消失的立方体上进行的 iOS 文字搜索游戏。连接相邻的字母来组成单词,单词越长越好,当一个字母被使用三次时,其所在的立方体就会被移除,露出里面更多的字母!

现在可在 App Store 下载!

在 App Store 上下载 isowords

isowords 截图


关于

isowords 是一个完全用 Swift 构建的大型复杂应用。iOS 客户端的逻辑基于 Composable Architecture 构建,UI 主要使用 SwiftUI 构建,少量使用 SceneKit。服务器也使用 Swift 构建,采用了我们实验性的 Web 服务器库。

我们在 Point-Free 上发布了一个4集的视频系列,涵盖了这些主题以及更多内容。Point-Free 是一个探索函数式编程和 Swift 语言的视频系列,由 Brandon WilliamsStephen Celis 主持。

<a href="https://www.pointfree.co/collections/tours/isowords"> <img alt="视频海报图片" src="https://yellow-cdn.veclightyear.com/2b54e442/bca3c7a9-1a6d-45e7-9ef9-bfbab72c8320.jpeg" width="600"> </a>

<br><br>

你可能会对以下几点感兴趣:

Composable Architecture

整个应用程序由 Composable Architecture 驱动,这是我们在 Point-Free 上从头开始构建的一个库,提供了用于构建应用程序的工具,重点关注可组合性、模块化和可测试性。这意味着:

  • 整个应用的状态保存在一个单一的事实来源中,称为 Store
  • 整个应用的行为由一个单一的单元实现,称为 Reducer,它由许多其他 reducer 组成。
  • 所有有副作用的操作都被明确地表示为从 reducer 返回的值。
  • 依赖项被明确地表示为简单的数据类型,包装其实际实现,以及各种模拟实例。

以这种方式设计应用程序有很多好处:

  • 大型、复杂的功能可以分解为更小的子域,这些子域可以通过简单的状态变更进行通信。通常在 SwiftUI 中,这是通过在 ObservableObject 实例中访问单例来完成的,但在 Composable Architecture 中这是不必要的。
  • 我们控制依赖项,而不是让它们控制我们。即使你在代码中使用了 StoreKitGameCenterUserNotifications 或任何其他第三方 API,也不意味着你必须牺牲在模拟器中运行应用程序、使用 SwiftUI 预览或编写简洁测试的能力。
  • 可以很快地编写详尽的测试。我们测试非常详细的用户流程,捕捉微妙的边缘情况,并断言效果如何执行以及它们的输出如何反馈到应用程序中。
  • 编写集成测试以测试应用程序的多个独立部分变得很简单。

超模块化

应用程序采用超模块化的风格构建。在撰写本 README 时,客户端和服务器被分为 86 个模块。这允许我们在不构建整个应用程序的情况下处理功能,从而改善编译时间和 SwiftUI 预览的稳定性。它还使我们能够轻松地发布 App Clip,其大小必须小于 10 MB(未压缩),通过选择最少的代码和资源来构建。

客户端/服务器单一代码库

iOS 客户端和服务器的代码都包含在这个单一的代码库中。这使得同时运行客户端和服务器变得容易,我们甚至可以同时调试它们,例如在服务器中设置断点,当模拟器发出 API 请求时触发。

我们还在客户端和服务器之间共享了大量代码:

  • 描述玩家、谜题、移动等的核心类型。
  • 游戏逻辑,如随机谜题生成器、谜题验证、字典等。
  • 服务器用于处理请求的路由器与 iOS 客户端用于向服务器发出 API 请求的代码完全相同。新路由只需指定一次,就立即可用于客户端和服务器。
  • 我们编写了同时测试服务器和 iOS 客户端的集成测试。在测试过程中,客户端发出的 API 请求实际上在后台运行真实的服务器代码。
  • 还有更多...

自动生成 App Store 截图和预览视频

我们上传到 App Store 的应用截图和预览视频是自动生成的。

  • 截图测试套件使用我们的 SnapshotTesting 库生成,负责构建一个非常具体的状态,我们将其加载到屏幕上,并提供周围的图形。

  • 预览视频是通过运行精简版应用程序的屏幕录制生成的,该版本在立方体上嵌入特定字母并运行一系列动作来模拟用户玩游戏。可以通过在 Xcode 中选择 TrailerPreview 目标并在模拟器中运行来在本地运行该应用程序。

预览应用

有时我们想要在不构建整个应用程序的情况下单独测试某个功能。SwiftUI 预览很适合这种情况,但它们也有局限性,比如当你需要使用预览不可用的 API,或者需要调试更复杂的流程等。

因此,我们创建了迷你应用程序,它们只构建构成整个应用程序的 86+ 个模块中的一小部分。设置这些应用程序只需要最少的工作。你只需在 Xcode 项目中指定所需的依赖项,然后创建一个入口点来启动功能。

例如,这里是创建预览应用程序以单独运行新手引导流程所需的全部代码。如果我们受制于完整应用程序来测试这个功能,我们就需要不断地删除并重新安装应用程序,因为这个屏幕只在首次启动时显示。

开始使用

这个仓库包含了运行整个 isowords 应用程序的客户端和服务器代码,以及广泛的测试套件。要运行它们:

  1. 确保已安装 git-lfs,以便可以获取应用资产(图像等)。例如,使用 Homebrew

    $ brew install git-lfs # 下载并安装 Git LFS $ git lfs install # 为你的用户设置 Git LFS
  2. 获取代码:

    git clone https://github.com/pointfreeco/isowords cd isowords
  3. 引导应用程序:

    1. 如果你只对构建 iOS 客户端感兴趣,则运行以下引导命令:
      make bootstrap-client
    2. 如果你想构建客户端和服务器,请确保已安装并运行 PostgreSQL,然后运行以下引导命令:
      make bootstrap
  4. 打开 Xcode 项目 App/isowords.xcodeproj

  5. 要在本地运行客户端,在 Xcode 中选择 isowords 目标并运行(⌘R)。

  6. 要在本地运行服务器,在 Xcode 中选择 server 目标并运行(⌘R)。

了解更多

本 README 中讨论的大多数概念都在 Point-Free 上有深入的讨论。Point-Free 是一个探索函数式编程和 Swift 语言的视频系列,由 Brandon WilliamsStephen Celis 主持。

Point-Free

相关项目

这个应用程序使用了一些由我们构建并在 Point-Free 上讨论的开源项目,包括:

许可证

本仓库中的源代码仅可用于教育目的,不得用于商业目的。有关更多信息,请参阅我们的完整许可证

编辑推荐精选

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多