网络编程学习笔记-1

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

阅读更多

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

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

核心玩法

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

预期设计

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

自己设计一个游戏通用的2D摄像机累。Camera2D

在2D游戏开发中,摄像机是一个至关重要的组件,允许开发者控制玩家的视角,决定他们能看到游戏世界的哪些部分。这对于引导玩家的注意力和提供沉浸式体验非常重要,在战斗场景中聚焦于战斗区域;而在探索场景中扩大视野以展示更多的环境细节,跟随主要角色移动,确保玩家始终能够看到控制中的角色和周围的环境,将摄像机焦点对准可交互对象,用来提示玩家这些对象的存在和重要性,还可以用来实现特殊效果,如震动或动态缩放等,在下文中我们将会实现这样一个摄像机类用于自己的游戏。
ICON

阅读更多

开箱即用平滑插值大合集!OpenEasing!

在游戏或动画制作中,如何让一个对象或色彩等平滑过度,或在两个值之间平滑的自动分布一直以来是新人开发者的一大难题,很多同学没有那么多时间去寻找公式并将他们逐一实现,没关系已经有前人为我们铺好了路。Easing
ICON
网站中为我们实现了一系列用于时间缓动的函数与公式,但它并不是C++的,对于超级新手也不太容易使用,于是我花了一些时间对其中的实现进行了一些翻译为C++.

阅读更多

一些开箱即用碰撞检测!AABB

听说有群友已经不满足于,大V老师提供的简单检测方法了,那么让我们为自己的游戏增加更多有趣的碰撞检测罢!
全文采用AABB实现,包含矩矩,圆圆,矩圆,角度矩圆,椭圆,点矩,点环,点圆,点椭,等,必要情况下只要根据下文中的算法自行修改或嵌套使用即可!

阅读更多