Vanadium的小屋御用公告板
停更?
似乎是快一个月没有更新原创文章了
而且很多笔记都荒废掉了
好叭只是太懒 + 太忙惹
果然坚持记笔记是一件很难坚持的事情(?)
致敬传奇笔记王!!!
短学期再说吧~ 希望能活过期末粥
2024/06/12 by Vanadium
五一计划
有谁五一要卑微留校阴暗爬行呐? 哦, 是我啊
那就写一份计划书吧
整理笔记: 计算机系统I 的相关笔记, 参考 slides, 学长的资料
https://note.hobbitqia.cc/ICS/
https://note.tonycrane.cc/cs/system/
https://note.isshikih.top/cour_note/D2QD_DigitalDesign/
填坑: 继续学习 C++ 到头秃, 填补游戏开发日经记录贴
肝 DDL: 系统 lab4 你把大家都害亖re!
史纲头脑风暴
最重要的!!! 摸鱼
2024/04/27 by Vanadium
暂时关闭评论系统
由于博客代码重构, 评论系统暂时关闭, 如有联系需要请参考 关于
2024/03/25 by Vanadium
博客图片迁移
由于之前拿 Git ...
高级数据结构与算法分析
Basic Infomation
Teachers: myc
Lecture 1
Lecture 2
数据安全与密码学基础
Basic Infomation
Teachers: zc
Lecture 1
Lecture 2
面向对象程序设计
Basic Infomation
Teachers: hyc
Assignment
Lab (50%, including the in-class quiz)
Final Exam (50%)
Lecture 1
Lecture 2
文明 6 mod 制作学习笔记 (3) 新的文明
文明6 Mod教程(3)创建一个新文明
准备工作
想要制作一个新的文明, 需要为领袖, 特色单位, 特色建筑准备大大小小, 不同分辨率的 dds 图标
想要实现 png 图片格式化为 dds 图标, PS 就可以做到, 但是非常不方便
可以参考专栏, 利用 mod 辅助工具进行批量转化
为了实现一个完整的文明, 需要准备以下图片资源
特色建筑图标 dds
文明图标 dds
领袖图标 dds
特色单位图标 dds
特色单位头像 dds
前景 / 背景图 dds
使用 mod 辅助工具开始制作新的文明
Mod 辅助工具可以理解为一个图形化的文本生成器, 可以通过更为用户友好的方式生成代码文本, 从而达到方便 mod 制作的目的
制作目标
由于政治因素, 文明 6 避免了很多近现代领袖和文明的出现
但是我们是 mod 制作者, 目标是制作一个苏联 mod, 实现文明苏联和领袖列宁
要求苏联有一个特色建筑军工制造厂 (取代工厂), 特色单位苏联红军 (取代步兵), 特色能力共产主义; 领袖列宁有一个特色能力十月革命
新建 project
同样, 在 ModBuddy 中新建一个 proje ...
文明 6 mod 制作学习笔记 (2) 新的单位
文明6 Mod教程(2)创建人物
Mod 相关文件类型
文明 6 的 mod 主要由以下文件构成
xml: 最主要的文件
artdef: 模型定义
xlp: 图像资源变量名
dds: 贴图
本质上, 后面 3 个其实也是 xml 文件, 只是后缀名不同, 语法格式是相同的
创建新的单位
设计目标
设计一个单位, 名称为职业军队 ProfessionalArmy, 替代步兵, 造价和维护费低于步兵, 速度更快, 强于步兵
新建 project
与修改文本类似, 这次新建一个 unit project, 命名为 UNIT_ProfessionalArmy
删除无用的 GettingStarted.html, 无视不重要的 .Art.xml 文件
重要的是下面几个文件
Units.artdef: 模型定义
UNIT_ProfessionalArmy_Gameplay.xml: 参数设置
UNIT_ProfessionalArmy_Icons.xml: 图标设置
UNIT_ProfessionalArmy_Text.xml: 文本设置
单位参数设置
原版单位结构
作为参考, 打开含 ...
文明 6 mod 制作学习笔记 (1) 从水下第一个 mod 开始
文明6 Mod制作教程(1)做一个最简单的MOD
开发前准备
开发工具
ModBuddy
在拥有文明 6 游戏本体后, 在 Steam - 库 - 工具中可以找到 Sid Meier’s Civilization VI Development Tools
安装后打开, 选择 ModBuddy
ModBuddy 是官方为 mod 开发者提供的 mod 开发工具
其实是 VS2013 套壳版
制作 mod
新建 project
与平时使用 VS 相似, 首先要新建一个 project, 不同的是, ModBuddy 提供了一些模板, 如新建筑, 新文明与领袖等等
由于是水下第一个 mod, 这里选择空的模板
创建完毕后, 模板提供了一个 EmptyMod1.Art.xml 文件, 保存了 mod 的基础信息, 直接删除
删除后右键 EmptyMod1, 新建一个 GameData1.xml 文件, 作为 mod 的本体
替换游戏内文本
原版游戏文本文件
打开游戏本地文件 Sid Meier’s Civilization VI\Base\Assets\Text\Vanilla_zh_H ...
Javascript 中的原型链污染漏洞
才不是为了 bonus 而写的呢
哎嘛, +15%, 真香
Javascript 中的对象
在 Javascript 的世界中, “万物皆是对象”, 同时, JS 的对象和一些其它语言 (如 C++, Python) 中的对象存在一定的差异…
当我们创建一个对象的时候, 我们实际上在讨论什么?
我们用三种语言分别创建一个 “空” 的对象
class Foo{};int main(){ Foo foo;}
class Foo: passfoo = Foo()
var foo = {}
对于 C++ 来说, 一个空的对象, 或许就是一个空的对象: 如果学习过一定时间的 C++, 就会知道这样方法创建的对象仅仅有构造函数和析构函数, 而且是默认的构造函数和析构函数
这样干净的对象, 基本不存在可以利用的漏洞 (指对象层面的漏洞, 与 C++ 其他底层的漏洞, 如内存溢出等无关)
Python 就不一样了, 一个空的对象, 实际上隐藏着许多内置方法
当然, 这些方法的存在肯定会导致漏洞, 例如 CTF 中的沙箱逃逸 ...
文明 6 游戏机制
写在前面
搜集自网络, 部分经过测试
如无特殊说明, 所有数据均为标准速度 (500回合), 对应联机速度时要除以 2
公式
游戏进度相关
游戏进度 GP
定义变量 GP (Game Processing), 表示玩家的游戏的进度占全游戏流程的百分比, 是计算区域涨价, 项目涨价, 收割以及掠夺收益的前置系数
GP=max{T,C}GP = \max\{T,C\}
GP=max{T,C}
其中变量 T 表示玩家已经解锁的科技占科技树的比例, C 表示玩家已经解锁的市政占市政树的比例; GP 保留两位小数 (并非四舍五入, 而是舍弃小数点后第三位)
在文明 6 中, 科技树总量为 77, 市政树总量为 61
Eg 如果一个玩家解锁了 27 个科技和 23 个市政, 那么它的 GP 可以计算为
GP=max{27/77,23/61}=max{0.35,0.37}=0.37GP = \max\{27/77,23/61\}=\max\{0.35,0.37\}=0.37
GP=max{27/77,23/61}=max{0.35,0.37}=0.37
涨价系数
在文明 6 中, 区域和项目 ...
Computer System I Lab project 实验报告
写在前面
不知道什么原因, 也可能是因为博主能力有限, 很少找到 ZJU 计算机系统课的资料笔记, 而且由于该课程的 TA 生产力过高 (赞美 TA), 实验部分常常是一年一换, 因此想找到适合学习的资料更为难上加难
比如去年的实验内容应该是以 RV32I 为板子写 CPU, 今年就变成了 RV64I, 同时很多细节都不一样 (怒)
再此留下一份单周期 CPU 的实验报告, 鉴于一些别的原因, 源码暂不开源, 权当抛砖引玉
数据通路设计
根据设计要求, 数据通路图如下
由于我们设计的是单周期 CPU, 除内存模块, 寄存器模块 Reg[] 和 PC 外, 均可按照组合电路的设计模式设计
Memory
根据数据通路图, 数据走线不可避免地要与内存交流, 因此首先要分析 Memory 接口的结构
由于设计的是单周期 CPU, 所有的操作一定可以在一个时钟周期内完成, 不需要考虑很多, 只需要保持和 Memory 的数据信道的常开即可
需要考虑的是发送 / 接受的读写数据包格式 RrequestBit, RreplyBit, WrequestBit, WreplyBit; 这些格式在之后 ...