IndieLib - 快速游戏开发
IndieLib 是一款 C++ 2.5D 引擎,可用于以非常简单的方式进行游戏开发和快速游戏原型制作。
引言
你好!
我非常激动地宣布 IndieLib 游戏引擎的首次发布。在过去几年里,我一直致力于这个项目,付出了艰辛的努力。它始于一个爱好,现在已成为一个相当强大的 2D 引擎,我认为它对游戏社区,特别是独立游戏开发者来说会很有用。因此,我想免费提供给你们所有人,希望能对你们中的一些人有所帮助。
IndieLib 的主要目的是让游戏开发者的工作更加轻松,尤其是那些热爱尝试新游戏机制和快速游戏原型制作的开发者。我曾对 Experimental Gameplay Project 的勇士们以及我每天在 TigSource 或这些论坛上看到的东西感到震惊。在看到这些开发者仅仅一周就能取得的成就后,我决定重新开始一个名为 LooverLib
的旧项目,并试图在这个引擎中打包许多有用的功能,以便能够使用 C++ 快速制作游戏。我希望任何了解一点编程知识的人都能更快、更轻松地表达他们的想法。我知道这个首次发布尚未完全实现这个目标,但我希望走在正确的道路上。
IndieLib 是一款 C++ 2.5D 开源引擎,可用于以非常简单的方式进行游戏开发和快速游戏原型制作。内部使用 Direct3d 进行硬件加速,但不使用 DirectDraw 或 ID3DXSprite,它直接在多边形上绘制纹理。该引擎专注于快速 2D 渲染,但也允许您使用 3D 模型。以下是主要功能列表:
- 简单的界面和极大的易用性:使用实体(entity)表示每个图形对象并更改其属性,可以实现非常快速的游戏原型制作。所有方法都非常简单,如“
SetPos
”、“SetCollisionArea
”、“SetFade
”、“SetTransparency
”等。 - 精灵(Sprite)的平移、旋转、镜像和缩放。
- 精灵的 Alpha 混合、透明度、着色和淡入淡出。
- 渲染任意尺寸的图像(不只是 2 的幂次)。您可以加载高达 10000x10000 像素或更大的图像,IndieLib 会在内部将其分割成更小的块。此外,IndieLib 会自动丢弃屏幕外的所有块,即使您的精灵被变换、摄像机进行缩放或旋转,只有您看到的部分才会被渲染。
SetGrid
方法,用于为您的精灵创建网格。之后,您可以移动每个网格点以实现许多不同的效果,如波浪(类似于 Aquaria 游戏)、变形等(感谢 Alec 的建议 :))。- 2D 和 3D 相机概念,与图形对象完全独立。轻松平移、旋转或缩放您的相机的简单方法。
- 轻松创建多个视口(viewport)。只需使用分配给它们的、不同的相机创建任意数量的视口。这对于制作宽屏游戏等非常有用。
- 任意尺寸的滚动(scrolls),带有自动块丢弃。
- 使用 XML 动画脚本的动画系统,用于定义帧和序列。
- 高级碰撞系统。创建一个 XML 文件,使用圆形、矩形或三角形为每个精灵定义碰撞区域。您可以定义任意数量的碰撞组,每个组都有不同的名称。将此文件连接到实体对象,并检查与其他实体的碰撞组之间的碰撞。无需担心平移、旋转或缩放实体,碰撞组将始终完美匹配您的实体。您还可以使用精灵动画,其中每个帧都有不同的碰撞组(想象一下在“街头霸王”类型游戏中的这个功能)。
- 位图字体系统,用于绘制使用 MudgeFont 为 IndieLib 创建的字体的图形文本。轻松更改对齐方式、字符间距和行间距。
- 渲染 3D 网格(您可以轻松混合 2D 和 3D)。您还可以对其应用变换(旋转、缩放、淡入淡出等)。这将允许您制作像“新超级马里奥兄弟”这样的游戏,其中角色是 3D 模型,而场景是 2D 的。
- 光照管理器,用于照亮您的 3D 模型。启用/禁用灯光,更改其属性等。
- 计时器。轻松启动、停止、暂停它们。
- 实体(Entity)类,用于 2D 和 3D 对象,以非常简单的方式管理图形对象。只需创建一个实体,将其与图形对象关联,然后更改其属性(空间变换、颜色变换等)。
- 图像(Image)类,用于加载/保存不同类型的图像文件以及直接访问位图。您还可以对图像应用滤镜,如高斯模糊、噪点、均衡、饱和度等。
- 直接绘制图元(矩形、圆形、多边形、线条等)。
- 鼠标和键盘输入(使用 SDL)。检查是否有按键/按钮被按下、正在被按下或已按下超过 n 毫秒。检查同时按下的按键/按钮组合。
在 FAQ 中解释了更多内容,您可以在 存储库 下根据 LGPL 许可证获取源代码。
想看看这个引擎的实际运行效果吗?您可以查看一些 截图,或者下载 IndieLib_SDK 并运行已经编译并准备好试用的教程(您无需了解任何编程知识即可点击 .exe 文件并查看演示教程;尝试按下箭头键和鼠标按钮/滚轮,因为其中一些是交互式的)。
但是,没有文档的引擎毫无意义。为此,我花费了大量、大量的时间来记录所有方法(希望我的英语没有太多错误),并制作了一些教程(未来几个月还会有更多)。
我真的希望这个引擎对你们中的一些人有所帮助,并且你们能用它制作出令人难以置信的游戏。我邀请你们所有人加入我们的 论坛,如果你们中的一些人愿意帮助我,我将非常高兴。
只需点击并下载最新的 IndieLib_SDK(它包括 IndieLib 二进制文件、教程源代码和 .exe 文件,以及文档)。开始制作游戏吧!
此致,
Javier López
附注:抱歉我肯定犯的一些错误,我的英语不太好。