现在使用的LOL的新版客户端,很多人登陆之后会感觉加载会有卡顿,抛去硬件和网速的原因,我特意去研究了LOL客户端的开发技术,大致也了解了一些,因为运用了很多实时更新的技术,所以在登录后会有加载的问题。
很多玩LOL的玩家可能没有想过LOL的程序到底是什么架构的,恰好笔者学过几年开发,也是LOL资深的玩家,如果使用过LOL以前的客户端的老玩家,和现在最新的客户端相比,会有这样的感觉,以前的LOL客户端更像是传统的游戏普遍的客户端,实时互动的内容不多,而新客户端却更像是浏览器的一个个网页。
老版的客户端开发运用到了AdobeAir,但是后面随着LOL的发展,老技术已经出面了很多的问题,例如玩家在进行一场游戏的时候,希望保持登录,接受好友请求等,旧有的技术占用资源过高。
![d138e15f26c5f94f9106217f3a8cae6f.png](https://i-blog.csdnimg.cn/blog_migrate/798ff2103de8f6c0603e6cfb11fb99ea.jpeg)
LOL新界面
LOL的版本更迭很快,很多新功能需要添加,所以开发一个新的客户端就不得不提上了日程,这时候利用HTML5和JS来开发客户端是一个比较成熟的选择,所以新版的LOL客户端前段UI用到了HTML5和JS的渲染技术,业务逻辑和后端通信则是利用C++来处理。
所以我们看到LOL客户端的主界面的每一个操作就好像是一个个的链接,我们点击鼠标打开商店的时候,有时候会有一个刷新过程,并不是客户端设计的不好,实际上新版客户端设计的远比旧版要好。
前端的开发,用到了嵌入式Chromium框架,也就是简称CEF的东西,CEF基本的框架包含C/C++程序接口,,通过本地库的接口来实现,而这个库则会隔离宿主程序和Chromium&Webkit的操作细节,支持HTML5等技术,可以实现JS、HTML5、CSS的解析。
通过新的架构,用户可以实现很多的功能,各个模块是既有独立又有关联的,它们之间又通过某种机制保持通信的畅通,调用本地的英雄图片和声音资源,与好友联系,对局中的状况等都不会受到影响。
![7bf8e8e483949d8546068a8e1892212b.png](https://i-blog.csdnimg.cn/blog_migrate/b7d5ff28fb300e2ee427bb08bdad9a45.jpeg)
启动lol后台进程
LeagueClient(主进程,承担前端、后端插件、与服务器通信)、LeagueClientUx(CEF承载进程,负责前段容器逻辑处理和LeagueClient通信)、LeagueClientUxRender(CEF承载进程,CEF承载进程,负责界面渲染等)。
因为前段和后端相互不受影响,这样我们在进入到游戏对局的时候,就可以选择把游戏的客户端关闭,如果你在游戏内的帧数较低、电脑配置较低,可以选择在设置中勾上这个选项,有利于玩游戏时的顺畅。
我想随着技术的发展,还会有更多的技术应用到LOL的开发中,现在的端游普遍对硬件的要求偏高,而LOL算是对电脑要求比较低的流行游戏了,即使是在配置很低的老机器上,也可以流畅运行。
![eec1fb969fe9a12e7cd336f41a8b213a.png](https://i-blog.csdnimg.cn/blog_migrate/5b6ee49a9736f2a7d8a1dcf6cd173ebd.jpeg)
LOL设置界面