设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4396|回复: 13
打印 上一主题 下一主题

[随意闲聊] 我的一个基于Ruby的3D游戏引擎,是否该放弃?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2011-8-19
帖子
27
跳转到指定楼层
1
发表于 2011-8-21 01:32:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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、程序的架构对后期的维护也是很大的鸡肋
那到底是否该放弃呢?可是又觉得很强大。但是放弃后再想重读源码就很难了(架构问题)

演示代码:
  1. def closingHandler() # 必须定义:窗口关闭处理器
  2.    Hi.ViewPort.Finalize() # 必须释放显存和内存
  3. end

  4. $keyPressed = 0
  5. $viewZoom = 0
  6. $viewMove = 0

  7. def keyboardHandler(keyfunc, keyascii) # 必须定义:键盘处理器
  8.    if keyfunc == "up"
  9.       $keyPressed = keyascii
  10.       if keyascii == 27 # ESC
  11.          Hi.BasicCalls.ExitRunning()
  12.       end
  13.    elsif keyfunc == "down"
  14.       if keyascii == 38 # 向上键
  15.          $viewZoom = $viewZoom + 5
  16.       elsif keyascii == 40 # 向下键
  17.          $viewZoom = $viewZoom - 5
  18.       elsif keyascii == 37 # 向左键
  19.          $viewMove = $viewMove + 5
  20.       elsif keyascii == 39 # 向右键
  21.          $viewMove = $viewMove - 5
  22.       end
  23.    end
  24. end

  25. def renderSence() # 渲染过程
  26.    Hi.ViewPort.ClearScreen(Hi.WebColor("lightblue"))
  27.    #修改查看用矩阵
  28.    Hi.ViewPort.SetViewMatrix(Hi.Vector3D(100 + $viewMove, 150 + $viewZoom, 100 - $viewMove), Hi.Vector3D(0, 0, 0))
  29.    Hi.ViewPort.DrawAxisLine(100) #画出辅助坐标 [arg:长度]
  30.    Hi.ViewPort.DrawText2D("Hello, World!", 10, 10)
  31.    if $keyPressed == 0
  32.       Hi.ViewPort.DrawText2D("You didn't press any key.", 10, 30)
  33.    else
  34.       Hi.ViewPort.DrawText2D("You pressed the #" + $keyPressed.to_s + " key.", 10, 30)
  35.    end
  36. end

  37. Hi.AppTitle = "测试用游戏" # 定义程序名称
  38. Hi.ViewPort.SetTitle("Hello, World! Game by Zyxwvu") # 设置视口标题
  39. # 初始化 Direct3D [ret:是否成功?]
  40. # [arg:使用GPU?,抗锯齿?,全屏?(不推荐),高,宽]
  41. Hi.ViewPort.Init3D(true, true, false, 800, 600)
  42. Hi.BasicCalls.MsgBox("Direct3D 初始化成功!")
  43. # 使用默认投影矩阵(等我会了高等数学就不默认了)
  44. Hi.ViewPort.DefaultProjection(10000)
  45. Hi.ViewPort.SetAmbientColor(Hi.WebColor("white"))
  46. Hi.ViewPort.StartRenderer("renderSence()")
  47. Hi.BasicCalls.EnterRunning() # 进入运行状态
复制代码
代码效果:


另外,本人还有一款基于Lua的3D引擎,C++编写,可是因为学习鸭梨太大,加上对C++ Direct3D API了解偏少,所以开发也十分缓慢,不过架构还比较完美,放弃后还可以重读源码

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 2011-8-21 07:33:41 手机端发表。 | 只看该作者
既然是 NET MDX 要 Ruby 用来作甚,外挂解释器么?
计算主要还是矩阵计算,进高中以后就会学到。
程序架构老问题了,尝试多用接口,继承,属性,严格封装来实现功能。

点评

选修课本有,不列入高考范围  发表于 2011-8-21 16:36
上海的话高中是学矩阵的。新课标如果恰好有人有兴趣找老师要有矩阵的那本选修,也能学到。 因为矩阵可能难,所以很多市都没有选的、、  发表于 2011-8-21 16:36
大学才学矩阵的表示你确定说的是天朝?  发表于 2011-8-21 10:49
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2011-7-17
帖子
14
3
发表于 2011-8-21 08:11:53 | 只看该作者
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D模型 贴图 也能为咋 业余游戏制作者 作出贡献哈 加油 支持你 哦耶~~~:victory:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2011-8-19
帖子
27
4
 楼主| 发表于 2011-8-21 09:37:35 | 只看该作者
s625595429 发表于 2011-8-21 08:11
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D ...

可是我现在要模型都很难了,实在不想装Panda,3ds每个版本都有对应插件啊
回复 支持 反对

使用道具 举报

乌有君
5
乌有君  发表于 2011-8-21 09:59:25
PANDA是个好东西,可以随时捏熊猫(大雾)
此外,PYTHON本身美
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2011-7-17
帖子
14
6
发表于 2011-8-21 10:18:47 | 只看该作者
s625595429 发表于 2011-8-21 08:11
千万不要放弃啊 很强大的说 我曾经也是 业余的游戏制作者 很希望业余制作人也能用3D引擎制作游戏 这样我3D ...

是需要模型么? 我可以提供
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
45
在线时间
248 小时
注册时间
2010-6-20
帖子
467
7
发表于 2011-8-21 10:53:28 | 只看该作者
代码,我有用不能理解的东西:'(
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

8
发表于 2011-8-21 13:18:42 | 只看该作者
本帖最后由 yangff 于 2011-8-21 13:20 编辑

XNA可以做,嵌入一个IronRuby即可
直接开IronRuby然后require "Microsoft.XNA巴拉巴拉……“
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

萝莉控

梦石
0
星屑
165
在线时间
226 小时
注册时间
2011-8-19
帖子
924
9
发表于 2011-8-21 13:22:49 | 只看该作者
我小学刚毕业,那些数学没学过呃。看来还要好好学习啊!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
8 小时
注册时间
2011-7-21
帖子
27
10
发表于 2011-8-21 13:55:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-6 15:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表