开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 6天前 阅读 3205 评论 13 点赞 16

【码云周刊第 42 期】Unity 开发看这些就够了!

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 2周前 阅读 2204 评论 5 点赞 4

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4382 评论 20 点赞 18

java多线程——并发测试

并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
wier 发布于 1个月前 阅读 1017 点赞 4

java多线程——CAS

CAS是什么,有那些特性,如何使用...
wier 发布于 1个月前 阅读 552 评论 5 点赞 5

java多线程——锁

这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
wier 发布于 1个月前 阅读 3136 评论 15 点赞 4

java多线程——volatile

java多线程系列第三篇,深入理解volatile的原理以及应用
wier 发布于 2个月前 阅读 3215 评论 11 点赞 6

在Unity游戏中使用Live2D

Unity中使用Live2D
Lohanry 发布于 2个月前 阅读 365

java多线程-内存模型

了解一些jvm在内存操作中如何保证一致性问题
wier 发布于 2个月前 阅读 1919 评论 8 点赞 3

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2个月前 阅读 4378 评论 5 点赞 9

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 2个月前 阅读 1834 评论 9 点赞 3

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 3个月前 阅读 1083 评论 14 点赞 2

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3个月前 阅读 3566 评论 7 点赞 16

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 3个月前 阅读 2206 评论 10 点赞 8

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 3个月前 阅读 7241 评论 38 点赞 20

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 4个月前 阅读 9065 评论 58 点赞 36

我是这样翻译 CraftyJS 的

最近博主在翻译 CraftyJS 的官方文档,或许你还不知道 CraftyJS 是什么,好吧,先来一张图! 想做网页小游戏不是一两天的事了,但说实话一直没找到满意的游戏框架,JS水平又很烂,平面设计水平还一塌糊涂,这可怎么活啊!默哀三分钟。。。 一个偶然的机会博主发现了 CraftyJS ,深入了解之后,博主觉得就是它了,因为他足够小,足够简单,足够灵活,这就足够了!但随后博主发现网上关于这款游戏引擎的文档简直是少的可怜,幸好官方的文档还算给力,组织的比较清晰,似乎也比较完备。博主英文是相当的差劲(默哀三分钟。。。),还好混了几年IT,简单的单词还算识得,不过看着还是很吃力的,更何况在没有游戏开发背景的情况下,里边有很多专业的术语是很难理解的,想到中国还有千千万万像博主这样满怀一腔热情,但是英文不过关的同志们,于是博主决定将整个官网翻译成中文以方便后来者。(话说官方难道就不打算出了中文网站么,不打算在天朝发展么,天朝人多势众啊!) 下边就来讲讲我翻译 CraftyJS 的经历,各位吃瓜群众准备好瓜子茶水前来围观吧!!! 首先我在官网上发现原来这个网站的页面源码有在github上托管(这真是感谢党感谢人民啊,还好不用我一个页面一个页面的在...
-无名小卒- 发布于 4个月前 阅读 279 评论 4 点赞 1

每个程序员都需要知道一些游戏网络知识

作为一个程序员,你有没有想象过多人游戏是如何实现的?
wier 发布于 5个月前 阅读 3988 评论 4 点赞 9

LuoYing RPG教程-JME3游戏创建、场景编辑、载入完整示例教程

这篇文章主要介绍: 如何创建一个3D游戏项目; 如何整合LuoYing RPG游戏框架到JMonkeyEngine游戏中; 如何使用落樱编辑器创建一个3D游戏场景,并将游戏场景载入到JME3游戏中。 文章会从创建项目、创建场景到导入场景作一个完整的说明过程。
huliqing 发布于 5个月前 阅读 429 评论 2 点赞 2

Pomelo游戏服务器端开发系列(1)-介绍

官方Github上的WiKi的知识点总结到一块,筛选了一些有价值的知识点
nextzeus 发布于 6个月前 阅读 528 评论 1

Unity链接SqlServer数据库并进行简单的数据查询

1、我写的程序不需要数据库     写了好久的unity单机应用,终于鼓起勇气说服自己尝试连接数据库,并着手学习写网络应用了。谨以此纪念我不思进取的青春吧。     在unity中,数据的存储方式很多,但是最实用的仍然还是用数据库的方式。那么具体应该怎么操作呢?   2、我需要点什么     首先,我需要给自己的电脑装上SqlServer数据库。至于怎么下载和安装,请未来的我自己百度,这里不做赘述。     第二,我们安装好SqlServer之后,打开SqlServer配置管理器,启动如下服务。     第三,创建名为Test的数据库,创建一个Table_1的表,并添加一条数据为张三,如下图所示:     到此关于SqlServer方面的准备就已经做好了。     第四,既然是Unity的数据连接,当然需要你的电脑至少有Unity和VS啦。我这里用的版本是Unity2017和VS2017。   3、那么开始吧     首先,打开Unity,创建新工程。并在unity的安装路径下找到 System.Data.dll 文件。具体路径为 Unity安装路径\Unity\Editor\Data\Mono\lib\mono\unity\。将此文件复制到Unity工程Assets目录下。     这样就可以开始写脚本连接数据库对数据进行操作了,但是这样会存在一个问题,就是当程序发布...
落叶-归根 发布于 2个月前 阅读 46

环形无锁队列-版本1

环形无锁队列,某些情况下又叫做 ring buffer 在底层代码的消息收发过程中一般收和发 也就是读写分开处理的,即一个读线程,一个写线程,这种类似于逻辑上的读写2线程操作,情况下的线程安全可以用环形队列来处理,达到无锁目的。这种队列在多个读写线程下,并不能保证线程安全,只适用于一个读一个写。 end=write    start  = read 基本思想是read write index下标表示当前读写index,2个线程只做自己的事,环形队列满后吧数据缓存在std::queue里面,然后为了保证一致性,因此在push里面对std::queue里面的内容刷新到buff里,这意味着有一个以下问题: 2个线程分别操作自己的push or pop front ,out_cache是当环形队列buff满后,存储数据的地方,因此out_cache里的数据是push dump到buff中,这样就存在一个bug,就是push次数一定要大于pop次数 才能保证队列里面的数据被被动 写入buff里面,因此只要out_cache里面有数据,始终有数据是未处理状态,尤其是程序退出时。。。   这种处理手法虽然没有了mutex,效率较高,但是带来了一个新问题,就是由于没有了mutex condition等机制,导致线程很容易就空转(CPU空跑)了,比如在队列是空的情况下read线程会满载做无用功,...
梦想游戏人 发布于 3周前 阅读 45

cocos2d-lua 接入ShareSDK

有几点要注意的: 1.将下载的SDK解压后导入到您的工程中,Xcode9以前版本可以直接把SDK拖进Xcode项目里,但是XCode9需要先将SDK放在项目文件里,然后打开XCode的项目,右击添加进去才行,因为XCode9不会自动把库文件加载到库资源里,以及不会自动添加路径 2.微信和新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加”-ObjC”,但是cocos工程设置这个的话编译会报错,仿照bugly,如下图: $(SRCROOT)/SDK/ShareSDK/Support/PlatformSDK/WeChatSDK/libWeChatSDK.a
valiancer 发布于 23小时前 阅读 1

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 6天前 阅读 3205 评论 13 点赞 16

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4382 评论 20 点赞 18

Cocos2dx 搓牌效果

先上效果图: ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165000_30Za.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165022_OXxv.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165036_kC4x.png "在这里输入图片标题") cocos2dx 3D搓牌效果类如下: ``` -- date:2017/9/26 -- author:looyer -- purpose:3D搓牌效果层, -- 顶点着色器 local strVertSource = [[ attribute vec4 a_position; attribute vec2 a_texCoord; attribute vec4 a_color; uniform float ratio; //牌初始状态到搓牌最终位置的完成度比例 uniform float radius; //搓牌类似于绕圆柱滚起,其圆柱的半径 uniform float width; uniform float finish; //是否完成搓牌 uniform float offx; uniform float offy; varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main() { //注意OpenGL-ES中:1.attribute修饰的变量是常量。2.没有自动转类型float a = 1;或者5.0/3都是错误的 //这两个问题改了两天,可以通过修改CPP代码,打印log来调试cocos2dx程序 vec4 tmp_pos = a_p...
looyer 发布于 4周前 阅读 852 评论 2 点赞 3

【码云周刊第 42 期】Unity 开发看这些就够了!

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 2周前 阅读 2204 评论 5 点赞 4

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 2个月前 阅读 1834 评论 9 点赞 3

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2个月前 阅读 4378 评论 5 点赞 9

java多线程-内存模型

了解一些jvm在内存操作中如何保证一致性问题
wier 发布于 2个月前 阅读 1919 评论 8 点赞 3

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 3个月前 阅读 2206 评论 10 点赞 8

java多线程——volatile

java多线程系列第三篇,深入理解volatile的原理以及应用
wier 发布于 2个月前 阅读 3215 评论 11 点赞 6

java多线程——CAS

CAS是什么,有那些特性,如何使用...
wier 发布于 1个月前 阅读 552 评论 5 点赞 5

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 3个月前 阅读 1083 评论 14 点赞 2

java多线程——并发测试

并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
wier 发布于 1个月前 阅读 1017 点赞 4

PlayMaker的Transition和Global Transition

PlayMaker的Transition和Global Transition
大学霸 发布于 2个月前 阅读 8

UnityEditor - 窗口与窗口内控件

# 编者注 由于UnityEditor的菜单必须是静态的,而不能动态生成菜单,对于从服务器调取内容数据,进行列表显示就成为了问题。则需要找到新的GUI入口。 # Window ## Window接入与显示 ### 继承EditorWindow ``` public class PreVizWindow : EditorWindow { PreVizWindow() { this.titleContent = new GUIContent("TestWindow"); } ... } ``` ### 菜单调用入口 ``` // 添加菜单 [MenuItem("PreViz/TestWindow")] static void ShowWindow() { Debug.Log("PreViz/TestWindow"); EditorWindow.GetWindow(typeof(PreVizWindow)); } ``` ### 运行显示 ![输入图片说明](https://static.oschina.net/uploads/img/201710/16170853_9Ef8.png "在这里输入图片标题") ## Window内部绘制 需要在class内创建OnGUI方法,这样在调取Window时,才会调用该函数内的 ``` void OnGUI() { // 竖向绘制 EditorGUILayout.BeginVertical(); 添加绘制内容... EditorGUILayout.EndVertical(); } ``` ### EditorGUILayout.MinMaxSlider ``` private float minValue = -10; private float maxValue = +10; private float minLimit = -100; private float maxLimit = +100; void OnGUI() { ... EditorGUIL...
抢小孩糖吃 发布于 1周前 阅读 9

贪吃蛇游戏Java实现

简介:     周五在天码营看到一个java-snake的学习任务,地址https://course.tianmaying.com/java-snake。看了挺有意思,然后就花了几个小时按照其描述给实现了,因很多地方都是伪码,或者中文描述。所以 写起来也挺有意思,会让你自己去考虑细节代码实现。   项目:     相信大家好多人都玩过这个游戏,在看到怎么实现的逻辑,自己在之前还从未去考虑。写完了小游戏,把几个游戏的小细节给大家描述下。蛇的身体结构是个LinkedList<Node>,其中Node是棋盘Grid上面的点,非像素点;     1,蛇的移动:首先根据移动方向和Snake的head生成一个新的Node,然后把node添加到头部,最后把尾部给删除。就完成了snake的一次移动;     2,吃到食物:上一步生成的新头部节点和当前棋盘上的一个food节点比较,如果是同一个节点。则再把刚才干掉的尾部给添加上去即可;     3,边界检查:碰到边界,也就是Direction方向上的0或者width-1。如果当前head是这个,next时候就失败了。游戏game over;还有一种是碰撞自身,其实拿到新生成的node遍历对比Snake的body即可。也可以维护一个表格覆盖情况,其实觉得还是对比body比较简单些;     4,分层设计:任务的分层还是很好的...
叫我哀木涕 发布于 1个月前 阅读 16

java多线程——锁

这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
wier 发布于 1个月前 阅读 3136 评论 15 点赞 4

回合制-战斗机制-实现分析

记录一下,想到哪里写到哪里。 回合制游戏一般流程是 一定时间内等待玩家输入,服务器计算该回合战斗数据,客户端收到数据后进行画面表现。 以此循环到战斗结束. 设计难点在于服务器返回怎样的数据结构,既简单又实现方便,数据量小,等具备常规工程化的特点。   梦幻举例: 1.对于一些概率性的技能等,输出肯定是一个确定的,比如触发or未触发。 2.对于伤害数值,输出的是一个具体数字,包含暴击,等相关信息。 方案1: 数据格式如果基于招式(技能,平A也可以看做是一个技能)的话,那么每个可攻击单位的每次攻击行为的数据可能像这样 对于一次完整的战斗,可达20个单位,每个单位的每次攻击大约是 220字节,一个回合大约就是4kb的数据量,最大上限可能是9kb。对于一个10回合的战斗,将会是40kb,还没包括玩家信息召唤兽信息等数据 官网找的一个录像帮战5回合, 每个 回合攻击序列都是这样一个SkillAction数组,依次播放,这样做存在的问题。是如果有技能是和该攻击行为有交互,比如反震,那么就很棘手了。方案1 pass   方案2: 根据方案1的缺点,方案2做了如下改进,客户端参与战斗逻辑处理,对于数值,几率等是服务器发送的,其余都可以是本地产生的结果。就算出外挂...
梦想游戏人 发布于 3个月前 阅读 26

【码云周刊第 42 期】Unity 开发看这些就够了!

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 2周前 阅读 2204 评论 5 点赞 4

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 6天前 阅读 3205 评论 13 点赞 16

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4382 评论 20 点赞 18

Cocos2dx 搓牌效果

先上效果图: ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165000_30Za.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165022_OXxv.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201709/27165036_kC4x.png "在这里输入图片标题") cocos2dx 3D搓牌效果类如下: ``` -- date:2017/9/26 -- author:looyer -- purpose:3D搓牌效果层, -- 顶点着色器 local strVertSource = [[ attribute vec4 a_position; attribute vec2 a_texCoord; attribute vec4 a_color; uniform float ratio; //牌初始状态到搓牌最终位置的完成度比例 uniform float radius; //搓牌类似于绕圆柱滚起,其圆柱的半径 uniform float width; uniform float finish; //是否完成搓牌 uniform float offx; uniform float offy; varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main() { //注意OpenGL-ES中:1.attribute修饰的变量是常量。2.没有自动转类型float a = 1;或者5.0/3都是错误的 //这两个问题改了两天,可以通过修改CPP代码,打印log来调试cocos2dx程序 vec4 tmp_pos = a_p...
looyer 发布于 4周前 阅读 852 评论 2 点赞 3

内存对齐还是需要重视的——XMMATRIX 为例

最近研究 D3D,搜了一个教材跟着学:[http://www.rastertek.com/dx11s2tut04.html](http://www.rastertek.com/dx11s2tut04.html) 用 x64 的配置运行,完美,过了几天需要用 x86 测试,结果一运行,程序崩溃…… 赶紧排查问题,x64 的 Debug、Release 都是可以的,而 x86 则是 Debug 可以,Release 才会崩。 开发环境是 VS2015,编译时曾经遇到一些错误和警告,是 UMU 自己消灭掉了,最后有一类警告应该是关键: > warning C4316: 'SystemClass': object allocated on the heap may not be aligned 16 原因是 XMMATRIX 需要 16 字节对齐,但代码的作者把它塞在几个类里,然后去 new 这些类了…… 尝试把这些类从 heap 改为 stack,问题解决! 八哥太多,不能轻易放任警告!
UMU 发布于 5天前 阅读 39 点赞 1

深入理解游戏中寻路算法

看似寻常的路径行走,在程序看来就需要一定的寻路算法来解决,如何在最短时间内找到一条路径最短的路线,这是我们首要考虑的问题。
wier 发布于 3个月前 阅读 2206 评论 10 点赞 8

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 2个月前 阅读 1834 评论 9 点赞 3

科腾900度方向盘在游戏GTA5中死区的设置

科腾方向盘,赛车游戏,GTA5,死区,设置
周小原 发布于 1个月前 阅读 36 评论 2

java多线程——volatile

java多线程系列第三篇,深入理解volatile的原理以及应用
wier 发布于 2个月前 阅读 3215 评论 11 点赞 6

java多线程——并发测试

并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
wier 发布于 1个月前 阅读 1017 点赞 4

游戏中的加密算法

游戏的中常见的加密方式介绍,以及优缺点详解
wier 发布于 3个月前 阅读 1083 评论 14 点赞 2

java多线程-内存模型

了解一些jvm在内存操作中如何保证一致性问题
wier 发布于 2个月前 阅读 1919 评论 8 点赞 3

在Unity游戏中使用Live2D

Unity中使用Live2D
Lohanry 发布于 2个月前 阅读 365

小程序赚大钱,包你说源码出售

小程序赚大钱 小程序 带源码 完全自主 可定制开发界面  包安装 售后  售后完美  提供成熟的推广运营方法 柠檬科技 承接各类小程序定制开发  五年老牌程序师转型做小程序 用户体验完美 全国招代理
小程序开发搭建教学 发布于 2周前 阅读 8

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2个月前 阅读 4378 评论 5 点赞 9

java多线程——锁

这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
wier 发布于 1个月前 阅读 3136 评论 15 点赞 4

java多线程——CAS

CAS是什么,有那些特性,如何使用...
wier 发布于 1个月前 阅读 552 评论 5 点赞 5

简单放置类小游戏设计思路

1.0版本 放置点击类模拟游戏 进行流程 购买挖矿机, 根据机器的类型,每秒增加的比特币数量不同 手指点击可以增加比特币的生产速度 比特币可以在交易市场兑换美元 美元可以在商店购买新的挖矿机 游戏用unity设计 2.0版本 增加股市和新闻系统,美元兑换比特币存在汇率波动 3.0版本 增加矿机的种类和显卡等设备来丰富产出。 矿机的价格暂时不变 后续开发:成就系统等。。。。
robot_man 发布于 6天前 阅读 5

UnityEditor - 窗口与窗口内控件

# 编者注 由于UnityEditor的菜单必须是静态的,而不能动态生成菜单,对于从服务器调取内容数据,进行列表显示就成为了问题。则需要找到新的GUI入口。 # Window ## Window接入与显示 ### 继承EditorWindow ``` public class PreVizWindow : EditorWindow { PreVizWindow() { this.titleContent = new GUIContent("TestWindow"); } ... } ``` ### 菜单调用入口 ``` // 添加菜单 [MenuItem("PreViz/TestWindow")] static void ShowWindow() { Debug.Log("PreViz/TestWindow"); EditorWindow.GetWindow(typeof(PreVizWindow)); } ``` ### 运行显示 ![输入图片说明](https://static.oschina.net/uploads/img/201710/16170853_9Ef8.png "在这里输入图片标题") ## Window内部绘制 需要在class内创建OnGUI方法,这样在调取Window时,才会调用该函数内的 ``` void OnGUI() { // 竖向绘制 EditorGUILayout.BeginVertical(); 添加绘制内容... EditorGUILayout.EndVertical(); } ``` ### EditorGUILayout.MinMaxSlider ``` private float minValue = -10; private float maxValue = +10; private float minLimit = -100; private float maxLimit = +100; void OnGUI() { ... EditorGUIL...
抢小孩糖吃 发布于 1周前 阅读 9

Unity3D Android 的环境配置

此文内容为网上内容整理
ICU 发布于 1个月前 阅读 3

C#逆向工程

Reflector 的  插件Reflexil.Reflector.AIO.dll  可以修改源代码 然后逆向编译,也可以修改IL代码,前者更方便一点。实现代码hook 注入 破解 修改 等功能 enjoy your code
梦想游戏人 发布于 2小时前

cocos2d-lua 接入ShareSDK

有几点要注意的: 1.将下载的SDK解压后导入到您的工程中,Xcode9以前版本可以直接把SDK拖进Xcode项目里,但是XCode9需要先将SDK放在项目文件里,然后打开XCode的项目,右击添加进去才行,因为XCode9不会自动把库文件加载到库资源里,以及不会自动添加路径 2.微信和新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加”-ObjC”,但是cocos工程设置这个的话编译会报错,仿照bugly,如下图: $(SRCROOT)/SDK/ShareSDK/Support/PlatformSDK/WeChatSDK/libWeChatSDK.a
valiancer 发布于 23小时前 阅读 1

c++图形与游戏编程基础

不懂
4444444441 发布于 3天前 阅读 1

内存对齐还是需要重视的——XMMATRIX 为例

最近研究 D3D,搜了一个教材跟着学:[http://www.rastertek.com/dx11s2tut04.html](http://www.rastertek.com/dx11s2tut04.html) 用 x64 的配置运行,完美,过了几天需要用 x86 测试,结果一运行,程序崩溃…… 赶紧排查问题,x64 的 Debug、Release 都是可以的,而 x86 则是 Debug 可以,Release 才会崩。 开发环境是 VS2015,编译时曾经遇到一些错误和警告,是 UMU 自己消灭掉了,最后有一类警告应该是关键: > warning C4316: 'SystemClass': object allocated on the heap may not be aligned 16 原因是 XMMATRIX 需要 16 字节对齐,但代码的作者把它塞在几个类里,然后去 new 这些类了…… 尝试把这些类从 heap 改为 stack,问题解决! 八哥太多,不能轻易放任警告!
UMU 发布于 5天前 阅读 39 点赞 1

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 6天前 阅读 3205 评论 13 点赞 16

UnityEditor - 窗口与窗口内控件

# 编者注 由于UnityEditor的菜单必须是静态的,而不能动态生成菜单,对于从服务器调取内容数据,进行列表显示就成为了问题。则需要找到新的GUI入口。 # Window ## Window接入与显示 ### 继承EditorWindow ``` public class PreVizWindow : EditorWindow { PreVizWindow() { this.titleContent = new GUIContent("TestWindow"); } ... } ``` ### 菜单调用入口 ``` // 添加菜单 [MenuItem("PreViz/TestWindow")] static void ShowWindow() { Debug.Log("PreViz/TestWindow"); EditorWindow.GetWindow(typeof(PreVizWindow)); } ``` ### 运行显示 ![输入图片说明](https://static.oschina.net/uploads/img/201710/16170853_9Ef8.png "在这里输入图片标题") ## Window内部绘制 需要在class内创建OnGUI方法,这样在调取Window时,才会调用该函数内的 ``` void OnGUI() { // 竖向绘制 EditorGUILayout.BeginVertical(); 添加绘制内容... EditorGUILayout.EndVertical(); } ``` ### EditorGUILayout.MinMaxSlider ``` private float minValue = -10; private float maxValue = +10; private float minLimit = -100; private float maxLimit = +100; void OnGUI() { ... EditorGUIL...
抢小孩糖吃 发布于 1周前 阅读 9

UnityEditor - 添加菜单

# 编者注 由于UnityEditor编辑功能强大,一些调整功能,可以添加在UnityEditor当中,方便调整。 # 代码 在Unity项目的`Assets/Editor`下的文件夹当中,可以创建C#脚本,并且被读取到,添加如下代码可以在UnityEditor菜单中添加菜单。但是必须是静态菜单 ``` using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class TestMenuItem : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } // 添加菜单 [MenuItem("Test/Test")] static void test() { Debug.Log("Hello World"); } } ``` # 示意图 ![输入图片说明](https://static.oschina.net/uploads/img/201710/16095626_OgQy.png "在这里输入图片标题") # 错误报告 在2017.1转到2017.2发生了错误 ``` The type or namespace name `UnityEditor' could not be found. ``` 这个是由于UnityEditor的脚本没有存放到正确的目录结构,应当存放到Assets/Editor下...
抢小孩糖吃 发布于 1周前 阅读 7

XCode编译Cocos2dx3.16 creator_to_cocos2dx 插件问题记录

https://github.com/cocos2d/creator_to_cocos2dx 使用cocos creator创建一个场景,然后使用2dx进行加载显示,参考官方wiki,实现代码后,xcode编译老是出错。 1. reader目录下文件没有导入进xcode,在xcode选择项目后,右键选择add files to ... 把reader目录导入进来。 2. 没有导入MediaPlayer.framework。   参考issue解决办法:https://github.com/cocos2d/creator_to_cocos2dx/issues/88
flyoahc 发布于 1周前 阅读 4

「腾讯云 GAME-TECH 沙龙」成都站报名开启,畅谈游戏实时社交

腾讯云 GAME-TECH 沙龙继 9 月上海站,将于 10 月 27 日来到成都站,与游戏厂商和游戏开发者,畅聊游戏实时社交互动。期待您的光临!
腾讯云技术社区 发布于 2周前 阅读 4

网络数据交互格式

## 数据格式**JSON**: c2s: [消息id, 消息数据] ```json [1000,{"data":"data"}] ``` s2c: [消息id, 消息状态码,消息数据] ```json [6000,0,{"data":"data"}] ``` ### **消息id** 全部为4位数字,例如1001,2001,9001 约定范围: ``` client=>server: 1000-3999 server=>client: 6000-8999 ``` ### **消息状态码** _0_ : 正常 _非0_: 错误码,范围为9000-9999,一个错误码的含义在整个游戏中具有唯一性,不应该存在歧义 ### **错误码** _9000_: 用户不存在 _9001_: 密码错误 _9002_: 用户已经登录(单点登录) _9003_: 金币不足 _9999_: 未知错误
xu_yanfeng 发布于 2周前 阅读 18

【码云周刊第 42 期】Unity 开发看这些就够了!

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 2周前 阅读 2204 评论 5 点赞 4

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4382 评论 20 点赞 18

Unity - 由于类型转换导致的rotation问题

# 编者注 # 目标 通过Slider的拖拽,实现平行光光照变化,简单模拟光照条件。 # 初始化数值 首先,由于平行光不受位置影响,则设置Position x=0,y=0,z=0 其次,简单设置平行光照射角度, 设置Rotation x=0,y=45,z=0 直接设置拖拽范围为-180到180,这样直接可以取值赋给函数,方便快捷 # 一般逻辑 首先获取拖拽条的float值,其次,如果rotation的y由于其他条件发生了变化,则必须赋值回给自己 ``` public void OnDrag(float value){ Vector3 light_rotation = light.transform.rotation.eulerAngles; Debug.LogError (value + " " + light_rotation.y); this.light.transform.rotation = Quaternion.Euler (new Vector3(value,light_rotation.y,0)); } ``` # 问题发生 打印的rotation如下 ``` 144 225 128.5714 45.00005 126 225 120.8571 225 131.1429 225 133.7143 45.00005 ``` 可以看到rotation.y的数值在[45~45.00005][225]的区间发生变化 由于之前查询Unity的到rotation使用的是四元数Quaternion表示的,四元数表示能够更精确表示,但是由于转换成了Vector3,在转换到Quaternion导致精度丢失(由于是角度计算必然丢失精度) # 修正 ``` public void OnDrag(float val...
抢小孩糖吃 发布于 2周前 阅读 12

OpenRA寻路过程学习

       为了自己的即时战略游戏实现寻路,花了几天时间研究了一下OpenRA的寻路过程。研究的过程还是有点艰难的,其中浪费了好几个小时在打印日志上,后来才发现是修改代码后,不能直接调试,还需要Build All一次,这可能和OpenRA的项目结构依赖有关。并且OpenRA还不支持存档,我不得不每次都去新建一个对战游戏,同时要设置成关闭敌方AI,游戏速度最快,部队最多,金钱20000。为了节省建造时间,我还编辑了OpenRA/Mods/ra/rules下面的structures.yaml,vehicles.yaml文件,使得建筑和单位可以迅速造好。但即使这样,还要担心程序在单步执行的时候,莫名其妙的挂掉,而且还无法再应用监视器中杀掉这些该死的mono32进程。好在最终还是有些收获,不枉花费这些力气。        废话少说,进入正题:首先,需要知道RTS寻路需要会遇到哪些问题,我在开发自己的RTS游戏过程中,发现会遇到下面几个问题:     1 如何寻找单位到目标点的最短路径。        这个问题是最基本的,并且也不是RTS特有。该问题可以抽象成:一个地图上,既有可以任意进出的区域,比如草地,沙漠等,也有不可到达的区域,比如门,山脉,河流等。要设计一种算法来让单位绕过不可达到区域,来到达...
yhchinabest 发布于 3周前 阅读 14

环形无锁队列-版本1

环形无锁队列,某些情况下又叫做 ring buffer 在底层代码的消息收发过程中一般收和发 也就是读写分开处理的,即一个读线程,一个写线程,这种类似于逻辑上的读写2线程操作,情况下的线程安全可以用环形队列来处理,达到无锁目的。这种队列在多个读写线程下,并不能保证线程安全,只适用于一个读一个写。 end=write    start  = read 基本思想是read write index下标表示当前读写index,2个线程只做自己的事,环形队列满后吧数据缓存在std::queue里面,然后为了保证一致性,因此在push里面对std::queue里面的内容刷新到buff里,这意味着有一个以下问题: 2个线程分别操作自己的push or pop front ,out_cache是当环形队列buff满后,存储数据的地方,因此out_cache里的数据是push dump到buff中,这样就存在一个bug,就是push次数一定要大于pop次数 才能保证队列里面的数据被被动 写入buff里面,因此只要out_cache里面有数据,始终有数据是未处理状态,尤其是程序退出时。。。   这种处理手法虽然没有了mutex,效率较高,但是带来了一个新问题,就是由于没有了mutex condition等机制,导致线程很容易就空转(CPU空跑)了,比如在队列是空的情况下read线程会满载做无用功,...
梦想游戏人 发布于 3周前 阅读 45

Unity实现瓦片地图tile map

Unity自定义mesh绘制  基于上篇的mesh修改,实现tile map 第一步,修改mesh 顶点和三角片信息,生成方格 顶点信息就是一系列正方形的组合,三角片,在这里实现的方法是一个矩形由2个三角形组成,注意,三角形的顺序依赖于顶点的顺序,三角形的三个点按照观察方向顺时针,三角形数量=顶点数量*6,6=2*3,2是三角形个数,3是一个三角形 由3个顶点组成,输入的三角数组的顺序是,对应顶点在输入的顶点数据中的index,贴代码: using UnityEngine; using System.Collections; public class ss5 : MonoBehaviour { void Start() { dooo(); } void dooo() { { MeshFilter filter = this.GetComponent<MeshFilter>(); MeshRenderer render = this.GetComponent<MeshRenderer>(); var mesh = filter.mesh; var ts = this.GetComponentsInChildren<Transform>(); Vector3[] vers = new Vector3[ts.Length]; for (int i = 0; i < ts.Length; i++) { vers[i] = ts[i].position; } const int MAX_X = 30;...
梦想游戏人 发布于 3周前 阅读 59

无敌西游剧情模式

版本要求:FreePascalIDE版本≥2.4.0 program xiyou(input,output); var q,w,e,r,t,y,u,i,o,p,a,lv,s,d,f,djingyan,jingyan,g,h,j,k,l,money,rwjingyan,zwq,fwq,zhiye,gong,fang,bisha, xsheng,dsheng,qian,shangyao,bigshangyao:longint; z,x,c,v,b,n,m:string; sjingyan:array[1..30] of longint= (40,80,150,270,410,620,730,840,950,1060,1270,1480,1690,1900,2210,2490,2800,3200,3680,4200,5000,5500,6100 ,7300,8500,9760,10900,13100,15500,18000); sjj:array[1..10] of longint=(5,16,24,38,49,60,71,82,99,120); gname1:array[0..3] of string=('怪松鼠','食人草','飞啄鸟','小熊'); gname2:array[0..3] of string=('小铁球','铁刺团','铁人','铁巨人'); qqq,www,eee,rrr,ttt,yyy,uuu,iii,ooo,ppp:longint; qq,ww,ee,rr,tt,yy,uu,ii,oo,pp,aa,ss,dd,ff,gg,hh,jj,kk,ll,rwwc:array[0..10000] of longint; f1,f2:text; zz,xx,cc,vv,bb,nn,mm:array[0..10000,0..10000] of longint; twq:array[0..7] of string; twqg,twqf,twqbs:array[0..7] of longint; wq1:array[0..7] of string=('无','铁剑','钢剑','勇者之剑','银剑','必杀剑','光之剑','封印之剑'); wq1g:ar...
yemaster 发布于 3周前 阅读 9

Unity - NullReferenceException: Object reference not set to an instance of an object

# 编者注 一直理解错了Unity的对象注入,以为是在Compontent指定脚本所绑定的对象,就能够成功,但是发现这个是错误的理解。 # Unity错误 - NullReferenceException ## 错误代码 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class SliderLightBehaviourScript : MonoBehaviour { public GameObject light; // Use this for initialization void Start () { //this.light = GameObject.Find ("Directional Light"); } // Update is called once per frame void Update () { } public void OnDrag(float value){ Debug.LogError (value); this.light.transform.rotation = Quaternion.Euler (new Vector3(value,0.y,0)); } } ``` ## 报错 ``` NullReferenceException: Object reference not set to an instance of an object ``` ## 问题理解 GameObject的场景内创建的对象没有绑定到代码对象上。确定通过Component无法绑定GameObject。 通过查询发现[官方文档内容](https://docs.unity3d.com/Manual/NullReferenceException.html) 获取GameObject对象必须通过`GameObject.Find`或者相关函数进行实现...
抢小孩糖吃 发布于 3周前 阅读 8

类型验证系统的设计

类型系统得到了参数的类型后,用预定义的函数类型 Pattern 去 Match 得到的 Type Str. 用正则表达式来实现的话,移植性会出现问题,因为这需要语言支持对正则表达式的正则插值。现在我只发现 Perl 支持,别的语言对于正则的功能就有限多了。所以一涉及到正则,语言的可移植性就出现了问题。 用现有的匹配系统完成这个工作,虽然效率低些,但如果写成低级语言,还是同样高效。 首先定义一个 type grammar 来定义参数的 pattern 规则,十分简单: Str :Str Str+ Str? 只是支持字符串,符号,重复匹配和可有可无的语法: ``` type = |Str Token Rept|+ $ Str = ':' [\a\-] ; Token = [\a\-]+ ; ``` 用一个 Int+ 的字符串去匹配 Int Int 的字符串,很简单的啊。 泛型函数,支持多种参数的同名函数,类型有分支,还有不同的返回值。 这用正则,就非常非常复杂了,还是老实用自己的系统把。 (return return-type) 将返回类型放在最后的表达式中。 也就是说返回值是在匹配以后才会获得,如果不匹配,就返回错误,如果正确 就返回类型,这要频繁切换匹配文本,还有类型别名,要建立一个现成的 curosr, 重置 cursor 到 off -> 0, 切换 text 到新的文本,只有分支和字符串没有别的 用...
沙枣 发布于 3周前 阅读 4

Unity自定义mesh绘制

有些时候需要自定义mesh来绘制目标模型图形什么的,可以代码控制,也可以通过shader去控制,这里介绍代码控制的方法: 基本思路是修改mesh的定点,三角 达到自定义的目的,和上上篇垂直UI.Text 显示异曲同工之处。 由于一个mesh是有顶点信息,和对应三角形组合而成。 如图中的一个Quad比如4个顶点,0,1,2,3  可以组合为2个三角形信息,三角形1由顶点0,1,2 三角形2由定点2,3,0组成 , 组成了一个面 4个顶点 和一个三角形,组合为了一个面 又比如如图的4个顶点,2个三角形生成这样的图形,组成了2个面 又比如4个顶点3个三角形生成这样的图形,组成了3个面。三角顺序 顺时针 才会是你想看的面的绘制 逆时针就是反面了 void OnDrawGizmos() { MeshFilter filter = this.GetComponent<MeshFilter>(); MeshRenderer render = this.GetComponent<MeshRenderer>(); var mesh = filter.mesh; var ts = this.GetComponentsInChildren<Transform>(); Vector3[] vers = new Vector3[ts.Length]; for (int i = 0; i < ts.Length; i++) { vers[i] = ts[i].position; } var tris = new...
梦想游戏人 发布于 4周前 阅读 23

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 6天前 阅读 3205 评论 13 点赞 16

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4382 评论 20 点赞 18

java多线程——锁

这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
wier 发布于 1个月前 阅读 3136 评论 15 点赞 4

java多线程——volatile

java多线程系列第三篇,深入理解volatile的原理以及应用
wier 发布于 2个月前 阅读 3215 评论 11 点赞 6

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2个月前 阅读 4378 评论 5 点赞 9

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3个月前 阅读 3566 评论 7 点赞 16

游戏服务器架构演进(完整版)

王者荣耀技术分析第三篇,服务器架构模型分析...
wier 发布于 3个月前 阅读 7241 评论 38 点赞 20

从王者荣耀聊聊游戏的帧同步

通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
wier 发布于 4个月前 阅读 9065 评论 58 点赞 36

有趣的二进制—高效位运算

位运算是一种比较特别的数学运算。一般情况下,位运算的运算效率比加减乘除等常规数学运算要高得多。此外,位运算具备一些常规数学运算所没有的特点和规律,我们可以利用位运算的相关特性来完成一些非常巧妙的程序设计。
wier 发布于 7个月前 阅读 3384 评论 31 点赞 7

有趣的二进制

优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算,希望用一种更简单的方式介绍其原理
wier 发布于 7个月前 阅读 5220 评论 22 点赞 11

WinformGDI+入门级实例——扫雷游戏(附源码)

本文将作为一个入门级的、结合源码的文章,旨在为刚刚接触GDI+编程或对相关知识感兴趣的读者做一个入门讲解。游戏尚且未完善,但基本功能都有,完整源码在文章结尾中。
穆翔 发布于 1年前 阅读 1492 评论 4 点赞 1

几款 Pokémon Go 开源项目介绍

Pokémon Go是由任天堂发布的增强现实(AR)游戏,一经推出,火遍全球,收获众多玩家。想必很多只猿,也沉浸其中。在这里,介绍几款 Pokémon Go开源项目,感兴趣的猿,可以尝试尝试。
催呀催呀 发布于 1年前 阅读 5681 评论 14 点赞 3

Xgame 合服工具技术设计文档

这是一篇介绍“合服工具”的技术文档;合服工具代码可以参考:https://git.oschina.net/afrxprojs/xgame-php_tool,注意:合服工具使用 PHP 语言开发!为什么使用 PHP,我后面会简要说明;该文档的主要目的是说明开发“合服工具”的思维过程,而不仅仅是使用说明!技术文档的价值在于过程而不是结论;我假定你对游戏行业的技术岗位工作有所了解。如果你亲身参与过游戏合服工作,这篇文档阅读起来可能会比较轻松;这是一篇不合规范的文档,所有符合规范的文档,没有人喜欢读……该文档以“轻松、易读、实用”作为规范;
hjj2017 发布于 2年前 阅读 1067 评论 3 点赞 2

C#程序员整理的Unity 3D笔记(十五):Unity 3D UI控件至尊–NGUI

目前,UGUI问世不过半年(其随着Unity 4.6发布问世),而市面上商用的产品,UI控件的至尊为NGUI:影响力和广度(可搜索公司招聘Unity 3D,常常能看到对NGUI关键词)。 NGUI虽然不是Unity 官方原生的,但以其强大的能力和友好的操作性,成为了事实上的王者—-无他,OnGUI太挫了。
王文刚_AR_VR 发布于 3年前 阅读 15712 评论 4 点赞 7 打赏 1

C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想

如果你接触过《设计模式》、软件架构的编程思想,就会知道优秀的设计准则:“组合优于继承的”。 这句话很简短,但开始学习OOP的时候,真切的是—-不太好理解(以我个人当初学习为例)。
王文刚_AR_VR 发布于 3年前 阅读 2026 评论 4 点赞 2

网络版五子棋(Nodejs+socket.io)

这是刚学Node的时候写的,很久了,虽然比较简陋,也许还有BUG,但总归也是作品,也提交上来充个数吧,项目地址:http://git.oschina.net/scgywx/five-chess/ 简介 NodeJS + Socket.io开发的网络版五子棋,类似QQ游戏的五子棋,有大厅、用户列表、房间、聊天等功能。 安装 1、下载源代码,安装socket.io 2、运行服务端, 进入server目录,执行node index.js 3、使用http server(nginx或apache)将目录指向client目录(需要访问图片,html等文件) 4、修改服务器IP和端口(分别位于index.html第70,87,88行) 5、访问index.html即可 图片
呵大官人 发布于 3年前 阅读 2983 评论 10 点赞 4

Lua脚本怎么样调用外部脚本?

Lua脚本在游戏中的应用
borey 发布于 3年前 阅读 6933 评论 14 点赞 2

第一个libgdx程序--仿别踩白块

唉,从想到做拖了很久 ==||
贺路的路 发布于 3年前 阅读 4503 评论 6 点赞 2

【深入Cocos2d-x】使用MVC架构搭建游戏Four

基于Cocos2d-x2.2.3框架,并使用MVC架构,搭建了游戏Four。提供了相应的源代码,apk文件等等,希望您在GitHub上Star这个项目。
王选易 发布于 3年前 阅读 10267 评论 12 点赞 15

2048 C++源代码by Reason

2048 C++实现 源代码
ChenReason 发布于 4年前 阅读 9987 评论 27 点赞 23
顶部