从零开始实现放置游戏(二)——框架搭建

  上一篇,我们讲解了游戏的大概背景,知道了要做什么内容。现在已经可以开始搭建游戏的代码框架。

整体架构

  我们将整个项目命名为idlewow,目前包含以下几个模块idlewow-facade, idlewow-core, idlewow-hessianserver, idlewow-rms, idlewow-util, idlewow-game, idlewow-doc。

  其中,facade模块是jar包项目,供内部其他项目引用,主要定义模型类、接口类。core模块是jar包项目,实现系统的主要业务逻辑以及对数据库的访问。hessianserver模块是war包项目,将系统的接口暴露给其他内部项目。rms模块是war包项目,是后台运营系统或叫资源管理系统,主要给GM使用,进行配置,rms模块本身不访问数据库,而是通过调用hessian接口,与底层数据进行交互。game模块是war包项目,是web形式的游戏客户端,部分游戏逻辑写在此模块中,也通过hessian接口访问系统数据。util模块是jar包项目,主要实现一些工具类,供其它模块引用。doc项目可有可无,我拿来提交一些sql脚本,策划表格等内容。整个项目的架构大致如下图(其中Rest模块目前并没有,仅占位示意):

项目架构图

代码实践

1.新建项目

  打开Idea,左上角菜单File --> New --> Project, 选择Maven项目,不使用模板,GroupId、ArtifactId和Projec name都填写idlewow即可,JDK选择1.8。(如没有1.8版本,可在前言章节中查看下载地址)

新建项目

  新建完毕后,因为是maven项目,IDE检测到pom.xml会在右下角弹出提示,如下图,选择”Enable Auto-Import",开启自动包下载,后面修改pom.xml后,按Ctrl+S保存即可自动更新包。

maven提示框

2.添加模块

  idlewow作为根目录下面不需要写代码,src文件夹可以删掉。右键根目录,选择 New --> Module 来添加模块。同样选择maven项目,不使用模板。因为是一个模块,GroupId默认为idlewow,以core项目为例,ArtifactId填写 idlewow-core。点击下一步,填写 module name 时,会默认没有中划线,需要手动加上,然后点击完成即可。

  然后依次创建各个模块。完成后如下图:

各项目模块

3.添加依赖关系

  maven项目通过pom.xml管理依赖,类似于C#里添加DLL引用,这里根目录下的pom.xml暂时无需改动。

  首先,在各个模块的pom里,artifactId节点后面添加 packaging 节点,如<packaging>war</packaging>,是war包项目的填写war,jar包项目填写jar。

在core模块中,添加依赖如下:

<dependencies>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-facade</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-util</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

在hessian模块中,添加依赖如下:

<dependencies>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-core</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-facade</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

在rms模块中,添加依赖如下:

<dependencies>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-core</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-facade</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

注意:前面的架构图中,rms通过hessian接口访问数据层,此处应不必添加对core的依赖。但为了开发和部署方便,实际开发时,我在rms模块直接引用core层访问数据。

在game模块中,添加依赖如下:

<dependencies>
    <dependency>
        <groupId>idlewow</groupId>
        <artifactId>idlewow-facade</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

其他模块目前无需添加依赖。

4.构造web目录

  因为有3个模块需要打成war包,因此必须先构造web项目的目录结构,否则打包命令无法成功执行。

  在 game, hessian, rms 模块的src目录下分别创建 webapp/WEB-INF 文件夹,并在该目录下添加web.xml(空文件即可)。完成后目录结构如下图:

文件结构

  另外,因为不做单元测试,所有src目录下的test文件夹均可删除。

5.编译打包

  在左上角菜单选择 ” Run --> Edit Configurations "(快捷按钮里直接点也可以),点击左上角绿色的加号,选择Maven(代表使用maven命令或插件来编译、打包、启动项目)。然后填写名称 "idlewow打包",选择根目录,填写执行命令"clean install"。

  其中,clean表示清空之前的编译目录,install表示把项目编译,打包,并更新到本地maven仓库。

  其实编译命令是compile,打包命令package,maven命令有一个优先级,执行install时,会自动执行compile, package等等。

如下图:

编译打包

点击OK后,我们执行一遍。结果如下图,各模块均编译打包成功。

运行结果

结语

  本章简要搭建整个系统的框架,构造了各模块的文件结构,并成功编译打包。

  源码下载地址:https://idlestudio.ctfile.com/fs/14960372-383321231

  后面将开始对各模块的内部框架进行搭建。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容