组织项目结构总揽

完成一个好的项目就像盖房子,光有一流的工人师傅还不够,还需要将他合理分工,这样才能确保工程的有序进行,各负各的职责。一起的一个项目大致是这样的结构:

silverlight游戏设计(七)--项目组织 

GameLibrary:作为整个游戏所需要的基础库和游戏引擎。当然实际中的会包括许多library。

GameBiz:游戏的逻辑,并作为游戏执行入口,它向UI注册事件,通过基础库和游戏引擎构建业务逻辑。引用GameLibrary等基础库和GameUI。

GameUI:只引用silverlight本身必须的库以及项目的自定义控件库

GameLoader:游戏的引导器或者叫做加载器,参见之前的文章:silverlight游戏设计(一)主程序加载器

GameLibrary

如果说一个游戏是人的身体,那么游戏的基础库和引擎就是五脏六腑,它驱动着整个身体的运转。这部分是游戏的底层核心,对于mmorpg webgame而言,至少要包括网络通讯,util/extensions,安全(比如加密解密)、资源包操作管理、各种精灵角色及精灵控制、场景等。

GameBiz

有了五脏六腑,还需要个充满智慧、逻辑性的大脑,要么岂不成了行尸走肉。这部分是一个具体的游戏逻辑的实现就相当于人的大脑,像下饮用GameLibrary,像上引用GameUI,作为游戏的入口点。

之前我们说到,webgame应该是有一个loader,在下载完所需的模块后动态的创建游戏主体,那么具体怎么联系到GameBiz呢?我们只需要约定一个接口,在将游戏运行的所必须的所有assembly加载到程序域中后调用下这个接口,将游戏的配置传递过去就ok。

var gameApp= asm.CreateInstance("GameBiz.GameApp") as GameApp;
gameApp.StartGame(gameConfig)

 

GameApp.StartGame所要做的就是根据配置初始化整个游戏,包括建立网络连接、初始的资源包解析等工作。

 

public class GameApp
    {
        
public static readonly GameApp Instance;
        
static GameApp()
        {
            Instance 
= new GameApp();
        }
        
public void StartGame(GameConfig config)
        {
            
//……
        }
        
public UIElement GameMainUI
        {
            
get;
        }
        
public void AlterRootVisual()
        {
            AlterRootVisual(GameMainUI);
        }
        
public void AlterRootVisual(UIElement newRoot)
        {
            App.Current.RootVisual 
= newRoot;
        }
    }
    ……
}

相关文章:

  • 2021-11-13
  • 2021-12-30
  • 2022-12-23
  • 2021-08-01
  • 2021-07-23
  • 2021-08-22
猜你喜欢
  • 2021-09-04
  • 2021-04-18
  • 2021-12-10
  • 2022-12-23
  • 2021-12-14
  • 2021-12-27
相关资源
相似解决方案