软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Looking 2001-11-19

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

2001-11-19

    人生中到底什么是最痛苦的?我不知道。但我现在很痛苦。4个月前我失业了,而且一直没有找到正式的工作。2个月前,朋友找我开发一个项目,我总算暂时有了份工作。但,现在项目结束了,我又失业了。离开了朋友们我觉得很寂寞。离开了开发软件的朋友们,没有人同我侃技术我觉得很苦闷。今天,无所事事在网上闲逛,发现CSDN可以上传文件。我就在这里自言自语吧。

    很久以前,我有一个梦想:我想写一个自己的3D游戏。我想这可能是很多人都曾经有过的一个梦想。现在既然如此无聊,我想是该动手的时候了。写到这里,我的脑海里浮现出以前的朋友们听到我的傻念头的表情:满脸痛苦状,呕吐。以前我曾经收集过这方面的资料并看过一些相关文章,至少我知道如何开始。

    在3D引擎这方面我并没有什么新颖的想法,我只是想写一个普通的引擎。引擎的基本类型我打算设计一个BSP+PORTAL引擎。整个工程大约有一下三个部分:

  1. 3D图形编辑模块:主要用于工程管理和图形设计。
  2. 3D编译器:依照工程描述及相关文件编译生成3D运行文件。
  3. 3D引擎:解释运行3D文件。

    唉,看来每个部分都不小,只好发扬蚂蚁啃骨头的精神了。就从图形编辑开始吧。我打算写一个类似3D Max的3D图形编辑程序。刚开始很简单,开发速度也很快,大致如下:

  • single document application.
  • dock一些toolbar, controlbar。增加一些美化。使用CJ60足以。
  • 拆分出4个窗口。x、 y、 z projection window和一个preview window。
  • 写一个projection coordinate <-> window coordinate转换。
  • 在projection window上画些坐标线。
  • 搞一些鼠标动作,至少拖动鼠标时可以看到select box。

    简单的是写完了,接下来就是头痛的了。头痛的痛点就是“框架”问题,大致如下:

  • 对象的动态创建问题。
  • 对象的动态注册问题。
  • 对象的属性管理问题。
  • Persistence Object的Serialization问题。

    动态创建对象是比较容易解决的问题。无论使用CObject的RTTI、DLL接口函数还是Com,只要接口定义统一,问题不大。动态注册是为了提高扩展性和自定义功能。随着系统开发深入,必然会出现很多新的对象类型,如果每次都要修改整个工程,恐怕会被累死。在上万行的系统中,增加或删除点东西,还真不是一件容易的事情。关键的问题在于property manager和serialization。我认为serialization问题解决的好,编辑系统就成功了一半。而且serialization又同dynamic creation support和property manager息息相关。编辑文档的保存和打开需要serialization。编辑过程中的copy/parse需要serialization,不过是物理介质不同。那么,自定义模板哪?通过编辑基本元素,设计好一个桌子,是否下次还要重新编辑?如果要完成这个功能,恐怕还是要serialization打交道。property manager主要是编辑对象的属性值和提供属性的type和value为serialization服务。同时在object dynamic create后,property manager提供了一个initialization object的时机和手段。

    其实,这些问题在很多编辑系统中都是共性的,例如:组态系统、课件编辑系统等。几个月前,在设计一个类似InetDev的JSP图形化开发工具时也遇到了类似问题。实现的手段也是多种多样的。但基本上都是围绕着“挿件”这个概念进行的。虽然实现手段很多,但我还是非常的头痛,而且越来越头痛。因为,我关心的不只是手段和方式问题,我最关心的是开发成本问题。呵呵,一个人开发也要讲究成本嘛。

相关文章

<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16424>Looking 2001-11-19</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16426>Looking 2001-11-24</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16440>Looking 2001-11-21</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16441>Looking 2002-10-17</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16442>Looking 2002-10-31</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16443>Looking 2002-11-3</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16444>Looking 2002-12-2</a>
<a href=http://www.csdn.net/Develop/Read_Article.asp?Id=16445>Looking 2003-1-6</a>




相关文章

相关软件