作者StubbornLin (Victor)
看板C_and_CPP
标题Re: [问题]在写小游戏时遇到物件阶层设计的问题
时间Sun Nov 27 16:50:29 2005
※ 引述《cppOrz (cppOrz)》之铭言:
: ※ 引述《linjack (嗯)》之铭言:
: : 我理想中的状况是, 这样写似乎 gamewindow 就不用处理重绘了
: : 因为东西不是被画上去的, 而是每一个物件都是一个 widget
: : 看起来想法二似乎比较好 ?
: : 可否请板上大大指点一二呢 ? 感激不尽.
: 小程式的话其实怎麽做都可以啦
: 不过一般游戏的做法,都是自己处理重绘的部份
: 而且很重要的一点,计算(游戏的逻辑、资料处理、物理运动…等)和显示
: (不管你是怎麽画)的处理,最好是分开的
: 在显示上,有部份的设计和 QWidget 现有的功能是重叠的,因此自己重做
: 可能会觉得有点浪费;换句话说,如果你对 QWidget 够熟,的确是可以最
: 大限度利用它现成的架构……
: 但是这样的缺点就是你会被绑在 QWidget 上。举个例子,假设有一天你需要
: 做大量的混色,或者你发现需要 60 fps 以上,才能保持流畅度,QWidget
: 不够快怎麽办?如果当初是用第一种想法(自己处理重绘),也许还有办法
: 简单移植(修改底层的成像核心);如果当初是用第二种,你大概会发现重写
: 还比较快!
小游戏 真的如同他所说的 怎样写都可以
但是游戏要是大起来 如果没有良好的架构
会像一艘漏水的船 越写你会越发现 那边一个洞 这边一个
到处忙着补洞 最後 船就沉了
我个人的喜好
我喜欢把绘图的部份抽像化 尽量让绘图独立出来 用Class封装
这样当我需要用不同的环境下绘图 就只要换掉这个Class就可以
不过 困难之处 就是Interface要如何定 以及Class等等问题
都不好解决
而绘图的方式 我通常都喜欢用一点一点来处理
虽然麻烦 但是是最直接的方式
半透明贴图等等的效果 都可以直接做出来
麻烦之处 就是 如果要针对不同色深都可以正常显示
那就要对不同的色深各写一套函式
甚至 图档格式都自己定 自己写一套专门的图档转档程式
你可以在里面定自己的资讯 像一个图档包函好几张
变成一段动画 每格都有停留时间的资讯
如果要做 还可以他每张图片都可以有一段语法
例如:
PlaySound("01.mp3");
如此 当图片播放到这张时 就会有声音跟着出来
或着 用语法描束这个东西的物理处理方式
Set M = 10;
Set Vx = 3;
Set Vy = 4;
Set ax = 1;
Set ay = 0;
说了那麽多 总而言之 写大的游戏
就像在堆积木 当你有了自己处理东西的程式库
以後 就可以直接套用
不过 我至今都还没有满意我自己写的程式库
每次都觉得架构不够好 重新写过= = 到现在重写几次了
我也记不得了
以前写的小游戏
虽然只有简单的打地鼠 但是在背後我写了图档编辑器
绘图程式库
所以 在主程式写的过程 非常的短
我只要套用我写好现程的东西就OK了
http://www.kinmen.info/vic/download.pl#12
我一直想开一个游戏设计版 专门讨论游戏设计的版
但是不久就要学测了= =||
(现在还在醉生梦死囧)
等学测过後 如果考上大学 再来开版吧
到时 请大家帮忙联署 XD
--
VICTOR工作室
URL :
http://www.kinmen.info/vic/
C/C++
Visual Basic 6.0
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.71.34
1F:推 linjack:感谢提供建议 :-) 11/28 00:31
2F:→ linjack:如果真的开了游戏设计板 小弟一定支持... 11/28 00:34
3F:→ linjack:话说我现在已经大二了 目标是大四时能和同伴一起开发游戏 11/28 00:35
4F:→ linjack:当做毕业制作 不过到目前却仍是废柴一条.... 11/28 00:36