我是如何从 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 打造一款百万用户 App 的?相关推荐
- 如何从0到1打造一款AI产品?
2019-11-04 15:56:32 随着AI技术的不断发展,我们看到有越来越多成功的AI产品被研发出来,它们有效地改善了人们的生活与工作.在这样的背景下,AI产品设计正在成为一项重要的技能,被人们 ...
- 如何打造一款出色的APP
本文主要是讲述如何打造一款出色的APP,更多android开发技术专业知识,请登陆疯狂软件教育官网. 在这个移动互联网时代各种各样的APP层出不穷,有的APP从始至终就没有被用户接受.有的APP火爆一 ...
- 又拍云沈志华:如何打造一款安全的App
8月23日,网易易盾发起的国内首个互联网内容安全联盟在杭州成立,又拍云作为该联盟的首批成员单位出席了成立仪式.又拍云COO沈志华在成立仪式上发表了精彩的演讲,并接受了媒体专访. \\ 沈志华在演讲中详 ...
- 技术社招!揭秘「剪映」技术团队如何从0到1打造爆款APP?
8年前,字节跳动诞生在北京锦秋家园的居民楼,如今,我们的产品和服务覆盖150个国家和地区.本着"人才在哪里,就把公司开到哪里"的理念,我们已在全球设立了15个研发中心. 字节跳动深 ...
- 从0到1打造一款react-native App(二)Navigation+Redux
前言 很久没写东西了,发现时间过的真快.之前想学习下RN,但是由于自己的懒惰挖了个坑,最近正好公司开了RN的项目,我也把很久以前挖的坑填一下!新开的这个项目只有我一个人搞,之前没做过RN,这次正好可以 ...
- 如何用腾讯云打造一款微视频APP
版权声明:本文由腾讯云原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/196 来源:腾云阁 https://www.qcl ...
- SwiftUI打造一款美美哒自定义按压反馈按钮
功能需求 有时,我们需要在SwiftUI中打造一款让用户交互时印象深刻的按钮,比如下面这个: 如上图所示,我们在持续按压视图后给用户一个色彩鲜明的反馈效果,不禁让人眼前一亮. 这是如何实现的呢? 其实 ...
- 如何从 0 到 1 打造团队 PC/H5 构建工具
关注若川视野, 回复"pdf" 领取资料,回复"加群",可加群长期交流学习 一.前言 大家好,我叫鳗鱼,这次分享的主题是如何从 0 到 1 打造适合自己的构建部 ...
- 【干货】从0到1打造企业数字化运营闭环白皮书.pdf(附下载链接)
大家好,我是文文(微信:sscbg2020),今天给大家分享神策数据用户行为洞察研究院发布的白皮书<从0到1打造企业数字化运营闭环白皮书.pdf>. 在中国互联网信息中心(CNNIC)发布 ...
最新文章
- linux spi测试程序,spidev测试方法 /how to test spidev
- MATLAB中的varargin,varargout在函数中运用
- C# ref与out关键字解析
- android如何创建spinner组件,Andriod开发之下拉列表控件(Spinner)的用法
- Ubuntu 12 ssh 安装 终端命令 报软件依赖 错误(未解决)
- 【量化笔记】时间序列--ARCH模型及GARCH模型
- uniapp的button按钮使用boder:none依然无法去掉黑色边框的解决。
- 【工作流引擎--Snaker介绍】
- Pandas学习笔记(6)Renaming and Combining
- 深入了解JVM之垃圾回收(二)
- 动图设置动图设置动图设置
- 用JS代码自动填写正方教务系统的教学评价
- 服务器如何数据备份?
- java ajax 输出_正本清源:所谓Ajax输出的三种形式
- 激光雷达和相机的联合标定
- 天融信EDR 彻底卸载方法
- 点分治动态点分治小结
- J2ME开发小技巧——模拟器上的快捷键
- linux配置dhcp服务
- js form表单转json字符串,json数组转json字符串出现多余的双引号问题解决