(一)前言

策划 x 程序 x 抽象 x 复用 x 易用 = 降本增效
公式为什么是乘法而不是加法?

如果是加法,任何一个维度的数据为0时结果可能还是正数;如果是乘法,任何一个维度数据都不能为0否则结果就是0,亦即:缺一不可。

注:

本文所述的策划(主策)、产品(经理)是一个层次的对象,技术包含技术经理范畴,产品和技术词汇含义要联系上下文。

(二)为什么要架构

有很多游戏公司,一个产品上线数据不好之后很快就会裁员或者解散,由于赶时间缺少合理架构与抽象,这个产品的代码就是一堆电子垃圾。

即使是一个成功的游戏,如果代码缺少合理架构与抽象,后续开发和维护时间和人工成本也会很高,会被技术所拖累、甚至拖垮(这就是技术债)。
真正的高手都具备高度抽象能力

高级开发者,能够根据业务的特点,抽象出软件最合理的设计,使得程序具有良好的可读性和扩展性,通常一开始写出的逻辑就为了以后的重用。许多开发框架就是一步步抽象/埋坑/优化而来的[3]。

(三)和谁架构

然而,现实当中,有的产品/策划一意孤行:我就是要这样功能,我就要这样的配置表。

当然,也有的技术在闭门造车,脱离应用环节导致策划使用起来很复杂、麻烦。

我一贯主张:

产品经理和技术经理要头脑风暴和思维碰撞,哪怕打架也要打出共识。如下图1所示:



图1

(四)架构哲学

架构思维:抽象、分层、分治、演化[1]。软件架构设计的核心:抽象与模型、“战略编程”[2]。

架构需要头脑风暴和沟通协调,开始肯定进度缓慢,但后面肯定能追赶上来,而且随着时间推移和演进,它体现的生产力优势越突出。

而没有架构或者架构不好的系统,开始貌似进度快,但是前面欠下的技术债后面都会还回来的。

在脑力劳动范畴的程序开发领域,架构师是思想者,程序员是行动者。舒马赫《解惑》中将科学分为两种:操纵的科学、理解的科学。程序员要体现算法的高超、逻辑的强度(操纵的科学),那么架构师体现什么?

很多人会都说,你有功能我也有,凭什么你做的就是架构而我做的就不是。举个简单的例子,先进武器(操纵的科学)能使战争的胜算一边倒,但是兵法(理解的科学)也可以以少胜多、以弱胜强,如果战力(操纵的科学)相当那么兵法会吊打一切。

所以,架构师是智慧的集成,架构是功能的有机结合(整体统筹),非架构是功能的无机集成(拼凑)。

不要用行动(战术)的勤奋来掩盖思想(战略)的懒惰。



图2

(五)游戏工业化

工业化:降低边际成本、提高生产效率、流水线生产(工序与分工)等等。

游戏工业化:复用、易用、开发流程化.....



图3

(六)工业化动了谁的奶酪

在我初入游戏行业时遇到了几位非常出色的策划大佬,其中一位后来他去一家业内有名的游戏公司推动游戏工业化(非代码架构层面),他美化了过程(但实际过程很曲折),如图4所示。



图4

在代码架构层面我推行游戏工业化之时,在实现图3最底下一层的时候也遇到了同样的问题。

有的公司工业化的目的是降低人工成本(最终裁掉剩余劳动力),有的是为了横向或纵向发现。无论说架构还是说软件工业化,最后都会弱化使用者的技术门槛、降低使用者的技术存在感(这是程序员自豪感的根源),甚至淘汰旧有开发平台的劳动力或者让他们转型(转型是有阵痛的)。

工业化动了谁的奶酪?

(七)志同道合

成就一件事情需要志同道合的集体来完成,工业化之路也不例外:包含产品和技术一起。志同道合:方向一致、同一条道,即时是方向一致、两条平行道路都很难实现既定目标(多数情况下两条竞争赛道的人会互相攻击)。

只有优秀的才能成功架构师,他们有总设计的权利,其他人更多的是执行力的体现。优秀的人有一个特长:

优秀的人发现问题和纠正问题比一般人强。

无论在哪里,追随和服从优秀的人是没有错的的。

远离遇到问题只会逃避、抱怨的人。

(八)相关链接

1、架构思维:抽象、分层、分治、演化

https://www.cnblogs.com/it-rabbit-cyj/p/14887783.html

2、软件架构设计的核心:抽象与模型、“战略编程”

https://cloud.tencent.com/developer/article/2098588

3、真正的高手,都具备高度抽象能力

https://blog.csdn.net/weixin_45719624/article/details/102482305

架构哲学与游戏工业化:策划x程序x抽象x复用x易用=降本增效的更多相关文章

  1. 怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控

    怎样在SharePoint管理中心检查数据库架构版本号.修补级别和修补程序的常规监控 准备: 确保你是可以訪问管理中心的场管理员. 開始: 1. 打开管理中心--升级和迁移. 2. 点击"查 ...

  2. Java生鲜电商平台-服务化后的互联网架构实战(针对生鲜电商小程序或者APP)

    Java生鲜电商平台-服务化后的互联网架构实战(针对生鲜电商小程序或者APP) “微服务架构”的话题非常之火,很多朋友都在小窗我,说怎么做服务化?解答“怎么做”之前,先得了解“为什么做”. 画外音:做 ...

  3. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生

    一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...

  4. 为什么不用C++写游戏(聪明的程序员不用C++折磨自己)(这些工作,QT都替开发者解决了,C++没有根类导致太多的问题,也没有字符串类)

    当今世界上绝大多数游戏都是C++写的,为什么要说不呢? 要做什么?写游戏. 写游戏首先要考虑些什么?做什么样的游戏,图形.音效.游戏逻辑如何实现. 用C++要先考虑什么?定义跨平台数据类型抽象,实现常 ...

  5. 微信小程序全面实战,架构设计 && 躲坑攻略(小程序入门捷径教程)

    最近集中开发了两款微信小程序,分别是好奇心日历(每天一条辞典+一个小投票)和好奇心日报(轻量版),直接上图: Paste_Image.png 本文将结合具体的实战经验,主要介绍微信小程序的基础知识.开 ...

  6. 浅谈全区全服架构的SNS游戏后台

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

  7. .NET应用架构设计—工作单位模式(摆脱程序代码的重要思想,反击DDD)

    阅读文件夹: 1.背景介绍 2.过程式代码的真正困境 3.工作单元模式的简单演示样例 4.总结 1.背景介绍 一直都在谈论面向对象开发.可是开发企业应用系统时.使用面向对象开发最大的问题就是在于,多个 ...

  8. 阿里P8架构师讲述:3—5年程序员的发展和出路在哪里?

    工作3—5年后,程序员们的成长将迈入一个全新阶段.这既是程序员们的黄金时期同时又是最迷茫的时期,因为大家必须要要思考一下今后的职业方向. 3—5年程序员的发展和出路在哪里? 是继续做技术人,还是向管理 ...

  9. iPad游戏 Calcculator: The Game 程序自动计算求解方法

    今天在iPad上下了个小游戏,主要是一个计算器的界面,有开始值,目标值,限定步数,以及一些加减乘除,还有作者脑洞想出来的功能键,主要有左移,直接把一个数加到末尾,将其中的某个数改为另一个数等等..玩到 ...

  10. 看完这篇微服务架构设计思想,90%的Java程序员都收藏了

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...

随机推荐

  1. SuiteCRM 7.11.18 安装及汉化

    SuiteCRM 7.11.18 安装及汉化 sourceforge下载,github也有https://sourceforge.net/projects/suitecrm/files/SuiteCR ...

  2. 从图像到信息,AI识图开启智能识别新时代

    当前用户在使用各类应用时,文字.图片和视频已经成为互联网内容的主要载体,许多用户在浏览过程中通常想要选取页面上的文字或者得到图片或者视频画面的具体信息.比如,识别文本中的特定实体(如电话号码.邮箱.网 ...

  3. Luogu P3041 USACO12JAN Video Game G 题解 [ 紫 ] [ AC 自动机 ] [ 动态规划 ]

    Video Games G:弱智紫题,30min 切了,dp 思路非常板. 多模式串一看肯定就是要建出 AC 自动机,然后在 fail 树里下传标记,预处理每个节点到达后的得分. 然后设计 \(dp_ ...

  4. redis - [07] 数据类型

      redis是一个开源(BSD许可)的,内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件MQ.它支持多种类型的数据结构,如字符串(String).散列(Hash).列表(List).集合( ...

  5. Azure - [01] 订阅管理

    题记部分 001 || 核心功能 (1)访问控制   Azure订阅通过基于角色的访问控制(RBAC)系统,允许管理员精细管理用户.组和应用程序对资源的访问权限.RBAC系统通过将权限分配给角色,再将 ...

  6. docker - [14] redis集群部署

    本章节是在一个服务器上进行演示 一.准备工作 (1)创建redis集群使用的网络:redis-net docker network create redis-net --subnet 172.38.0 ...

  7. go、thinkphp8、webman数据读取并发测试、性能测试

    前期准备:本地搭建程序运行所需环境,分别编写go,thinkphp8和webman程序,确保程序运行正常,新建mysql的student表,模拟存储学生信息,共计3646条数据,分别使用go语言.th ...

  8. php stripslashes 函数的意思

    脑子不行了,很多东西看过就忘,比如这个stripslashes,知道是去除反斜杠,但为啥用它死活想不起来,搜索一下,把这几篇文章抄下来: 1.反斜杠是怎么回事 两个东西 ini_set(magic_q ...

  9. [SWPUCTF 2021 新生赛]ez_unserialize

    概括 这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习. 过程 我们打开赛题,看看内容 没有发现什么东西,看看他的页面代码 根据他的提示,感觉是存在一个robots. ...

  10. 【P0】Logisim部件级实验/有限状态机

    课上 过得十分狼狈.经鉴定孩子可能脑子拗 T1 投票决议 组内投票,赞成>反对,则通过:组长拥有一票否决权. 信号名 方向 描述 [1:0] s Input 2'b00 赞成2'b01 反对2' ...