- 博客(47)
- 资源 (6)
- 收藏
- 关注
转载 NanoHttpd 单文件
import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io..
2020-06-23 16:08:59
671
原创 u3d honey hex framework 路径显示改造
原始的寻路使用了一个第三方的unity3d astar库,这地图中是使用六边形的中心作为路径点,而且可行走的区域不能动态变化,所以想改造一下。改造达到的效果是1)不使用路径点,而是每个六边形的格子里面的点都可以作为寻路的目标;2)选了不同的角色之后,可以行走的区域不同。自己使用a*算法重新写了寻路后,这两点都没有问题了。但是要显示出可以行走的区域就比较麻烦了,最后想了一个办法,修改
2016-11-02 13:36:41
2037
原创 u3d honey hex framework 代码解读记录(五)
// 接着讲上次剩下的一个函数chunk类中的GetForegroundData/// /// parses through controlled hexes and produces single list of the foreground data which fits within chunk /// Note that single hex may be shared up to
2016-07-15 22:56:26
2264
原创 u3d honey hex framework 代码解读记录(四)
// 接着上次baking函数中的循环开始// 生成阴影贴图,源和高度贴图源是一样的,目标贴图小了很多,边长是2的4次方分之1//Render shadow and light to scaled down texture and copy it to Texture2Dint scaleDownPower = 4; //scaling it down 4 powers will resi
2016-07-14 23:12:37
2030
原创 u3d honey hex framework 代码解读记录(三)
// 接着上次的baking函数段 -------------------------------------------------------------------------// 因为各个烘焙阶段都是使用shader来工作的,所以目前看烘焙相关的代码会觉得不是很清楚// 等到将这个大的流程粗略过完之后,我会回头将每个shader和对应的函数解读一下// 大概需要等到下下篇文章了/
2016-07-13 18:44:28
2962
原创 u3d honey hex framework 代码解读记录(二)
// file: WorldOven.cs/// /// If baking were requested this function will handle starting all required processes and default settings required for initial pass/// /// void Update(){ // 如果有dirty
2016-07-12 23:11:45
2797
原创 u3d honey hex framework 代码解读记录(一)
honey hex framework: https://www.assetstore.unity3d.com/cn/#!/content/21650// file: CameralControl.csif (GUILayout.Button("Generate World")){// 将地形和配置资源load到游戏中// 游戏设置(MHGameSettings)和地形
2016-07-11 23:06:26
2263
原创 golang深度拷贝map
最简单的方法是用json unmarshal,变成字符串,然后再用 json marshal生成新的map。这种方法对结构体也适用。如果是map[string]interface{}和[]interface{}的组合,用代码递归也很简单:func DeepCopy(value interface{}) interface{} { if valueMap, ok := value.(map
2016-07-06 11:23:26
24105
原创 中文分词在大量数据模糊查询中的应用
最近在做建筑行业相关的项目,遇到的一个应用场景是解析材料名称。由于输入的数据中材料名称非常不规范,而且数量量又非常大,所以处理起来比较困难。名称不规范的意思是,比如标准材料叫:“圆钢”,材料中出现的名称有:“钢筋圆钢”,“圆钢HPB300”,“钢筋 圆钢(≤Φ10)”等等,也就是说材料名称前面或者后面很多修饰语(一般情况是前面是材料分类,后面是型号信息)。一般的思路就是关键字匹配,但是由于
2016-03-11 17:18:05
4376
1
原创 golang tree 辅助操作
在项目开发过程中,发现需要很多树的数据结构,所以封装了一个树的接口,方便操作。树的生成:比如树的节点结构定义大概如下:type struct Node { Name string Children []Node CalcRule string // 自定义属性}Name 指节点名字,Children是包含的子节点的数组,还有其他一些字段,就是叶子节点的一些属性了,比如这里的Ca
2016-03-06 12:15:20
3574
转载 mac下liteide gdb 调试
需要将gdb做一个codesign操作,方法如下:On MacOSX lldb needs to be code signed. The Debug and Release builds are set to code sign using a code signing certificate named lldb_codesign. If you don't have one
2015-11-03 11:04:29
3626
原创 golang 和 python 微信菜单设置
微信公众号开发中,需要发送http请求来设置菜单。写了一个程序放在这里,避免每次用postman发请求的麻烦。golang代码如下:package mainimport ( "bytes" "encoding/json" "flag" "fmt" "io/ioutil" "net/http" "os")const ( WX_ID = "xxxxxx
2015-06-24 14:05:37
1870
原创 第一章
安装各种包install.packages("devtools") install.packages("PerfomanceAnalytics")install.packages("/Users/xxx/stork/r-packages/blotter_0.9.1666.tar.gz", type="source")install.packages("/User
2015-06-03 15:48:24
790
原创 mongodb 操作文章汇总
数组的更新操作:http://jzfjeff.blog.51cto.com/1478834/1003191数组的查询操作:http://blog.youkuaiyun.com/drifterj/article/details/7833883
2015-03-16 16:31:56
539
原创 七牛空间删除所有文件go客户端
做个记录package mainimport ( "fmt" qiniuConf "github.com/qiniu/api/conf" qiniuRs "github.com/qiniu/api/rs" qiniuRsf "github.com/qiniu/api/rsf" qiniuRpc "github.com/qin
2015-02-16 16:23:48
1200
原创 shell 生成 manifest
一个生成manifest的脚本#!/bin/bashif [ $# -ne 1 ];then echo Usage: ${0} dir exitfilist_alldir(){ for file in `find $1` do if [ -f $file
2015-02-12 17:21:40
954
原创 Revel json decode for param
使用ajax的风格,网页客户端使用json和服务器通讯,需要revel解析json格式的参数。在网上搜索,发现了一个很好的文章:http://leanote.com/blog/view/52da6ea9a3cf232efb000000但是使用起来有两个顾虑:1 文章里面使用的方式是直接更改revel的框架代码,以后revel升级之后需要merge。2 在解析json的时候只将第一个参数
2015-01-08 18:20:08
1485
转载 转载 Linux网络性能调优
记录,以免丢了,原文:http://www.zhangyiqun.net/583.html#老外写的文章,看过后觉得非常不错,国内大部分是转载的英文版,我翻译过来造福一下大众吧。我有两台服务器放在不同的机房.在两台服务器间会有一些大文件需要传输,每当这个时候我的网络性能就变的很差劲.在linux下我将如何通过调节TCP来改善这个问题呢?其实linux默认的网络设置并
2014-09-23 11:08:06
4661
转载 转载 游戏设计艺术中100个透镜
《全景探秘游戏设计艺术》100个透镜是阅读天之虹翻译的电子书做的读书笔记,希望对从事游戏设计的朋友有帮助!倾听:团队,玩家,游戏,投资人自己。游戏设计师真正关心的是创造体验。行为心理学,现象心理学。(做心理学方面的系统学习和进修)人类学,设计学,每个行业的设计师那里学习带给用户的心理体验。游戏设计师,至始至终都不需要关心在客观世界中真实存在的东西,只需关心在主观体验
2014-08-18 18:20:58
3208
原创 linux下go的动态链接库的使用
在使用lua进行服务器端游戏逻辑开发时,发现了LUA的各种不方便的地方,不能编译检查,不能断点调试,笔误的函数和变量不提示出错等等,所以有了全部使用go来做服务器端开发的想法。如果不需要热更新,那使用go开发服务器逻辑是很轻松的,而游戏服务器特别是页游,一般都需要支持热更新,所以我决定使用go的动态链接库方式来实现,也就是底层框架是go,上层逻辑是go的动态链接库。go原生不支持动态链接库,在
2014-03-16 17:18:48
7090
原创 go lua binding: aarzilli "signal arrived during cgo execution" 错误修改
项目中使用到了go调用lua,从github上下载了aarzilli。使用的过程中发现了一个问题,修改了一下,记录在此。之前的代码如下:func LuaRun(jsonData []byte, index int) string { luaInfo := luaInfoArr[index] if needReload { if 0 != luaReload(luaInfo) {
2013-12-07 10:41:51
3324
原创 协程在游戏服务器开发中的应用
之前在客户端开发中,就发现了协程在代码中的方便之处。比如我在获取一个资源时,不使用协程的情况下,只能使用回调函数,代码大致如下:void ProcessPic(string picName){Pictrue pic = getPic(picName);if(pic == null){requestPicFromServer(picName, ProcessPic2)
2013-11-09 11:46:29
1705
原创 unity3d 脚本拷贝地形
遇到一个问题,解决方法是从创建好的地形拷贝一份新的地形,但是在拷贝的时候发现新地形和老地形实际使用的一份地形数据,在修改老地形数据的时候,新地形的数据也会相应变化。在网上搜索了一下从脚本创建地形的例子,稍微修改,可以满足我的需求,放在此处记录。老地形的Terrain部分的变量叫做_terrain。TerrainData terrainData = new TerrainData()
2013-09-02 14:12:51
6018
1
原创 游戏中分层状态机的实现
状态机的实现方式有很多种,一般都使用比较简单的switch case方式来实现对事件的处理和状态的转移,如下所示:void ProcessEvent(Event event){ switch(state) { case StateA: StateAProcess(event); break; case StateB: StateBProcess(event);
2013-07-31 17:07:12
12073
原创 new web game server
做压力测试时,发现服务器性能还是很有问题,目前的瓶颈主要在两个地方:1 mysql;服务器是8核cpu,压力大时mysql的cpu占用率达到100%左右,我的理解是把一个cpu占满了。 php-fpm-slow.log里面可以看到很多操作mysql的地方都超时了。2 php本身;在一些复杂逻辑的操作,比如战斗,php本身执行时间就比较长,再加上mysql的延迟,叠加效果更明显。
2013-01-25 11:05:29
1240
原创 golang 并行转串行透明代理
放在这里做个备份package mainimport ( "fmt" "log" "net")const ( realServer = "127.0.0.1:9002" selfPort = 9010)type gameConn struct { ClientConn net.Conn PkgBuf [maxPkgSize]byte Pk
2013-01-25 10:39:08
2954
转载 转载 linux/unix 段错误捕获【续】
原文地址 http://blog.chinaunix.net/uid-26009500-id-1585783.html一、出错代码在动态链接库内时,原方法的输出 有些情况下,我们会采用动态链接库,如果出错代码行恰巧在动态链接库内,原方法仍可得到出错时的地址。例如:signal[8] catched when running code at 804
2013-01-23 18:35:18
1081
转载 【转载】 风格之争:Coroutine模型 vs 非阻塞/异步IO(callback)
原帖地址: http://www.kuqin.com/system-analysis/20110910/264592.html我们在设计一个服务器的软件架构的时候,通常会考虑几种架构:多进程,多线程,非阻塞/异步IO(callback) 以及Coroutine模型。多进程这种模型在linux下面的服务程序广泛采用,比如大名鼎鼎的apache。主进程负责监听和管理连接,而
2013-01-18 11:01:30
7889
原创 设计模式在游戏客户端中的应用(一)
mvc不讲了。说一个非常有用的:策略模式。策略模式的思想在设计模式里面写的非常清楚,概括下来就是将行为和行为的实现分离。在head 设计模式这本书里面讲的例子也非常容易理解,基本上可以直接搬到游戏中来。如图:在游戏中,玩家,怪味,NPC,坐骑,宠物,侠客等等,他们都是可以活动的对象,也有一些共同的行为,所以都可以由一个基类派生出来,但是他们也有很多不同的行为,比如N
2013-01-13 15:50:36
3738
原创 u3d游戏客户端架构(---)
主要是mvc架构,M层为数据层,两个用途:1保存数据;2发送数据更新信息;V层为视图层,两个用途:1接受用户从界面上的操作;2根据M层的数据显示相应的界面;C层为控制层,两个用途:1处理和界面无关的代码逻辑;2接受和处理网络数据;继续……按照自己的经验,游戏中的mvc架构有两种思想,1,以mvc架构为主,整个框架就是一个mvc架构;2,以对象思想
2013-01-06 20:10:09
19341
原创 web game server architecture
黑色的线代表socket长连接,橙色的线代表socket短连接,蓝色的线代表数据处理流程1客户端发送数据包到boost ASIO server,2server先将包发送到preprocess模块处理;这个模块是和游戏逻辑关联的,比如模型协议的包可以直接丢弃,某些协议的包可以跳过php部分的处理等等;由于处理逻辑和游戏逻辑关联,所以采用动态链接库方式,以便逻辑更改之后服务器不用重
2013-01-06 20:03:43
1794
原创 jsoncpp 配置
由于需要将项目能够在某平台上跑起来,所以需要对服务器进行重新编译,将boost库版本降下来,比较悲催。平台是SUSE LINUX 10.1首先是编译jsoncpp,步骤如下:1. 下载scons-2.2.0.zip,解压得到scons-2.2.02. 进目录去,执行python setup.py install3. 下载jsoncpp-src-0.5.0.tar.gz,
2012-12-04 16:14:42
2831
原创 一些代码技巧
之前使用了pantheios来做日志库,后面发现还是太大了,自己的需求又很简单,所以自己做了一个简单的封装:#define LOG_INFO(fmt, args...) { printf("%s [INFO] "/**/fmt/**/"\n", gb_now_time_str.c_str(), ##args); fflush(stdout);}#define LOG_ERROR(fmt
2012-11-12 17:51:07
791
原创 boost asio 需要使用智能指针而不能使用普通指针的原因
当使用asio做服务器时,需要一个会话管理器来管理所有的会话,类似下面这样:class SessionMgr{private: boost::shared_mutex _rw_mtx; boost::unordered_map > _session_list; boost::unordered_map >::iterator _iterator; public: void
2012-09-22 16:14:35
1665
原创 mysql++ build recode
编译mysql++时,报如下错误:./ssx/genv2.cpp: In function ‘bool generate_ssqls2(const char*, const ParseV2*)’:./ssx/genv2.cpp:70: 错误:‘strcmp’在此作用域中尚未声明解决方法:打开ssx/genv2.cpp,在文件头部添加 #include
2012-09-06 11:19:23
1066
原创 Game Server Build Record
language: c++libararies: boost, pantheiosmemory manager: redis------------------------- 分割线 ------------------------------------在第一个版本的服务器中,参照boost http server,写了如下代码片段:Worker:
2012-07-30 08:14:01
666
NGUI Sorting Layer script
2014-11-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人