Bob Blog

If you want knowledge,you must toil for it.

王者荣耀地图资源

简单分析地表混合

王者荣耀地表用的Terrain Splatting技术,简单说就是合并多层贴图,平滑融合边缘。 这个技术由Charles Bloom发明的,他有一篇文章介绍说明,另外wiki上也有一些基本原理介绍。 整个地表没有用高度图,直接用 分割粒度适中的Mesh 做的,下图是战斗地图右直道,uv是路边缘草(_Splat0),uv2是石块(_Splat1)。colors是用于做二层融合,...

手游反向浅析

简单逆向分析

逆向分析:对一个事物的可能,对其进行反向分析,分解和重构,推理分析某个事物可能。 和演绎法类似 T系所有手游都是用的一套加固方式,先看看官网的介绍, 四大保护功能。 第三项资源apollo组件 游戏资源基于IFS文件构建,不仅可以更新资源还可以增量更新Apk。 游戏启动时可以基于文件列表(ResourcePackerInfoSet.bytes)从资源包中(sgame_r...

王者荣耀资源浅析

简单分析场景贴图制作

王者荣耀国内移动游戏收入榜的第一名,其季度流水超过40亿元。虽然我不爱玩,但是可以分析学习其制作方式。分析文章将形成一个系列:地图、角色、特效、UI等。 1.地图 地表草沙石头alpha融合 河流、河岸波浪、瀑布 粒子特效 出生地建筑模型、pbr使用 地表物件:草的运动(Hair Groom系统),旗帜飘动 2.角色 模型分级low middle h...

Lua元表

介绍元表和class设计

简单介绍Lua元表和class设计 Lua的table是hashmap和array的结合体。如果是key-value访问table中一个不存在元素时,会触发lua的”查找机制”,利用这个特性可以模拟class。 --例1 local char = {} --打印不存在的key:hp print(char.hp) --输出nil getmetatable和setmetatabl...

UGUI浅析

简单分析UGUI和NGUI差异

NGUI由ArenMook开发的是一款收费Unity插件($95),多用于做Unity游戏UI系统。作者曾被Unity招安一年开发了官方版本UI系统UGUI,最终与Unity意见相左离开了,但至今他的NGUI仍然维护中,国内游戏NGUI使用率相对更高一些。UIGUI仅开源部分C#代码,核心代码是未开源,NGUI源码完全可自行优化或扩展。 UGUI Renderer CanvasRe...

计算机图形学集锦

编程和图形学等相关技术资料

草稿,未完待续 语言类 C++ bash 数学类 Linear Algebra graphtoy 渲染库 Vulkan OpenGL API Metal Direct3d 12 Doc 书/教程 Real-Time Rendering, Fourth Edition GPUGems noteForOpenGL Learn Computer Graphics F...

Lua热更新框架差异

方案选型考量方向

闲谈国产游戏脚本渊源 端游时代一款《天龙八部》就支撑了整个畅游公司。它引擎改造于orge+cegui。当c++代码工程随着项目业务日益庞大时,编译速度就实在很令人发狂。而C++对于开发人员要求还是蛮高的,驾驭不好给项目稳定性带来很大风险。再则为了更好分离引擎和业务逻辑,所以引入Lua做脚本语言作了部分业务逻辑开发。包括《魔兽世界》、《大话西游2》也引入Lua脚本。 早期页游大多基于Js+h...

LuaJit解析

Jit为什么快?

luac只有 interpreter模式. luajit分 interpreter 模式和 jit 模式, AOT(ahead-of-time compilation),只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中。也叫静态编译(static compilation)。 动态编译(dynamic compilation)指的是“在运行时进行编译...

Lua虚拟栈交互流程

分析Lua、C、C#如何交互的

当C和Lua互相调用的时候,Lua虚拟栈严格的按照LIFO规则操作,只会改变虚拟栈顶部分。但通过Lua的API,可以查询虚拟栈上的任何元素,甚至是在任何一个位置插入和删除元素。 虚拟栈中数据定义TValue,参见上篇文章。 虚拟栈基本操作 int lua_gettop (lua_State *L); //返回栈顶索引(即栈长度 ) void lua_...

Lua虚拟栈的实现-数据定义

分析Lua和C如何交互的

Lua 5.0 开始,Lua 就从基于栈的虚拟机( stack-based VM )改为了基于寄存器的虚拟机( register-based VM )。基于栈的虚拟机有JVM,.Net CLR,javascript V8。基于寄存器的虚拟机有Android Dalvik VM. 语言的虚拟机是借助于操作系统对物理机器的一种模拟。 虚拟CPU指令流水线一般有5个过程段: 1.取指(...