奥日&&空洞玩后感
最近游戏荒了,很想找点游戏玩玩,请教了群友们,都是推荐了那些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常用功能,易于拓展,性能优秀,可以做到一次导出,各处使用,开发效率也很高。无疑更加适合独立游戏团队或者个人开...
计算机组成原理复习纲要
计算机系统概述 冯 诺依曼计算机 五大功能部件 基本要点 计算机由五大部件组成,采用二进制形式表示数据和指令。 采用存储程序方式。 输入设备 将程序和数据以机器所能识别和接受的信息形式输入到计算机内。 比如键盘、鼠标、扫描仪、语音输入设备、手写笔、触摸屏、数码摄像设备等。 输出设备 将计算机处理的结果以人们所能接受的信息形式或其它系统所要求的信息形式输出。 如显示器、打印机、绘图仪 、音箱等。 存储器 用于存放程序和数据。存储器是计算机存储信息的核心。 主存储器(主存,内存) CPU能直接访问,主存分为若干个存储单元,每个单元都有唯一的地址编码,通常是按字节或字节的整数倍编码。存储器总是按地址访问的, 辅助存储器(外存,辅存) CPU不能直接访问,辅存中的信息必须调入主存后,才能为CPU所使用。 辅存速度较慢,但容量大,用于存放CPU暂时不用的程序和数据。 比如软盘、硬盘、光盘、磁带机等。 运算器 用于对数据的加工处理,完成算术逻辑运算。 组成 核心是算术逻辑部件(Arithmetic and Logical Unit),简称为ALU。 还有若干寄存器,用于存放操作数、中间结...
从零开始分析C#所有常用集合类的设计(源码向)
前言 此些天来,武疫兴然,吾甚惧焉,居家不出,项目做完,游戏玩腻,根亦秃噜,百无聊赖,猛然惊醒,吾当面试,基础犹菜,从何下手,唯有C#,C#之何,集合为多,多而不晓,遂有此文。 环境 .Net Framework 4.8 前置知识 Hash Hash算法无论是在项目开发还是底层语言设计上都是非常常见的一个算法,既然如此常用,那么它的重要性自然不必多说,这也是把它放在第一位讲的原因。 Hash算法与Hash函数 Hash算法是一种数字摘要算法,它能将不定长度的二进制数据集给映射到一个较短的二进制长度数据集。常见的MD5算法就是一种Hash算法,通过MD5算法可对任何数据生成数字摘要。而实现了Hash算法的函数我们叫它Hash函数。Hash函数有以下几点特征。 相同的数据进行Hash运算,得到的结果一定相同。 不同的数据进行Hash运算,其结果也可能会相同。 Hash运算是不可逆的,不能由key获取原始的数据。 常见的Hash算法 直接寻址法:取keyword或keyword的某个线性函数值为散列地址。即H(key)=key或H(key) = a•key + b,当中a和b为常...
那些年我喜欢的主播——曾经的我长大了,他们却不在了
今天天气很好,但是昨天睡得很晚,第一节又有课,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:显示在材质面板上的名字 //PropertyType:...
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天没日没夜开着...
软件工程重点知识整理
前言 。。。没啥好说的,真是太痛苦了 基础知识汇总 单句 一 从结构化的瀑布模型看,在它的生命周期中的各阶段中,需求分析阶段出错,对软件的影响最大。 螺旋模型将瀑布模型和演化模型相结合,并增加了风险分析。 结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的数据流。 进行需求分析可以使用数据流图(DFD),判定表,数据字典。 在面向数据流的软件设计方法中,一般将信息流分为变换流和事务流。 PAD图的控制执行流程为自上而下,从左到右。 概要设计阶段产生的文档包括概要设计说明书,数据库设计说明书,用户手册。 与选择编程语言有关的因素是软件开发的方法,软件执行的环境,软件开发人员知识。 软件工程针对维护工作的主要目标是提高软件的可维护性,降低维护的代价。 开发软件工具的主要目的是为了提高软件生产率和改善软件质量。 在软件需求分析中,必须采用合理的步骤,才能准确地获取软件的需求,可归纳为4个步骤:需求获取,分析建模,文档编写,需求验证。 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度,模块间的耦合性越高,其模块的独立性就越弱。 在面向对象的设计方法中,对象和传...
常用排序算法汇总
前言 记录并分析常用排序算法,方便自己日后查阅。 环境 语言: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 (...