LudoArt Blog

The programmer of tomorrow is the magician of the future.

【Unity编辑器扩展】Tree View

【Unity编辑器扩展】Tree View 前言:在尝试做编辑器扩展的一些内容的时候,总是能遇到不少新鲜的概念,但这些东西总归是碎片化的。不能让碎片化的东西总是碎片下去,故新开一个系列记录一下接触的东西。 Tree View是一种IMGUI的概念,虽然名字里带有tree,却不是一种传统意义上的树形结构。其主要是用于显示一堆分层的数据。 Tree View的内容在 Unity的官...

GAMES104

Lookup Table

Lookup Table Lookup Table Lookup Table,简写为LUT,可以将输入的颜色,通过查表的方式,映射到另一种颜色上。 颜色表示为三个分量值,其中每个分量决定了颜色所包含的红色、绿色或蓝色的量,如图所示的立方体可以表示屏幕上显示的任何颜色。 我们可以由蓝色轴对整个立方体进行切片,并将切片并排放在二维网格中。如将立方体切成16个切片,每个切片都包...

GAMES103

基于物理的计算机动画入门

Lab1: Angry Bunny impulse-based method:计算每个点的“速度”,求出此次的总冲量,使用冲量更新刚体的速度和位置 shape matching-based method:独立地计算每个点的速度和位置,然后强行更新每个点的位置,使其维持原来刚体形状不变 1. Basic Tasks: impulse-based metho...

2022年的碎碎念

2021年年终总结 说什么年终总结,其实不过是年终的一些碎碎念罢了。 本来应该在2021年的最后一天,起码也应该在2022年的第一天写下这些东西,但真正写的日期却是2022年的第二天了。 其实一开始还有些抗拒,觉得日子过去了就过去了呗,有什么好总结的,还能重来是咋滴? 纠结到了第二天,思来想去,它或许还有些意义吧。 2021年,是我完全脱离学校生活,完完整整工作了一年的第一年,这一...

Unity游戏优化

Unity游戏优化 第一章 研究性能问题 1.1 Unity Profiler Unity Profiler的细分视图主要包含了以下几个区域(每个区域对应了在做性能优化时需要注意的每个模块): CPU使用情况 GPU使用情况 渲染 内存(垃圾回收) 音频(音频需要大量潜在的磁盘访问和CPU处理) physics3D和physics2D(物理系统) 网络消...

Game AI Pro

效用理论导论

效用理论导论 基于效用系统的基本思想是,对所有可能的行为进行一次评分,并从中选取得分最高的行为。 效用理论的核心思想是,任何一个可能的行为,或者既定模型中任何一个状态,都可以用一个统一的价值来描述。这个价值,通常被称为效用,描述该行为在特定上下文中的有用程度。 效用不等同于价值。价值是一种客观可度量的量化数据。效用描述的则是我们对一件事物的渴望程度。 效用得分一致性。人们...

Game AI Pro

模拟行为树:一种行为树/规划器混合方法

模拟行为树:一种行为树/规划器混合方法 行为树 行为树允许我们将多个基础动作(如跳跃、踢击)组合成一个高层行为(如飞踹攻击)。 行为树可以进一步将该高层行为视作基础行为并由此构造更高层次的行为(如攻击)。 “约束”可以被附加在树形结构中任意层级的行为节点上,用于指定一系列状态需求,并保证当世界状态不满足需求时,相应行为不会被选定。 行为树示例 行为树的优点 ...

游戏编程精粹1

第一章:通用编程技术

1.0 神奇的数据驱动设计 逻辑部分定义游戏引擎的核心原则和算法,数据部分则提供其内容和行为的具体细节。 1.0.1 基础 创建一个能按需解析文本文件的系统。意义在于——不用修改一行代码,就可以进行各种新尝试。 1.0.2 最低标准 不要用硬编码常量,把常量放进文本文件中。 1.0.3 杜绝硬编码 要假定任何东西都可能(并且很有可能)改变。对游戏进行抽象,把其核心部分抽...

Unity Shader

Unity Shader结构

Unity Shader结构 基础结构 Shader "ShaderName"{ Properties{ // 属性 } SubShader{ // 显卡A使用的子着色器 } SubShader{ // 显卡B使用的子着色器 } Fallback "VertexLit" } Shader的名字 每个Unity Shader文件的第一行都需要通过Shader...

世嘉新人培训教材

第一章:第一个游戏

第一章:第一个游戏 第一个游戏是做一个“推箱子”游戏。 以下是自己写的: #include <iostream> #include <stdlib.h> using namespace std; struct pos { int x; int y; }; char player = 'P'; char box = 'o'; char wall = '#'...