这里选取 杀戮尖塔2 的游戏解包内容, 用于借鉴其代码结构和目录架构
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149STS2SourceCode/├── project.godot # Godot4 主工程配置, 导入后加载整个项目├── .godot/ # Go ...
在部分生存游戏都会在开局通过生成 seed(种子) 来做地图动态生成, 该篇章就是说明其原理和作用
首先大部分种子值是并没有要求长度(不能为空), 更进一步来说就是只要是字符串就可以作为地图种子(只要能被哈希)
hash(哈希) 就是构建地图种子的核心关键, 通过字符串生成沙盒世界的 伪随机种子(Seed), 转化流程如下
把输入字符串全部转为 UTF-8 编码字节数组
使用哈希算法(FNV1a,MurmurHash3,MD5 等哈希算法)
截取哈希结果为 int64 长整型(正负数值)
如果对哈希效率有要求可以采用 MurmurHash3 算法, 而如果需要更偏向内部集成的通用性可以采用 MD5 算法
这就是标准生成种子数值的流程, 以 Python 脚本来实现就是如下生成
123456789101112131415161718192021#!/usr/bin/env python3# -*- coding: utf-8 -*-import hashlib# int64有符号最大值INT64_MAX = 9223372036854775807# 1. 输入的自定义 ...
依托目前 Cloudflare 的生态, 可以直接无需单独购买服务器和数据库搭建自己的云端服务
视图页面(构建 - 计算 - Workers 和 Pages): 支持直接创建部署静态页面功能
接口功能(构建 - 计算 - Workers 和 Pages): 支持创建一等公民的对外服务(目前一等公民语言为 Rust 和 NodeJS)
数据库功能(存储和数据库 - Postgres & MySQL 数据库): 官方提供的 PlanetScale 云服务器(注意做好额度报警,避免超额)
注意: PlanetScale 数据库不支持中国境内使用
以上功能都有免费额度, 只要不超过额度一般不需要收费, 所以可以用于个人简单使用
这里将先依托官方的 workers-rs 构建简单的接口服务用于处理自定义接口服务, 后面将会围绕这部分扩展出具体的模块开发
workers-rs 文档: https://developers.cloudflare.com/workers/languages/rust/
建议业务抽离成单独模块出来, 因为 Cloudflare 目前方案是基于编译 w ...
排除部分国内云服务器特立独行的设置, 其实目前部分厂商 CDN 已经提供标准化的接口
S3(Simple Storage Service) 标准: 亚马逊 AWS 定义的对象存储标准协议/API 规范, 现已成为行业通用对象存储标准
一般如果要做下载内容分发的话, 建议询问所在云服务器厂商时候提供这部分 对象存储 业务, 将分发的文件上传来提供全球下载CDN加速
S3 标准当中有以下概念
Bucket(桶): 顶级存储对象单位(全局唯一命名), 相当于创建独立的根目录等待资源放置, 用于归类(images,files,apk类似归类)
Object(对象): 存储最小单元, 即上传的分发文件, 比如你提交的静态图片/文件/压缩包等
CORS(跨域设置): 标准跨域访问规则, 控制前端网页能否直接通过 CDN 域名拉取桶内资源, 如果是不符合的域名就不允许拉取资源
Lifecycle(生命周期): 基于对象上传时间触发自动操作, 可以给资源设置 过期清理/冷热切换/版本控制 来保证资源可控
得益于标准化 S3 接口, 切换不同厂商CDN/对象存储时, 仅需同步桶内 ...
这部分是作为 PHP 做集合 bootstrap5/bootstrap-table 做服务端渲染的功能
如果有能力的话建议赞助 bootstrap-table 项目, 强力推荐的 bootstrap 扩展库
项目地址: https://github.com/wenzhixin/bootstrap-table
bootstrap-table 按照官方文档引入方式如下
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" ...
目前大部分数据库表都有涉及到分表功能, 而比较常见的就是取模分表法, 但是手动每次修改表就很麻烦
比如同步增加/删除/修改一个字段都要从 0~9 的手动调整修改过去, 如果一不小心误操作后果也很严重
所以推荐采用自动化的存储进程来执行这部分功能, 首先是示范下怎么创建表
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879-- 创建模板表, 这里假设要创建这样模板表-- 这张表不要做任何的数据操作, 只是作为模板即可create table if not exists nova_user_t( # 通用信息 uid bigint not null comment '数据主键, 用于标识递增(实际上会从 Redis 之类以游戏 APP_ID 分组来全局递增)', app_id ...
这里主要是从游戏发行方面来说明, 讲述对于游戏来说发行应该做到的事情
广告投放营销的专门词汇为 Marketing, 目前主要广告发行系统目前主流有以下方向
广点通: 游戏厂商最常用的广告平台, 背靠腾讯分发效率最高
巨量: 字节跳动旗下的广告营销平台, 热度出圈和普及率相对较高
快手: 快手相比以前少了部分流量, 但依旧还是算国内日活比较高的平台
GoogleAds: 谷歌ads基本上就是出海首选的广告平台, 主要是入口多
FacebookAds: 早年我接触的比较多海外营销平台, 目前营销算法是我见过最完善合理的(以前的流量池推广也很精准)
这里没有涉及到亚马逊和阿里这部分电商营销平台, 因为电商营销平台接触不多
还有其他类似哔哩哔哩和百度这些大大小小的营销投放平台, 这些都不做过多赘述, 这里需要普及具体概念
广告主: 广告投放的付费方与需求发起方(拥有过自身产品准备发起广告投入转化)
推广者: 拥有流量资源的平台方, 也就是具体的广告平台(广点通/巨量等)
渠道商: 广告主与推广者的中间服务商(也有叫直客和代理商的说法), 负责创建上 ...
Window 安装
这里主要针对 Window 平台, 对于 Linux 平台其实只需要安装官方 Rustup 设置即可
主要原因是不想安装 VisualStudio 太多依赖
1234567# 主要最小化安装需要 CPP 编译器即可, 具体地址如下https://visualstudio.microsoft.com/visual-cpp-build-tools/# 点击 exe 之后需要选择最小化的 CPP 编译工具# 1. 选择 `单个组件`# 2. 只勾选以下组件# - MSVC v{最新版本} - VS{最新版本} C++ x64/x86 生成工具(我目前用的是 v143, v14.44-17.14版本)# - Windows 10/11 SDK(对应你电脑系统版本, 目前用的 Win11 10.0.2.28000)
完成之后就是安装 window 的依赖, 这里建议命令行全局安装:
123456789101112131415# 这里我习惯放置于 C:\rust 之中, 建议先创建好目录并且在管理员模式下窗口执行# 分配的目录如下: ...
这里针对的是滚服系列游戏运营架构设计, 最近看到公司项目的时候想起来类似架构, 所以就顺路整合一下
一般来说滚服类似的游戏架构有几种特点
数量多: 滚服合服的时候, 单个游戏几百几千的区服都是正常
跨区域: 服务器机房并不是固定特定地区机房, 而是分布搭建(需要和游戏服务端相同网段)
数据独立: 数据库是分布的数据库(甚至多个不同云服务器), 不一定采用相同云服务端数据库
统一管理: 代码模块同步是直接大规模部署服务器, 需要用专门的部署来自动化运维
比较小的游戏运营架构直接简单云服务器+云数据库, 最多维护下集群和读写分离就差不多能够稳定运行
这种模式一般时候快速上线轻度小游戏之类, 可以直接将服务器托管给云服务器提供商降低运维成本
度过初期发展之后就会出现渠道服这种情况, 这部分情况是很复杂的, 比如上架游戏的服务器会让你选定指定旗下服务器
比如常见的上线微信小游戏系列的话会买腾讯云, 而部分自有渠道比如华为应用商店这种渠道服也会尽量买相关服务器
那么问题就来了, 云服务就会开始分裂出来出来管理, 那么游戏运营后台不可能直接联通到其他相关服务器
虽然直接开 ...
SpringBoot 高级框架底层都内部集成了 Maven 打包插件, 有时候 Java 最小依赖就需要自己引入底层打包功能
这里 Maven 内部主要插件有以下类型
maven-compiler-plugin: 自动扫描项目 src/main/java 所有 Java 文件编译生成字节码到 target/classes 目录
javax.annotation-api: 编译通用 Java 项目的注解依赖包, 后面官方包组织已经移动到 jakarta.annotation-api
maven-surefire-plugin: 用于运行单元测试功能
maven-resources-plugin: 在编译前处理资源文件, 可以针对某些文件做动态打包
maven-assembly-plugin: 将打包编译后的 class 生成对应 jar/war 包
maven-shade-plugin: 将打包做排除冗余依赖来堆 Jar 包做瘦身, 比 assembly 体积小很多
一般没必要对 Jar 做极致的瘦身, 所以 maven-assembly-plugin 日常 ...






