仿LOL项目开发第九天
仿LOL项目开发第九天
by 草帽
OK,今天我们完全换了一种风格,抛弃了Unity3d的c#语法,我们来写写java的项目。
说到java服务器,当然有些人可能鄙视java的服务器速度太慢,但是相对于其他语言,他就是比c++和c性能差点,其实也差不了多少。
加上他的框架比较成熟,我们商业项目完全可以采用java当做服务器。
OK,废话不多说,我们打开Eclipse,然后开始自己的项目:
我们先来写网关服务器:新建一个项目,取名为LOLGameGateServer:
然后在这个项目中新建一个文件夹:lib
里面存放的是一些需要引用的包。
这里我因为做过一些服务器总结出来的一些经验,所以自己封装了一个服务器jar包,主要是编写的时候方便一点:GameCore.jar
然后在添加mysql-jdbc.jar,mina-core-2.0.13.jar,mybatis-3.3.0.jar,log4j-core-2.1.jar。读者自行下载,我一个个上传太麻烦了。

将这些jar包引用到Build Path中:

引用好了之后,我们开始编写网关服务器:
新建一个包:com.lol.server,里面新建一个类:LOLGateServer.java:
然后继承我自己封装的MinaServer,然后我们实现里面的抽象方法。
在写代码之前,我们先来分析下,网关服务器又什么用?
所谓网关服务器,顾名思义,他是充当转发器的作用,也就是说我们客户端先连接上,然后通过网关连接到游戏服务器集群。
所以在网关服务器内部,我们得自己搞个连接游戏服务器的线程。所以网关服务器内部有线程,一个是处理连接客户端的线程,一个是处理游戏服务器线程。
画个图生动点:

所以我也把客户端线程和游戏服务器线程封装到我自己的jar当中:ClientConnectServer和InnerConnectServer。
仿LOL项目开发第九天的更多相关文章
- 仿LOL项目开发第八天
仿LOL项目开发第八天 by 草帽 这节我们继续上节所讲的内容,上节我们初始化好了LoginWindow,当我们点击确认选择服务器按钮的时候,就发送服务器id给游戏服务器. 这里就开始涉及到客户端需要 ...
- 仿LOL项目开发第七天
仿LOL项目开发第七天 by 草帽 不知不觉已经写到了第七篇这种类型的博客,但是回过头看看之前写的,发现都只能我自己能看懂. 我相信在看的童鞋云里雾里的,因为我基本上没怎么详细讲一个脚本怎么用?但是你 ...
- 仿LOL项目开发第六天
仿LOL项目开发第六天 by草帽 OK,因为更新模块已经处理好了,接着开始登陆的编写.那么我们就需要状态机的管理. 所谓状态机就是在哪个状态执行那个状态的代码逻辑: 那么我们开始编写GameState ...
- 仿LOL项目开发第五天
仿LOL项目开发第五天 by草帽 今天呢,我们看下能开发什么内容,首先上节我们已经讲了UI框架的搭建,上节还遗留下很多问题,比如说消息的字符是代码里面自己赋值的. 那么就比较死板,按照正常的逻辑,那些 ...
- 仿LOL项目开发第四天
---恢复内容开始--- 仿LOL项目开发第四天 by草帽 上节讲了几乎所有的更新版本的逻辑,那么这节课我们来补充界面框架的搭建的讲解. 我们知道游戏中的每个界面都有自己的一个类型:比如登陆界面,创建 ...
- 仿LOL项目开发第三天
仿LOL项目开发第二天 by草帽 昨个我们已经实现了下载功能,但是发现没有,下载的包是压缩的,没有解压开,那么Unity是识别不了的. 所以今个我们来讲讲如何实现解压文件. 还记得吗,我们在Downl ...
- 仿LOL项目开发第二天
仿LOL项目开发第二天 by草帽 接着上节来讲,上节更新还没开始写代码逻辑,今天我们补充完整. 我们找到VersionManager脚本里面的CheckVersion方法: 首先我们想到检测版本,需要 ...
- 仿LOL项目开发第一天
---恢复内容开始--- 仿LOL项目开发第一天 by---草帽 项目源码研究群:539117825 最近看了一个类似LOL的源码,颇有心得,所以今天呢,我们就来自己开发一个类似于LOL的游戏demo ...
- git项目开发版本控制实践
linux和bsd: 第一, bsd, berkeley software distribution, 伯克利软件套装, 是最开始的unix是开放的, 然后berkeley对unix进行了修改, 形成 ...
随机推荐
- HTML--1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HP 打印机监控
http://www.ttlsa.com/zabbix/zabbix-monitor-hp-printer/ https://www.cnblogs.com/losbyday/articles/583 ...
- android拾遗——四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...
- 【LOJ】#2722. 「NOI2018」情报中心
https://loj.ac/problem/2722 题解 考场上想了60分,但是由于自己不知道在怎么zz,我连那个ai<bi都没看到,误以为出题人没给lca不相同的部分分,然后觉得lca不同 ...
- 使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类
1.在开始之前,先简单回顾一下几个概念. Caffe(Convolution Architecture For Feature Extraction-卷积神经网络框架):是一个清晰,可读性高,快速的深 ...
- scala递归实现换零钱算法
import scala.collection.mutable.ArrayBuffer import scala.util.control.Breaks object Exchange { def d ...
- ref:如何将自定义异常的信息显示在jsp页面上
ref:https://blog.csdn.net/tao_ssh/article/details/53486449 在项目中,经常会抛出异常,输出比较友好的信息来提示用户,并指导用户行为.大体思路: ...
- 洛谷P4623 [COCI2012-2013#6] BUREK [模拟]
题目传送门 BUREK 格式难调,题面就不放了. 分析: 一道比较有思维难度的模拟题. 首先我们可以想到,对于一个三角形,可以画出一个最小矩形使得这个三角形被完全包围,并且这个矩形的边平行于坐标轴(图 ...
- zoj 3983 Crusaders Quest 思维+枚举
题目链接 这道题意思是: 给你一个长度为9的字符串,且只有3个a.3个g.3个o 问,你可以选择删除一段连续的串或者单个的字符也可以不删,最多会出现几个三子相连的子串 比如:agoagoago只有将两 ...
- PHP反序列漏洞学习
0x00 序列化和反序列化 在PHP中,序列化和反序列化对应的函数分别为serialize()和unserialize(). 序列化:serialize()将对象转换为字符串以便存储传输的一种方式. ...