1 / 14
文档名称:

《城市天际线》MOD制作教程.docx

格式:docx   大小:209KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《城市天际线》MOD制作教程.docx

上传人:miaoshen1985 2018/9/12 文件大小:209 KB

下载得到文件列表

《城市天际线》MOD制作教程.docx

文档介绍

文档介绍:以下是小编为大家带来城市天际线MOD制作教程。
一、首先是天际线的基本概念体系,以及AI在其中所起的作用。
游戏里有很多的建筑物、人、车等事物。这些东西都有自己的属性,比如位置在哪?颜色?是生老病死,还是3级5级?移动速度?等等,描述的是物体的客观状态。还有一类,就是这些事物的行为方式:
例如小人是去买东西,还是去上班?出门是坐公交还是自己开车?公交车下一站往哪开?建筑物是升级还是废弃?这些基本都是由各个物件自己决定的,那么这个决策部分,就称之为AI,用面向对象来说,就是行为/方法(method)
比如市民,市民是一个类,名字、男女、年龄、教育程度、健康状况、是否在开车等等,是属性。但是市民有几十万,每一个市民都有自己不同的属性,有几十万的对象,在内存里都要占用相应的位置,但是他们的AI是一致的,AI只有一个。修改了这个AI,所有市民的行为方式都会相应变化。
然后是天际线中跟AI相关的有如下常见类名后缀:
AI、Manager、Info(当然还有很多与UI相关的,我就不再列举了,跟本文关系不大)
AI毫无疑问就是AI类的了,CitizenAI就是市民AI(这里我简单化了,后面我会详细讲到,这个CitizenAI其实不是“居民AI”)
Manager是所有相关对象引用的管理类,比如CitizenManager就是管理所有市民的管理器,无论是创建一个市民,还是查询所有生病的市民,都要通过这个管理器
Info是一类对象的“模板”。这里我用建筑物来解释。比如警察总局,就是一个BuildingInfo类的对象。里面定义了这个物件的名称叫“警察总局”,所有警察总局的属性,比如造价、维护费用、占地大小等等,都是在这里的,警察总局的AI,也是在这里有一个引用(AI是另外一个类)。不管你在游戏中建几个“警察总局”,这个BuildingInfo对象都会只有一个,但是不同位置的警察总局,会有多个不同的Building对象(其实是struct)来表达,比如具体的xz位置(y在天际线里是高度轴),或者你给他改名叫“天下第一警察总局”,那么名字也是存在这里的。
接着,是跟AI相关的横向概念。
天际线里AI总共分4类:建筑物(Building)、车辆(Vehicle)、市民(Citizen)、)。
每类都会有一个上述英文名称的struct来表达数据, 以及配套的前述3个类(AI、Manager、Info),和众多的相关衍生类。
当然这也只是一个最基本的分类,最深的继承关系可达7层,由于此图是在是太大,所以我在下图仅以市民AI举例说明:
在天际线中,CitizenAI其实应该翻译成是“生物AI”好点。它有2个子类:动物AI和人类AI。也就是说,你在游戏中看到的鸟啊,宠物狗啊什么的,其实都是算作是Citizen,都用Citizen这个struct来存储数据的,占用那104万上限。动物AI就不说了。人类AI中又分为服务人员AI(就是消防队那个灭火的小人、灵车抬尸体的小人等)、旅游者AI和居民AI。这里最多的就是居民了,104万的上限,我看有人达到了101万。
那么,这所有的104万的Citizen,全部都是由CitizenManager来管理的。CitizenManager中有创建市民的方法,销毁的方法,查询的方法等。当前市民数量、Citizen集合的引用等信息,都是这个类的变量,市民的总数上限啊、市民出行开车的概率啊、生孩子的概率啊、成为gay的概率啊等等常量,也都在这里。这个CitizenManager是单例的,你不能显式的去创建这个对象,调用单例的方法后面的代码里有。
另外还要提一句,市民上限是100万多点,但是不代表所有的市民都会被显卡“画出来”,只有被实例化(Instance)的市民,才会交给frame,去具体的在界面上画出来。Instance的上限,我记得是65000+,所以大家不用担心人多了显卡“画”不动
二、基本API解读
官方给出了一个基本的API文档。但是。。真的是太基本了,基本什么也做不了。但是给的这些API又确实非常基础,无论你做什么MOD,这几个API还确实是很常用的。所以还是要大体上说一下的。
1、IUserMod
最简单,最常用的interface,没有之一。就是定义MOD的名称和描述。基本没其他作用。
代码:
using ICities;
namespace SuperBigTransport
{
public class Mod : IUserMod
{
public const int unit_number = 16;
public string Name
{
get
{
return "【SB】超级客运"+ unit_number * 5 + "人版| Sup

最近更新

信息科技管理在医疗健康领域中的应用 18页

2024年康养企业项目投资申请报告代可行性研究.. 59页

2024年会计、审计及税务服务项目资金筹措计划.. 78页

围手术期术后处理 32页

动物细胞与组织培养技术 186页

先进制造技术第一讲 54页

嘉里大通物流有限公司简介 53页

2024年炊事设备项目资金需求报告代可行性研究.. 81页

一封给校长的建议书范文 7页

个人收房委托书模板(3篇) 3页

二年级语文《田家四季歌》教学设计 53页

优秀园长发言稿 27页

英语四级考前一个月冲刺计划 5页

苏教版二年级下册识字7课件 25页

自动化第二党支部何亚丽-PPT课件 20页

2023年毕业答辩开场白合集15篇 23页

C语言课程设计报告—工资信息管理系统 16页

《绿色产业指导目录(2023年版)》(征求意见稿).. 13页

个人社会实践心得体会范文(精选7篇) 11页

传承红色精神演讲稿优秀范文【5篇】 15页

公寓委的工作总结8篇 30页

初中物理第1章精选试题含答案 9页

危险源辨识(辨识依据及方法) 13页

国开电大管理英语1形考任务单元自测6试题及答.. 11页

学习中小学幼儿园安全管理办法知识测试题及答.. 16页

小学语文实践活动怎样开展 8页

广东省深圳市富源学校2022-2023学年高一下学期.. 12页

先心病基础知识ppt课件 33页

混凝土分包合同 5页

2022年北京市昌平区水务公司招聘考试试题及答.. 3页