各位同行好,我是「棋路-中国象棋」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++ 引擎的包装和混编,有大量市面上找不到的经验和方法。
这个世界已经有太多的框架,我们为什么需要学习一种新的?
简单点来回答这个问题——效率!
跨平台的解决方案,做一套应用,可以在 iOS、Android、WEB、MacOS、Windows 多端运行
基于 Dart 语言建立的原生绘图性能,超越 Hybrid 方案和其它 JS 翻译方案
调试期间的热加载,不需要每次都编译代码,能极大地提升开始发效率
更先进的界面布局理念,上手后做同样的界面花费的代价低于 iOS 或是 Android
掌握前沿的技术,顺应技术演进的趋势,抱紧 google 的大腿,现在就是上路的时候了!
看了官方的文档和教程,感觉是大师的理论堆砌,与手上的项目无法关联起来。
中文的 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 技术;作为一个现代的开发人员,不应该对如此活跃的一个生态一无所知。
不必担心自己尚未掌握这些技术点!我们专栏的每一个环节都呈现了可执行的代码和指令,这些代码都经过了作者的至少两轮从头到尾的验证!
只需要跟着专栏的脚步,一步一步地往下走,在实践中去做、去体会,理论正是来自于实践的!
跟随我们的专栏,实现中国象棋的游戏过程,你将学习到以下知识点:
组件及布局知识
手势检测
Http 通信
Canvas 绘制
Method Channel 与原生应用通信
动画技术要领
音乐、音效
用户本地配置解决方案
多种设备屏幕适配
象棋的基本规则
象棋着法枚举和有效性判断
长捉和胜负检测
FEN 局面表示
UCCI 引擎通信协议
XQF 象棋棋谱格式的解析
在 iOS 和 Android 中访问 Flutter 资源包
iOS 中 Object C 与 C++ 的混合开发
iOS 的多线程通信
Android 中 Java 与 C++ 通过 JNI 协同
Android 的多线程通信
用户需求提炼
交互设计
一个完整的产品涉及到的细节比较多,有些特定场景到我们遇到时再和大家分解。现在订阅专栏,让我们一起掌握用 Flutter 打造游戏 App 需要的全部技能吧!
即日起至 5 月 9 日,专栏《实战 Flutter 象棋:从零到上架》限时特惠!
订阅专栏,即可进群与作者交流