探索经典与现代的完美结合:Permafrost Engine 开源游戏引擎

探索经典与现代的完美结合:Permafrost Engine 开源游戏引擎

permafrost-engine An OpenGL RTS game engine written in C 项目地址: https://gitcode.com/gh_mirrors/pe/permafrost-engine

项目介绍

Permafrost Engine 是一款基于 OpenGL 3.3 的实时战略(RTS)游戏引擎,采用 C 语言编写。它不仅继承了经典 RTS 游戏的精髓,还融入了现代游戏开发的新理念。Permafrost Engine 的核心目标是为开发者提供一个强大且灵活的工具,帮助他们创造出既怀旧又创新的游戏体验。

项目技术分析

Permafrost Engine 的技术架构设计精巧,涵盖了从图形渲染到物理模拟的多个层面。以下是一些关键技术点:

  • 图形渲染:采用 OpenGL 3.3 可编程管线,支持现代扩展,如 Phong 反射模型、法线贴图和方向光阴影映射。
  • 动画系统:支持骨骼动画和 GPU 蒙皮,确保角色动作流畅自然。
  • 地图渲染:通过 ASCII 文件解析和自定义模型格式,实现高效的地图渲染和编辑。
  • 水体渲染:包括反射、折射和软边效果,提供逼真的水体表现。
  • 路径寻找:集成多种路径寻找算法,如层次流场路径寻找和动态障碍物处理,确保单位移动的智能和高效。
  • 多线程支持:采用两阶段流水线,分别处理模拟和渲染,提升性能。
  • 跨平台:支持 Linux 和 Windows 系统,确保开发者的灵活性。

项目及技术应用场景

Permafrost Engine 适用于多种 RTS 游戏开发场景,尤其是那些希望在经典游戏基础上进行创新和扩展的开发者。无论是开发新的 RTS 游戏,还是对现有游戏进行深度定制,Permafrost Engine 都能提供强大的支持。

项目特点

  1. 经典与现代的融合:Permafrost Engine 不仅保留了经典 RTS 游戏的核心元素,还引入了现代游戏开发的先进技术,如多线程处理和高级渲染技术。
  2. 高度可定制:引擎内部通过 Python 2.7 暴露给开发者,允许进行深度定制和脚本编写,满足不同开发需求。
  3. 强大的编辑工具:内置地图和场景编辑器,支持实时编辑和预览,极大提高了开发效率。
  4. 高效的性能:通过多线程处理、批量渲染和空间索引等技术,确保在大规模地图和复杂场景下的高效性能。
  5. 丰富的功能集:从基础的图形渲染到复杂的路径寻找和物理模拟,Permafrost Engine 提供了全面的功能支持。

结语

Permafrost Engine 不仅是一个功能强大的 RTS 游戏引擎,更是一个充满创新和可能性的开发平台。无论你是经验丰富的开发者,还是刚刚起步的新手,Permafrost Engine 都能为你提供所需的工具和支持,帮助你创造出令人惊叹的游戏作品。立即访问 GitHub 项目页面,开始你的游戏开发之旅吧!

permafrost-engine An OpenGL RTS game engine written in C 项目地址: https://gitcode.com/gh_mirrors/pe/permafrost-engine

作者对游戏的说明: 首先,您应当以一种批判的眼光来看待本程序。这个游戏是我制作 的第一部RPG游戏,无任何经验可谈,完全按照自己对游戏的理解进 行设计的。当我参照了《圣剑英雄2》的源码之后,才体会到专业游 戏引擎的博大精深。 该程序的内核大约有2000余行,能够处理人物的行走、对话、战斗, 等等。由于该程序的结构并不适于这种规模的程序,故不推荐您详 细研究该程序。所附地图编辑器的源程序我已经添加了详细的注释, 其程序结构也比较合理,可以作为初学VC的例子。 该程序在VC的程序向导所生成的SDI框架的基础上修改而成。它没有 使用任何关于VC底层的东西。程序的绝大部分都是在CgameView类中 制作的,只有修改窗口特征的一段代码在CMainFrm类中。其他的类 统统没有用到。另外添加的一个类是CEnemy类。 整个游戏的故事情节分成8段,分别由Para1.h ~ Para8.h八个文件 实现。由于程序仅仅能够被动的处理各种各样的消息,所以情节的 实现也只能根据系统的一些参数来判断当前应当做什么。在程序中 使用了冗长的if……else if……结构来实现这种判断。 当然,在我的记录本上,详细的记录了每个事件的判断条件。这种 笨拙的设计当然是不可取的。成都金点所作《圣剑英雄II》采用了 剧本解读的方式,这才是正统的做法。但这也需要更多的编程经验 和熟练的code功夫。 下面列举的是程序编制过程中总结出来的经验和教训。 第一,对话方式应该采用《圣剑英雄II》的剧本方式。 现在的方式把一个段落中所有的对话都混在一个文件中,然后给每 句话一个号码相对应。这样做虽然降低了引擎的难度,却导致剧情的 编写极其繁琐。 第二,运动和显示应当完全分开。 现在的程序中,运动和显示是完全同步的。即:在定时器中调用所有 敌人的运动函数,然后将主角的动画向前推一帧,接着绘制地图,调 用所有敌人的显示函数、重绘主角。这样的好处是不会掉帧,但带来 的问题是,如果要提高敌人的运动速度,那么帧数也跟着上去了。所 以当DEMO版反馈说速度太慢的时候,我修改起来非常困难。而这个问 题到最后也仅仅是将4步一格该成了2步一格。 第三,VC中数组存在上限。如果用“int aaa[1000000000]”定义一个 数组,编译器肯定不会给分配那么大的内存空间。而在这个程序中, 地图矩阵、NPC矩阵都超过了VC中数组的上限。但这一点知道的太晚了。 在1.0版本中已经发现地图最右端缺少了几行,但不知道是什么原因 造成的。(地图编辑器中未出现此问题,因为地图编辑器是用“序列 化”的方式存盘读盘的。)解决这个问题的方法是用“new”来分配 内存空间。 第四,由于不知道应该如何使用“new”和“delete”,几乎所有的DC 都使用了全局变量。这是完全没有必要的。程序运行期大约会耗用20 多M的内存空间,相当于一个大型游戏所使用的内存空间了。 另外,在游戏的剧情、美工方面也有许多问题,总之一个词“业余”。 我就不总结了。下一部作品,我将争取在程序上有一个质的飞跃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金畏战Goddard

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值