LudoArt Blog

The programmer of tomorrow is the magician of the future.

Game AI Pro

《星球大战》的绝地武士AI设计

《星球大战》中的绝地武士AI 示例代码可以通过网站 http://www.gameaipro.com 下载demo。 存储 绝地武士AI需要的第一件东西是关于整个游戏世界的内部知识图谱,为此我们需要一个世界状态模型。它包含了在游戏世界中,可以通过动作(Action)操作的所有事物,包括绝地武士自身、绝地武士当前正在攻击的目标、附近的敌人和任何即将到来的威胁等。 它包含了两个函...

通用为本,专用为末

【深入理解C++11】第三章

通用为本,专用为末 1. 继承构造函数 适用场景:当基类A有很多构造函数的版本,而派生类B想要拥有A那么多的构造方法时,会造成不便。 使用方法:通过using声明来声明继承基类的构造函数。 优点:书写便捷;节省目标代码空间(继承构造函数如果不被相关代码使用,编译器不会为其产生真正的函数代码) 缺点:只会初始化基类中的成员变量,对于派生类中的成员变量,则无能为力。 示...

Unity Editor Scripting

1.构建一个自定义的Inspector using UnityEngine; using System.Collocetions; public class LevelScript : MonoBehaviour { public int experience; public int Level{ get { return experience ...

【游戏制作知识杂烩】

关于战旗游戏中的六边形网格

【游戏制作知识杂烩】关于战旗游戏中的六边形网格 六边形网格有多种不同的存储形式,各有特点,对比结果见下表:   Offset Doubled Axial Cube Pointy rotation evenr, oddr doublewidth ...

【游戏编程模式】原型模式

原型模式

【游戏编程模式】原型模式 原型设计模式 假设我们要用《圣铠传说》的风格做款游戏。 野兽和恶魔围绕着英雄,争着要吃他的血肉。 这些可怖的同行者通过“生产者”进入这片区域,每种敌人有不同的生产者。 在这个例子中,假设我们游戏中每种怪物都有不同的类——Ghost,Demon,Sorcerer等等,像这样: class Monster { // 代码…… }; class Ghost ...

【游戏编程模式】单例模式

单例模式

【游戏编程模式】单例模式 单例模式 设计模式像这样描述单例模式: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点。 保证一个类只有一个实例 有时候,如果类存在多个实例就不能正确的运行。 通常发生在类与保存全局状态的外部系统互动时。 考虑封装文件系统的API类。 因为文件操作需要一段时间完成,所以类使用异步操作。 这就意味着可以同时运行多个操作,必须让它们相互协调...

【游戏编程模式】观察者模式

观察者模式

【游戏编程模式】观察者模式 观察者应用广泛,如MVC架构。 Java将其放到了核心库中(java.util.Observer),而C#直接将其嵌入了语法(event关键字) 案例:成就解锁 假设我们向游戏中添加了成就系统。 它存储了玩家可以完成的各种各样的成就,比如“杀死1000只猴子恶魔”,“从桥上掉下去”,或者“一命通关”。 要实现这样一个包含各种行为来解锁成就的系...

【游戏编程模式】享元模式

享元模式

【游戏编程模式】享元模式 案例一:森林 每棵树都有一系列与之相关的位: 定义树干,树枝和树叶形状的多边形网格。 树皮和树叶的纹理。 在森林中树的位置和朝向。 大小和色彩之类的调节参数,让每棵树都看起来与众不同。 如果用代码表示,那么会得到这样的东西: class Tree { private: Mesh mesh_; Texture bark_; T...

【游戏编程模式】命令模式

命令模式

【游戏编程模式】命令模式 命令是具现化的方法调用。 命令模式是一种回调的面向对象实现。 案例 在每个游戏中都有一块代码读取用户的输入——按钮按下,键盘敲击,鼠标点击,诸如此类。 这块代码会获取用户的输入,然后将其变为游戏中有意义的行为。 下面是一种简单的实现: void InputHandler: handleInput() { if (isPressed...

Unity中级编程

Unity中级编程 创建属性 从类的外部去访问这个类的成员变量,有两种方法:第一种是通过定义公共变量,第二种是通过使用属性的办法(更佳) 使用属性的办法可以完成公共变量无法实现的操作: 通过省略get或set将字段变为只写或只读 可以将访问器视为函数,这表示你可以在访问器内部执行其他操作 using UnityEngine; using System.Collectio...