ExcelAndJSON的设计决策 推荐 原创 老G 2014-05-06 10:42:28 博主文章分类:Default ©著作权 文章标签 工具 Excel JSON 文章分类 办公效率 ©著作权归作者所有:来自51CTO博客作者老G的原创作品,请联系作者获取转载授权,否则将追究法律责任 很多人看到ExcelAndJSON的第一反映是,这东西我的公司里面也有,那么我为什么用呢?做为开发来说,每一个工具的存在,都是为了加快游戏开发的速度。那么从无到有,从有到精。有和没有,好用和不好用的差别,每一个都比前一个情况能提升50%的效率。(按IPD理论,极限速度是提升100%的效率,这里取保守数字)。ExcelAndJSON这个工具,前前后后设计思考大约有一年的时间。在之前的开发中,我们使用大量的类似工具,数量有四五个,如果考虑评估阶段的话,是十几个。这些工具或多或少都有这样那样的问题。而每一个问题,都是开发中的一个大坑。下面我们来看ExcelAndJSON是如何对这些问题提供解决方案的。一、为什么选择Python开发?如果选择C++,那么是可以使用Qt的。但C++领域,一直没有好用的开源跨平台Excel解析库。要么是闭源的,要么是只支持老格式xls不支持新格式xlsx,还有就是不能够跨平台。而这些,恰恰都是ExcelAndJSON本身必须具备的特性。手游开发,决定了必须跨平台。开源项目决定了依赖库必须也是开源的。Office的不断更新,决定了必须支持新格式。所以,C++被淘汰出局。如果选择JS,因为我的方向是全栈式,目前来说在Node.js领域,npm中我没有找到非常好用的Excel解析库。很多库都是直接把Excel读成一个巨型JSON对象,这种写法是我所不能接受的,太SB了。还有一个原因在于,考虑未来扩展性,Node.js领域一直没有好用的UI库。另外,如果在web开发里面去找,我个人不是很喜欢BS架构的工具。所以,JS被淘汰出局。如果选择Java。Java目前在前端手机游戏开发领域,已经没落。在后端,快速开发方向面临新兴方案的冲击(RoR, Python,Node.js,Go),而且高性能方向又始终干不过C++。对于各个公司自行修改维护能否找到适合的人,是个问题(前端几乎没人做Java,后端可能有人做Java)。所以,Java也被淘汰出局。如果选择Python。首先,Python是跨平台的。其次,Python的学习速度很快,3~5年经验的人,上手时间顶多3~5天。再次,Python对于文件,文本,命令行处理,支持的非常之好。最后,Python里面也有方便的图形化工具,例如Qt就提供了Python版本。所以,选择Python。二、数组的作用如果没有数组,那么在遇到成序列的数据时候,比如设计怪物AI中的技能部分,表的结构就会是类似这个样子:lengthskill1skill2skill3skill44火球冰箭魔法盾顺移3突刺半月重斩1治疗如果你使用过类似这样的JSON结构,那么你应该知道,在填写数据的时候,容易出错,输出数据的时候会很难看(不管是填充null作为空数据,还是不输出空白格,都一样难看。前者存在无用数据,后者丢失了表的结构,造成阅读困难),遍历代码写起来也很麻烦。在JSON中,数组天生就可以获得其“元素个数”,并且可以方便的遍历。所以,我们要在工具层面支持数组,这样才能使用JSON的这个特性。三、“引用”该怎么用?还是举一个例子,在经营建造游戏中,对于建筑物属性的定义,每个建筑的解锁等级这是一个固定值,该建筑占用的地块面积也是一个固定值。但是该建筑不同等级的属性,则是完全不相同的。如果是一个资源产生建筑,那么会有不同的资源生成速度和资源上限,如果是一个出兵建筑,会有可造兵种类别,出兵时间。如果是一个防御建筑,会有攻击半径,伤害力等。这些不同结构的字段,是没有可能放到一个二维表中的。一般采用的方式是,会有几种方案:1.会有一个主要的表来存放所有建筑包含的相同的字段,然后那些不相同的字段信息放到其他表中,然后通过主键跳转来访问。2.直接拆成多个表来填数据3.使用一些不同的开关字段或分类字段,让同一个字段在不同开关状态下有不同的含义。现在游戏越来越复杂,这是最不建议的一种方式。上面的3种方案,维护和修改成本都很高。采用引用实现就很简单,还是多个表,然后在主要表上,插入其他表的引用即可。siirrrnameunlock_lvarealv1lv2lv3基地14基地.lv1基地.lv2基地.lv3铀矿34铀矿.lv1铀矿.lv2铀矿.lv3兵营51兵营.lv1兵营.lv2兵营.lv3四、主表模式的意义是什么?游戏开发中,前后端对于数据的需求是不一样的。前端需要的是一些显示数据,如资源名称,动作参数。后端需要的是一些计算数据,比如攻击力,防御力,伤害公式等。但是有一些数据,是前后端都需要的,比如:技能范围,技能类型等,这些数据既与前端的显示有关系也和后端的逻辑计算有关系。那么这种情况下,按照传统方式,也会拆成若干表。一般是一张表前端用,一张表后端用。但问题在于,前后端都需要的数据该如何处理?在两个表之间同步是一个成本比较高的办法。这就体现出主表模式的意义了。我们可以把这些数据都组织在一张表上:nametypeeffectatk平砍1平砍.png10横扫千军3横扫千军.png7暴风雪4暴风雪.png8然后在输出的时候,在主表模式中,分成两个来输出:skill->skill_fnnametypeeffectskill->skill_bnnametypeatk最后需求一直在变,工具要提供的是应对不同需求的灵活性。 赞 收藏 评论 分享 举报 上一篇:一套iOS7的JSBinding教学视频 下一篇:用废旧纸盒制作笔记本支架 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 小目标检测常见解决策略总结 1. 引言尽管目标检测算法取得了长足的发展,例如 Faster RCNN、YOLO、SSD、RetinaNet、EfficientDet 等。通常,这些模型是在 COCO数据集上训练的。它是一个包含各种对象类别和标注的大规模数据集,因此在训练对象检测器方面很受欢迎。然而,事实证明,这些模型对于小物体检测效果欠佳。本文就小目标检测困难的原因进行分析,并给出常见的解决方法。闲话少说,我们直接开始吧!2 目标检测 数据集 物体检测 Java线程池中子线程死循环问题的识别与解决策略 在Java并发编程中,线程池是一种有效的资源管理和任务调度工具,能够提高系统响应速度、减少线程创建开销,并通过复用线程实现高效并发处理。然而,当线程池中的子线程意外陷入死循环时,不仅会导致特定任务无法正常完成,还会引发一系列严重问题,如系统性能骤降、资源耗尽甚至服务崩溃。本篇文章将深入探讨Java线程池中子线程死循环的识别、危害以及应对策略,并结合代码实例进行详细阐述。一、死循环的识别与危害1. 死循环 线程池 守护线程 Kubernetes的容器设计理念 前言本文主要会介绍笔者在学习Kubernetes的容器设计理念时所总结的知识点,其中会涉及到Kubernetes对于容器的设计思路以及相关的实现方式等方面的相关内容。笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对于我来说也是很重要的学习过程之一。1.设计思想在一台宿主机上往往不只是运行一个进程,而是有很 Pod Infra容器 pause容器 Linux namespace Liunx Cgroup ExcelAndJSON数据导出工具说明书 ExcelAndJSONby 老G (qq 233424570)Part0.缘起Excel,是游戏开发中,策划最常用的数值编辑工具。它有着公式填充,数值曲线图等许多好用功能。作为Office办公套件的一部分,它的上手度,易用性也非常不错。JSON,是手机游戏开发中,最常用的数据交换格式。它的树形结构,让数据访问变得非常自然。并且,这种结构和脚本语言有着天然的兼容性(例如Python,JavaScr 工具 Excel JSON 软件设计方法和设计决策 这段时间在抽空为一次会议准备PPT,内容是关于软件设计方法和设计决策的。10多年工作下来,周围认识和认可的设计师实在太少了。很多所谓的设计师,当说到扩展性的时候,能想到的只是工厂方法,简直太衰了。今天PPT差不多写好了(还剩了一点东西在另一台电脑上,到时候胡乱加进去就好了),闲着无聊,把PPT都转成图片贴上来。     职场 软件设计 休闲 决策 基于Mysql的决策系统的设计与实现—文档 商业辅助决策系统实现的功能包括收入信息管理与支出信息管理,员工销售订单信息管理,员工薪资管理,员工管理,公告管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。商业辅助决策系统可以提高收支信息和销售订单信息管理问题的解决效率,优化收支信息和销售订单信息处理流程,保证收支信息和销售订单信息数据的安全,它是一个非常可靠,非常安全的应用程序。摘 &n Java 程序设计 计算机毕设 毕业设计 论文 决策的艺术 提出正确的问题Problem 打破常规,创造性地思考 写出对问题最初的评估,质疑、检查、完善它 是什么触发地这项决策? 检视问题中的限制条件 求助于他人 求助与朋友或者相关领域地专业人士。 自己进行假象 我的领导会怎么看这个问题? ps:如何提出正确的问题,文稿没有讲得很清楚。 找出真正的目标Obj 决策过程 ide 决策问题 Facebook影响用户隐私决策的4大设计窍门 【编者按】本文作者Avi Charkham,以色列微风投公司Lool Ventures 产品设计部负责人,其中开发的一款名叫MyPermissions,是一个第三方应用授权查看平台,提供在线查看Facebook、Twitter、Google、Yahoo、Linkedin、Dropbox、Instagram facebook action 产品设计 yahoo twitter BI里的数据决策之决策建议 有决策建议的 BI 系统常常被冠以 “决策支持系统” 的光环 数据分析 BI 决策树——(一)决策树的思想 本篇文章主要先从宏观上介绍一下什么是决策树,以及决策树构建的核心思想。1. 引例关于什么是决策树(decision tree) 决策树 决策树思想 信息熵 条件熵 信息增益 两种不同的决策和决策方法 文/舒化鲁 企业决策的内容和性质不一样,所能运用的决策方法也就不能相同。翻地要用犁,收麦却要用刀。而决策又不能不运用一定的方法,并且就像犁地和收麦要有效率就必须分别借助犁和刀一样,不同的决策必须选用不同的决策分析方法。 两种决策:程序化决策与非程序化决策 企业的决策,从决策的方式方法分析,可分为性质完 信息技术 分析方法 竞争对手 规范化管理 决策方法 知荐 | ADAS算法设计中的“行为决策”过程详解 行为决策、规划和控制时计算自动驾驶车辆如何利用规划好的轨迹线操控自身进行进行移动的模块,它需要将原始数据进行消耗和处理,处理后的数据计算可得出行为层面的决策。这一模块实际上扮演了“辅助驾驶员”的角色,需要权衡每一份输入的原始信息,做出有效、安全的决策结果。而对于其要求输入的原始处理数据需求综合起来有如下内容:原始数据输出模块原始数据特殊需求说明路径规划模块一系列车道以及他们期望的起始和结束位置进入 java 决策引擎架构设计 决策树引擎 简介 决策树又称为规则树,是URule Pro规则引擎中提供的另外一种构建规则的方式,它以一棵躺倒的树形结构来表现规则(之所以将其躺倒是为了节省空间,否则一棵稍微大点的树将会占用很大的页面空间),决策树表现业务规则更为形象,实际上,无论是决策树、决策表还是评分卡,都可以通过决策集来实现,只是,对于某些业务规则来说,通过决策树或决策表或评分卡实现起来更为形象、快捷。 下图是一棵定义好的决策树: 决策引擎架构设计 java Powered by 金山文档 决策树 决策表 已知决策边界如何设计神经网络 决策树决策边界 学习决策树,包括熵和信息增益 简介决策树是一个预测模型,通过坐标数据进行多次分割,找出分界线,绘制决策树。在机器学习中,决策树学习算法就是根据数据,使用计算机算法自动找出决策边界。每一次分割代表一次决策,多次决策而形成决策树,决策树可以通过核技巧把简单的线性决策面转换为非线性决策面。 基本思想树是由节点和边两种元素组成的结构。有这几个关键词:根 已知决策边界如何设计神经网络 决策树 数据 子节点 决策系统的架构 决策系统的简称 决策支持系统作为一种新兴的信息技术,能够为企业提供各种决策信息以及许多商业问题的解决方案, 从而减轻了管理者从事低层次信息处理和分析的负担,使得他们专注于最需要决策智慧和经验的工作, 因此提高了决策的质量和效率。决策支持系统的概念目前没有普遍接受的决策支持系统(Decision Support System, 以下简称DSS)的定义。一个经典的定义是:决策支持系统通过结合个人的智力资源和计算机的能 决策系统的架构 dss中文含义 决策支持系统 数据 数据仓库 架构决策点 决策的框架效应 在过去的 10 年中,我花了相当多的时间研究组织(兴衰的原因。一遍又一遍的证据是清楚的,组织的兴衰取决于他们做出的决定。组织做出决策,这些决策会影响他们的保留率、收入周转率、客户满意度等指标列表。尽管情况如此,但令人担忧的是,只有少数组织花时间思考和建模他们的决策。什么是决策模型?决策模型是决策的可视化表示。它是一个图表,表示如何做出特定决策。它详细描述了决策的所有活动部分。重要的是要知道一个组织 架构决策点 决策 策略模式 建模 决策模型 决策系统架构 决策系统的概念 本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶技 决策系统架构 自动驾驶技术概述 自动驾驶 路径规划 搜索 架构决策 架构设计策略 知道了软件架构的关键,面对有一定复杂与难度、或有竞争性目标的庞大需要的软件系统,没有一个好的设计策略,完全依靠设计师的经验与能力,往往会让设计师顾此失彼,无法保证软件系统的成功。 上面讲到,软件架构工程师没有时间也没有必要对所有需求进行深入分析;而功能或用例确定了软件架构的大的方向、几个关键的非功能需求与约束决定了软件架构的风格。因此软件架构设计的第一条策略是:让关键需求决定架构。关键需求决定架构 架构决策 软件架构 功能需求 软件系统 python多条决策曲线的颜色 python 决策 Python 卡方决策,下面介绍一个常见的统计决策。这是一个关于数据是否随机分布的卡方决策。为了做出这个决策,需要计算一个预期分布,并将观察到的数据与预期进行比较。相差较大意味着需要进一步研究。相差不大意味着可以使用零假设,因为没什么值得研究了,即这些差异仅仅是随机变化造成的。下面介绍如何使用Python来处理数据。首先介绍一些不属于案例研究的背景知识,但常出现在EDA应用程序中。需要收集原始数据 python多条决策曲线的颜色 python 决策 Python 数据 原始数据 机器学习和人工智能 实现智能决策模型的设计 人工智能与决策管理 人工智能在决策支持系统中的应用1 绪论1.1 基础知识与行业背景1.2 在政府决策方面公共安全事件现在已经成为目前从中央到地方各级政府管理中面临的主要问题,各国政府都对此采取了各种措施。无可置疑,我国政府对此问题也采取了各种管理手段和技术手段来进行相应的管理,专家系统便是其一。所谓专家系统,就是指一种具有人类思维方式的信息系统,能够在某一领域代替人类专家,对那一领域的专业事物做出专业的判断或者预测 人工智能 大数据 决策支持系统 财务管理