Unity DOTS 走马观花

The Big Picture

简单介绍 Data-Oriented Technology Stack (DOTS, 数据导向型技术栈) ,其包含了 C# Job System、the Entity Component System (ECS) 和 Burst。

属于 Unity 的 Flutter——UIWidgets

介绍

UIWidgets 是 Unity 的一个插件包,是一个从 Google 的移动 UI 框架 Flutter 演变过来的 UI 框架。

相对于原生开发的高开发成本(不同平台都需要不同的一套代码),Flutter、React-Native 等这种跨平台 UI 框架应运而生。

Flutter 自 2018 年 3 月发布以来,社区不断壮大。由于 Flutter 自身设计理念的出色,Unity 中国已经着手将其移植过来。当然了,也因为这两个东西都非常的年轻,因此开发的时候都像开荒一样。

不越狱在 iOS 12.1 设备安装 Kodi

今天一不小心发现 Kodi 这个播放神器居然还有 iPad 版!

但是苹果 App Store 不允许 Kodi 应用商家,于是自己在网上找了些方法:

  1. 越狱(手动再见)
  2. 下载官方提供的安装包用 Xcode 打包进去(太麻烦)
  3. 国内同步助手等提供的“VIP服务”,购买服务后,用它们提供企业证书来下载(吃相难看)

Unity 开源双端框架 ET 中初尝热更新技术

ET 框架简介

正所谓时势造英雄,在 Web 开发领域或者传统软件开发领域中,人们把经过千锤百炼的代码总结出一套开发框架,从而提高开发效率,让开发者能更专注于业务本身。对于游戏领域而言,不同游戏需求的东西也不一样:有的游戏对性能有着苛刻要求,有的游戏需要快速地迭代出来,有的游戏需要联网热更新等等。因此不同的游戏框架应运而生。

例如:

  • Game Framework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。
  • QFramework 一套渐进式的快速开发框架。框架内部积累了多个项目的在各个技术方向的解决方案。
  • Entitas 一套基于 C# 和 Unity 的实体组件系统。
  • Entities Unity 官方的实体组件系统实现,不过还是 Beta 版本,详细介绍可以查看官网
  • StrangeIoC 一套基于 C# 和 Unity 的控制反转 (Inversion-of-Control) 框架。

今天介绍的是 ET 框架。

ET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善,同时支持可靠udp tcp websocket协议,支持服务端3D recast寻路等等

ET 框架能让我们只用 C# 就能搞定前后端,热更新方面也采用了基于 C# 的 IL 运行时——ILRuntime, 贯彻了 “珍爱生命,远离 Lua” 这句话。目前自己接触的大多是客户端部分,因此服务器方面不做介绍。

Unity 中用有限状态机来实现一个 AI

最近在阅读《游戏人工智能编程案例精粹(修订版)》,本文是书中第二章的一篇笔记。

有限状态机(英语:Finite-state machine, 缩写:FSM),是一个被数学家用来解决问题的严格形式化的设备,在游戏业中也常见有限状态机的身影。

对于游戏程序员来说,可以用下面这个定义来了解:

一个有限状态机是一个设备(device),或是一个设备模型(a model of a device)。具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,是的从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生。一个有限状态机在任何瞬间只能处在一种状态。
——《游戏人工智能编程案例精粹(修订版)》 Mat Buckland

有限状态机就是要把一个对象的行为分解成易于处理的“块”或者状态。拿某个开关来说,我们可以把它分成两个状态:开或关。其中开开关这个操作,就是一次状态转移,使开关的状态从“关”变换到“开”,反之亦然。

2D 像素风平台游戏 Aretha’s Journey

《我设计的第一个桌游》后,这次带来的是电子游戏的作业—— 2D像素平台游戏 Aretha’s Journey。

游戏背景

来自潘达尼亚的女孩 Aretha 已经离乡别井几年了,回乡之际,发现族人们都被神所诅咒而变成了石头,原因是他们的族人曾尝试反抗神。于是 Aretha 便踏上拯救家园之路……

我设计的第一个桌游

很久没写文章了,这次带来的是游戏设计课中的桌游大作业。

小组成员在第一节课就随机分好了,我们一开始选择每人准备一个桌游原型,然后共同选择一个原型来深入设计,最后一起选择了我的设计原型。

寻路算法-贪婪最佳优先算法

最近开始接触寻路算法,对此不太了解的话建议读者先看这篇文章《如何快速找到最优路线?深入理解游戏中寻路算法》

所有寻路算法都需要一种方法以数学的方式估算某个节点是否应该被选择。大多数游戏都会使用启发式(heuristic) ,以 h(x) 表示,就是估算从某个位置到目标位置的开销。理想情况下,启发式结果越接近真实越好。

——《游戏编程算法与技巧》

今天主要说的是贪婪最佳优先搜索(Greedy Best-First Search),贪心算法的含义是:求解问题时,总是做出在当前来说最好的选择。通俗点说就是,这是一个“短视”的算法。