各位同行好,我是「棋路-中国象棋」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 打造一款百万用户 App 的?相关推荐

  1. 如何从0到1打造一款AI产品?

    2019-11-04 15:56:32 随着AI技术的不断发展,我们看到有越来越多成功的AI产品被研发出来,它们有效地改善了人们的生活与工作.在这样的背景下,AI产品设计正在成为一项重要的技能,被人们 ...

  2. 如何打造一款出色的APP

    本文主要是讲述如何打造一款出色的APP,更多android开发技术专业知识,请登陆疯狂软件教育官网. 在这个移动互联网时代各种各样的APP层出不穷,有的APP从始至终就没有被用户接受.有的APP火爆一 ...

  3. 又拍云沈志华:如何打造一款安全的App

    8月23日,网易易盾发起的国内首个互联网内容安全联盟在杭州成立,又拍云作为该联盟的首批成员单位出席了成立仪式.又拍云COO沈志华在成立仪式上发表了精彩的演讲,并接受了媒体专访. \\ 沈志华在演讲中详 ...

  4. 技术社招!揭秘「剪映」技术团队如何从0到1打造爆款APP?

    8年前,字节跳动诞生在北京锦秋家园的居民楼,如今,我们的产品和服务覆盖150个国家和地区.本着"人才在哪里,就把公司开到哪里"的理念,我们已在全球设立了15个研发中心. 字节跳动深 ...

  5. 从0到1打造一款react-native App(二)Navigation+Redux

    前言 很久没写东西了,发现时间过的真快.之前想学习下RN,但是由于自己的懒惰挖了个坑,最近正好公司开了RN的项目,我也把很久以前挖的坑填一下!新开的这个项目只有我一个人搞,之前没做过RN,这次正好可以 ...

  6. 如何用腾讯云打造一款微视频APP

    版权声明:本文由腾讯云原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/community/article/196 来源:腾云阁 https://www.qcl ...

  7. SwiftUI打造一款美美哒自定义按压反馈按钮

    功能需求 有时,我们需要在SwiftUI中打造一款让用户交互时印象深刻的按钮,比如下面这个: 如上图所示,我们在持续按压视图后给用户一个色彩鲜明的反馈效果,不禁让人眼前一亮. 这是如何实现的呢? 其实 ...

  8. 如何从 0 到 1 打造团队 PC/H5 构建工具

    关注若川视野, 回复"pdf" 领取资料,回复"加群",可加群长期交流学习 一.前言 大家好,我叫鳗鱼,这次分享的主题是如何从 0 到 1 打造适合自己的构建部 ...

  9. 【干货】从0到1打造企业数字化运营闭环白皮书.pdf(附下载链接)

    大家好,我是文文(微信:sscbg2020),今天给大家分享神策数据用户行为洞察研究院发布的白皮书<从0到1打造企业数字化运营闭环白皮书.pdf>. 在中国互联网信息中心(CNNIC)发布 ...

最新文章

  1. linux spi测试程序,spidev测试方法 /how to test spidev
  2. MATLAB中的varargin,varargout在函数中运用
  3. C# ref与out关键字解析
  4. android如何创建spinner组件,Andriod开发之下拉列表控件(Spinner)的用法
  5. Ubuntu 12 ssh 安装 终端命令 报软件依赖 错误(未解决)
  6. 【量化笔记】时间序列--ARCH模型及GARCH模型
  7. uniapp的button按钮使用boder:none依然无法去掉黑色边框的解决。
  8. 【工作流引擎--Snaker介绍】
  9. Pandas学习笔记(6)Renaming and Combining
  10. 深入了解JVM之垃圾回收(二)
  11. 动图设置动图设置动图设置
  12. 用JS代码自动填写正方教务系统的教学评价
  13. 服务器如何数据备份?
  14. java ajax 输出_正本清源:所谓Ajax输出的三种形式
  15. 激光雷达和相机的联合标定
  16. 天融信EDR 彻底卸载方法
  17. 点分治动态点分治小结
  18. J2ME开发小技巧——模拟器上的快捷键
  19. linux配置dhcp服务
  20. js form表单转json字符串,json数组转json字符串出现多余的双引号问题解决

热门文章

  1. 《神经质的实质与治疗》读后感
  2. 基于串口通信的DSP应用程序在线升级方法
  3. zynq7010平台使用air724ug上网
  4. Google2mapinfo的完美转换
  5. 计算机基础教案v7系统,[定稿]计算机基础教案上下册V7.1(全文完整版)
  6. SpringBoot网上书城的设计与实现源码+文档
  7. Teamcenter: RAC开发
  8. 解析 Linux 中的 VFS 文件系统机制(1)
  9. 中移动通信研究院2013社会招聘
  10. [招聘信息]QA Engineer@EMC