Project1
标题:
我的一个基于Ruby的3D游戏引擎,是否该放弃?
[打印本页]
作者:
zyxwvu
时间:
2011-8-21 01:32
标题:
我的一个基于Ruby的3D游戏引擎,是否该放弃?
本帖最后由 zyxwvu 于 2011-8-21 02:01 编辑
我很早以前写过一款基于Ruby的3D游戏引擎,主要功能:显示2D文字,2D图片,3D模型(只有*.x),以及3D辅助线,纹理和材质以及雾化效果,以及Shader(HLSL,Pixel Shader,Vertex Shader),以及一些HTTP相关的操作,基于.net 3.5实现的,但总感觉没有前途:
1、基于.net本来就很鸡肋了,还基于.net 3.5,.net很拖后退
2、微软大力推崇XNA,Managed DX已经太落伍了,只能到DX9,而XNA根本无法开发引擎
3、只支持*.x模型,没有提供地形系统,没有提供骨骼,没有跨平台性能
4、由于本人只是初中生,粒子系统,力学系统对于我来说难以实现
5、程序的架构对后期的维护也是很大的鸡肋
那到底是否该放弃呢?可是又觉得很强大。但是放弃后再想重读源码就很难了(架构问题)
演示代码:
def closingHandler() # 必须定义:窗口关闭处理器
Hi.ViewPort.Finalize() # 必须释放显存和内存
end
$keyPressed = 0
$viewZoom = 0
$viewMove = 0
def keyboardHandler(keyfunc, keyascii) # 必须定义:键盘处理器
if keyfunc == "up"
$keyPressed = keyascii
if keyascii == 27 # ESC
Hi.BasicCalls.ExitRunning()
end
elsif keyfunc == "down"
if keyascii == 38 # 向上键
$viewZoom = $viewZoom + 5
elsif keyascii == 40 # 向下键
$viewZoom = $viewZoom - 5
elsif keyascii == 37 # 向左键
$viewMove = $viewMove + 5
elsif keyascii == 39 # 向右键
$viewMove = $viewMove - 5
end
end
end
def renderSence() # 渲染过程
Hi.ViewPort.ClearScreen(Hi.WebColor("lightblue"))
#修改查看用矩阵
Hi.ViewPort.SetViewMatrix(Hi.Vector3D(100 + $viewMove, 150 + $viewZoom, 100 - $viewMove), Hi.Vector3D(0, 0, 0))
Hi.ViewPort.DrawAxisLine(100) #画出辅助坐标 [arg:长度]
Hi.ViewPort.DrawText2D("Hello, World!", 10, 10)
if $keyPressed == 0
Hi.ViewPort.DrawText2D("You didn't press any key.", 10, 30)
else
Hi.ViewPort.DrawText2D("You pressed the #" + $keyPressed.to_s + " key.", 10, 30)
end
end
Hi.AppTitle = "测试用游戏" # 定义程序名称
Hi.ViewPort.SetTitle("Hello, World! Game by Zyxwvu") # 设置视口标题
# 初始化 Direct3D [ret:是否成功?]
# [arg:使用GPU?,抗锯齿?,全屏?(不推荐),高,宽]
Hi.ViewPort.Init3D(true, true, false, 800, 600)
Hi.BasicCalls.MsgBox("Direct3D 初始化成功!")
# 使用默认投影矩阵(等我会了高等数学就不默认了)
Hi.ViewPort.DefaultProjection(10000)
Hi.ViewPort.SetAmbientColor(Hi.WebColor("white"))
Hi.ViewPort.StartRenderer("renderSence()")
Hi.BasicCalls.EnterRunning() # 进入运行状态
复制代码
代码效果:
(, 下载次数: 51)
上传
点击文件名下载附件
另外,本人还有一款基于Lua的3D引擎,C++编写,可是因为学习鸭梨太大,加上对C++ Direct3D API了解偏少,所以开发也十分缓慢,不过架构还比较完美,放弃后还可以重读源码
作者:
IamI
时间:
2011-8-21 07:33
既然是 NET MDX 要 Ruby 用来作甚,外挂解释器么?
计算主要还是矩阵计算,进高中以后就会学到。
程序架构老问题了,尝试多用接口,继承,属性,严格封装来实现功能。
作者:
s625595429
时间:
2011-8-21 08:11
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D模型 贴图 也能为咋 业余游戏制作者 作出贡献哈 加油 支持你 哦耶~~~:victory:
作者:
zyxwvu
时间:
2011-8-21 09:37
s625595429 发表于 2011-8-21 08:11
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D ...
可是我现在要模型都很难了,实在不想装Panda,3ds每个版本都有对应插件啊
作者:
乌有君
时间:
2011-8-21 09:59
PANDA是个好东西,可以随时捏熊猫(大雾)
此外,PYTHON本身美
作者:
s625595429
时间:
2011-8-21 10:18
s625595429 发表于 2011-8-21 08:11
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D ...
是需要模型么? 我可以提供
作者:
编程白痴
时间:
2011-8-21 10:53
代码,我有用不能理解的东西:'(
作者:
yangff
时间:
2011-8-21 13:18
本帖最后由 yangff 于 2011-8-21 13:20 编辑
XNA可以做,嵌入一个IronRuby即可
直接开IronRuby然后require "Microsoft.XNA巴拉巴拉……“
作者:
文军诺
时间:
2011-8-21 13:22
我小学刚毕业,那些数学没学过呃。看来还要好好学习啊!
作者:
藏书妹
时间:
2011-8-21 13:55
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yangff
时间:
2011-8-21 15:21
http://blogs.msdn.com/b/johanl/a ... k-och-ironruby.aspx
我就不解释什么了=v=
作者:
plummy
时间:
2011-8-21 15:24
个人对3D引擎不感兴趣,是因为......不会用
作者:
zyxwvu
时间:
2011-8-21 19:51
没你那么简单。。。我的不是XNA,是MDX,而且XNA Ruby require "Microsoft.XNA“无法引入Content
作者:
sdgn
时间:
2014-2-17 13:46
老實說`
在下認為要搞3d的話還是轉戰unity吧... 最近滿熱門的
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0