• 病毒传播模拟游戏制作日志(二)


    提要


    本系列日志是在开发到一定阶段后,进行分段的总结,事实上与此日志匹配的模拟器第一个版本已经完成了,在制作最终展示的过程中,我想把整个过程做一个日志梳理,因此此日志和实际项目进展有一定的偏差。

    在看本篇之前,请一定了解前置的日志内容,链接如下:

    病毒传播模拟游戏制作日志(一)

    世界初期设计

    在游戏一开始要设定基础的模拟属性,可以编辑的内容比较多,但是一旦开始之后直到结束,它们理论上都不能随意更改,而有一些数值可以进行操控,比如时间速度、病毒数据(认为它进化了)、载体活动频率、相应时间和普遍抗体等,这种操控可以有效的模拟管理政策对模拟世界的反应。

    初步设计基础数值规划

    很显然在最早期完成这个设计有复杂,如果全部做到UI上,可能会花费大量的时间和精力,且在这个阶段,我感觉更多的是臆想,并没有实际和最终模拟器形态一致,因此放弃了直接从UI开始。

    模拟世界构建

    在最开始的开发首先没有从病毒开始,而是从基本的载体开始,并且创建了一个基本的场所,家庭,家庭在创建的时候,会生成成员,其中至少1个成员,最多5个成员,而成员就是人的数据体,为了直观,先实现了一个2D的分布,使用了正态分布算法,模拟出一个简单的世界,这里面的初始家庭数量和世界范围是可以调整的,从而随时能够在程序里变更。

    正态分布算法很重要,除了模拟位置信息,将来还要用它模拟人的年龄结构、健康数据等符合正态分布的数据指标,我估计它可能会用得比较多,所以做成一个公共数据处理方法可以随时在代码的任何地方方便进行使用。

    模拟器中每个白色光点都是一个被模拟的宿主(人),考虑渲染压力的情况下,将光点以Billboard(公告板)技术实现,这样整体的面片渲染能够很好的控制,在最开始我觉得可能2D模拟世界就可以了,但是稍微改了一下,结果发现3D效果更好,于是干脆直接实现3D的世界,它看起来非常的帅,好看归好看,不过确实比较浪费性能,我现在使用的模拟光点如果提高了5000个,全部通过计算面向摄像机的话,还真的是卡的要命。


    先暂时模拟比较小的范围数据吧,降低到100个家庭空间,然后花费了一些时间,实现一个访问移动AI,这样它会依据AI进行特定的移动,现在看到这个效果就是在它自己本空间内的随机移动,AI会依据世界的活跃度,而产生一个外出访问,目的地是随机的一个空间,到达目的的一段时间后返回到自己所属的空间中,翻译成人话就是:AI一段时间就会想出去一趟,它到达目的地后玩开心了就返回家中。


    现在有了和移动有关的基础AI,我计划让访问控制从整个模拟器世界上进行管理,所以需要实现对应的空间坐标更改,以及构建整体的世界管理类,让它有个统一的世界数据管理,这样也方便作整体的调整和数据统计,先后实现了访问行动AI和世界管理器,通过一个比率参数动态调整整个模拟器中,所有人的出行比率,现在看起来已经有了一些规模性的动态,感觉效果还可以。



    这次的分享就到这里,我在积极准备下一步的视频,估计第一个版本将在第三篇开发日志结束,开始第二个版本的制作。

    展示视频正在制作中,点个关注我,更新不错过

  • 相关阅读:
    Linux中文件夹的读、写、执行权限
    限制提权与sudo -s
    shell支持正则:Linux shell判断字符串是否以某些字符开头
    Linux ssh ftp 用户访问权限
    set ff=unix 转换 为 linux 执行shell报bad interpreter:No such file or directory错误
    Sftp服务器搭建和限制用户目录
    ssh 配置文件讲解大全 ssh调试模式 sftp scp strace进行调试 特权分离
    PAM API
    ssh的chroot配置
    PAM详解(一)PAM介绍
  • 原文地址:https://www.cnblogs.com/nowpaper/p/13172333.html
Copyright © 2020-2023  润新知