UWA学堂|解决方案模块

UWA学堂|解决方案模块

本文主要为大家推荐UWA学堂中解决方案的相关课程,涵盖了红点系统、镜头控制、打包、音频、网络、异步任务、热更新、草海、换装和开放世界等十个子类。

UWA学堂界面中的“分类“选择解决方案即可查看相关课程。

无论对于从业者还是正在读大学的技术萌新,学习的有效时间和个人时间都是有限的。高效学习者最在意的是时间的价值,一个需要体系化的知识地图就显得尤为重要。

零基础

镜头控制

《第三人称视角游戏的镜头全自动控制方案》

文章主要介绍了第三人称视角的游戏,在镜头控制上会有哪些问题,我们是如何用全自动控制的方式来解决这些问题的,以及全自动控制的镜头将会带给用户什么样的游戏体验。本课程从问题出发,对比了常用解决方案的优缺点,详细介绍了全自动控制镜头的处理思路,以及对策略优先级的思考。

本课程属于基础课程,适合对镜头控制感兴趣的读者。

音频

《Wwise音频引擎启动器文档及网站使用指南》

文章主要介绍了Wwise音频引擎使用当中容易被用户忽略的多个方面,包括:

账号注册、项目注册及项目成员管理
从展示账号注册、项目注册及项目成员管理过程等方面入手,介绍了Wwise官方网站提供的功能,以便使用者能更好的利用这些资源提高协作效率;

Wwise版本规则及技术支持策略
从对Wwise版本规则及技术支持策略的介绍等方面入手,为学习者展示Wwise音频引擎版本选择及升级决策的最佳实践;

Wwise启动器的使用技巧
从Wwise启动器的使用技巧入手,为学习者展示Wwise Launcher能够为开发带来何种便利,以及遇到问题应如何规避;

认证课程及不同文档材料学习的最佳实践
从对认证课程及不同文档材料定位的介绍入手,梳理出了一条顺畅的Wwise学习路径,以便无论是声音设计师还是程序员都能够更有效率的学习及查阅文档,解决开发中遇到的问题。

本课程属于基础课程,适合于任何想要使用Wwise音频引擎为游戏音频表现带来提升的学习者。

网络

《多人在线游戏架构实战:基于C++的分布式游戏编程》

本课程为机械工业出版社出版的图书《多人在线游戏架构实战:基于C++的分布式游戏编程》的电子版。

本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。

本书通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。

本书既可以作为网络游戏行业从业人员的编程指南,也可以作为大学计算机相关专业网络游戏开发课程的参考书。

《支持HotFix的分布式服务器框架搭建》

本文旨在帮助大家搭建支持Hotfix不停服热更新服务器框架,课程首先讲解如何部署Hotfix程序集如何在不停止服务器运行的情况下通过属性标记更新程序集,其次讲解服务器框架图各节点的关联关系,并初始化中心服务器监听,服务器之间使用Protobuf进行通讯,游戏服务器通过连接代理创建连接器连接到中心服务器,中心服务器通过服务器客户端总类接收注册消息创建游戏服务器客户端,通过类似流程最终实现分布式服务器基本框架搭建,各个服务器之间能够相互通讯,完成服务器开服。

《分布式MMORPG服务器框架搭建以及MongoDB和Redis使用》

本系列课程旨在帮助大家从零开始搭建商业化MMORPG的分布式服务器框架,包括不同种类服务器的线程模型,如中心服务器、网关服务器、游戏服务器、寻路服务器等,并讲解了这些服务器该如何根据各自的职责进行业务模块分工。

本课程主要带大家掌握分布式MMORPG服务器框架搭建,MongoDB和Redis使用,包括支持Hotfix热更新的服务器解决方案创建,了解服务器的类库如何引用,如何通过NuGet获取所需的工具包,在高DAU情况下各个不同的服务器如何通过配置文件进行负载分流玩家,数据库和共享缓存技术选型以及我们为什么会选择MongoDB和Redis做数据存储和加载。

初阶

红点系统

《Unity中基于前缀树的高性能红点系统实现》

文章主要介绍了红点系统的特点,如何基于前缀树这一数据结构实现红点系统,提出了相关实现中存在的两个性能问题,以及如何去解决这两个问题,并在最后基于UnityEditor的TreeView开发了树视图窗口,方便使用者在开发阶段的Debug需求。

打包

《Jenkinsfile基础与UWA本地资源检测组件接入实战》

本课程针对参数化构建、节点、环境变量等来介绍Jenkinsfile的编排,详细讲解了string、bool、choice等常见的4种参数的参数化构建方法,变量的定义与引用以及post语句块中经常会使用到的构建状态指令,抛开原来Freestyle project的使用模式,改用Pipeline来替代,满足更复杂工作的需求,并且使整体流程更灵活,更易维护。

结合UWA的“本地资源检测”业务进行实战,使用Jenkinsfile从本地资源检测组件的接入到上传测试结果,完成整个UWA本地资源检测业务的流程编排,在实际使用过程中感受Jenkinsfile的魅力。

PS:本课程的第六章节Jenkinsfile结合UWA本地资源检测组件实战,如已掌握前五节课内容的开发者,可直接移步至第六章节。

《Jenkins自动化打包详解》

文章主要介绍了利用Jenkins实现Unity的自动化打包发布,主要从以下几个方面展开介绍:

1、什么是Jenkins,为什么要用它
维基百科是这样定义的,Jenkins是一款由Java编写的开源的持续集成工具,在我的理解就是自动化开发的一个脚手架。Jenkins应用于互联网开发的方方面面,不仅仅局限于本文主要讲的游戏自动化发布,据我了解它用于互联网开发发布、移动开发发布、运维相关等等,是一个非常实用的工具,几乎成了IT公司的标配,注意这里没有局限公司的规模和行业,这说明Jenkins的实用性足以让我们没有任何理由不去了解和使用它。

2、如何配置Jenkins和打包
本文讲解了Windows、Mac配置Jenkins,以及配置过程中要注意的地方,介绍了打包Windows、Android、iOS等客户端以及在此过程中会碰到的困难和解决方案。

3、Jenkins打包流程优化
我们不能仅仅满足于自动化打包功能的实现,还要深究如何更好地利用它,让自动化做到极致,做到发布的全过程不需要人工参与,这就好比我们早晨一觉醒来,一睁开眼,就有了香喷喷的早餐送到我们嘴边来,这是多么幸福的一件事。

音频

《Wwise音频引擎入门和实践》

文章的初衷让程序更快地掌握Wwise引擎的使用、该引擎和Unity引擎的对接,以及让音效师更明晰地了解程序是如何对接Wwise引擎的。内容主要分为三大部分,Wwise引擎的介绍、常见的功能实现和性能优化,这也符合我们介绍某样东西的3W原则(What、Why、How)。

1、Wwise是什么?
Wwise是Audiokinetic公司出品的一款空间引擎解决方案。

2、为什么要用Wwise?
一些我们耳熟能详的3A大作例如《刺客信条》、《守望先锋》、《崩坏3》、《王者荣耀》、《权力的游戏》、《QQ飞车》等等音频模块都采用了Wwise,一线游戏大厂例如腾讯、米哈游、游族、巨人等都有专门的Wwise音效团队。笔者尝试了Wwise之后发现其确实有出众的优势,譬如使得Unity跟音效模块完全分离、具有性能调试工具、具有丰富的混音器等,我们没有理由拒绝了解它。

3、如何使用Wwise?
从我们常见的音效需求出发,内容包括多语言的实现、不同材质的脚步声、玩家的心跳声随着HP的变化而变化,以及3D音效、背景音效、配音强弱的控制等,并且都有对应的案例Demo。

其次重点介绍游戏音效的性能优化和音效资源包体优化,包括Wwise的内置性能分析工具Profiler的使用,以及常见的音效性能瓶颈和针对性的优化策略。

本课程属于基础课程,适合音频开发者和Unity程序阅读。

网络

《百万在线:大型游戏服务端开发》

本课程为机械工业出版社出版的图书《百万在线:大型游戏服务端开发》的电子版。

第一部分:学以致用(第1~4章),这部分介绍了Skynet引擎的使用方法及注意事项,以《球球大作战》的案例贯穿其中,全面又详尽地剖析了服务端结构设计、通信协议格式、数据表结构设计、断线重连等方案的核心技术。

第二部分:入木三分(第5~7章),这部分揭示了在多核时代采用现代C++编写多线程TCP网络服务器的高效做法,以C++重写Skynet的案例贯穿其中,使用大量图表,生动翔实地描述Linux环境下的编程技术。

第三部分:各个击破(第8~11章),这部分列举了同步算法、热更新、防外挂等实际工程难题,并对其逐一击破,非常具有实用价值。尽管本书以Skynet为例,但其同样适用于使用C++自研引擎的项目组,甚至是选用Erlang、Golang、Java的开发者。

《网络同步在游戏历史中的发展变化》

文章参考了大量的论文、GDC演讲、技术博客等相关资料,从网络同步的基本概念讲起,循序渐进地深入到服务器架构与各种同步算法的实现细节,将目前网络上常见的同步技术手段和优化方式进行非常详细地分析和比较。主要内容如下:
1)网络同步的基本概念和理解
2)游戏服务器架构的发展历程
3)Lockstep(帧同步)的发展历史与技术细节
4)状态同步的发展历史与技术细节
5)物理同步的原理与手段
6)常见的同步优化手段与分析

本课程属于初/中级课程,既适合游戏开发的初学者,也适合有一定经验的网络游戏开发人员用于技术知识拓展。

该系列文章首发在雷火知乎官方账号上。

《网络通信原理与实战应用》

课程内容涉及到计算机网络体系结构基础知识,包括网络分层、TCP首部与IP首部结构组成,从零开始实现了一个异步多线程网络通信库插件。课程通过简易网络程序引入对底层原理的讲解,再结合实际问题,分析应对策略,最后落实到代码实现。完整讲解了出现问题的原因以及解决问题的方法,结构清晰,层层递进,一目了然。核心内容如下:

  • 深入分析了TCP三次握手流程及其作用;
  • 详细讲解了TCP协议保证可靠传输的原理;
  • 梳理了网络数据在各层之间封装传输的完整流程;
  • 解决了TCP协议面向数据流特性所导致的粘包分包问题;
  • 开发了异步多线程可扩展、易使用的网络通信库插件;
  • 实现了从控制台服务器到Unity客户端的完整聊天案例。

购买该课程,即可申请加入课程交流答疑群,与作者和同学们一起探讨学习。

《Unity项目技术研发之模块设计:网络上传下载

我带过一些实习生和应届毕业生,他们几乎都很好奇一个问题:“商业项目到底是什么样的?”,回想自己初出茅庐的时候,也会有同样的困惑。我们刚进入项目组的时候,一般都会被分配做某一个简单或者说没那么核心的模块,通过一个一个点的接触,慢慢了解整个项目的构成和运作原理。

在信息爆炸的今天,互联网上有着不计其数的各类模块的实现参考或者学习资料,但能够教会我们“如何设计出足够好的模块”或者“这些好用的模块实现是怎么设计出来的”的相关资料却相对贫乏。于是,我就想要把设计模块的整个过程写成一系列的文章,传递给更多需要的同学,以应那句古话:“授之于鱼,不如授之以渔”。

这一系列的文章往往都是整个复杂的思考过程的浓缩,也有许多设计方法论蕴含其中,我试图将文章和文章之间用某种思考方式串联起来,以求达到一加一大于二的效果。我还尝试用一种简单直白的方式把这些抽象晦涩的信息表达出来,更多的还是希望能够引起大家对设计过程的思考。

异步任务

《Unity项目技术研发之模块设计:异步任务》

我带过一些实习生和应届毕业生,他们几乎都很好奇一个问题:“商业项目到底是什么样的?”,回想自己初出茅庐的时候,也会有同样的困惑。我们刚进入项目组的时候,一般都会被分配做某一个简单或者说没那么核心的模块,通过一个一个点的接触,慢慢了解整个项目的构成和运作原理。

在信息爆炸的今天,互联网上有着不计其数的各类模块的实现参考或者学习资料,但能够教会我们“如何设计出足够好的模块”或者“这些好用的模块实现是怎么设计出来的”的相关资料却相对贫乏。于是,我就想要把设计模块的整个过程写成一系列的文章,传递给更多需要的同学,以应那句古话:“授之于鱼,不如授之以渔”

前面我们介绍了“网络上传下载”模块的设计思路,为了能够将其真正的实现,我们又引出了第二个模块的设计:异步任务

开放世界

《拥抱开放世界》

针对《创造与魔法》这款开放世界游戏,讲师将重点介绍开发世界游戏的历史与发展现状,并分享团队在这款游戏创作中所秉持的设计理念和研发心路历程,内容主要包括:

  • 大世界的场景制作
  • 多人在线与社交
  • 自由度与解耦
  • 开放世界游戏的优化
  • 开发工具与MOD

进阶

网络

《手游HTTP多线程下载原理与优化》

可能很多人在项目中会遇到这些问题:

  • 我的网速不稳定,我正在下载一个比较大的文件,已经快下载完了,突然断网,当再次启动,就会发现又要重新下载,那么有没有什么办法可以让我接着上次的进度下载呢?
  • 项目的小文件好几千个,下载时间很长怎么办?
  • 下载一个大文件时,会分配一个与文件一样的内存,有没有办法只分配很少的内存?下载过程中能不能由我来决定内存的分配使用量?
  • 项目的资源下载很大,必须提供边玩边下载的功能,但是CPU占用大,堆内存分配频繁,量大,无法让用户自己控制,有没有办法优化?

无论是使用UnityWebRequest还是HttpWebReuqest,都不免会有些困惑。要么只能主线程执行,要么无法控制下载速度,内存开销过大,至于断点续传功能,更是不知从何下手。

文章从简单的HTTP协议讲起,介绍如何用Socket直接封装一个下载组件,如何实现断点续传,如何实现边玩边下载,又如何优化下载,加快下载速度,同时控制下载过程中总的内存开销。最后讲解了项目中的热更新机制是怎么做的。

通过该文章的学习,你可以快速掌握解决以上项目痛点的方法,同时还提供Demo源码,方便您快速应用到自己的项目中。

热更新

《成熟的Unity热更新以及版本管理的解决方案》

从实际项目上线后要解决的问题出发,与您分享每个决策点为什么这么做,要解决什么问题,为什么不选择备选方案。主要包含以下内容:

  • 版本号管理,让每一个版本号都有具体的存在意义;
  • 母包、热更新包的打包方式;
  • 热更新包检测、下载以及使用细节;
  • 如何做版本兼容,发了一个商店大版本,线上用户不更新商店也可以进游戏;
  • 如何让热更新包尽量无冗余,尽量小;
  • 简述另外一种热更新方案。

如果您正在头疼该怎么去做热更新,或者觉得当前自己的热更新方案不好用,本文可以提供一些思路。

《Unity项目热更新技术的性能分析总结》

针对主流热更新技术(基于C#和Lua)进行性能对比,以期让开发者找到最适合项目自身的应用方案和实现技巧。内容主要包括:

  • 主流热更新技术简介
  • 各方案原理、性能对比、适用场景
  • Lua性能瓶颈分析及其优化技巧

换装

《Unity游戏的换装系统优化》

本文主要介绍了游戏内换装系统的优化。尤其对于多人同屏,30人以上高并发的频繁换装需求,本文对帧率优化和内存优化均提供了详细方案和Demo代码下载,适合对Unity和引擎渲染有一定基础的读者。

开放世界

《大规模动画模拟的一种实现方法》

作者在开放场景项目中需要实现大规模的蝴蝶动画来提升场景的活力,增加场景细节和丰富程度。本课程从思考问题开始,分析各种实现方式的利弊,参考《神秘海域4》的技术分享,最终实现了一套方案。完整地还原了思考问题以及解决问题的过程。

第6节提供了Demo所有的核心代码,并经过Unity 2019.4LTS、iPhone 6s测试通过。作为抛砖引玉,课程实现的效果并不只局限于此,可以举一反三将其应用到其它类似的需求上,增加场景的丰富程度和活力。

《UE5中构建高质量复杂大世界的技术》

今年5月UE5炸裂发布,得到了广大开发者的关注。本次报告由Unreal官方出品,主要介绍UE5中已经展示的部分主要功能,包括:Nanite,Lumen,Worldpartition等。解析这些技术的原理以及使用上的经验,帮助大家更好地使用UE5的这些功能,快速构建出丰富多彩的高质量大世界场景。

《基于Addressable资源管理系统的大地形加载方法探究》

Addressable资源管理系统是Unity引擎为开发者最新打造的资源管理解决方案。在本次报告中,我们将介绍该资源管理系统的基本功能,并重点讲解如何通过它来打造一个大地形的加载和卸载管理方案,并以此来总结其与传统常用资源管理方法的区别与优势。通过本次报告,研发团队可以对该系统有一个全面、清晰的了解和掌握,在研发工作中可以更好地对其进行使用。

《基于Unreal引擎的大地形加载研究》

对于Unreal大地形制作的研究分享,让中国的开发者更直观地了解Unreal和Unity在大地形研发过程中的制作方法和性能比较。

高阶

网络

《忍者必须死3》的服务端升级之路

《忍者必须死3》是一款酷炫的战斗跑酷手游,除了普通的跑酷玩法,还有很多竞技pvp、团队社交等重服务端元素。游戏具有高DAU、通服的特点,单游戏服峰值承载数十万同时在线。本次报告将介绍我们在游戏上线以后,针对引擎、框架、业务、运维不同层面对游戏服务端进行的深度优化工作。

开放世界

《大世界手游开发 - 基于Unity引擎的大世界场景解决方案》

随着行业的飞速发展,游戏世界正在越做越大,当我们用有限的硬件去承载更多的效果和更多的资源时,将面临非常多的挑战。本次报告将介绍朝夕光年江南工作室在Unity引擎中构建大世界场景时,如何探索更优的渲染和资源管理解决方案。

《程序化生成与大世界制作 - 探索适合Unity引擎的游戏大世界PCG管线》

随着3A大世界项目的兴起,程序化生成(PCG)技术在游戏业内不断被提及。我们在面对⼤世界游戏场景的开发中,核⼼问题之一是需要解决⼤世界场景的构建、编辑问题。本次报告将介绍在吸取育碧、腾讯等公司的经验的基础上,结合自身在该方向上的探索和落地的相关经验,给出的一个实际基于Unity引擎大世界游戏中实际的PCG管线案例。主要内容包括:Unity引擎内多人在线编辑;PCG协助各职能提升编辑效率、查找和修复编辑错误;PCG与手编内容同时进行互相影响的方案;开发者工程管理等。

《重度、全3D无缝大世界手游开发经验分享》

手游在追求全3D及逼真效果的同时,对场景的大小也有了越来越高的要求。一个无缝的超大场景会给玩家带来更加真实的游戏体验,本报告旨在描述如何使用Unity引擎创建超大无缝大世界。大世界不仅是地图变大,它所带来的各方面考验以及研发工作流都将发生重大改变。同时,报告还将结合嘉宾在Unreal引擎方面的开发经验,阐述Unreal引擎在超大地图制作上相较于Unity引擎有哪些优缺点。


以上就是我们本期为大家梳理的解决方案学习路径图。需要说明的是,这个路径图并不是捷径,相反27篇文章会更加训练大家的意志力。作为体系化的知识,我们希望大家能掌握背后的逻辑与原理,结合学习方法论并反复实践,未来尝试在自己的项目中创新创造出自己满意的效果。

往期回顾

《Unity引擎渲染模块知识Tree汇总》
《Unity引擎UI模块知识Tree》
《UWA学堂|逻辑代码模块》
《UWA学堂|开发流程模块》
《UWA学堂|优化模块》