游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4486|回复: 17

【软件框架】探讨求教:如何划分类,做好软件框架

[复制链接]

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2012-4-17 11:46:00 | 显示全部楼层 |阅读模式
【如何做好软件框架】
1.求书籍
2.目前遇到的问题:
  我的程序里有三个线程:A:处理程序主逻辑,B:处理特殊功能,C:处理UI界面

现在C中有分为10个状态,10个状态是用基于栈的状态机完成的【游戏编程精粹5】中学习到的,可以自由改变状态,在当前状态栈中PUSH POP回到当前状态

现在是写个状态管理类,就是控制这些状态的CHANGE/PUSH/POP:CHANGE是直接把栈清空,放入状态,PUSH 是在当前状态栈中加入状态 , POP是退出当前状态(与PUSH结合使用)返回之前状态,

设想是A中使用状态管理类,对状态的改变。

但是一个10个状态可以说是像视频一样播放的,一个流程播放完了,接着播放下一个,有时才需要PUSH特殊状态,然后POP特殊状态,回到正常状态。

我的问题是【正常状态】完成时如何通知外面,如何通知设置完成标志,主逻辑A中的数据如何更好的与C中同步。

【正常状态】中包含需要A中的信号才能继续的信号

请问:该怎么设计这软件框架

我本意是想让【正常状态】只做自己的事,就是让他与外界最少的关联,主要是数据同步怎么传入/状态运行到最后如何通知外界,让外界CHANGE状态到下一个【正常状态】 才能让我的软件在加入新的正常状态状态时更方便

求指教:求探讨 [em6]

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2012-4-17 11:56:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

有在欢迎指导

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2012-4-17 12:25:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

没人不

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2012-4-17 14:13:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

实践->跌倒,获得,再跌倒,再获得。

2

主题

13

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2012-4-17 14:48:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

虽然不太明白楼主的意思,不过游戏框架中都会带有个Event处理机制来同步各个模块。

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2012-4-17 20:21:00 | 显示全部楼层

Re: Re:【软件框架】探讨求教:如何划分类,做好软件框架

hj046: Re:【软件框架】探讨求教:如何划分类,做好软件框架

虽然不太明白楼主的意思,不过游戏框架中都会带有个Event处理机制来同步各个模块。


我加了一个管理所有状态的类:

1.一个游戏界面状态(我的正常游戏状态是像视频一样,只要处理每帧的逻辑,渲染就行了),我可以这么说吧,播放完毕后,就可以直接到下一个界面状态,而且也知道下一个界面状态,,那我是怎么设置标志呢,是管理类中有个标志,然后管理类,给个接口给外面的主逻辑,比如是更新函数,那就是更新函数调用时再更新界面

或者是直接界面状态内直接CHANGE到下一个状态呢,因为其中有些状态是要外部逻辑有信号了,才继续往下走,所以我就想,内部的状态设置标志自己播放完毕了,然后,主逻辑有信号了,主逻辑自己就通过状态类改变界面了

2.就是界面显示状态的一些数据是其他线程产生的,我有一个数据包的类,外部可以改变,界面要显示的,我想问,这样的数据需要做同步不

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2012-4-17 20:37:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

我下面再整理下:



1.我用HGE引擎+GSE状态管理的,不知道你看过没,GSE就是个状态集合栈,用vector,map实现的,可以change直接把状态栈清空,加入新的一个,PUSH,是在当前状态加入新状态,POP是跟PUSH一起用,回到之前状态



说白了,这个就只是处理界面的,一个逻辑Update,一个渲染Render



现在程序按照需要分了10个这样的界面状态,每个状态就像视频播放一样,播放完毕后,接着播放下一个,正常情况下,前一个和下一个的状态都是明白的,就是直接change就可以实现需要了,



所以我一开始的做法是在当前状态 处理完毕后,直接change到下一个状态



2.程序中有另外一个主逻辑线程,处理其他按键类的数据,有时需要界面状态停在某个状态等待处理完毕才能继续播放,或者才能改变到下一个状态。而界面状态播放到哪里了,有时也需要让主线程逻辑知道





所以现在:我在整理软件框架时,就犯傻了,弄了一个管理change,push.pop的类,想让他来做他们之间的桥梁,但是就是弄不好,做这点,也是想着让以后的软件,就是界面状态可以直接加入,做更少的改动



请问:我的状态管理类,该如何实现,怎么设计?这界面状态根外部主线程之间的数据该如何设计



请不吝赐教

尽自己最大努力学习中,

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2012-4-17 21:47:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

你这个貌似简单的问题,复杂化了一些。

做个简单的switch就可以了把。

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2012-4-17 22:01:00 | 显示全部楼层

Re: Re:【软件框架】探讨求教:如何划分类,做好软件框架

sea_bug: Re:【软件框架】探讨求教:如何划分类,做好软件框架

你这个貌似简单的问题,复杂化了一些。

做个简单的switch就可以了把。


呵呵,最先也是一个switch的,后来把HGE,即是界面放到线程里去跑,加了状态管理,而且也觉得这样做更好,更利于加状态,管理该状态进入,退出时候的一些资源

只是现在不明白要如何把这三者之间的关系处理好

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2012-4-17 23:06:00 | 显示全部楼层

Re:【软件框架】探讨求教:如何划分类,做好软件框架

一旦涉及线程,难度会增加很多,另外不是很明白为什么要把界面放到线程里去。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-28 12:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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