奥日&&空洞玩后感
最近游戏荒了,很想找点游戏玩玩,请教了群友们,都是推荐了那些3A大作,怪猎,刺客信条,只狼,黑魂之类的,讲道理这些作品虽然很优秀但是并不合我胃口,遂还是自己找,正当我在Steam里翻箱倒柜的时候,脑子里突然冒出奥日这两个字眼,因为前阵子正好看到 《奥日与精灵意志》是如何完成近乎不可能的Switch移植任务的?这一文章,加上更前些日子里在B站看到的一些关于奥日的评测,唯美的宛如艺术品一般的画质已经让我急不可耐了。
奥日启动!
游戏的起始界面就是宏大的场景,微风,森林,暖阳,非常的清新漂亮,配上类似笛子和萧制作的背景音乐,就这一招,就把我折服了。
剧情
然后进入游戏流程,故事线就不说了,防止剧透。
描述的是一个小精灵拯救这个世界的故事,剧情算是中规中矩。
画面
游戏整体采用2D+3D的渲染模式,加上各种法线贴图,光照贴图让游戏中的画面非常类似全3D制作的,各种光效,关节动画,拖影都恰到好处,对于我来说是无可挑剔的画面了。
音效
音效也是非常的赞,包括跑动,跳跃,与物体进行交互的时候给人非常舒适的感觉。
尤其在Boss战的时候切换到紧张刺激的BGM为战斗增色不少,刺激度++
关卡 ...
个人对于游戏UI架构的思考与总结
前言
这阵子我的开源Moba项目要开始着手准备客户端的表现工作了,后端的逻辑基本上没有太大的问题。
如果对这个项目感兴趣的可以去看一下
谈及客户端表现,UI是必不可少的一环,那么选定一个好的UI解决方案和框架就更加重要了。
对于解决方案,我们耳熟能详的有UGUI,FGUI,NGUI等。
对于UI框架,基本架构基本上就是MVC,MVVM这种MV*系列的框架。
在此之前,我并没有对这些UI框架的使用经验,所以就趁此机会好好学习一下。
UI解决方案的选择
UGUI
原生的UGUI似乎是一个好的选择,因为官方在一直维护,各个方面都有保障,但是许多功能需要自己重新造轮子,对于没有模块积累的人来说可能有些麻烦。
NGUI
与UGUI还是有比较大的差别的,有一些轮子,拓展模块,底层也做了一些调整和优化。不过近几年势头越来越弱了,本身也不打算选择,如果UGUI和NGUI选一个,我会选UGUI。
FGUI
FGUI全名FairyGUI,是一个开源的,跨平台UI解决方案,它包含几乎所有游戏UI常用功能,易于拓展,性能优秀,可以做到一次导出,各处使用,开发效率也很高。无疑更加适合独立游戏团队或者 ...
那些年我喜欢的主播——曾经的我长大了,他们却不在了
今天天气很好,但是昨天睡得很晚,第一节又有课,7:50就起床了,所以很困。 但是又不想午睡,把玩的时间浪费在睡觉上总有点不合适,那干什么呢? LOL?不想玩,太累了。 看直播吧,嗯小C不错,但是总感觉少了点什么,哦,不知道什么时候阿亮已经不在了,看了一会,除了那略显做作的大吼大叫,已经没什么节目效果了吧。带着略微烦躁的心情推出了直播间。
发了一会呆,突然想起,去看看曾经的那些主播吧。
最先想起的是猴哥,曾经和老王闹掰之后人气就再也回不来了了,直播间也尘封已久了。
老王其实现在也还行,在企鹅直播,当年可是龙珠LOL区霸主级别的主播,虽然现企鹅人气大不如前,不过相对于其他主播来说处境已经很好了。
城管希,曾经的观赏性极强的王者AP蛮王,也早就不在了,据说考上公务员之后就停播了。
马老C现在热度还行,靠着B站那几个传菜的互相反哺,经营的不错,不过这种情况还能维持多久呢?
LOL区就这么多吧,接下来是从高中玩到大学的英魂之刃
首先想到的是LS小妖,当时的童年女神哦,其实在上高中的时候偶然瞥见了一次她的直播,没有了当年的清纯,浓妆艳抹的样子。现在在各个平台也找不到了,据说是擦边球违规被封了。
然 ...
Unity Shader入门精要学习笔记:渲染流水线
前言
本系列博客记录学习《Unity Shader入门精要》(冯乐乐著)中的笔记和感悟。
渲染流水线
综述
渲染流水线的最终目的在于生成或者说是渲染一张二维纹理。
什么是渲染流水线
渲染流水线的任务在于:从一系列的的顶点数据,纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。而这个工作通常是由CPU和GPU共同完成的。 渲染流程分为三个阶段:
应用阶段
主要提供渲染图元(点,线,三角面),以及渲染状态(顶点片元着色器,光源属性,材质等),我们开发者在这一阶段有绝对控制权。
几何阶段
处理所有和我们要绘制的几何相关的事情(例如应用阶段提供的渲染图元),决定需要绘制的图元,如何绘制图元,在哪里绘制图元。这一阶段在GPU进行。 一个重要任务是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理。 这一阶段会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等相关信息,并传递给下一个阶段。
光栅化阶段
使用几何阶段传递的数据来产生屏幕上的像素,并渲染出最后的图像。 这一阶段也是在GPU上运行。 光栅化的主要任务是决定每个渲染图元中的哪些像素应该被绘制在屏幕上,他需要对 ...
Unity Shader入门精要学习笔记:Unity Shader基础
Unity Shader概述
材质和Unity Shader
在Unity中需要配合使用材质和Unity Shader才能达到需要的效果
Unity Shader基础:ShaderLab
什么是ShaderLab
Unity Shader是Unity为开发者提供的高层级的渲染抽象层。
在Unity中,所有的Unity Shader都是使用ShaderLab来编写的。
ShaderLab是Unity提供的编写Unity Shader的一种说明性语言。
Unity在背后会根据使用的平台来把这些结构编译成真正的代码和Shader文件,而开发者只需要和Unity Shader打交道即可。
Unity Shader的结构
12345678910111213141516171819202122232425262728Shader "Shader的名字,通过增加'/'来细分种类"{ Properties { //Name:属性的名字 //display name:显示在材质面板上的名字 //PropertyTy ...
Socket学习笔记
源代码:
https://gitee.com/NKG_admin/SocketTestDemo
Socket 基础知识
https://blog.csdn.net/fighting_xa/article/details/50623571
http://liuliliujian.iteye.com/blog/898342
https://baike.baidu.com/item/socket/281150?fr=aladdin
看不懂没关系,因为我也看不懂。(旁白:滚!)
既然谈到Socket,就得牵扯到服务器端,什么是服务器端呢?
个人理解:服务器端就是自己的代码,让它跑在云主机(云服务器上,比如阿里云,亚马逊云这些)。而这些,其实就是在云端买了一个主机,它和你正在使用的电脑一样,有桌面,有系统,有蜘蛛纸牌。。。
不同的是,它有固定的公网IP,而我们电脑公网IP是变化的(所以如果要把自己电脑变成服务器的话需要用花生壳做内网穿透)。
所以我们要把代码里绑定IP和连接IP的地方改成服务器的公网IP就行了。然后只需要把你服务器代码生成的exe文件在上面打开。让它365天没日没夜开着 ...
常用排序算法汇总
前言
记录并分析常用排序算法,方便自己日后查阅。
环境
语言:C# IDE:Rider 2019.3.3
冒泡排序
1234567891011121314151617181920212223/// <summary>/// 冒泡排序/// </summary>/// <param name="array">数组</param>/// <param name="count">数组元素个数</param>public static void BubbleSort(int[] array, int count){ //设置标识符,如果为false意为当前数组为有序,不需要再排序了 bool shouldSorted = true; for (int i = 0; i < count && shouldSorted; i++) { shouldSorted = false; for ...
NPBehave行为树架构
前提概要
为了避免歧义,我修改了Node.cs文件中一些函数命名
12DoStop->DoCancelStop->CancelWithoutReturnResult
我们都知道行为树中有三大组合节点,分别是
Selector:选择组合器,一遇到子结点返回成功则其本身返回成功,否则继续执行下一个子结点,全部失败则其本身返回失败
Sequence:序列组合器,一遇到子结点返回失败则其本身返回失败,否则继续执行下一个子结点。全部成功则其本身返回成功
Parallel:并行组合器,全部子节点执行成功则其本身成功,有一个子结点执行失败,则终止其余子结点执行,其本身返回失败
架构流程图
NPBehave本身就是通过Start,DoStart,Stop,DoStop以及Stopped来控制整个行为树运转的,但是有一些函数命名容易引起起义,所以我做了修改
与生命周期相关的函数基本就这几个,最重要的,也就是最开始提到的会影响我们三个组合器运行状态结果的,就是Stopped函数
示例
举个例子,就以Selector为例
开始执行时,会开始处理子节点
1234567891011121 ...
浅谈C++与C#泛型编程的区别与联系
前言
这阵子群友讨论了很多次C++模板元编程和C#泛型的区别,但是大家懂得,在QQ群讨论这种体量的论题,你一言我一语很难说清楚,尤其是大家对各种名词的理解和定义不一致的情况下,所以我决定今天整一篇文章,结合代码,浅谈一下C++和C#泛型编程的区别与联系。
个人水平有限,欢迎大家指正,补充。
名词定义
正如上面所说,每个人对于各种名词的认识之间可能存在着差别,所以在这里统一用我的方式定义一下以下名词
泛型:泛型是一种程序语言设计技术,具体体现为,我们事先写好一份泛型程序(这里叫模板更合适),其中有一些部分或者全部是运行时根据我们的写法确定的,然后生成这部分的新实例,最后执行的是这些运行时生成的新实例
C#泛型:C#2.0新增的泛型技术
C++泛型/模板/模板元:即与template关键字相关的泛型技术
正文
由于C++的泛型功能可以算是C#泛型的超集,所以下面就以C++各项泛型功能为基准对比这两个语言的泛型功能
泛型函数
C++
123456789101112class Generic_A{public: //声明与定义 template<typ ...
C#篇:C#中异步方法的性能特征
本文翻译自
https://blogs.msdn.microsoft.com/seteplia/2018/01/25/the-performance-characteristics-of-async-methods/ 在前两篇博客文章中,我们讨论了c#中异步方法的内部原理,然后讨论了c#编译器为调整异步方法的行为提供的扩展点。今天我们将探讨异步方法的性能特征。 正如您在本系列的第一篇文章中已经知道的,编译器做了很多转换,使异步编程体验与同步编程非常相似。但要做到这一点,编译器创建一个状态机实例,将它传递给一个异步方法构建器,调用task awaiter等。显然,所有这些逻辑都有自己的代价,但我们要付出多少代价呢? 在tpl之前,异步操作通常是相当粗粒度的,因此异步操作的开销可能可以忽略不计。但今天,即使是相对简单的应用程序每秒也可能有数百甚至数千次异步操作。TPL的设计考虑到了这种工作负载,但它并不神奇,它有一些开销。 要度量异步方法的开销,将使用我们在第一篇博客文章中使用的稍微修改过的示例。
12345678910111213141516171819202122232425262 ...