EasyX图片处理

1.图片处理函数

1
2
3
4
5
void Resize(
IMAGE* pImg,
int width,
int height
);

参数

pImg

指定要调整尺寸的绘图设备。如果为 NULL,则表示默认绘图窗口。

width

指定绘图设备的宽度。

height

指定绘图设备的高度。

阅读更多

四叉树学习笔记

什么是四叉树,我们为什么使用它

在游戏开发的背景下,我们经常会遇到需要检测两个对象是否发生碰撞的情况。通过实现四叉树,我们可以减少需要检查碰撞的对象数量,只关注同一象限或相邻象限内的对象。

阅读更多

网络编程学习笔记-1

国庆期间,我在B站游戏开发区知名UP主Voidmatrix的指导下对如何制作联机游戏进行了初步的学习,学习了服务器程序是如何与客户程序进行沟通,初步使用了SDL_net的TCP协议,此篇文章对学习、探索过程的按照时间顺序进行回顾。

阅读更多

2D 游戏光照分析

本文将会介绍一个我正在制作的项目 PaperCraft 中有关游戏 2D 光照的实现. 提供一个低成本的基于有符号距离场可用于实时 2D 光照渲染的可行思路. 本文将会提供一种可能的 SKSL(Skia Shader Language)代码来实现该方法.

阅读更多

卡牌肉鸽开发日志01-游戏的核心玩法及预期设计

大家好啊,在暑期开始之前,一直有在群里讲过自己的计划————开发一款卡牌肉鸽游戏,在经历了漫长期末周后,现在终于正式开工了!

核心玩法

卡牌肉鸽这个门类中有许多优秀的前辈,例如杀戮尖塔、Balatro等等,其中有许多优秀的设计,例如杀戮尖塔费用、抽牌、卡牌攻防之间的关系,Balatro中小丑牌调整摆放顺序影响触发顺序,这些设计让它们具有风格各异的乐趣,提供了重复游玩的价值,我会在设计游戏时参考这些内容。
当然,一昧的模仿优秀的前辈并不能做出一款有意思的游戏,我制作的卡牌肉鸽区别于优秀前辈在于抽牌机制的设计,杀戮尖塔大概有以下几种抽牌的方式————卡牌效果、每回合开始抽牌、药水抽牌,Balatro则是有一个固定的卡牌上限每当出、弃牌时,都会抽牌直到达到上限,我的卡牌肉鸽手牌类似一条履带,有固定的卡牌上限,每此出最左处的牌时都会进行抽牌,举个例子,我出了2、3序号的牌时,不会抽牌,此时若出了序号为1的牌,便会一次性抽3张牌,基于这样的抽牌规则,卡牌效果的设计可以非常灵活,例如可以设计某张牌效果为下一次抽牌时根据抽牌数量造成高额伤害,这样便鼓励玩家做出保留大量空位的出牌策略。(灵感来源于计算机网络的滑动窗口协议)

预期设计

使用单例模式去管理游戏的内容,设计事件类,所有会改变游戏内容的玩家操作发送给事件管理器,由事件管理器进行事件的创建、更新、回收,设计对象池避免反复的创建、回收导致的性能浪费,用数据来描述逻辑,游戏内各种数值的设定通过json文件进行配置,通过随机数生成地图。

c++输入输出

学校对于这一节并没有教,当时看也只是模仿了上面的案例,不是很懂。现在在VoidMatrix的塔防教程中看到了这方面知识点相关,就想相对了解一下

1
2
3
4
5
6
7
8
std::fstream file(path);			
if (!file.good())return false;

std::stringstream str_stream;
str_stream << file.rdbuf();
file.close();

cJSON* json_root = cJSON_Parse(str_stream.str().c_str());

主要弄明白这一段代码的意思。

阅读更多

map&&unordered_map

map&&unordered_map

恰巧看到大V老师使用unordered_map来实现了资源池,那么便想在分析池的概念前,先弄清这个STL的提供的结构

将分析pair,map,unordered_map

我们将解决课程的以下疑问

  1. map和unordered_map的一些使用方法和概念(主要是解释map)?
  2. 为什么大v老师的使用下标【】的方法就可以构建新的对象?
  3. 大v老师的键值使用了枚举,那么对于unordered_map键值类型限制和map的键值类型限制具体有哪些,枚举为什么可以作为其键值(最后的比较会解释)?
阅读更多