![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从零开始实现放置游戏
、谦信
只吃饭,不洗碗
展开
-
从零开始实现放置游戏(十一)——实现战斗挂机(2)注册登陆和游戏主界面
本章主要实现注册登陆功能和游戏的主界面。有了游戏的界面,大家能有更直观的认识。本章我们主要开发的是idlewow-game模块,其实就是游戏的客户端展示层。因为是放置游戏,为了方便,主要使用spring-mvc来开发,整个游戏形式是类似web端的文字mud游戏,会稍带一些图形图片。当然,游戏的客户端可以是多种多样的,也可以使用U3D开发成移动端或者C++/flash/silver light,开发成PC端、网页端、微端等等形式,但需要更多的美术资源。一、注册登陆和角色创建首先,我们把idlewow-g原创 2020-07-24 16:06:37 · 1269 阅读 · 1 评论 -
从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建
前面实现RMS系统时,我们让其直接访问底层数据库。后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层。本章,我们先把hessian服务搭好,并做一个简单的测试,这里以用户注册接口为例。先简单介绍下,实现hessian接口,只需要在facade模块暴露接口,然后在core模块实现接口,最后在hessain模块配置好接口路由,将其启动即可。实现步骤idlewow-facade新建包com.idlewow.user.model,在此包原创 2020-07-24 16:04:56 · 874 阅读 · 0 评论 -
从零开始实现放置游戏(九)——实现后台管理系统(7)地图选择控件
前面做了地图怪物的添加,删除,查询等功能。但添加怪物的时候,需要选择怪物所在地图。前几张的源代码中,我忘了把这部分改回去,所以如果想要成功添加,需要自己改一下html界面,手动填写怪物所在地图的ID。然而,我们配置的时候,地图ID并不是固定的,而是数据库自增的。所以这里最好做成一个弹窗,点击后弹出一个地图列表,让我们手动选择怪物所在地图。本章我们就实现这样一个弹窗控件,实现对地图的选择。后面如果有选择怪物,选择装备等需求,都可照猫画虎。整个过程的流程大致如下:实现步骤首先,我们给弹出的地图列表界面,原创 2020-07-20 10:45:51 · 599 阅读 · 0 评论 -
从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构
前几张,我们主要实现了升级经验、人物等级属性、地图、地图怪物,这四种配置的增删查改以及Excel导入功能。我们主要以地图怪物为例,因此在文章末尾提供的源代码中只实现了地图怪物这部分的逻辑功能。如果你照猫画虎,把4种配置功能的逻辑全部实现的话,就会发现,增删查改的代码基本相同,除了SQL语句和模型对象不同,其他地方变化不大。本章我们利用泛型模板,对整个系统就行重构。在重构结束后,你就会发现写代码简直就是特喵的艺术!后端重构idlewow-core我们从最底层开始,首先重构位于core模块中的数据访问原创 2020-07-20 10:44:28 · 414 阅读 · 0 评论 -
从零开始实现放置游戏(七)——实现后台管理系统(5)参数校验
前面几章实现了在RMS系统中进行数据的增删查改以及通过Excel批量导入。但仍有遗留的问题,比如在新增或编辑时,怪物的生命值、护甲等数据我们可以输入负值,这种数据是不合理且没有意义的。本章我们就实现服务端对参数的校验。一、添加依赖项 在rms模块的pom.xml中,添加校验组件的依赖项(注意:之前的组件我们都引用了最新版本。但因hibernate-validator的最新版本6.xx+中引用的el-api.jar有冲突,无法用maven插件启动,所以这里使用5.1.1版本): org.hi原创 2020-07-20 10:42:44 · 236 阅读 · 0 评论 -
从零开始实现放置游戏(六)——实现后台管理系统(4)Excel批量导入
前面我们已经实现了在后台管理系统中,对配置数据的增删查改。但每次添加只能添加一条数据,实际生产中,大量数据通过手工一条一条添加不太现实。本章我们就实现通过Excel导入配置数据的功能。这里我们还是以地图数据为例,其他配置项可参照此例。涉及的功能点主要有对office文档的编程、文件上传功能。流程图大致如下:一、添加依赖项解析office文档推荐使用免费的开源组件POI,已经可以满足80%的功能需求。上传文件需要依赖commons-fileupload包。我们在pom中添加下列代码:<!--原创 2020-07-20 10:41:20 · 494 阅读 · 0 评论 -
从零开始实现放置游戏(五)——实现后台管理系统(3)实现切面日志
上一章,我们初步实现了后台管理系统的增删查改功能。然而还有很多功能不完善。这一章,我们先把系统日志搭建起来,不管是生产问题排查,还是方便开发调试,日志都是必不可少的核心功能。所谓切面日志,比如说,我们想把每个方法的入参都记录日志,那需要在每个方法里都写一行记录参数的语句,非常繁琐。所以需要提取出切面“方法执行前”,“方法执行后”等等,然后在这个切面里进行编程,记录入参的语句只需要写一次。整体的流程大致如下图:这里我们以rms模块为例,其他模块需要记录日志的地方参照本模块即可。一、引入依赖java里,原创 2020-07-20 10:39:12 · 257 阅读 · 0 评论 -
从零开始实现放置游戏(四)——实现后台管理系统(2)数值配置的增删查改
上一章我们将RMS后台管理系统搭建完毕,本章我们就在这个系统上实现录入游戏配置的功能。目前我们需要配置四项,每个等级的人物属性,每个等级的升级经验,游戏地图,地图中的怪物。下面我们以游戏地图配置为例子,实现对它的增删查改功能。一、数据访问层的实现 首先,我们需要定义地图类,这个类在各个模块通用,因此要定义在facade模块中。我们新建一个包com.idlewow.map.model,在其中新建WowMap类,代码如下:package com.idlewow.map.model;import com原创 2020-07-20 10:36:00 · 1175 阅读 · 3 评论 -
从零开始实现放置游戏(三)——实现后台管理系统(1)后台管理系统搭建
上一章已经把整体的代码框架搭建完毕。然而整个游戏的功能非常的多,这就要求我们必须思路清晰,把所有功能依次分解开,逐步实现。需求分析整个游戏的核心玩法是放置挂机,打怪练级是核心功能,先实现一个最小可运行的DEMO,那么可以先实现玩家和怪物挂机战斗这部分。像装备、道具、掉落、随机词缀、组队等功能都可以放到后面做。想实现挂机战斗,那么要有一个战斗的逻辑模块,根据输入的战斗信息,计算出战斗结果,输出给客户端播放。整体逻辑大致如下图:这里,我们需要对游戏战斗相关的属性有个规划。我们暂时规定一级属性有力量、敏捷原创 2020-07-20 10:31:34 · 1921 阅读 · 0 评论 -
从零开始实现放置游戏(二)——框架搭建
上一篇,我们讲解了游戏的大概背景,知道了要做什么内容。现在已经可以开始搭建游戏的代码框架。整体架构 我们将整个项目命名为idlewow,目前包含以下几个模块idlewow-facade, idlewow-core, idlewow-hessianserver, idlewow-rms, idlewow-util, idlewow-game, idlewow-doc。 其中,facade模块是jar包项目,供内部其他项目引用,主要定义模型类、接口类。core模块是jar包项目,实现系统的主要业务原创 2020-07-20 10:28:38 · 1357 阅读 · 0 评论 -
从零开始实现放置游戏(一)——游戏设计
想要做一款成功的游戏,离不开优秀的策划,设计,玩法,美术,等等等等。这其中需要学习的东西太多。然而多想无益,这些东西越学越多,只有先尽快做出成品,然后不断迭代,才能更加深入了了解。因此,这里我们直接参考已有的成功案例,并加入一些我们自己的理解,适当改良。##游戏背景 为了方便学习,整个游戏的世界观,以魔兽世界为基础背景。种族、职业、阵营、地图、怪物、装备、掉落等,我们都参考魔兽世界,游戏取名IdleWOW。 因为是放置游戏,因此离线挂机或在线自动战斗是主要的战斗玩法,战斗采用回合制,不需要玩家原创 2020-07-20 10:27:24 · 2804 阅读 · 0 评论 -
从零开始实现放置游戏(前言)
笔者从小学就开始打电脑游戏,大学选择软件工程专业,毕业后进入软件行业,涉及电商、金融等领域,却一直未曾开发过游戏。作为一名游戏爱好者,始终是心中的一个遗憾。 然而,随着时代的变迁,出现了越来越多好用的工具、引擎。同时,当初的游戏玩家基本上都已经从学生蜕变成了上班族。放置挂机类反而开始火了起来,这种没事点两下的游戏,同样能让玩家深陷其中。作为一名业余游戏爱好者,开发一款放置类游戏似乎并不像大型游戏那样遥不可及。 **本专题,将以日志的形式,讲解如何从零开始,实现一款真实可用的放置游戏。**内容广泛原创 2020-07-20 10:23:46 · 1237 阅读 · 0 评论