网络编程学习笔记-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的键值类型限制具体有哪些,枚举为什么可以作为其键值(最后的比较会解释)?
阅读更多

基于SDL的一些实用工具(一):Camera以及SDL_RenderCopy_Camera函数

看了大V老师的SDL课程之后,突然心血来潮,抛弃了EasyX而投向了SDL的怀抱中。
过程总是困难重重,所以少不了轮子的制造。
基于SDL的一些实用工具 是一个大的合集,可能会有后续更新。

那么这次的内容就是在SDL中实现Camera的基础操作,以及实现有关Camera的SDL_RenderCopy_Camera函数。

阅读更多

简单的单例模式实现

跟着大v老师学习的时候学习到了这个设计模式,因为马上要去gamejam,学长跟我说滥用单例就好了(bushi,就因此感兴趣了解一下,顺带巩固一些C++语法知识点,学的时候注意不到,用的时候就印象深刻了。

接下来我会先对照课本复习一下类内的静态变量,然后对照网上的单例文章和课程代码写点东西(因为锁和线程我不了解,就基于大V老师教的简单写写)

阅读更多

C++类的继承

类的继承

在游戏开发中,我们对于一些GameObject都会创建基类,然后通过继承创建出不同的游戏对象,这有利于我们更好的管理角色或者其他对象。在植物明星大乱斗中,我们不论是子弹,玩家,场景都是通过创建基类再进一步继承创建相应的对象。

那今天就好好看看关于继承方面要注意的语法点


阅读更多