剑孤寒的小站

人生的价值不是用时间,而是用深度去衡量的!
posts - 75, comments - 290, trackbacks - 0, articles - 0
Galaxy2D Game Engine 4.2 开发版  下载地址  D3DRender


最近这边不能评论了,到主站上新建了个博客,请大家移步新博客:


注意:
1.下载后的压缩包请使用WinRar5.0打开。
2.开发版包含了现在正在开发中的Galaxy2D游戏引擎全部新特性,可能包含一些未知bug,如果在使用中发现问题或bug请在此页留言。

 

版权声明:

1. 本软件著作权归沈明所有,保留所有权利。任何个人或团体可以免费使用本引擎开发商业或非商业用途的游戏和程序,可以修改和使用公开发布的源代码,同时可以任意转载复制本引擎,但必须保证复制的完整性。
2. 不得对本游戏引擎进行反向工程、反向编译或反汇编,不得对本引擎所含的代码库及附带的工具程序作任何修改,破坏引擎的完整性。
3. 本游戏引擎是免费软件,对于由于使用本引擎引起的任何不良后果,用户必须自己承担风险,如果用户使用本引擎用于任何非法目的,用户必须独立承担由此带来的法律责任。


引擎说明:

Galaxy2D游戏引擎是一个基于D3D硬件加速的2D游戏引擎,主要特性有:

1. 支持高性能的图形渲染及特殊效果(如:缩放、旋转、透视、alpha混合等)
2. 支持常用音频格式(wave, ogg, mp3),提供高效的并发播放等功能,支持3D音效
3. 支持常用图片格式(bmp, png, jpg, tga, dds),支持alpha通道自动混合等
4. 提供高性能的字体渲染模块,支持中文等语言,支持TrueType和图片字体
5. 提供资源数据载入模块,支持文件包数据读取,自带文件打包加密工具
6. 提供资源管理模块,简化游戏中的资源管理,并带有资源管理器
7. 提供高效的粒子系统以及粒子编辑器
8. 提供易用的GUI模块以及GUI编辑器
9. 支持载入和显示任意尺寸图片
10. 支持视频播放和打包加密功能

 


运行环境:

Windows 98 及以上操作系统
DirectX 9.0c

编译器支持:

Microsoft Visual Studio 2003 及以上版本


联系方式:

主页地址: http://www.cppblog.com/jianguhan/
电子邮箱: jianguhan@126.com

评论共2页: 1 2 

Feedback

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-09-30 13:17 by 剑孤寒
更新记录:
4.1
◆修改一个会引起纹理内存占用过高的bug
◆ggeTextureSaveToFile()函数添加DDS格式支持
◆TexturePacker添加导出dds压缩格式纹理功能
◆粒子系统添加发射器属性
◆粒子系统添加渐变颜色属性
◆重写字体引擎,支持非等宽字体,提升绘制效率,支持创建自定义字体
◆字体引擎去掉GDI绘制字体功能
◆提升XML模块解析速度(40%以上),降低内存占用量(20%以上)
◆移除XML模块不常用函数
◆移除ggeMusic模块
◆ggeSound模块去掉不常用函数

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-10-31 22:12 by fantod
Render4V (float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)

可以画出正常的不规则的四边形吗!

好像画出的梯形不对

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-10-31 22:17 by fantod
ggefont中的SetColor (gUInt color)方法,会引用地址有问题

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-11-14 22:34 by kuyu
有相关的易语言的开发模块么,谢谢能提供。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-12-28 17:53 by 剑孤寒
@fantod
Render4V (float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3)
可以画出正常的不规则的四边形吗!
好像画出的梯形不对


可以的,请确定顶点都设对没有


----------------------------------------------------


ggefont中的SetColor (gUInt color)方法,会引用地址有问题
请确定字体创建成功没有,注意,从该版本不再支持系统字体,只能从ttf之类的文件创建字体

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2013-12-28 17:54 by 剑孤寒
@kuyu
抱歉,暂时没有开发易语言版本的计划

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-01-26 11:28 by 剑孤寒
Update (2014-1-26):
◆修改ggeGuiLoader可以设置一个默认创建函数
◆ggeSprite删除RenderEx等函数,添加SetPosition等函数用于设置渲染位置,只在必要时刷新渲染位置即可
◆粒子系统去掉useFadeColor属性,增加fadeColorWeight属性,用于控制渐变到过渡颜色的速度
◆重构ggeRenderObj
◆重构Gui系统
◆TexturePacker文件列表增加图标以区分文件和目录
◆TexturePacker文件列表增加自动排序功能
◆TexturePacker增加纹理缩放功能
◆TexturePacker修改导出文件字段名,详见工具文档
◆TexturePacker添加纹理尺寸检测功能,尽可能生成小于最大纹理尺寸的纹理

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-07 11:54 by baidwwy
gui编辑器,打开例子2,编辑皮肤,怎么看不到图片

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-09 23:08 by 剑孤寒
@baidwwy
此问题已修正,引擎已重新发布,感谢反馈!

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-10 13:46 by 剑孤寒
Update (2014-2-10):
◆ggeSprite修改初始化和用SetPosition()方式渲染时,设置纹理自动重设顶点坐标到纹理大小
◆修改GUI编辑器编辑皮肤无法看见贴图的问题

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-21 04:03 by baidwwy
Graph_BeginScene
如果渲染到目标纹理,里面的东西都变淡了,这是bug?

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-21 23:58 by 剑孤寒
@baidwwy
不知道你代码是怎么写的,正常来说是不会变淡的,请确定创建的渲染目标纹理是不带alpha通道的,那个是留作特殊用途的,通常情况并不需要创建带alpha通道的渲染目标纹理

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2014-02-25 22:02 by 路人甲
希望恢复GDI字体或开源 4.0的字体源码.

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-27 09:47 by 剑孤寒
@路人甲
不知你为啥要用到GDI字体,个人觉得那玩意显示的文字质量实在不咋地,没必要再用了

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2014-02-27 16:30 by 路人甲
@剑孤寒
现在的字体显示小字体时,又粗又大,再小,就完全看不见...

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-02-28 16:01 by 剑孤寒
@路人甲
嗯,稍后加上反锯齿开关,小字体关掉反锯齿就行了

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-02 18:29 by baidwwy
Graph_SetClipping
不管任何值为0,都会失效.
建议增加截图到内存

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-03 10:11 by 剑孤寒
@baidwwy
Graph_SetClipping
不管任何值为0,都会失效.

这是个bug,稍后修复,感谢反馈

--------------------------------------

建议增加截图到内存

这个可以用Graph_GetRenderTarget()函数获取当前屏幕截图到内存,然后可以用ggeTexture::SaveToFile()函数保存到文件,如果你获取上面的颜色值,需要在创建渲染目标纹理时设置TARGET_LOCKABLE标志,然后在调用Graph_GetRenderTarget()函数后就可以用ggeTexture::Lock()函数获取上面的颜色值了

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-03 10:47 by 剑孤寒
Update (2014-3-3):
◆创建渲染目标纹理函数Texture_CreateRenderTarget()添加targetType参数
◆创建字体函数Font_Create()添加抗锯齿参数
◆ggeResManager::CreateCustomFont()添加抗锯齿参数
◆修改ggeGuiRichText某些属性改变没有刷新显示内容
◆修改GUI在Debug模式下可能会崩溃的问题
◆修改Graph_SetClipping()若某一项为0时设置无效的Bug
◆资源文件字体粗体属性名修改成“Bold”,以前ResEditor中设置的粗体字体需要重新设置
◆资源编辑器添加字体抗锯齿设置
◆GUI编辑器添加字体抗锯齿设置

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-18 20:00 by baidwwy
Texture_Load 载入的DDS16位565图像
Lock返回的并不是32位像素,而是16位
这样就没有办法设置alpha了,请问这个是否BUG?

引擎启动参数都是默认的.

如果不行只能用Texture_Create了...

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-19 20:06 by baidwwy
如果没有使用SetPosition
那么SetTextureRect也是无效的.

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-03-20 10:36 by 剑孤寒
@baidwwy
Texture_Load 载入的DDS16位565图像
Lock返回的并不是32位像素,而是16位
这样就没有办法设置alpha了,请问这个是否BUG?

出于效率和内存占用等方面的考虑,dds格式图片载入时并不转换成32位颜色纹理,可用dds格式算法获取或设置上面的像素颜色,或者像这类图片不要使用dds格式,可以使用png之类的格式

--------------------------------------------------------------

如果没有使用SetPosition
那么SetTextureRect也是无效的.

理论上来说 SetPosition 跟 SetTextureRect 是完全没有关系的,应该不会有这样的问题,请确保已经使用最新版的引擎,如果还有问题,请贴一小段能重现问题的代码,以便调试

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-04 22:29 by baidwwy
建议增加无边框参数.让窗口无边框,像DNF
虽然可以通过SetWindowLongA来设置,但会闪一下有边的才消失.

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-07 12:40 by 剑孤寒
这个可以通过消息处理函数来解决,先添加一个全局函数如下:
bool WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
if (msg == WM_STYLECHANGING && wparam == GWL_STYLE)
{
STYLESTRUCT *StyleStruct = (STYLESTRUCT*)lparam;
StyleStruct->styleNew = WS_POPUP|WS_VISIBLE;
}

return false;
}

然后在调用System_Initiate()函数前设置消息处理函数即可:
System_SetState(GGE_MESSAGEFUNC, WndProc);

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-07 16:28 by baidwwy
非常感谢,受教了.@剑孤寒

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-19 13:30 by baidwwy
取INI 文本的长度限制了255,Ini_GetString
这个有没有可能更新.

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-21 10:31 by 剑孤寒
对于长度比较大的字符串建议保存到资源文件或者用XML模块保存xml文件里,如果你一定要用ini文件,可以直接调用GetPrivateProfileString()函数,例如:
char buffer[1024];
GetPrivateProfileString(section, name, def_val, buffer, 1024, "config.ini");

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-27 18:17 by chyi
不知道易语言能不能调用呢?

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-07-28 10:32 by 剑孤寒
易语言应该可以调用c++的dll里的函数的吧,对易语言不熟,你可以试一下,如果不行,也可以自行用c++简单封装一下导出成易语言可以用的dll就行了

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2014-09-21 12:02 by 剑孤寒
Update (2014-9-21) :
◆ggeParticleInfo添加rotToDir参数
◆添加多种扩展Alpha混合方式(ALPHA_BLEND_MODE),可以与BLEND_MODE组合使用
◆添加GenAlphaBlendModeArg()/GenAlphaChannelBlendModeArg()函数用于生成Alpha混合模式参数和Alpha通道混合模式参数
◆添加GGE_MAXTEXTUREUNIT系统状态用于获取显卡支持的最大纹理单元数
◆添加GGE_ALPHARENDERTARGET系统状态用于检测显卡是否支持创建带Alpha通道的渲染目标纹理
◆删除ggeResManager::GarbageCollect()函数,添加 ResManager_GarbageCollect()函数
◆ggeXmlNode添加SetCData()/IsCData()函数

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2015-01-15 14:51 by fox
@kuyu
有。易语言论坛曾经有人发布过

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-01-17 19:54 by 李乐天
嘻嘻

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-03-24 14:47 by baidwwy
建议 画线能设置粗细.

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-03-25 09:44 by 剑孤寒
@baidwwy
要画粗线可以用ggeSprite::Render4V()函数,自己算一下四个定点的坐标就好了

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-04-13 10:58 by baidwwy
建议支持从像素创建纹理
比如纹理锁定返回的指针,
或是删除了TGA文件头的文件,只要提供宽高.颜色格式RGBA等信息

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-04-14 09:33 by 剑孤寒
@baidwwy
从像素创建纹理可以手动创建一个纹理,lock后把像素复制上去即可,作为一个程序猿,不可以太偷懒哈,至于从删除了文件头的文件创建纹理,你为啥会有这种需求?直接从原始文件创建有什么问题?

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-04-17 11:10 by baidwwy
@剑孤寒
我已经发现了^^
引擎非常好用,非常感谢!

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-04-17 11:12 by baidwwy
不知是否可以创建个群。。有时发现问题(其实是不会用)
很难找到交流。。。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-04-20 13:00 by 剑孤寒
@baidwwy
这个其实以前就有同学提过,不过因为各种原因,我基本上都不用聊天工具的,所以就一直没弄,发现问题还是直接在这问或者发邮件给我吧

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2015-05-07 23:13 by fox
当创建引擎时,如果传入的窗口宽度小于三个控制按钮(最小钮+最大钮+关闭钮)的宽度会出现一件神奇的事情,您可以测试一下。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-05-08 09:25 by 剑孤寒
@fox
!_!你这是要做一个用放大镜才能玩的游戏么...

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2015-05-10 16:18 by fox
ggeSprite调用SetTextureRect设置了显示区域,然后如果不SetPosition设置渲染位置的话,显示出来的效果就变成了拉伸缩放,且显示区域也不是设置的Rect,而是原来的大小。不知是不是BUG

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-05-11 12:20 by 剑孤寒
@fox
这个不是bug,如果修改了纹理显示区域必须调用一次SetPosition函数来刷新sprite的顶点位置,否则用原顶点位置显示就会变成拉伸的样子了,考虑到再调用一次SetPosition函数并不困难,所以之前没有在sprite上增加自动刷新顶点的代码,还可以省去一些内存消耗和一些不必要的计算,不过现在电脑性能也越来越好了,这点消耗应该也没什么大问题,下个版本考虑加一下自动刷新功能好了

# re: Galaxy2D Game Engine 4.1 开发版 发布 [未登录]  回复  更多评论   

2015-05-11 21:38 by ben
强烈要求开源,开源大家学习学习

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-05-12 08:37 by 剑孤寒
@ben
这个之前已经说过多次了,真的不能有啊

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-05-21 18:10 by baidwwy
怎么创建两个引擎窗口呢,一个DLL创建两个窗口。
一个游戏,一个用于显示聊天信息?

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-05-22 08:58 by 剑孤寒
@baidwwy
引擎不支持这个功能,需要另外写个exe,然后在主进程启动并通过进程间消息通信来同步数据,其实如果只是要聊天的话,你可以自己创建一个窗口,用windows自带的控件做就可以了

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-08 20:38 by baidwwy
希望老大花点时间让编辑框支持拖选和点击位置。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-09 18:42 by 剑孤寒
@baidwwy
这个有时间可以弄一下

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-11 08:32 by 剑孤寒
Update (2015-6-10)
◆ggeGuiManager添加Clear()函数,用来清除所有窗口
◆ggeGuiEditBox添加鼠标点击选择输入位置功能
◆修改GGE_TITLE系统状态可以在运行时更改
◆ggeVector添加LengthSquared()函数
◆切换渲染目标时不重置变换矩阵
◆ggeVector一些函数的参数和返回值修改为引用形式,添加AngleTo()函数
◆ggeRect的Intersect()函数参数修改为引用
◆Shader_SetCurrentShader()/Shader_GetCurrentShader()改成Graph_SetCurrentShader()/Graph_GetCurrentShader()
◆修改ggeSprite调用设置纹理区域等函数后刷新顶点坐标
◆数学库添加ggeVector3/ggeMatrix4
◆添加Graph_SetProjectionMatrix()/Graph_GetProjectionMatrix()/Graph_SetViewMatrix()/Graph_GetViewMatrix()函数
◆修改设置GGE_ZBUFFER后立即生效,而不是等到下一帧才生效
◆添加GGE_CODEPAGE用于设置代码页
◆GUIEditor添加控件位置和尺寸回退功能

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-14 16:11 by baidwwy
GUI编辑器
建议:当控件选择皮肤时,控件的宽高应该默认为皮肤宽高。
建议:增加复制控件功能。
建议:保存控件预览状态。
建议:编辑皮肤时,选择新的图片文件时,皮肤宽高也应该默认为图片宽高。
BUG: 字体非加边时,设置控件无效则无法显示。(宋体测试)
EditBox
建议:增加可以设置光标精灵
建议:增加数字模式和密码模式
ListBox
建议:增加可以设置选中和焦点颜色
建议:增加可以设置选中和焦点精灵

使用了几天GUI感觉良好,给点建议。
希望增加自定义控件的例子。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-15 00:11 by baidwwy
通知父窗口不管有没有勾选,都会收到子控件的消息。

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-15 11:54 by ccsdu2009
代码开不开源无所谓

# re: Galaxy2D Game Engine 4.1 开发版 发布   回复  更多评论   

2015-06-16 14:15 by 剑孤寒
@baidwwy
1.当控件选择皮肤时,控件的宽高应该默认为皮肤宽高。
这个不能有,如果有控件已经编辑好宽高,换个皮肤就要再重新编辑一次,岂不蛋疼
2.增加复制控件功能。
复制功能已经有了,注意看工具文档
3.保存控件预览状态。
如果保存控件预览状态,如果忘记改回去会对正常编辑造成干扰,所以这个不能有
4.编辑皮肤时,选择新的图片文件时,皮肤宽高也应该默认为图片宽高。
为了提高渲染效率,应该把UI用到的图片拼到一张大图上,既然这张图上有各种UI图片,显然不可能同时贴到一个控件上,所以设置为图片宽高也就没啥意义了
5.字体非加边时,设置控件无效则无法显示。
皮肤里控件无效时字体颜色为灰色,你仔细看下是不是跟你的背景色一样了,所以觉得无法显示了
6.建议:增加可以设置光标精灵
建议:增加数字模式和密码模式
这个可以有
7.建议:增加可以设置选中和焦点颜色
设置皮肤Press和MouseOver状态颜色即可
8.建议:增加可以设置选中和焦点精灵
这个可以有
9.通知父窗口不管有没有勾选,都会收到子控件的消息
注意看函数说明,这个功能主要用于拦截子控件消息,并不表示不开这个功能子空间就不发送消息给父窗口了
评论共2页: 1 2 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理