我是如何从 0 到 1 打造一款百万用户 App 的?

各位同行好,我是「棋路-中国象棋」App 的开发者贺照云。我喜欢中国象棋,一直希望在象棋传统文化的传承中做点什么。

早在 2007 年 Android 刚刚提供开发者工具的时候,我实现了一份 Java 版的「棋路」游戏;5 年后的 2012 年,我在 AppStore 上提交了基于 Cocos2d 的 iOS 版的「棋路」游戏;多年来棋路的用户累计超过了100万人

「棋路」游戏一直有自己的风格——了解棋友的需要、注重体验!因此「棋路」积累了不少象棋爱好者,但因为工作关系,多年未更新棋路 App,许多棋友陆续对「新棋路」提出了建议和希望。

当我动了重新实现「新棋路」的心思后,一直在考虑用跨平台方式,实现在 Android 和 iOS 平台同步发布「新棋路」。

经过了一段时间的考量,我决定用 Flutter 这种 Google 推荐的全新框架来高效、跨平台地解决「新棋路」的开发需求。

初心

Flutter 出来不久,我开始了解和学习过一段时间的 Flutter,对其开发和运行效率是有信心的。所担心的是中国象棋游戏是一个复杂的项目,其中有不少界面外的需求,例如与原生 C/C++ 代码的融合、原生引擎对多进程/多线程的协作的实现、棋谱文件格式解析、音效等等。

这个过程应该有不少坑要趟~

但回头一想,Flutter 现在所处的阶段需要多一些的探路者,棋软也需要更多的开发者!我这一段趟塘坑经历,可能对 Flutter 推广、对 Flutter 或棋软的开发者有用!于是我就坚定了用 Flutter、并同步推出一系列 Flutter 中国象棋开发教程的意志。

为了帮助开发者了解象棋软件开发的基本知识,也为了给 Flutter 的初学者一份详实的教程,我打算把这个开发过程以「图文实录」的方式记录下来

诚然,作为 Flutter 教程来说,市面上已经有很多的 Flutter 教程了。但我将以「一步一步」、「实录」的方式来向你展示 Flutter 在真实项目中的应用。

软件开发终究是讲究「手底下见正章」的,正是「行胜于言」!让我们远离教条,简单明快地在实践中提升开发技能!

我可以承诺,只要一步一步地跟随本专栏,你一定能做出「棋路」中国象棋,并超越它!

  • 基于真实项目「棋路」的开发历程形成专栏,不是市面上的各种「HelloWorld」。

  • 专栏内容包含其中的每一行代码,都得到了两次验证,跟随我们的专栏,定能达成目标。

  • 真实项目环境中遇到的大量问题,专栏中都给出了实用的解决方案

  • 对开源的 C++ 引擎的包装和混编,有大量市面上找不到的经验和方法。

为什么应尽早学习 Flutter

这个世界已经有太多的框架,我们为什么需要学习一种新的?

简单点来回答这个问题——效率

  • 跨平台的解决方案,做一套应用,可以在 iOS、Android、WEB、MacOS、Windows 多端运行

  • 基于 Dart 语言建立的原生绘图性能,超越 Hybrid 方案和其它 JS 翻译方案

  • 调试期间的热加载,不需要每次都编译代码,能极大地提升开始发效率

  • 更先进的界面布局理念,上手后做同样的界面花费的代价低于 iOS 或是 Android

掌握前沿的技术,顺应技术演进的趋势,抱紧 google 的大腿,现在就是上路的时候了!

现在学习 Flutter 的常见痛苦

  • 看了官方的文档和教程,感觉是大师的理论堆砌,与手上的项目无法关联起来。

  • 中文的 Flutter 教程也真不少,但都是一个一个的 Demo,没有深入的应用和讨论。

  • 自己尝试使用 Flutter 开发时,遇到一些坑点时,无人帮忙,各种教程从未提到这些复杂场面。

我们的专栏中完整跟进了「棋路」象棋游戏在开发中遇到的各种问题,尝试解决问题的方式不限于 Flutter 或 Dart,而是实用为王。从真实项目的,你能得到语言或框架以外的经验和知识。

目标读者

现实当中,每一个真实产品的开发过程几乎不可能只使用一种技术、甚至一套技术栈!正是由于这个原因,许多开发人员学习了某种语言的一系列专栏、完成一系列专栏中的 demo 后,并不能实际完成公司或项目组交给的真实项目任务!这正是纯理论专栏的短板!

我们的专栏反映了真实项目的众多细节,中间的衔接与各种技术的综合运用来自于长期的项目实践!接近并学习这些知识,能快速地提升你独立完成真实项目任务的能力!

  • 如果你是开发界的新兵,学习我们的专栏将助你在实际中学习 Dart/Flutter 综合应用能力,关键能提升你对互联网产品的整个生命周期的理解。

  • 如果你已经是经验丰富的开发老兵了,跟随这个专栏你除了能学习到一些具体问题的解决方法外,还将学习到解决问题的更多思路、各种设计模式与开发的流程!

  • 如果你是学生,将会发现这个专栏和你以前读到的各种课本完全不同,它实用而不教条!在带给你难得的项目实践经验的同时,也帮助你打开广阔的技术视野!


专栏涉及到的主要技术

以下的专栏中涉及到的主要知识点,以及推荐的学习资源:

Dart 语言知识

Dart 语言容易学习和使用,如果你学习过 C++ 或是 Java,学习 Dart 将非常容易和快捷。可以试看 GitChat 专栏 《Dart 入门实践》,你能在几个小时内掌握 Dart 语言的精义。

Flutter 开发技术

如果你有过 iOS 或 Android 的开发经验,亦或是你有 Ionic 或 Web 开发经验,则完全不用担心 Flutter 的入门问题。即使什么开发经验都没有,Dart 的入门也是容易的。使用中文的 Flutter 官方文档,是 Flutter 入门的好办法!

iOS 和 Android 开发基础知识

我们要做的是跨平台的游戏 App,对 iOS 和 Android 开发有基本的了解是很有帮助的,但这并不是这个专栏的前提!我们的专栏中除了单机引擎部分调用了 C++ 原生引擎、需要在 iOS 和 Android 平台上进行少量混合开发外,其它的内容都是在 Flutter 环境下实现的。即使你没有 iOS 和 Android 开发基础,跟着我们的专栏指示,你也能完成全部的开发任务。

Android 开发技术

C/C++开发技术

专栏中将使用 C++ 语言实现的人机对战引擎来做电脑端的大脑,如果有一定的 C++ 基础,将有利于你得更好地理解象棋对战引擎的实现原理。这当然不是学习这门专栏的前提。即使没有接触过 C/C++ 语言,你不会阻碍你顺畅地学习我们的专栏。

Nodejs / Koa 开发技术

Nodejs 技术栈非常流行,其生态也是枝繁叶茂!我们的专栏并不要求你掌握 Nodejs 技术栈的知识,但 Nodejs 学习和应用极简单明快,是我技术学习过程中最愉快的一段经历了!我推荐大家课后学习 nodejs 技术;作为一个现代的开发人员,不应该对如此活跃的一个生态一无所知。

不必担心自己尚未掌握这些技术点!我们专栏的每一个环节都呈现了可执行的代码和指令,这些代码都经过了作者的至少两轮从头到尾的验证!

只需要跟着专栏的脚步,一步一步地往下走,在实践中去做、去体会,理论正是来自于实践的!

实践中你将收获

跟随我们的专栏,实现中国象棋的游戏过程,你将学习到以下知识点:


Flutter 基础知识
  • 组件及布局知识

  • 手势检测

  • Http 通信

  • Canvas 绘制

  • Method Channel 与原生应用通信

  • 动画技术要领

  • 音乐、音效

  • 用户本地配置解决方案

  • 多种设备屏幕适配


象棋软件开发知识
  • 象棋的基本规则

  • 象棋着法枚举和有效性判断

  • 长捉和胜负检测

  • FEN 局面表示

  • UCCI 引擎通信协议

  • XQF 象棋棋谱格式的解析


Native 开发知识
  • 在 iOS 和 Android 中访问 Flutter 资源包

  • iOS 中 Object C 与 C++ 的混合开发

  • iOS 的多线程通信

  • Android 中 Java 与 C++ 通过 JNI 协同

  • Android 的多线程通信


产品设计知识
  • 用户需求提炼

  • 交互设计

一个完整的产品涉及到的细节比较多,有些特定场景到我们遇到时再和大家分解。现在订阅专栏,让我们一起掌握用 Flutter 打造游戏 App 需要的全部技能吧!

即日起至 5 月 9 日,专栏《实战 Flutter 象棋:从零到上架》限时特惠

订阅专栏,即可进群与作者交流
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值