9 丿寒风

尚未进行身份认证

我要认证

game

等级
TA的排名 2k+

Python内存管理和垃圾回收机制

零 概述首先说明一下,源码是基于CPythonPython垃圾回收机制是以引用计数为主,标记清除和分代回收为辅,再加缓存机制,以提升Python性能。一 引用计数1 环形双向链表 refchain在 Python 中创建的任何对象,都会加入到 refchain 中。对象节点的结构:下一个对象上一个对象引用计数对象类型CPython源码:// cpython/Include/object.h// 上一个对象 和 上一个对象#define _PyObject_HEAD_EXT

2020-09-28 14:25:55

游戏地图主要功能实现

游戏地图功能主要分为三块:地图纹理地图阻挡小地图镜头跟随一 地图纹理1 原始实现地图最基础的做法,是出一张图,然后拖入到场景中;2 动态加载但这种做法只适合有一张主城地图的界面游戏,若有多张地图,在场景中设置的地图,可能不是游戏中所需的,所以需要动态加载地图。 loadMap(mapId) { this.mapId = mapId; let node = new cc.Node() node.setAnchorPoint(0,

2020-08-31 14:25:17

游戏角色动画:从入门到商用(二)

接上一节:游戏角色动画:从入门到商用(二)七 合并多图集的plist文件一般游戏做到上面一步就可以了,如果要进一步的优化,会发现每个图集都会产生 plist 文件,多个图集那么 plist 也会很多。通常一个角色的资源都是一次性加载进内存,图片资源因为有最大尺寸限制,只能分为多张不同的文件中,但 plist 文件并没有限制,有没有办法将多个图集的 plist 文件合并成一个文件呢?不幸的是,查阅了 TP的官方文档并没有这个功能。观察 plist 文件的结构:<?xml version="1.0"

2020-08-26 14:34:17

游戏角色动画:从入门到商用(一)

2D游戏中的角色由两种方案,第一种是骨骼动画,骨骼动画的好处是节省资源,减少空间占用;但是缺点是表现力差,一般只做侧面2方向,主要用于横板过关类的游戏。第二种是逐帧动画,逐帧动画理论上来将可以做任意多个方向,但每1个方向就是1套序列帧,会占用大量的内存,因此一般是采用1方向,4方向和8方向。其中1方向的一般是npc,只是正面朝向玩家,4方向和8方向的一般位普通角色,细节要求不高的话,可以利用翻转节省对称方向的资源。传统的经典2D游戏,梦幻,大话,神武,传奇等都是采用这种方式实现的。一 动画资源设计方

2020-08-26 14:01:18

导表工具开发(支持 JSON,Python,Lua,JS)

一 需求及分析1 提取需求在正式的游戏开发团队中,策划很大一部分工作内容的产出,都是以 Excel 表格的形式。给到程序员后,通常都不会直接读取 Excel 表格的内容,而是先将 Excel 表格内容转换成程序语言能够识别的文本格式,比如:比较通用的 JSON格式,或者是 Lua 中的 Table,python 中的 Dictionary 等。那么,需求就出来了:实现一个工具,读取 Excel 表格内容,转换成各语言能够识别的文本格式。2 需求分析用面向对象的思维来分析上述需求,至少有读和写两个对

2020-08-11 17:30:17

地图编辑器开发(五)

上一节篇尾提到,地图要切成小图便于加载,但地图编辑器是个网页版工具,要在网页上实现切图不是很方便,经过考虑之后,决定使用 nodejs 实现。Electron要做一个图形化的切图界面,加上要能使用 nodejs,最先想到的就是 Electron。Electron 是一个 nodejs 的扩展库,可以使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。若之前写过网页,上手比较简单。界面完全基于 HTML 和 CSS 实现,切图只需两个简单功能,选择图片和生成切图,生成包含地图块和

2020-07-23 21:59:47

地图编辑器开发(四)

前一节把测试功能加上了,地图信息编辑好,测试通过之后,需要导出到游戏中。这节来看数据的导出。主要包括以下几个功能点:导出地图信息地图数据压缩读取地图数据导出地图信息数据内容在导出地图信息之后,把数据格式定义好,必备数据有两个:阻挡遮罩信息和格子尺寸,其他的数据可以按需添加。getExportData() { return { size: [this.oriW, this.oriH], cell: [this.CELL_W, this.CELL_H],

2020-07-22 22:30:02

地图编辑器开发(三)

上一节已经把地图信息编辑做好了,这一节实现对编辑好的地图信息的测试。主要实现以下功能:A星寻路显示路径角色移动A星寻路A星寻路算法的基本概念,参考维基百科,算法核心有以下几个点:开放列表和关闭列表按 f 值排序回溯路径推荐一个视频教程,概念,算法过程,实现都讲得非常详细。A星寻路发酸最终要实现的是,传入地图信息,起点和终点,要得到一个从起点到终点的路径,即从起点到终点所经过的格子列表。核心代码如下: // 把起点放入开启列表中 this.openList.push(this.

2020-07-21 16:22:19

地图编辑器开发(二)

上一节已经把地图加载到游戏中了,这一节主要实现地图的编辑能功能,也是地图编辑器最主要的功能,可以拆分为如下几个功能:地图滚动地图缩放画网格编辑格子信息地图滚动上一节中加载进来的地图,只显示了地图的一部分,要能编辑整个地图,需要地图能够滚动。因此需要将地图 sprite 放入到一个 ScrollView 中,设置水平和竖直方向都能滚动,删除滚动条,防止挡住地图,如图:运行结果如下图:这样地图就滚动了,按住鼠标就能拖动地图。但是还有问题,窗口显示的范围并没有变大,希望能通过缩放,在窗口中

2020-07-18 21:58:36

地图编辑器开发(一)

引言寻路是RPG游戏中必不可少的一部分,那么如何实现寻路呢?游戏中最常用的寻路算法是A星。A星寻路的基础是把地图划分成很多小格子,然后在格子上做不同的标记,即地图信息。然后给出起点和终点,A星算法就能找出从起点到终点的路径——经过格子列表。A星寻路算法网上有很多的资料,不做过多的介绍,主要看看地图信息如何生成?地图编辑器生成地图信息的工具,叫地图编辑器。我这里开发了一个简单的地图编辑器,主要包含以下几个功能:加载地图编辑地图地图缩放设置格子尺寸编辑格子信息测试阻挡A星寻路显

2020-07-18 14:41:02

gzip压缩引起的热更新bug

gzip引擎的热更新bug就在昨天,一切都是那么的寻常,就是普通得打了一次热更新包,然后上传到服务器,然后…啊,什么情况呀,七百多兆呀,整个资源也才这么七百多兆,什么鬼~~~,冷静,一定要保持冷静。查找过程project.minifest推断 :cocos creator 热更新是基于对比资源列表 project.minifest 的,既然这么大,应该是资源列表里面的文件 md5 全...

2020-03-20 11:22:44

Cocos Creator基于热更新的分包方案

cocos 的热更新是基于对比本来和远程文件列表的md5实现的,如果有多个远程资源库,就可以拿来作为分包方案。大概流程是这样的:一 确定分包策略首先是,策划要根据一定的策略,将动态加载的资源分成几个包。比如游戏等级,前80级之前一个包,120级之前分一个包,200级之前分一个包;或者是关卡什么的。这个逻辑需要策划来确定,前期不会用到的资源就放到中期的包,中期不会用到的就放到后期的资源包。如果...

2019-11-07 20:06:39

Cocos Creator实现Google Play obb 分包

背景Google Play 对 APK 大小限制是 100 M,但是游戏稍微重度一点,资源会很多,很容易包体就会超过这个限制;Google Play 提供了 obb 分包方案,来解决包体问题。OBB 是 Opaque Binary Blob 的缩写,是一种类型 zip 文件格式,作为安卓应用的扩展数据包。参考:安卓开发指南和百度百科思路游戏多数资源都不需要在启动游戏时,就加载加载到内存,...

2019-10-26 11:21:41

多语言版本解决方案

背景:项目在开发过程中都完全使用的中文开发环境,在代码、配表、ui里面有非常多的地方都直接使用了中文字符串。项目需要上海外,而且支持多个语言版本,切支持个语言版本之间切换,预计会上六七种语言的版本。思路:使用脚本提取所有含有中文的字符串,根据字符串内容生成唯一的id,然后生成一份id和内容的映射表,将生成的映射表作为原始文件去翻译,格式如图:id中文繁体英文俄语阿拉伯语土耳...

2019-09-09 20:47:54

cocos creator 图片资源加密

cocos creator 没有对资源进行加密,打包资源的资源很容易被扒,需要自己实现一套加密方式。这里简单记录下资源的加密方式。加密加密算法: XOR时机:在资源压缩打包完成之后加密工具: python脚本def encrypt(content): """ 加密内容 :param content: 加密密的字符串 :return: 加密之后的字符串...

2019-08-20 20:47:27

资源压缩和纹理压缩对cocos creator的Android包体大小影响

对cocos creator 2.1.x的项目,分别作了图片压缩,etc1纹理压缩和gzip压缩。图片压缩:png 使用 pngquant 压缩jpg 使用 mozjpeg 压缩etc1纹理压缩工具 ARM 的 Mali Texture Compression Toolpng 生成带 Alpha 通道的合成纹理jpg 直接生成压缩纹理gzip 压缩pytho...

2019-08-20 20:28:43

cocos creator 2.1+ 中使用材质和自定义shader

版本说明cocos creator 1.x shader 没有经过包装,可以直接定义shader,替换 sprite 原来的 shader,可以参考之前博客;cocos creator 2.x 引入了材质系统,使用 shader 必须通过材质,这里介绍下如何使用自定义 shader;2.1.2 版本编辑器中开放了实验版材质和shader,如图:过程如上图,新建一个shader,...

2019-07-20 14:25:55

ssh登陆设置

一 生成密钥对打开本地终端,执行 ssh-keygen 命令创建密钥对:ssh-keygen -t rsa -C 'your email@domain.com'-t 制定密钥类型,可以省略,默认为 ras-C 设置注释文本,方便知道每个公钥是谁的,可以省略在生成的过程中要求:输入保存文件名,默认为 id_rsa输入登陆口令,默认为空生成好的密钥对保存在 ~/.ssh 目...

2019-03-24 21:15:40

Python 与 C/C++ 交互小结

Python 与 C/C++ 交互可以分为以下3类:Python 拓展Python 嵌入Python 调用一 Python 拓展介绍:在 Python 程序中调用 C/C++ 编写的裤目的:提高关键代码的性能引入 C/C++ 成熟的功能库方式:Cython, SWIG, ctypes, CFFI形式:Python 为主程序,C/C++ 通过 .dll/.so 形式使...

2019-02-20 12:40:56

cocos creator实现的日期选择控件

UIDatePicker日期选择控件及其使用示例及其使用,效果如果:使用步骤:将 UIDatePicker 文件夹拷贝到项目中在脚本中创建一个 Prefab,值设为 UIDatePicker需要显示时,创建节点,设置日期和回调cc.Class({ extends: cc.Component, properties: { label: { ...

2018-12-12 22:11:23

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。