编程语言类
文章平均质量分 94
漫漫之间n
hap
展开
-
ORCA(RVO2)算法优化整理版
在一个2D平面R2R{^2}R2上定义一下内容:(速度:有方向有长度即向量。速率:无方向有长度即常量。)AAA : 机器人A。外部属性:PAP{}{_A}PA : 机器人A的位置(机器人形状的中心点)。rAr{}{_A}rA : 机器人A形状的半径。vA{}{_A}A : 机器人A当前速度。内部属性:vAmaxv{^{max}_A}vAmax : 机器人A的最大速率(常量)。vApref{^{pref}_A}Apref : 机器人A的最倾向速度。vAnew{^{new}_A}A原创 2021-12-11 11:14:31 · 14627 阅读 · 9 评论 -
跨平台灵活的导Excel表工具egen
一款高性能的导Excel表工具:egen特色功能:别名:数值填写支持别名,如填表的int类型内容可以是别名中文,生成代码时会自定替换成真正的值,方便阅读,避免数据量大时阅读混乱。嵌入外表:填表时如果引用到别的表定义的数据,类型一栏中只需“Excel文件名.表名”,然后在值栏中填写对应的外表id即可。避免程序读表时各种乱跳获取id去查表。支持枚举定义:避免还得手动写各种注释0、1、2等各...原创 2019-12-14 08:40:00 · 772 阅读 · 1 评论 -
Json生成Lua Table工具
最近参与一个Unity手游项目的前端程序开发,主要使用lua语言,项目之前有了成型的服务器,包括策划配置好的数据,虽然策划配置数据使用的是Excel表格,但一开始没按照可Excel直接生成Lua表的格式去配,所以Excel表直接生成Lua代码的路是走难走得通了,但Excel却可以生成Json格式文件,那么我依然可以使用Json来生成Lua代码。 所以用Python写了一个Json生成Lua原创 2017-02-10 21:46:18 · 3192 阅读 · 0 评论 -
Unity lua行为树实现(可实现rpg挂机自动战斗)
在使用Unity开发手游项目中,用Lua作为热更脚本时,也许有的RPG项目会有连战斗也要求热更,对于角色挂机自动战斗,Unity有行为树插件Behavior Designer可以实现,但不能实现战斗逻辑热更,所以我用Lua对着Behavior Designer重新实现了部分基础功能,这样,使用Lua版的行为树实现挂机自动战斗,就可以热更啦!前提说明: 1,本文假设读者对树插件Behavior...原创 2020-01-06 10:15:13 · 7304 阅读 · 2 评论 -
Unity打包AssetBundle自动分析资源依赖关系(包括UGUI图集打包)
前提说明:本文只是针对Unity5.x及以上版本打包AssetBundle。Unity5.x虽然说打包时会处理好资源的依赖关系,但前提依然要我们设置好目标资源的AssetBundleName,如果设置资源AssetBundleName时忽略了资源之间的依赖关系,那么打包AssetBundle时,依然会产生重复打包的资源,所以我写了一套脚本来自动分析资源的依赖关系,并根据资源的依赖关系来设置A...原创 2018-02-25 21:58:19 · 17976 阅读 · 2 评论 -
Laya2.0 实现模拟物体影子shader
LayaAir中开启实时阴影性能消耗偏高,如果美术要求不那么逼真,那么物体可以用shader添加一个pass来模拟影子,效果整体可以接受,可以通过调整参数修改物体shader渲染影子的长短、方向、颜色等。效果如下,物体偏亮,因为我使用了半兰伯特光照模型。上代码:ShadowMaterial.tsexport default class ShadowMaterial extends Laya...原创 2019-04-10 09:16:14 · 5019 阅读 · 6 评论 -
二分法查找
二分法查找用于大小有序数组,对于包含n个元素的列表,找到目标值最多只需要Log2nLog{_{2}}^{n}Log2n步,而简单查找需要n步。举例,从数组中找出45在数组的索引,数组中没有45则返回-1:using UnityEngine;public class BinarySearch : MonoBehaviour{ [ContextMenu("Do")] priv...原创 2019-05-01 19:25:18 · 164 阅读 · 0 评论 -
导航动态避让算法RVO的优化ORCA(Optimal Reciprocal Collision Avoidance)
来源于文档的主要内容:本文要解决的问题:n(n>0)n(n>0)n(n>0)个个体导航向目标点移动过程中,对于其它个体或者障碍物进行动态避让,并寻找最佳路径向目标点移动。我们在本文中讨论的问题正式定义如下:在一个共享的空间环境下有n(n>0)n(n>0)n(n>0)个机器人,为了简单起见,我们假设机器人都是圆形,空间环境则...原创 2019-04-19 12:44:08 · 26361 阅读 · 14 评论 -
docker构建golang分布式带依赖库项目镜像
用了golang一阵子,然后自己琢磨着尝试写了个分布式的游戏服务器。突然想到要把它部署到docker上,网上查看了别人的一些经验,发现大部分都只提到简单的将单个golang文件main.go添加到docker上,然后运行,洋洋洒洒几行命令后完事了没了,跑了。然后,遗留了一些耐人寻味的问题没有提到,如,docker里依赖的第三方库找不到如何解决,分布式多个子服务器的Dockerfile如何解决等...原创 2019-06-13 13:08:27 · 1418 阅读 · 0 评论 -
DOTween教程
DOTween起始上手起来很快,当然前提也是用心看一下哈。 可以在Unity AssetStore下载得到。 使用方法: 准备:在导入DOTween后,你需要设置dotween额外的库设置基你的Unity版本。Tools—–>DOTween Utility Panel——>点击SetupDoTween即可。DOTween只是为了对应Unity的版本不需关心更多。一,最先简原创 2015-08-06 13:34:39 · 24320 阅读 · 0 评论 -
Unity自定义窗体插件工具
模拟一个打包游戏工具吧。 但只有UI,并不具实际的打包游戏功能,自己可以扩展的,把具体功能加进去。 这个类一定要放在Asset下的任何一个Editor文件夹才生效。using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;//这个类只实例化一次后,将序列化原创 2015-07-31 17:16:45 · 1410 阅读 · 0 评论 -
C#DES对较大文件和文件字节数组对象加密解密
startusing UnityEngine;using System.Collections;using System.Security.Cryptography;using System.IO;public class Encrypt{ //DES需要秘钥desKey和desIv向量一起使用加密,它们的要求都是8个数组的字节数组, 如desKey=12345678转成原创 2015-06-24 14:48:06 · 2812 阅读 · 0 评论 -
Xcode6.x如何不使用storyboard
Xcode6.x后发现不能创建空白的工程,套回之前旧版Xocde的代码,跳过storyboard:打开新创建的iOS工程中的AppDelegate.m,在-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions *)launchOptio原创 2015-06-25 20:58:19 · 509 阅读 · 0 评论 -
Unity基于TCP/IP的小聊天室实现
要发送字节数组封装类 现在的功能只是发送字符串,也可以改造成传输更多数据类型的类using System;using System.Net.Sockets;//为了避免粘包半包情况//这个类用来封装字节流,主要分为header+body,header:记录信息包的长度,body:要发送的信息//TCP每次先读取流中的4个字节,了解到这条信息的长度后,读取同长度的字节流public clas原创 2015-07-25 14:47:23 · 5161 阅读 · 1 评论 -
Lua模拟类,继承,私密
lua中并没有提供原生类的定义,但lua中的表很灵活,可以使用表来模拟类的实现。 如我要定义“猫咪”这个类, 有两个方法 1,偷鱼 2,吃鱼 一个属性 1,有多少条鱼在java中的实现: public class Cat { //拥有参数 private int fish = 0; //构造方法 public Cat(){原创 2015-07-17 18:34:30 · 691 阅读 · 0 评论 -
为iOS应用/游戏内建购买项目(IAP)
一,前提: 1,注册有iOS开发者账号Apple ID(是注册过开发者账号的Apple ID,非普通Apple ID)。 2,用上述账号Apple ID登录苹果开发者官网为在开发的iOS应用注册一个Bundle identifier(将正在开发的应用注册到iTunes Connect管理时用到)。 注册的字符串和对应应用XCode中的Bundle Identifier字符串原创 2015-07-15 15:09:07 · 1103 阅读 · 0 评论 -
iOS游戏IAP数据服务器验证
我上一篇博客《为iOS应用/游戏内建购买项目(IAP)》对于CP有自己游戏服务器的从安全性来讲并不适用,有自己服务器则需要进一步对数据进行校验。如果CP具有自己的游戏服务器, Apple建议在服务器端存储产品ID,而不要将其存储在客户端本地。 这样就可以在不升级程序的前提下添加新的产品,这只需要我们向客户端发送哪个产品的ID。如果要申请商品ID,可参考《为iOS应用/游戏内建购买项目(IAP)》原创 2015-08-10 12:23:58 · 2918 阅读 · 3 评论 -
<Stealth>游戏中的动画与寻路控制
最近玩了下Unity AssetStore上《Stealth》游戏,感觉很有意思,所以花了好些时间来读它的代码,感觉最让我值得学习的是其中机器人守卫的动画与寻路控制,所以记录一下:其中大体思路是: 敌人按给定的四个点巡逻,如果玩家进入视线范围内就转身停下,然后追赶或者射击玩家。敌人守卫使用了带位移的动画,而其寻路导航却是用了NavMeshAgent。 所以做法是: 位移: 不直接使用动画所带原创 2015-08-13 12:03:44 · 2027 阅读 · 1 评论 -
TCP和UDP的“保护消息边界”(粘包、半包)
TCP是面向连接,面向流的(有可能会出项粘包情况),提供高可靠服务性。因此TCP,使用了优化方法,将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端收到的二进制流可能会被切开或者合并的,必须提供科学的拆包机制。 UDP是面向非连接,会保证消息的保护边界,不会使用块的合并优化算法,这样,实际上目前认为,是由于UDP支持的是一对多的模式,所以接收端的skbuff(转载 2015-07-22 11:20:42 · 2430 阅读 · 0 评论 -
python学习简要笔记整理
#学习自廖雪峰的博客#解决中文编码:Import sysreload(sys) sys.setdefaultencoding('utf8')cmp(x,y), x 1 #判断类型:isinstance('abc', str) = Ture类型转换:>>> int('123')>>> int(12.34)>>> float('12.34')>>> str(1.23)原创 2015-05-20 16:14:11 · 778 阅读 · 0 评论