Scratch版三国霸业创作历程(一)城池将领篇
其实一开始,只是突然想测试一下Scrach编写超过1000个代码块的话,会不会卡顿或者直接崩溃,头脑中第一个想到的就是小时候玩过的三国题材的游戏,于是从7月23日开始正式启动Scratch版三国霸业的制作,这一做就一直持续到了9月11日最终完成!这也是我做过的Scratch作品中历时最长的。(中间还抽出一周时间复习参加了NCT二级Python考试)
为了最终能导出swf文件,起初一直是使用Scratch2.0制作,当代码块超过1000个时,一点卡顿的感觉都没有,实际上当做到10000个代码块时,也根本没有卡顿的现象,不得不说Scratch2.0确实很可靠。但是,当代码块上到20000个,尤其是25000以后,Scratch2.0撑不住了!问题频发,比如,代码显示不全,拖动脚本页面的滚动条时程序未响应。所以个人觉得或许20000个代码块应该是个分水岭,20000个以内Scratch2.0还是值得信赖的,超过了这个数,问题就马上出现,应该也很少人会用Scratch2.0写超过万个代码吧,呵呵。后期要发布到Scratch中国网站,就用Scratch3.0重新生成了一份,Scratch3.0可以向下兼容。

纵观整个程序的制作、设计过程,真的是遇到了非常、非常多的困难和问题。
比如,将领有100多个,每个将领都有自己的武力、政治和忠诚度三个属性。该怎么设计?想必大家都会想到用数据库,可惜Scratch没有数据库,只有些许类似的列表,考虑到每个将领的武力、政治和忠诚度在游戏过程中都会有变化,于是分别用不同的列表来记录它们的数值,使用这种方式的好处是每个将领都有唯一的一个序号,拿到该序号也就拿到了该将领的所有属性的数值。这里我特意设定了一个所有数值全是99的神秘人物,哈哈!

三国霸业里共有17座城池,游戏开始要先选择一座城池,被选中的城池会以红色三角代表,没被选中的城池会分为两种——无太守的空城(未占领)及有君主及将领的独立城池。

每座城池都有农业、粮食、商业、资金、人口、士兵等8项属性。每座城池在每次开始游戏时,都能自己在随机范围内设定相应的属性值,从而让各个城池的属性都不尽相同。

17座城池在游戏一开始会随机拥有若干将领,“将领序号”之所以从12开始,是因为2-11的序号是固定给10位君主,从序号12开始是可随机分配的将领,分配给17座城池。在这17座城池

中,有10座城池是有君主的,若游戏开始时选中的是有君主的城池,则该君主会自动加入。

其他所有有君主的城池则会自动独立,并启用本城在野的将领,同时更新相应的战力。

每个月结束时,非玩家控制的城池会进行自动发展(算是小小的机器学习吧),可根据各自的农业、商业值按我设定的数学公式自动增加,还可能自动征兵,提升战力,征兵时会自动扣减本城的人口。同时,该城有将领时,还会根据将领的忠诚度,发生将领下野或叛逃到其他城池的可能。原先设定的是每个月都有可能发生将领叛变事件,但测试时发现几乎每个月都有将领在叛变,有的将领在3个月内叛变了2次,太过频繁,后来就改成了每4个月才发生一次叛变事件(见倒数第三行代码块),不然有的将领都快成“流窜犯”了,哈哈。

以上主要是关于城池和将领方面的创作之路,设计不周之处还肯定各位大神多多指点!