开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

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

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

开源中国杭州源创会报名开始,剖析无人驾驶背后的数据库(PostgreSQL)。

趁着六月美景正好,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请杭州的各位来约。
源创会

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

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

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

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

JMonkeyEngine中是如何使用AppState来管理和实现游戏场景切换的

本文要讲解的是关于JMonkeyEngine游戏引擎中如何使用AppState来实现游戏场景的管理和切换.
huliqing 发布于 2个月前 阅读 269 评论 3

3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JMonkeyEngine游戏开发)

在整个讲解过程中需要以下一些东西来进行说明,我们将通过各种工具一步一步来完成以下物件,并最终使用这些物件在游戏中演示如何进行换装。 1.一个标准的人物骨骼 - 用于控制角色基本身形、装备以及角色动画 2.一套基本身形 - 用于模拟人物角色的皮肤,即脱光装备后的样子,这里以内衣装示例,后面我称为“身形”或“身体” 3.一套角色装备 - 用于换装示例,后面我统称为“装备” ...
huliqing 发布于 2个月前 阅读 436 点赞 1

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

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

有趣的二进制

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

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP。   摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的跨平台开发工具,微软是在 2014 年 11 月 12 日宣布开源 .NET,支持竞争对手 Linux 和 OS X 的平台。微软称,Visual Studio 2017 将于 2017 年 3 月 7 日发布,而 Visual Studio 也迎来了 20 岁生日,开源的 .NET Core 也将发布 2.0版本。         我梳理了一下目前的.NET技术栈: 业务是基于Unity3D(跨平台游戏开发引擎),开发AR、VR 应用; 绝大部分项目采用单机版,使用的编程语言是C#(Mono.NET),不过最近交流的AR几个业务,明显用户已经不太满足单机版,有更多的需求需要用到联网的服务器功能,故技术选型就势在必行了:也算是未雨绸缪吧。   技术栈选型 我的技术选型有2点原则 成熟,有助于提高开发效率 人多,有坑大家一起填 这2点原则是基于第一次创业失败的经验总结。约在3年前吧,刚开始创业的时候,特别排斥C#.NET技术(互联...
王文刚_AR_VR 发布于 4个月前 阅读 564 评论 9 点赞 3

仿《雷霆战机》飞行射击手游开发--新手引导

本文以某款仿雷霆战机的手机游戏为例,说说其中关于新手引导的程序设计
雁惊寒 发布于 4个月前 阅读 902 点赞 2

仿《雷霆战机》飞行射击手游开发--资源预加载

项目源码库:https://git.oschina.net/thorqq/RaidenFree       绝大多数游戏在启动后首先出现的是一个“载入中”的场景,此场景的用处是将游戏所需的图片、音乐、数据等资源从存储卡(或磁盘、闪存)读入内存,这样,后面需要用到这些资源时,可以直接从内存读取,以加快游戏的运行,提高流畅性。下面,就对资源的预加载机制做一个介绍。 资源的类型 预加载的目的是为了后续读取的快捷,所以,一般会预加载那些较大较复杂的文件,例如以下这些: 单张大图:背景大图 合成图:可多幅图片合成的大图,这里我们使用TexturePacker合成plist+png文件 骨骼动画:使用Cocos Skeletal Animation Editor创建的骨骼动画文件,ExportJson+plist+png文件 场景:使用Cocos Studio创建的csd文件 声音:ogg音乐文件 本地数据:游戏存档数据(格式为json文件)、游戏配置数据(例如关卡、飞机属性、子弹属性等固定的数据,格式为sqlite数据库文件) 远程数据:由于本游戏是弱联网游戏,所以保存在服务器上的数据不多。这里仅仅实现了用户登录、获取时间的功能 下面,我们将逐一介绍不同资源载入的方法。 加载方法 单张大图 定义std::vector<std::string> m_imageArray,将需要加载的图片...
雁惊寒 发布于 5个月前 阅读 846 评论 1 点赞 1

采用 GLM 从代码层面理解 OpenGL 坐标系统

# 概要 关于 OpengGL 坐标系统,我很喜欢[这篇](https://learnopengl.com/#!Getting-started/Coordinate-Systems)博客,这篇博客有中文版本的。博客英文版讲诉更让人容易理解。接下来要写的这篇博客是以上篇博客为参考,进一步从代码的层面来理解 OpengGL 坐标系统。 下面博客中的代码都可以在 [blogsnippet](http://git.oschina.net/iirecord/blogsnippet)/opengl/lefthand-or-righthand 目录下获取。上篇参考博客中有下面的流程图。这里假设你已经知道了整个流程。图中我标出的红色 glm 函数分别表示,通常用 `glm::lookAt` 函数创建 view matrix 而透视投影矩阵则用 glm::perspective 创建。下面将会测试这两个函数。让我们开始吧。 ![coodinate](https://static.oschina.net/uploads/img/201701/12221155_dlh4.png "coodinate") # 默认情况下,NDC 是基于左手坐标系 首先要知道当不调用 `glDepthRange` 修改映射时, OpenGL NDC 是基于左手坐标系的。这就意味着默认时,物体的 z 轴越大,则物体的坐标越远。继续往下看,你将会发现它的用处。下面就写程序来验证一下。先程序运行结果。 ![ndc](https://static.oschina.net/uploads/img/201701/11204740_c7rG.png "ndc"...
iiRecord 发布于 5个月前 阅读 278

关于Canvas Rect Transform 设置问题

Render Mode: Screen Space - Overlay:将UI放置在场景的上面,调节场景大小或调整分辨率,则Canvas也会随之调整。 Screen Space - Camera:Canvas由一个特定的相机渲染,相机的设置会影响UI。 World Space:使Canvas像场景中的其他对象一样渲染。   默认情况为Screen Space - Overlay 模式, 即不能更改 Rect Transform  更换成  World Space 即可设置Rect Transform   知识扩展: Rect Transform Rect Transform在2D的UI中,对应于3D的Transform。用于显示调整2DUI中的缩放比例、位置、尺寸、角度等。   Position 坐标位置 Width/Height   高宽尺寸 Anchors 锚点 Pivot 中心点 Rotation 角度 Scale             缩放比例     Rect Transform中增加了Anchors属性,其中包括Anchor Min和Anchor Max。Anchors用于指定在父UI元素调整时,子UI元素如何调整。具体行为由Anchor Min(左下)和Anchor Max(右上)两个锚点决定。坐标以矩形左下为(0, 0),右上为(1, 1)。 但实际上,Unity已经提供了预定义的模式。在Rect Transform的左上角点击,出现如下的常用Anchor模式。     以top-left模式为例,此时锚点位于父元素的左上角。如果拉动父元素矩形的左边框和上...
gametodoN 发布于 5个月前 阅读 163

小程序上线,5 款的移动应用开发工具拯救你的 App

小程序来了,大伙都忙着卸载一大波App, App 真的会死掉吗?用这 5 款最实用的移动应用开发工具来拯救你的 App 吧!
两味真火 发布于 5个月前 阅读 7195 评论 17 点赞 1

C#与Java通过protobuf进行网络通信过程中遇到的问题

  上周体验了一把protobuf,google大佬搞的东西据说很多人用,优点自然不用多说,随便搜搜结果一大堆。为了测试这个玩意,随便弄了一个客户端,拿C#写了一个简单的控制台程序请求服务端,服务端拿java的HttpServer做了一个简单的响应客户端请求。 Protobuf用的2.6.1版本。 客户端下载地址:https://github.com/andyqingliu/TestHttpClient.git 服务端下载地址:https://github.com/andyqingliu/TestHttpServer.git (Note: 写了很多测试代码,为了测试方便,所以代码比较混乱。) 记录一些重要的信息备忘,顺便梳理一下当时的思路和遇到的几个重要的问题及解决方案。 1.客户端数据准备 a.用C#自带的WebClient类异步发送数据 WebClient wc = new WebClient(); wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); wc.Encoding = Encoding.UTF8; wc.UploadDataCompleted += new UploadDataCompletedEventHandler(OnUploadDataCompleted); wc.UploadDataAsync(uri, "POST", buff); b.利用MemoryStream类来存放要发送给服务端的字节流。     原来MemoryStream有ToArray的方法直接把字节流转换为字节数组。刚开始自己写读取流方法一直有问题,写不了数据...
andyqingliu 发布于 6个月前 阅读 753 点赞 1

unity中实现FSM有限状态机

FSM在游戏中的运用非常广泛, 本文为大家推荐一个Unity中易用的FSM框架, 它的原地址在https://github.com/thefuntastic/Unity3d-Finite-State-Machine
mOnsoOn1360 发布于 7个月前 阅读 472 评论 2

用Erlang实现的简易名字搜索

游戏中一般都会提供根据输入的字符搜索家族,玩家出来。以往的项目要么只能全匹配,要么是通过mysql的模糊搜索来查询的。新项目中全匹配明显不符合要求,而项目设计又不想为了这个功能而加入mysql来增加复杂度,那么剩下的就只有用erlang来实现搜索了。 想当然的就会想到用mnesia来实现,但mnesia只是个KV,功能并不足以实现需求。自己实现一个完整模糊搜索工作量也不小,还好策划的需求并不复杂。 1. 搜索出来的结果只需几十条用于显示 2. 不需要分页显示 为了快速的完成,因此决定搜索只支持从前往后的匹配。因为名字本来就有限制输入特殊符号,以及长度限制,所以对于玩家来说也不会有太大的影响。结合需求以及这些限制,整体设计方案就变得简单许多了。接下来就是构建索引,首先将名字`abc`,拆成`a`,`ab`,`abc`,然后将它们都指向`abc`这个ID。搜索时根据玩家的输入如`ab`,那么就可以很快的直接找出`ab`,`abc`,`abd`,`abcd`的对应ID了。删除索引也是如此,生成名字索引列表,然后直接删除表项即可。搜索的目的就是想找到自己查询的信息,但根据前面的设计,当玩家完整输入一个完整名字时,有可能因为该索引值对应的ID列表长度已超出显示上限,而没能返回给玩家。...
rongtou 发布于 8个月前 阅读 257

循环遍历二叉树

前序遍历 struct Node { Node*left; Node*right; int data; Node(){ func; } }; Node* create(Node*p, int depth) { if (p && depth) { p->left = new Node; p->right = new Node; p->data = depth; create(p->left, depth - 1); create(p->right, depth - 1); } if (!depth) { p->left = nullptr; p->right = nullptr; p->data = depth; } return p; } void print1(Node*p) { if (p) { cout << p->data << " "; print1(p->left); print1(p->right); } } void print2(Node*head)//利用stack 模拟函数调用过程 来遍历 { stack<Node* > s; Node*p = head; { while (p) { s.push(p); cout << p->data << " "; p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right && pp != head) { cout << pp->right->data << " "; } s.pop(); } } { p = head->right; while (p) { s.push(p); cout << p->data << " "; p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right && pp != head) { cout ...
梦想游戏人 发布于 9个月前 阅读 354

VisualUIEditor项目讲解之撤消反撤消详解

#VisualUIEditor项目讲解之撤消反撤消详解 撤消反撤消在UI编辑器里面必备的功能,它可以帮助我们在编辑过程中,无需害怕误操作,助您更好的使用编辑器 #在项目中使用 当您在项目中错误的移动位置,或者设置了错误的属性,这时候您可以用CTRL+Z来撤消刚才您进行的修改 当您在项目中撤消了刚才的操作,又想快速的回到刚才的状态,这时候您可以使用CTRL+R反撤消功能,来进行反撤消 #源码讲解 ##源码路径 项目的实现源码,可参考[renderUndo](https://github.com/tickbh/VisualUIEditor/blob/master/js/renderUndo.js "renderUndo") ##源码详解 每个Scene实例化的时候都会创建一个UndoObj,UndoObj里面是一层UndoList的浅封装,差别是在Undo和Redo的时候通常编辑器有节点发生变更 ```js "ui:scene_change"(event, message) { let runScene = this.$.scene.getRunScene(); if(!runScene._undo) runScene._undo = new UndoObj(); } ``` UndoList维持着场景变更的记录,UndoList的构造函数如下 ```js class UndoList extends EventEmitter { constructor (type) { super() //是否变化时发送事件的变化 this._silent = false //分为local和global类型, local类型事件变化只会通知本...
tickbh 发布于 9个月前 阅读 686 评论 3

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

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

OpenGL2D小游戏——是男人就下100层

用Opengl最简单的函数来构造碰撞检测,以及一些最简单的基本理论,新手如果有一些编程经验但又不知道做什么,这篇文章可以抛砖引玉。
dada0526 发布于 11个月前 阅读 579 评论 1 点赞 4

Cocos2Dx之动画

动画实际上是眼睛造成的错觉。一般情况下,如果每秒连续放映24张以上图片,人眼就看不出有停顿。如果帧速达到了60,甚至更高,那么基本上没人可以感觉到停顿了。动画就是利用这一特性,在每个连续的帧里面,让物体做一些小的变化,从而让人感觉物体自己在动一样。 就像下面的马儿,8张图片以1/60秒的速度播放,就是一只奔跑中的马儿。 动画相比与动作,可以完成更加复杂精细的动态效果,这是动作做不到的。动画需要做的就是在渲染每一帧的时候,连续地显示另外一张图片即可。但是图片是以文件形式存在的,我们要显示它,就需要把它读入内存,然后传给显存,最后再在屏幕上显示出来。图片文件一般都很大,特别是没有压缩过的文件。帧的绘制又必须在特定的时间内完成,如果不能完成,会导致显示错误,比如显示不全,抖动等。因此我们需要减少读文件和大量图片数据的传输。可以采取的办法有: 将动画的每帧纹理都放到一个大的文件当中。显示的时候,指定显示的区域即可。把显示的区域称为帧框。由于减少了文件的读取次数。文件一次读入后,就存在于内存,移动帧框比重新读取就要快很多。 将动画需要的纹理预先读入,并且缓存起来。在绘制帧的时候,再去读取文件,可能还是来不...
开源中国驻成都办事处 发布于 3年前 阅读 2734

Spine制作帧动画

Spine是一个比较强悍的2D动画编辑器,不仅可以做骨骼动画,而且可以帧动画。网上关于Spine做骨骼动画的资料很多,这次仅仅是说明Spine帧动画的制作步骤。 具体步骤: 1、新建一个Spine工程 2、双击右侧的image文件夹,会弹出一个浏览图片资源文件的框,选择我们需求资源的目录; 3、选择root,新建一个slot 4、将需要的资源导入到新建的slot节点里 (1)在image下,选择图片,会出现一个set parent (2)点击set parent 选择我们新建的slot节点 导入成功后 5、修改动画名称,Animations下的animation修改为目标动画名 6、切换到ANIMATE模式 7、在新建的slot节点下,选择第0帧,选择第一张图片 8、修改节点属性,就会插入帧 9、选择下一帧,重复步骤7、8,将所有的图片都插入到帧 10、预览动画 11、导出动画 That's All!
caiguangwen1 发布于 8个月前 阅读 86

cocos2dx 实现国际化-简单点就是怎么用中文

当才开始接触cocos2dx的来说,要实现中文的显示,那么他们就回到网上查,当然方法也很多。这里就总结几个,然后介绍怎么封装实现国际化。 先声明一个很重要的内容: cocos2dx 的label之类(包括所有的字符串,比如CCLog)的创建,需要传入一个const char* 即string,这里期望的是以"UTF-8"的编码形式构成的字符串。也就是运行期间他的数据时UTF-8编码的。   所以很多人直接在vs里面写CClog(“中文”);的时候控制台输出其实是乱码的,因为vs默认不是使用utf8编码的形式,所以不能直接用的。 但是xCode是可以的,CClog(“中文”);在xCode里面输出的就是中文。因为xcode是使用utf8编码。 所以我们要显示中文, 解决方案1:把含有中文的文件另存为utf8格式,即可解决(这个我没测试过); 但是就很麻烦,当然可以把所有的文字定义成变量,放到一个头文件里面,那么要改编码的就只有一个头文件了,这样看起来稍微优雅了点。但是还是很不爽,不能实现国际化。   其实直接把文字写在代码里面是一件很不值得推崇的方式(当然图简便还是可以的,但你需要知道他以后会带来的麻烦会很大),我们应该把文字独立出来,不跟我们的代码参合,就像Android的string.xml一样(是不是一下点醒了你?...
轻风love 发布于 3年前 阅读 1680 评论 2

Unity游戏画面品质增强,shader和贴图

Unity,画面,品质,3A,AAA,shader
李勇2 发布于 1年前 阅读 246 点赞 3

quick-cocos2d-x使用protobuf

1、下载pbc项目 https://github.com/miaodadao/pbc  2、proto生成pb文件  https://code.google.com/p/protobuf/downloads/list 下载protoc文件,然后切换到上面下载完成后解压的文件下调用下面安装命令  ./configure --prefix=/usr/local/protobuf  make   make check   make install  安装完成后在存放proto的文件下调用 protoc -- descriptor_set_out test.pb iosgame.pb iosgame.proto 把生成好的pb文件放到项目的res文件下 3、修改pbc项目 添加pbc-lua.h头文件,文件内容 #ifndef __LUA_PBC_EXTRA_H_ #define __LUA_PBC_EXTRA_H_ #if defined(_USRDLL)     #define LUA_EXTENSIONS_DLL     __declspec(dllexport) #else         /* use a DLL library */     #define LUA_EXTENSIONS_DLL #endif #if __cplusplus extern "C" { #endif #include "lauxlib.h" int LUA_EXTENSIONS_DLL luaopen_protobuf_c(lua_State *L);      #if __cplusplus } #endif #endif 修改pbc项目中 binding\lua\pbc-lua.c 文件,添加#include "pbc-lua.h",把pbc里面的文件添加到quick的项目里面 在quick项目里面Build Settings Header Search Paths 添加"$(QUICK_COCO...
千山万水 发布于 3年前 阅读 1642

Cocos2Dx之调度器

有的时候我们还需要使用其他的时间触发机制,比如一个重复性动作2秒之后再执行,并且重复间隔为3秒。怎么实现呢? 通过前面的分析,我们知道每个帧间隔时间到期后,都会调用CCDirector的mainLoop来绘制场景和释放内存回收池。这个时间点是Cocos2Dx绘制场景的时间点。帧的间隔时间是确定的,它是Cocos2Dx的最小时间单位。我们可以通过累加已经过去的时间来实现一个定时器,并在指定的时间到期以后执行请求的回调函数。Cocos2Dx的调度器实现也就是根据这一原理。 CCDirector有一个调度器成员:CCScheduler。CC_PROPERTY(CCScheduler*, m_pScheduler, Scheduler)。在绘制场景的函数CCDirector::drawScene中,会调用调度器的update函数。但并不只是CCDirector拥有调度器成员,CCNode也同样拥有一个调度器成员。CCNode的调度器成员实际上是在CCNode的构造函数中,通过CCDirector的getScheduler函数获取的CCDirector调度器的一个引用。CCNode还对它获取的调度器执行了retain操作。理论上,就算CCDirector析构了,CCNode还能访问调度器,但不存在这样的使用场景。 CCNode和CCDirector共享了同一个CCScheduler。我们自己还是可以定义自己的调度器,继承自CCScheduler即可,然后通过...
开源中国驻成都办事处 发布于 3年前 阅读 344 评论 1

Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
大学霸 发布于 3年前 阅读 1159 点赞 1

Unity 剧情 编辑器 开发

剧情编辑 类似于 AI行为树开发。 通过设计不同类型的 剧情树节点, 通过构造一个 剧情树,实现剧情配置。 unity中脚本参数 可以直接序列化到prefab 里面,因此可以非常简单的 通过挂脚本 方式,构建这课树。 剧情节点分为: 顺序节点 , 并行节点 Action节点 执行特定的操作, 需要协程等待执行完成 IEnumerator RunNode() 向顺序节点 返回 bool 向并行节点进行回调用,通知 结束 将剧情资源统一管理, 便于 查找和清理 NpcManager, ParticleManager 剧情的处理,需要有场景系统的支持: 每个场景有单独的 状态 处理 类 接受场景的各种事件
李勇2 发布于 1年前 阅读 519 点赞 1

《Genesis-3D开源游戏引擎--横版格斗游戏制作教程07:UI》

UI即User Interface(用户界面)的简称。UI设计是指对软件的燃机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅可以让游戏变得更有品位,更吸引玩家,还能充分体现开发者对游戏整体的定位和游戏特点。
Genesis-3D 发布于 3年前 阅读 1148

游戏技能框架代码(JAVA版)

游戏技能实现代码,包含持续性buff和属性变化的处理等。
flyoahc 发布于 2年前 阅读 683

kbengine 使用常见问题

一款开源的支持多人同时在线实时游戏的服务端引擎,使用简单的约定协议就能够使客户端与服务端进行交互,使用KBEngine插件能够快速与(Unity3D、OGRE、Cocos2d-x、HTML5,等等)技术结合形成一个完整的客户端。 服务端底层框架使用C++编写,游戏逻辑层使用Python(支持热更新),开发者无需重复的实现一些游戏服务端通用的底层技术,将精力真正集中到游戏开发层面上来,快速的打造各种网络游戏。
开源中国部长- 发布于 3年前 阅读 201

在Mac上用monodevelop使用黑色样式。编译使用monodevelop 6.0

一直在mac上面很不爽不能使用黑色风格的monodevelop.换了vs code。又试用了Rider,其实Rider蛮好的 就是目前是预览版 bug太多。 试着改过monodevelop 4.X的gtkrc文件,达不到最佳效果。 看到monodevelop 6.0 有一个mac-dark的样式 立刻去git下来自己编译一个版本了。 编译过程中遇到几个小问题。 需要xamarin.mac 2.2 以上版本 需要monoFramework 4.3 以上版本 这2个东西不好找。这儿附上下载地址。 http://download.xamarin.com/XamarinforMac/Mac/xamarin.mac-2.4.1.7.pkg http://download.mono-project.com/archive/4.4.0/macos-10-universal/MonoFramework-MDK-4.4.0.40.macos10.xamarin.universal.pkg   6.1 需要 http://download.mono-project.com/archive/4.6.0/macos-10-universal/MonoFramework-MDK-4.6.0.macos10.xamarin.universal.pkg   其他按照https://github.com/mono/monodevelop 步骤一步步的来。完美编译出6.0版本 终于可以安心的码代码了。 下面来个对比图。  ...
angyr 发布于 1年前 阅读 156 点赞 1

cccc

$root = array(     'body'=> array(         'op'=> 'saveLog',         'data'=>array(                 'op'=>'notify',                 'data'=>array(                     'cash_dtl_series'=>$out_trade_no,                     'pay_amount_str'=>$total_fee,                     'tenant_num_id'=>1,                     'data_sign'=>1,                     'status'=>'success'                 )             )     ),     'data_sign'=> '1',     'from_system'=> 'paySystem',     'msg_key'=> '1112',     'tag'=> 'WXPAY_0001_1',     'topic'=> 'WXPAY_0001',     'usr_id'=> '1' );...
废柴大叔 发布于 3周前 阅读 12

Git 对已经加入版本控制的文件,修改后希望不被提交办法(转)

git 忽略 修改
陌路-野山君 发布于 7个月前 阅读 390

《纸牌》游戏出现在iOS和Android系统上

英国伦敦,2017年3月23日,AppyNation和Supersonic软件很高兴地宣布,纸牌游戏,即iOS和Android系统的全新休闲益智游戏,现在可以下载。 世界上数百万玩家享受的智能手机游戏,纸牌游戏。Pete Williamson(AppyNation公司首席执行官)说:“很久以前,我们想要制作一个真正视觉上令人印象深刻的纸牌游戏,任何人都可以拿起并开始玩乐。我们期待与世界各地的数百万纸牌粉丝分享。” 规则很简单,从当前绘图卡中选择一个或多个,从板上清除所有的卡。然而,每个级别都会引入额外的胜利条件,例如连续删除6张钻石卡,或打入15张不间断的Streak。为了帮助实现这些目标,玩家们可以使用特别的增强卡,包括救援,西装换装和快乐小丑,可以在适当的时候用于改变董事会的利益。纸牌游戏装载了400个难度级别的独特级别。可以按任何顺序尝试级别,让玩家随时随地选择改变速度,或者改变风景。 纸牌游戏可以在 App Store(iOS), Google Play(Android)和 Amazon AppStore(Amazon Fire&Android)上免费下载。 如需定制棋牌游戏开发,或对浪人棋牌游戏开发感兴趣者欢迎在线QQ咨询! 文章来自浪人官网:http://www.langren.net/game_371.html...
浪人游戏 发布于 1周前 阅读 6

cocos2d-x游戏源码测试小白教程,从创建工程到游戏运行起来

本篇教程主要针对基于cocos2d-x 2.x和3.x的版本开发的游戏,介绍的方法比较单一,但是很有些,希望对于刚接触cocos游戏的同学带来一定的帮助。 本教程是以windows环境为例实际操作的,Mac环境也类似,并且由于Mac本身的linux/unix环境,并且自带很多工具,比如python、java等,所以会比windows下更容易操作,这里以windows环境为示例,适用于淘码岛源码社区所有在windows环境下测试的cocos源码(如果源码本身就包含完整的工程文件,可以不必重新创建工程,直接运行即可)。 1、安装环境   安装python,下载地址:https://www.python.org/downloads/ 安装VS2013,下载地址:http://pan.baidu.com/s/1kVi8qHL 下载coco2d-x,下载地址:http://code.google.com/p/cocos2d-x/downloads/list python建议使用2.7版本的,VS2013的序列号可以在网上随便找一个即可,cocos2d-x的版本,cocos官网只有最新的一些版本,老版本可以在谷歌代码库或者直接在百度搜索对应的版本都能下载到。 2、创建工程   使用cocos2d-x 2.x创建工程 使用cocos2d-x 3.x创建工程 cocos2d-x 2.x和cocos2d-x 3.x创建工程时的命令有所不同,cocos2d-x 2.x使用的是tools/project-creator下的creat_project.py脚...
TonyLynn 发布于 6个月前 阅读 106

【Cocos2d-x基础概念】CCFileUtils-fullPathFromName

如何在cocos2d-x找到你想要的资源,得到你需要的路径,来看看这篇博客你就明白了
王选易 发布于 4年前 阅读 6234 评论 1

unity3d中的trigger和collision消息以及刚体与碰撞体

一直困惑于unity3d中的触发和碰撞消息在什么条件下能够发生,平时用时也是一知半解。磨刀不误砍柴工,是时候发点时间一劳永逸的解决这个问题了XD。 OnTriggerEnter, OnTriggerStay, OnTriggerExit 是为触发类消息,记为trigger OnCollisionEnter, OnCollisionStay, OnCollisionExit是为碰撞类消息, 记为collision None表示两类消息都没发生 如果对象有刚体(rigidbody)且其 IsKinematic 选项勾选,则记为KT,否则记为KF 如果对象有碰撞体(collider)且其 IsTrigger 选项勾选,则记为TT,否则记为TF (KT,TT)表示对象有刚体组件且其IsKinematic选项勾选,有碰撞体组件且其IsTrigger选项勾选 (KT,TF)、(KF,TT)、(KF,TF)依此类推 情形一,两个对象都只有刚体组件 : KF KT KF None None KT None None 可以看到没有消息产生 情形二,两个对象都只有碰撞体组件: TF TT TF None None TT None None 可以看到也没有消息产生 情形三,一个对象有刚体组件和碰撞体组件,而另一个对象只有碰撞体组件或只有刚体组件 (TF, KF) (TF,KT) (TT,KF) (TT,KT) TF collision None trigger trigger TT trigger trigger trigger trigger KF None None None None KT None None None None 可以看到要产...
crydonkey 发布于 2年前 阅读 4195

U3D 版本不同的调用问题

rigidbody2D .AddAddForce();   在Unity  5.4.1 调用时出现问题   5.X 开始 就一直用的 gameObject.GetComponent<组件名字>().组件某个熟悉=赋值 或被赋值给其他*/ 所以改成 gameObject.GetComponent<rigidbody2D>().AddAddForce();   即可调用成功
gametodoN 发布于 6个月前 阅读 5

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
大学霸 发布于 2年前 阅读 448

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

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

某游戏公司测试工程师笔试题

测试工程师 A卷 注意事项: 1.    请将答案全部写在答题卷上,并将问卷和草稿纸一起交上来。 2.    回答要求推理有必要的过程,文字清晰,详略适当,以免造成误解。 3.    考试时间:60分钟。 姓名:                    学校:                    学历:                    联系方式:                     专业:                    笔试时间:                      一、单项选择(4分/题,共24分) 1.       在异常处理中,释放资源、关闭文件、关闭数据库等操作是由(  )来完成的。 A. try子句    B. catch子句    C. finally子句    D. throw子句 2.       以下程序的输出结果是哪一项? (  ) #include <stdio.h> main() {          int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4], i;          for(i=0;i<4;i++) p[i]=&a[i*3];                 printf("%d\n",p[3][2]); } A.输出项不合法               B. 6            C. 8       ...
startstorm 发布于 2周前 阅读 52

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

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

3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JMonkeyEngine游戏开发)

在整个讲解过程中需要以下一些东西来进行说明,我们将通过各种工具一步一步来完成以下物件,并最终使用这些物件在游戏中演示如何进行换装。 1.一个标准的人物骨骼 - 用于控制角色基本身形、装备以及角色动画 2.一套基本身形 - 用于模拟人物角色的皮肤,即脱光装备后的样子,这里以内衣装示例,后面我称为“身形”或“身体” 3.一套角色装备 - 用于换装示例,后面我统称为“装备” ...
huliqing 发布于 2个月前 阅读 436 点赞 1

u3d_插件DoTween:(14)DoTweenPath路径编辑器的使用

#####一、步骤 ``` 路径编辑器的使用 : 用于场景漫游 1.新建一个场景(命名为:008_doTweenPath) 2.创建一个游戏物体cube 3.给cube添加一个DoTweenPath组件 添加一个点 : shift + command 移除一个点 : shift + alt 4.通过脚本执行移动 给按钮添加点击事件(指向cube游戏物体,执行cube里面的DoTweenPath.DoPlayForward()) 如果想点击按钮(运动时暂停、暂停时运动)那么就要调用(DoTweenPath.DoTogglePause) DoKill: 杀死动画 DoReStart:重新播放 ``` DoTweenPath的属性 ``` >>> 属性 设置ease : Linear(平均的) 默认是:先快后慢 Loops : -1 是无数循环 0是一次播放 [当Loops为-1的时候, 可以设置Loop Type(默认是:ReStart、Yoyo悠悠球:起点开始终点返回、incremental跟ReStart没什么区别)] path Type : 路径的类型(默认是 Linear 、Catmull Rom圆滑的路径) Close Path : 把终点 和 起点 链接起来 Local mOvement : 按照局部坐标开始移动 orientation: 朝向 (默认是: none 、to Path : 按照path的朝向进行行走、Look At Transform :望向一个游戏物体、Look At Position : 望向一个点) Relative: 相对的,说明一个游戏物体和路径形成一个整体,移动游戏物体的时候 路径也会跟...
宇鸿165 发布于 2个月前 阅读 120

cocos2d lua 实现按钮长按功能

cocos2d-lua v3.2实现按钮点击次数监听以及长按功能
80后小子 发布于 2个月前 阅读 70

BB幸运熊猫规律技巧、转盘游戏玩法技巧免费分享!教你中熊猫头!

建议既然想找出BB幸运熊猫规律技巧就得求稳,确实以上这套玩法不适合急于求成,但是如果够稳85%的稳赢几率还是有的,欢迎大家来玩,一起探讨BB幸运熊猫规律技巧。
esbline 发布于 1个月前 阅读 78

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

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

u3d_插件DoTween:(10)屏幕震动效果

#####一、步骤 ``` 震动屏幕的效果(用于游戏中的主角受伤、放大招) 1.新建一个场景(006_shakeSceen) 2.对Main Camera(摄像机)做一个动画,对周围做一个动画。其实整个操作在震动就是摄像机在震动 3.添加几个游戏物体(cube)在game查看 4.在Main Camera中新建一个脚本 5.编写代码()屏幕震动 使用DOShakePosition 参数1:是一个动画时间 默认是1米距离 参数2:是一个震动的方式(平面震动(只震动x,y)),默认是随机震动。 ``` #####二、code ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class myShakeCamera : MonoBehaviour { // Use this for initialization void Start () { // 随机震动一个位置 /* 第一个参数 : 震动的时间 第二个参数 : 震动的距离 (默认是1米的距离) */ // transform.DOShakePosition (1); transform.DOShakePosition (1,new Vector3(3,3,0)); // 平面进行一个震动 只改变x,y没有改变z (值是一个震动的强度) } // Update is called once per frame void Update () { } } ``` --- ![摄像机下布局游戏物体.png](http://upload-images.jianshu.io/upload_images/1090284-e1518646d774dc60....
宇鸿165 发布于 2个月前 阅读 63

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

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

unity 3d 异步加载场景--异步预加载场景

网上很多异步加载场景实际上没有做到异步的功能,大部分是显示一个进度条,然后同时在执行异步加载代码,这实际上并未异步加载,这只是后台加载,并且性能上比同步加载慢,原因如下:
asdtiang 发布于 2个月前 阅读 118

u3d_插件DoTween:(11)颜色和透明度动画

#####一、步骤 ``` 1.新建一个场景(命名为:007_textColorTweens) 2.创建text控件 3.在text底下添加一个脚本组件(add Component -> 命脚本的名字为:textColorTween) 4.编辑脚本 5.动画设置字体颜色、动画设置字体的alpha ``` #####二、code textColorTween ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class TextColorTween : MonoBehaviour { // 1.引入命名空间 // 2.定义属性 // 3.将当前的text 给属性赋值 // 使用 DOColor // DOFade 渐影渐变 private Text text; // Use this for initialization void Start () { text = GetComponent (); /* * 第一个参数是 : 目标颜色 * */ // text.DOColor (Color.red, 2); // 渐影渐变 /** * 第一个参数是 是否显示 ,1为显示出来 * 第二个参数是 执行时间 */ text.DOFade(1,3); } // Update is called once per frame void Update () { } } ``` --- 11_5.1动画设置字体颜色 ![11_5.1动画设置字体颜色.gif](http://upload-images.jianshu.io/upload_images/1090284-3a91a1c93f5f12a2.gif?imageMogr2/auto-orient/strip) 11_5.2动画设置字...
宇鸿165 发布于 2个月前 阅读 35

在Mac新建cocos2dx-lua工程

避免忘记命令,做个笔记。
尹enjoy 发布于 1个月前 阅读 12

简易 Unity3D UI 框架

看见一篇介绍 Unity3D UI 框架编写的[文章](www.jianshu.com/p/1d54e2f35004),并且给出了[示例代码](https://github.com/tinyantstudio/UIFrameWork)。然后去了解了一下。讲道理,示例代码蛮乱的,不知道有一些是不是直接从项目代码拷贝然后简单修改,对于一个简单的框架来说,有很多不必要的混乱逻辑。而且我又喜欢粉色,所以就重新编写了,话不多说先上运行图示。具体代码点[这里](http://git.oschina.net/iirecord/tinywnd)。 ![运行图示](http://git.oschina.net/iirecord/tinywnd/raw/master/Run/Run.gif) 想了解更多信息具体查看代码。这篇博客主要谈一谈 UI 框架基本的需求。UI 框架有很多实现方式,比如多个界面共用一个摄像机渲染还是单个界面单个摄像机渲染,但是基本的需求是一致的。掌握了基本的需求,才能适应不同项目策划百变的需求。**最后需求分析基于手游,界面基于 NGUI** 。 ## 基本情景 ![UIOper](http://git.oschina.net/iirecord/images/raw/master/RunScreenshot/UIOper.png) 游戏玩法一般分为 UI 玩法和核心玩法。假设核心玩法是战斗。UI 玩法与核心相互交织连接,比如打开装备界面锻炼装备,这样战斗时就更厉害,还比如打开聊天界面与好友聊天,...
iiRecord 发布于 1个月前 阅读 38

知海匠库的实训校园美得不要不要的

当初选择ui设计培训机构的时候,我很迷茫,不知道选哪个好,师兄给我推荐知海匠库,说什么是易友会的企业成员,有大咖去讲课分享,就业有优先推荐,什么海南生态软件园的唯一指定人才孵化基地,巴拉巴拉~~最终我选择了知海匠库,不是因为师兄去过,也不是因为他们说的一大堆优势,只是因为他们的实训基地是在海南生态软件园,不说那里汇聚了很多互联网企业大咖,就说它如度假村的环境,我就选它了,因为我没去海南玩过,感觉自己真是奇葩,哈哈哈。 海南生态软件园环境 那里的环境真的就像度假村一样,学习ui课程肯定很辛苦,有个好的环境至少能放松下心情,偶尔去海南的沙滩玩下,劳逸结合,还能假装自己是来海南旅行的,嘻嘻。 真的好美,没有喧嚣,像校园般宁静美好 知海匠库实训大楼,就在腾讯的隔壁,感觉里BAT近了那么一点点 实训中的环境,总感觉在CBD上班了 饭堂 来知海匠库上课已经有三个来月,现在每天都有项目实战,偶尔做任务做到一两点,严重影响了我的美容觉,但是我感觉我选对了,累,说明来这边没有虚度,学到用到了。 来这边就爱上了这个城市,真希望培训完后能留下。      
我的我的你 发布于 1个月前 阅读 59

麻将

1.砸胡免杠  点炮者杠牌不算分 2.抢杠胡 - 别人碰牌,以后摸一张牌后,杠牌,别人正好胡此牌,此时胡牌,成为抢杠胡
小熊猫大暴走 发布于 2周前 阅读 12

使用ZeroBrane Studio进行LUA远程调试

最近发现一款老外做的luaIDE支持C/S远程调试功能,搭建测试环境非常简单。ZeroBrane Studio官方地址:https://studio.zerobrane.com/doc-remote-debugging 1、下载IDE,我现在的是ZeroBraneStudioEduPack-1.50-win32这个解压版本,我直接解压到我的F盘 2、我用lua源码编译的lua解析器作为测试环境,就一个lua.exe和lua51.dll,然后在同目录新建个test.lua 3、打开zbstudio.exe,然后直接把新建的test.lua拖入IDE,编辑如下内容: 首先需要设置调试需要的lua路径和dll路径,就是zbstudio目录下的lualibs和bin/clibs,在第1步中我把IDE解压在F盘,所以路径就这样这样的 package.path = package.path .. ";F:/ZeroBraneStudioEduPack-1.50-win32/lualibs/?.lua" package.path = package.path .. ";F:/ZeroBraneStudioEduPack-1.50-win32/lualibs/?/?.lua" package.cpath = package.cpath .. ";F:/ZeroBraneStudioEduPack-1.50-win32/bin/?.dll" package.cpath = package.cpath .. ";F:/ZeroBraneStudioEduPack-1.50-win32/bin/clibs/?.dll" ---> require('mobdebug').start("127.0.0.1") 表示要连接IDE机器的IP地址,如果的都在本机,写127.0.0.1就行了 ---> 我在第14行下了断点...
alexChan 发布于 3个月前 阅读 110

LiteOS-内核C代码-屏幕输出

终于可以开始用C来写代码了 内核启动代码, #include "src/main.h" const char *VGA_BUFFER = (const char*)0x000b8000;// vga 显存开始地址 int kernel_entry() { while (1) { main(); } return 0; } main.c #include "stdio.h" #include "def.h" void print_logo() { printf("LiteOS 1.0 (c) 2013-2017 dreamyouxi.com\n\n"); printf("* * ***** ***** \n"); printf("* * * \n"); printf("* * * ***** \n"); printf("* * * * \n"); printf("**** * * ***** OS 1.0 \n"); } int main() { print_logo(); flush(); while (1) { } return 0; } 由于没有标准库,因此printf等这些标准库函数都要自己实现 VGA 13h显示模式下的显存首地址为0x0b8000 因此在这里面写数据即可 该模式下的屏幕是80(长度x)*25(高度y)*2字节,2字节为 char + 颜色(16色) 下面是颜色代码:(如 color fc 为亮白色产生亮红色,第一个背景,第二个前景)     0 = 黑色       8 = 灰色     1 = 蓝色       9 = 淡蓝色     2 = 绿色       A = 淡绿色     3 = 湖蓝色     B = 淡浅...
梦想游戏人 发布于 1个月前 阅读 42

VPN和SS对比

VPN隧道协议主要:PPTP、L2TP、OpenVPN 等。部分服务器提供商屏蔽这些协议。购买的时候一定要咨询。 影梭是基于原socks5协议,增加多种加密方式实现的。市面上的服务器99%支持。   成本: VPN对服务器有一定的性能要求,容易被攻击,容易被封服务器。成本高。 影梭对服务器的要求很低 64M内存都能搭建(之前搬瓦工提供64M内存的VPS),隐蔽性较好。成本很低。   适配: VPN可以在所有平台使用(windows,mac,android,ios,linux)。 影梭可以现在支持除了 非越狱的IOS外,其他都支持。   场景: 电脑使用VPN后,所有的网络通信都走代理。适合所有场景。 电脑使用影梭后,只有http请求走代理。所有有些游戏没发使用。
Ld_kaiyuan 发布于 1周前 阅读 53

[Unity3D]游戏在播放声音发生卡顿

Unity3D音频卡顿
diguo2046 发布于 3个月前 阅读 60

游戏开发SpriteKit基础

 要想入行学习游戏的开发,基本的游戏框架还是需要了解清楚的,总的来说,游戏的开发是一个综合化的课程学习,不仅要求学习者要有一定的编程能力,更多的还是需要掌握基本的技术框架,搭建好一定的架构,这样才可以有效的进行开发,本文将为大家介绍的是SpriteKit框架的入门学习。   苹果很早在iOS7系统中是内置了一个新的SpriteKit框架,使用这个框架它最主要用来开发2D游戏。目前已经支持的内容包括:精灵、很酷的特效(比如视频、滤镜和遮罩等这些特效),并且还是集成了许多物理库等一系列的东西。   实际上在iOS7中附带了一个非常棒的SpriteKit示例工程,名字是叫Adventure。该示例工程是有一点的复杂,并不适合初学者,本文主要是给大家带来SpriteKit使用的初级教程。   使用SpriteKit的优点:   1、该框架它是内置到iOS中的,所以它并不需要去下载额外的库又或者其它一些外部依赖,因为它是由苹果开发的,它的支持和更新这一点是并不需要担心,它的更新还是比较好的支持的。   2、并且它内置的工具是支持纹理和粒子。   3、它也是可以让你做一些其它框架很难做到的事情,比如把视频当做精灵一样处理,又或者使用很酷的图形效果和遮罩。   但是SpriteK...
jun9152143 发布于 8小时前 阅读 2

用笔记本如何提升游戏性能?

      游戏的流畅度是玩家最关注的一个问题,也是游戏体验的重要指标,我们玩游戏的时候都会有相关的体验,就是一般台式计算机的用来玩游戏将会更加的流畅,这也为什么网吧都是使用台式机来玩游戏的原因了,很多人会问那么使用笔记本该怎样提升游戏的性能呢?   使用笔记本游戏性能提高的方式可以参照下面的几种方式:   1、可以使用加速器(就比如:通过迅雷网游加速器、网易UU网游加速器、QQ会员网游加速小助手、ET加速器和迅游网游加速器等“网游加速器”启动游戏等这些加速助手)。使用这种方法可以实现跨网加速,能够有效解决网通、电信等带宽之间互联不互通的问题,是一个很好的方式,一般的用户都是这个方式的。   2、因为有些游戏对于PC的配置是有要求的,一般在这种情况下,我们可以通过显卡自带的图形管理功能实现提速效果。   比如:在这里是以NVIDIA独显笔记本和“DayZ”游戏为例,在电脑桌面,点击“鼠标右键”,可以选择“NVIDIA控制面板”,然后是在“管理3D设置-程序设置”中手动添加游戏“DayZ”程序,同时也是可以根据自身的一个配置情况定义具体的设置值。比如将“各向异性过滤”设置在了4X,然后是强行关闭了“垂直同步”,将“最大预渲染帧数...
jun9152143 发布于 9小时前 阅读 1

Centos7 下建立 Docker 桥接网络

摘要: centos7宿主机上建立Docker桥接物理网络过程 centos7宿主机上建立Docker桥接物理网络过程 宿主机网卡信息: name:ens0 IP:192.168.184.99 GATEWAY:192.168.184.2 DNS:192.168.184.2 1. 停止Docker服务 ~#:service docker stop 2.删除docker0网卡 ~#:ip link set dev docker0 down ~#:brctl delbr docker0 3.新建桥接物理网络虚拟网卡br0 ~#:brctl addbr br0 ~#:ip link set dev br0 up ~#:ip addr add 192.168.184.100/24 dev br0 #为br0分配物理网络中的ip地址 ~#:ip addr del 192.168.184.99/24 dev ens0 #将宿主机网卡的IP清空 ~#:brctl addif br0 ens0 #将宿主机网卡挂到br0上 ~#:ip route del default #删除原路由 ~#:ip route add default via 192.168.184.2 dev br0 #为br0设置路由 4.设置docker服务启动参数 这里要注意的是,不同的Linux操作系统docker的配置文件所在不同 centos 在/etc/sysconfig/docker 其他操作系统请前往下面的网址 https://docs.docker.com/installation/#installation ~#:vim /etc/sysconfig/docker #在OPTIONS='--selinux-enabled'这行中修改为OPTIONS='--selinux-enabled -b=br0'即让docker服务启动时使用br0网卡进行桥接 5.启动d...
暖夏未眠丶 发布于 13小时前 阅读 1

如何选择 HTML5 游戏引擎(转)

转:html5VR 发布于2016年04月27日 原生手游市场已是红海,腾讯、网易等寡头独霸天下,H5游戏市场或将成为下一个风口。据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折。如何选择适合团队和项目的引擎,笔者通过学习和项目实践,总结微薄经验,供大家参考,非技术人员也可以将本篇内容作为引擎选择的重要关注点。 选择H5游戏引擎的思考维度 1、开发语言的支持 2、2D、3D、VR的支持 3、性能 4、引擎的应用广度 5、设计理念 6、工作流支持力度 7、商业化成熟案例 8、学习资源与技术支持能力 首先,我们要知道,当前主流的游戏引擎有哪些。由于H5引擎有很多,笔者在这里进行了精心的筛选,过滤掉不支持webGL的引擎,以及封装了第三方渲染内核的JS框架,和不能直接在浏览器中运行的JS引擎。 为什么要过滤掉这几种呢,首先,没有自己的渲染内核,仅仅是基于第三方的内核作的API封装,笔者很担心可持续的性能优化和维护能力。另外,不能在浏览器中直接运行的JS引擎,将限制H5游戏跨平台的交互能力。还有, 笔者非常看好webGL模式,认为webGL模式才是H5引擎的未来。原因有几点: 第一、性能,webGL模式远超Canvas数倍。DOM模式就不适合用于真正的游戏开发,...
tianma3798 发布于 2天前 阅读 6

UnrealEngine shortcut key

2steper 发布于 2天前 阅读 6

幽冥岛争霸 - 和女儿一起开发的游戏

日记2017-06-20 和女儿一起开发的游戏,才刚刚开始。。。 发布到了火舞游戏平台。 添加了技能流光,尚未测试。 游戏介绍 在魔界大陆深处,幽冥岛常年被黑雾笼罩,岛上被众多强大的妖魔占领,与魔界对抗。你被魔界任命为幽冥鬼使,消灭岛上的妖魔。 游戏地址 http://i1.51h5.com/open/game/395976/395976051833/index.html 截图    
青青小树 发布于 3天前 阅读 5

coscos项目入门

下载vs2015 安装游戏里面的科克斯。会安装补丁和coscos studio 然后运行coscos studio. 新建demo项目,然后点运行项目遇到问题:python命令不能识别,下载python2.7 重启coscos studio,然后运行项目成功。 接下来使用vs 2015来开发游戏,将项目发布为visual studio项目。即可。
阳666 发布于 5天前 阅读 1

黑白图片切换shader

通过公式改变材质Color属性,实现黑白图片效果。 Shader "Unlit/NewUnlitShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _GrayImage ("ChangeGray",float) = 1 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; half4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float2 texcoord : TEXCOORD0; half4 color : COLOR; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _GrayImage; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.color = v.color; o.texcoord = v.texcoord; return o; } fixed4 frag (v2f i) : COLOR { fixed4 col; if (_GrayImage == 1) { col = tex2D(_MainTex, i.texcoord); float grey = dot(col.rgb, float3(0.299, 0.587, 0.114...
江湖令 发布于 5天前 阅读 6

【大数据开发套件调度配置实践】——调度任务各种周期配置和调度形态

阅读全文   数加·大数据开发套件目前支持任务调度周期有五种:天、周、月、分钟、小时。本文将介绍这五种周期的配置和调度形态。 调度规则——调度任务是否能运行起来要满足的条件: 上游任务实例是否都运行成功。若所有上游任务实例都运行成功则触发任务进入等待时间状态。 任务实例定时时间是否已经到。任务实例进入等待时间状态后会check本身定时时间是否到,如果时间到了则进入等待资源状态; 当前调度资源是否充足。任务实例进入等待资源状态后,check当前本项目调度资源是否充足,若充足则可以运行起来。 天调度任务 天调度任务,即每天自动调度运行一次,运行时遵循调度规则。新建调度任务时,调度周期默认就是天调度。 具体时间默认是00:00:00,可自行指定,当然指定具体时间后依然需要遵循调度规则进行起调,不一定就能在指定的时间马上运行起来。 场景:3个任务——导入、统计加工、导出,都是天任务,具体时间如上图13点;统计加工任务依赖导入任务,导出任务依赖统计加工任务,依赖配置如下图(‘统计加工任务’的依赖属性配置上游任务为‘导入任务’):   阅读全文  
大大梁 发布于 1周前 阅读 1

你应该了解的数据分析入门知识

阅读全文   ◆ ◆ ◆ 1、明确分析的目标   做数据分析,必须要有一个明确的目的,知道自己为什么要做数据分析,想要达到什么效果。比如:为了评估产品改版后的效果比之前有所提升;或通过数据分析,找到产品迭代的方向等。   明确了数据分析的目的,接下来需要确定应该收集的数据都有哪些。     ◆ ◆ ◆ 2、收集数据的方法   说到收集数据,首先要做好数据埋点。   所谓“埋点”,个人理解就是在正常的功能逻辑中添加统计代码,将自己需要的数据统计出来。   目前主流的数据埋点方式有两种:   第一种:自己研发。开发时加入统计代码,并搭建自己的数据查询系统。   第二种:利用第三方统计工具。   常见的第三方统计工具有:   网站分析工具   Alexa、中国网站排名、网络媒体排名(iwebchoice)、Google Analytics、百度统计   移动应用分析工具   Flurry、Google Analytics、友盟、TalkingData、Crashlytics   不同产品,不同目的,需要的支持数据不同,确定好数据指标后,选择适合自己公司的方式来收集相应数据。   ◆ ◆ ◆ 3. 产品的基本数据指标   新增:新用户增加的数量和速度。如:日新增、月新增等。   活跃:有多少人正在使用产品。如...
大大梁 发布于 1周前 阅读 1

人工智能发展史-从图灵测试到大数据

阅读全文   我一直很好奇人工智能是如何提出来的,它背后有什么样的故事,在人工智能发展的这60年的时间中,又经历了什么?为什么现在才是人工智能的爆发点,未来人工智能又将走向何处?带着这样的问题我读了吴军博士的《智能时代》这本书,打开了我对人工智能的了解,这篇文章主要内容也来自于这本书。 我们这代人对人工智能的关注,来自于2016年AlphaGo大战世界著名围棋选手李世民,在比赛之前各方关注度非常高,国内各方媒体争相报道,预测这场比赛的结果,人们好奇人工智能现在智能到什么程度以及计算机如何和人下围棋,最终AlphaGo以4:1胜了李世明,大家都在感慨人工智能时代即将来临。仅仅过了一年,2017年5月27日AlphaGo的2.0版本3:0战胜围棋世界排名第一的柯洁九段,从此在AlphaGo面前已无人类对手。 计算机之所以能够战胜人类,是因为机器获得智能的方式和人类不同,它不是靠逻辑推理,而是靠大数据和算法。Google使用了几十万盘围棋高手之间的对弈的数据来训练AlphaGo,这是它获得所谓“智能”的原因。在计算方面,Google使用了几十万台服务器来训练AlphaGo下棋模型,并让不同的AlphaGo相互对弈上千万盘。第二个关键技术是启发式搜索算法-蒙特卡洛树搜索算法(...
大大梁 发布于 1周前 阅读 1

交通大数据的发展现状与应用难点解决方案分析

阅读全文   改革开放以来,政府一直在不遗余力的加大交通基础设施建设。但是,经济发展带来的人们出行需求的频繁、城镇化深入带来的城市人口剧烈增长,依然给交通带来了前所未有的压力。据不完全统计,2016全国机动车保有量已达到2.95亿辆;交通拥堵指数超过1.5的城市有56个,其中三分之一的城市拥堵指数呈上升态势;民航航班正常率不足70%,交通困局已经成为了从普通群众到政府领导都密切关注的民生问题。 交通大数据建设的现状与痛点 2015年3月5日,李克强总理在政府工作报告中首次提出“互联网+”行动计划,推动移动互联网、云计算、大数据等与传统行业结合,以促进行业快速发展。而互联网与交通的碰撞也逐渐推进“线上资源开放共享、线下高效优质运行”新格局的形成,为解决当下严峻的交通形势提供了可能。 目前,我国城市的交通信息化已经建立起了基于电子警察、电子卡口数据的车辆缉查布控系统,对假牌套牌、逾期未检验、涉嫌盗抢车可进行自动报警;集合视频监控系统、公安GPS系统、交通GIS系统以及无线通讯系统等建立的110指挥平台,具备了对辖区内突发事件决策处理“指令下得去,情报上得来”的能力;除此以外,交通流诱导系统、交通流采集系统、交通违法自动考量...
大大梁 发布于 1周前 阅读 1

【大数据开发套件调度配置实践】——不同周期任务依赖配置

阅读全文   大数据开发过程中常遇到不同运行周期的任务进行依赖,常见 天任务依赖小时任务、 小时任务依赖分钟任务 。那么如何通过大数据开发套件开发这两种场景呢? 本文将从这两个场景出发,结合调度依赖/参数/调度执行等,介绍不同周期调度依赖的最佳操作实践。 再此之前,我们先明确几个概念: 业务日期:业务数据产生的日期,这里指完整一天的业务数据。在大数据开发套件里任务每天能处理的最近的完整一天业务数据是昨天的数据,所以业务日期=日常调度日期-1天。 依赖关系:依赖关系是描述两个或多个节点/工作流之间的语义连接关系,其中上游节点/工作流的运行状态可以影响下游节点/工作流的运行状态,反之则不成立。 调度实例:大数据开发套件的调度系统对周期任务进行调度执行时,会先根据任务的配置进行实例化,每个实例带上具体的定时时间、状态、上下游依赖等属性。 注意:目前数加大数据开发套件每天自动调度的实例都是在昨天晚上23:30生成。 调度规则:调度任务是否能运行起来要满足的条件: 上游任务实例是否都运行成功。若所有上游任务实例都运行成功则触发任务进入等待时间状态。 任务实例定时时间是否已经到。任务实例进入等待时间状态后会check本身定...
大大梁 发布于 1周前 阅读 3

Thinkphp 5.0实战 仿百度糯米开发多商家电商平台

![输入图片说明](https://static.oschina.net/uploads/img/201706/14153622_BhSA.jpg "在这里输入图片标题") 1块钱 联系QQ 2548975779
oneboi 发布于 1周前 阅读 6

移动医疗行业亏损扩大:哪条路径才是正确的?

阅读全文   移动医疗行业亏损扩大:哪条路径才是正确的?纵观国内的移动医疗项目,按融资阶段来分,基本有两类。一类是不断融资、仍在烧钱的未挂牌未上市公司,一类是已挂牌或上市的公司,后者又可以分为新三板挂牌公司和A股上市公司。 第一类的公司数目繁多,其商业模式大致可分为三种,第一是网上问诊,患者通过平台付费获得医生的远程诊断;第二是中介服务,比如原来的挂号网(微医集团);第三就是通过药品电商、保险销售等流量变现。目前这三种商业模式,只能创造收入,但很难贡献利润,属于赔了钱赚吆喝。 而第二类已挂牌或上市的公司,把移动医疗作为主要商业模式的,几乎全部集中在新三板。目前,新三板挂牌的移动医疗公司有:宁远科技、芯联达、中普达、迈德科技。 从2016财年报告来看,各家的营业收入呈现增长,但亏损却在进一步扩大,可以说是不做不赚,越做越亏。能够勉强扭亏为盈的迈德科技,则是将商业模式从单一销售信息产品,延伸到了实体产品的销售。 而A股上市公司中,目前大约有50家公司的部分业务涉足了互联网医疗(移动医疗)。其中颇具代表的企业有:中药生产商康美药业、传统制药企业仁和药业、生产血压计和血氧仪的九安医疗、心血管医疗器械生产商...
大大梁 发布于 1周前 阅读 1

看_那人好像一个产品狗_对_这就是产品狗

阅读全文   在首届互联网新兵进阶在线峰会上,来自阿里巴巴天猫事业部的产品经理叶夕分享了《看,那人好像一个产品狗》。他主要从自己两年来产品新人经历出发,分享了一路走来的心路历程。他首先介绍了产品经理这个职位以及需要做的工作,然后分享了产品经理求职过程中的准备以及自己在阿里做产品经理的感受。   以下内容根据直播视频整理而成。   你适合做产品经理吗? 什么是产品经理 比如,我上班非常累,需要走很远的路,那么怎样才能让上班省力?此时,就会想到类似于自行车的东西,将其图纸画出来(把手、车轮、铃铛、脚蹬、链条),拼装成自行车的雏形,然后将其卖给和我有同样经历的人赚钱。在这个过程中,有几个角色,设计自行车的过程扮演产品经理的角色;把idea变成可以付诸行动的图纸过程中做一个设计师的角色,即互联网行业中的UED;开发零件、把零件拼接在一起的人就是程序员;将东西卖给更多的人的角色即运营。 产品经理在其中起到的作用包括:自驱力,发现身边人的痛点;idea,想到解决问题的方案;逻辑性,零件之间的拼接,关注每一个环节的作用。其中,逻辑性和idea是做产品经理需要具备的能力和非常基本的要求。 产品经理做什么 书本上的说法是产品经...
大大梁 发布于 1周前 阅读 2

VPN和SS对比

VPN隧道协议主要:PPTP、L2TP、OpenVPN 等。部分服务器提供商屏蔽这些协议。购买的时候一定要咨询。 影梭是基于原socks5协议,增加多种加密方式实现的。市面上的服务器99%支持。   成本: VPN对服务器有一定的性能要求,容易被攻击,容易被封服务器。成本高。 影梭对服务器的要求很低 64M内存都能搭建(之前搬瓦工提供64M内存的VPS),隐蔽性较好。成本很低。   适配: VPN可以在所有平台使用(windows,mac,android,ios,linux)。 影梭可以现在支持除了 非越狱的IOS外,其他都支持。   场景: 电脑使用VPN后,所有的网络通信都走代理。适合所有场景。 电脑使用影梭后,只有http请求走代理。所有有些游戏没发使用。
Ld_kaiyuan 发布于 1周前 阅读 53

麻将

1.砸胡免杠  点炮者杠牌不算分 2.抢杠胡 - 别人碰牌,以后摸一张牌后,杠牌,别人正好胡此牌,此时胡牌,成为抢杠胡
小熊猫大暴走 发布于 2周前 阅读 12

聊聊Neo4j图数据库的那些明显优势

阅读全文   在高速发展的互联网应用中,业务需求的频繁变更和数据的快速增长都要求数据库必须具有很强的适应能力。Neo4j图数据库正是一个能够适应这种业务需求不断变化和大规模数据增长而产生的数据库,它不但具有很强的适应能力,而且能够自始至终保持高效的查询性能。   现实世界中的一切事物都处在联系之中,如人际关系、电脑网络、地理数据、分子结构模型等,无一不处在纷繁复杂的联系之中。这种联系形成了一种互相关联的数据,联系才是数据的本质所在。传统的关系型数据库并不能很好地表现数据的联系,而一些NoSQL(Not Only SQL,非关系型数据库)数据库又不能表现数据之间的联系。同样是NoSQL的Neo4j图数据库是以图的结构形式来存储数据的,它所存储的就是联系的数据,是关联数据本身。   关联数据中的联系本来就很复杂,若要在关系型数据库中使用结构化形式来表现这种联系,则一般不能直接表示,处理起来既烦琐又费事,并且随着数据的不断增长,其访问性能将日趋下降。无数的开发人员和数据库管理人员都或多或少地使用过关系型数据库,在其应用的规模化进展过程中,对于数据库的性能优化往往捉襟见肘、陷入窘境。Neo4j没有模式结构的定义,也不需要这些定义,...
大大梁 发布于 2周前 阅读 2

某游戏公司测试工程师面试题

1)  描述一下测试流程: 问题:请描述一下测试流程,主要是考察理论知识 参考答案: 需求评审->制定测试计划->根据需求搭建测试环境/配置服务器与客户端资源->根据需求编写测试用例->用例评审->用例执行->bug回归->提交测试报告 主要参看面试者对测试流程的了解 2)  TCP/IP的概述; 问题:请描述一下TCP/IP的分为几层,他们之间是如何交互的。 参考答案: tcp/ip协议分4层的层级结构:网络接口层(又称链路层)、网络层(IP)、主机到主机层(TCP)(又称传输层)、应用层; 能够画出tcp的三次握手协议的时序图: 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 主要查看面试者对TCP/IP是否了解 3)  对游戏服务器是否了解; 问题:以前是否了解游戏服务器,是否能描述一下分...
startstorm 发布于 2周前 阅读 23

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

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

有趣的二进制

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

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

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

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

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

Xgame 合服工具技术设计文档

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

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

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

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

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

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

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

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

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

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

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

2048 C++源代码by Reason

2048 C++实现 源代码
ChenReason 发布于 3年前 阅读 9849 评论 27 点赞 23

开源游戏 “Elvish Bird”

这是一个纯javascript语言开发的自虐、冒险、死磕类游戏,它的名字叫“Elvish Bird”,主体开发了5个工作日,内部含有全部的代码。希望大家学习学习。运行这款游戏可以在IE8以上浏览器运行。运行时如果屏幕分辨率不兼容,你可以缩放到最佳显示效果。
BruceWan 发布于 3年前 阅读 3603 评论 15 点赞 11

开源游戏 “打飞机”

这是一个纯javascript语言开发的射击类游戏,它的名字叫“打飞机”,主体开发了4个工作日,内部含有全部的代码。希望大家学习学习。运行这款游戏可以在IE8以上浏览器运行。运行时如果屏幕分辨率不兼容,你可以缩放到最佳显示效果。
BruceWan 发布于 3年前 阅读 9650 评论 62 点赞 58

【笔记】试玩 cocos2d-x-3.0beta on android

[cocos]: http://www.cocos2d-x.org/ [sdk]: http://developer.android.com/sdk/index.html [ndk]: http://developer.android.com/tools/sdk/ndk/index.html [ant]: http://ant.apache.org/ [python]: http://www.python.org/ [javase]: http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=ocomen # 试玩 cocos2d-x-3.0beta on android ## 1 环境准备 * [Cocos2d-x][cocos]: v3.0beta * [Android SDK][sdk]: Revision 22.3(SDK Tools) * [Android NDK][ndk]: Revision 9c * [Apache Ant][ant]: 1.9.3 Released * [Python][python]: 2.7.6 Android SDK Manager: ![][1] ps: 这次儿我把环境都提升到了最新状态,除了[Java][javase]仍为jdk-7u45。 ### 1.1 前提说明 1. 首先,以下都是在Win7 32位上操作的。 2. 其次,这里假设上述环境都安装在了E:盘。 ### 1.2 配置环境变量 ANDROID_SDK_ROOT = E:\android-sdk-windows NDK_ROOT = E:\android-ndk-r9c ANT_HOME = E:\apache-ant-1.9.3 PY_HOME = E:\Python27 JAVA_HOME = C:\Program Files\Java\jdk1.7.0_45 NDK_TOOLCHAIN_VERSION = 4.8 `ANDROID_SDK_ROOT`太长了,可以另外设个: SDK_RO...
加壹 发布于 3年前 阅读 7383 评论 4 点赞 4

OpenGL超级宝典笔记——深度纹理和阴影

之前我们介绍过简单的把物体压平到投影平面来制造阴影。但这种阴影方式有其局限性(如投影平面须是平面)。在OpenGL1.4引入了一种新的方法阴影贴图来产生阴影。 阴影贴图背后的原理是简单的。我们先把光源的位置当作照相机的位置,我们从这个位置观察物体,我们就知道哪些物体的表面是被照射到(被光源看到)的,哪些是没有被照射到(被遮挡住)的(在某个方向上离光源最近的表面是被照射的,后面的表面则没有被照射到)。我们开启深度测试,这样我们就可以得到一个有用的深度缓冲区数据(每一个像素在深度缓冲区中的结果),然后我们从深度缓冲区中读取数据作为一个阴影纹理,投影回场景中,然后我们在使用照相机的视角,来渲染物体。 光源视角 首先我们把视角移到光源的位置。我们可以通过glu库的辅助函数: gluLookAt(lightPos[0], lightPos[1], lightPos[2], 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); 把光源的位置设置为观察的位置。 为了以最佳的方式利用空间来产生阴影贴图。从光源的角度看过去的透视可视区域要适应窗口的比例,且透视的最近平面位置是里光源最近的物体的平面,最远的平面位置是离光源最远的物体的平面。这样我们就可以充分的利用场景的信息来填充深度...
Mario_Q 发布于 3年前 阅读 10590 评论 7 点赞 13
顶部