JuZi's Blog
Preview Image

UE4独立服务器构建

前言   根据UE4官方文档的介绍,UE4引擎在架构时就已经考虑到了多人游戏的情景,多人游戏基于客户端-服务器模式(CS模式)。也就是说,会有一个服务器担当游戏状态的主控者,而连接的客户端将保持近似的副本。服务器是UE4多人游戏的一个重要部分,其作用是:做出所有重要决定,包含所有的主控状态、处理客户端连接、转移到新的地图以及处理比赛开始/结束时的总体游戏流程。   服务器的功能开发在UE...

UE4蓝图与C++交互——射击游戏中多武器系统的实现

回顾   学习UE4已有近2周的时间,跟着数天学院“UE4游戏开发”课程的学习,已经完成了UE4蓝图方面比较基础性的学习。通过UE4蓝图的开发,我实现了类似CS的单人版射击游戏,效果如下视频:   不得不说UE4蓝图功能的强大,无需写一句代码,就能实现一个基本的游戏玩法。并且使用门槛极低,只要熟悉蓝图的API,通过“拖拖,连连”就能完成游戏玩法的开发,对游戏策划(设计师)及其友好,...

Java项目的持续集成、交付与部署

前言   如今,持续集成已成为软件开发的标准化流程,也是敏捷开发的重要组成一环。所谓持续集成,是指软件开发团队成员定期(每天甚至更短)将自己的开发成果合并到产品项目中,通过自动化构建(编译、发布、自动化测试等)验证本次开发成果,尽可能快地发现错误与漏洞(可能是本次开发内容本身的问题,也可能是开发内容与产品现有内容之间的兼容性问题)。   而持续交付,则是指定期将产品新版本交付给质量团...

通信协议多维度对比

背景 网络程序开发就离不开客户端与服务器,而客户端与服务器交互的核心之一就是通信协议,通信协议的选择往往关系到通信的稳定性、通信效率(消息序列化/反序列化时间)、数据量(序列化后的字节大小)等等。目前主流开源的通信协议有:Json, Message Pack, Protocol Buffers, Flat Buffers, JDK Serialize等等,我将依次就开发便捷度、序列化效率、数...

“全球同服”游戏服务器设计思路

背景 最近查阅了一些“全球同服”服务器架构设计的资料,也请教了有全球同服架构经验的几位大牛,发现全球同服并没有想象中的那么困难。对于玩家而言,玩家并感知不到自己属于哪个服务器(登陆时无服务器列表),但实际上,玩家通过既定算法,被自动分配到了某个服务器中进行游戏。 分布式设计方案 因为服务器单服因承载量的原因,不可能将所有玩家都放在一个服务器(机器硬件),因此,全球同服的服务器架构都使用了分...

使用JDK自带工具解决线上Java程序问题

问题 我们有时会在线上生产环境(正式服务器)遇到测试服很难碰到的问题,例如内存泄漏、GC过于频繁、线程死锁等问题,因为该类问题需要一定数量的用户基数,因此很难在测试服遇到。正式服一般没有debug日志,也无法打断点,无法像在测试服一样进行常规问题的排查,但JDK为我们提供了很多排查该类问题的工具。熟练使用这些工具,能帮助我们快速解决上述问题,同时也是java进阶必备能力。 常用JDK自带工...

wxPython开发总结及踩过的坑

wxPython介绍 wxPython是针对Python编程语言的一套跨平台的图形用户界面工具集。它允许Python开发者使用一些健壮的、功能强大的图形用户接口来简单并且容易地开发GUI程序。它实现了一套封装了闻名的跨平台的使用C++编写的GUI组件——wxWidgets的Python扩展模块。 像Python和wxWidgets一样,wxPython是开源的,这就意味着任何人可以免费地使用...