V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
pabupa
V2EX  ›  游戏开发

有人知道 factorio 怎么实现的吗?

  •  
  •   pabupa · 2021-01-03 12:30:32 +08:00 via Android · 4501 次点击
    这是一个创建于 1418 天前的主题,其中的信息可能已经有所发展或是发生改变。
    玩到后面每一帧至少都要有几十万几百万次的计算吧,,,它是怎么做到的?
    18 条回复    2021-01-04 11:06:19 +08:00
    pabupa
        1
    pabupa  
    OP
       2021-01-03 12:53:17 +08:00 via Android
    而且最神奇的是 cpu 和 gpu 的负载都不大。而同类型的游戏 anno1800 ( 3d 的),不仅负载高,而且内存和显存全都占满。
    cest
        2
    cest  
       2021-01-03 13:07:42 +08:00
    负载不大?

    1 核有难,15 核围观吧
    另外 dev 认为最大 bottleneck 是 ram 频宽
    改 multithread 收益也不大
    VZikl1
        3
    VZikl1  
       2021-01-03 13:08:14 +08:00 via Android
    factorio 用的 allegro 引擎吧
    fuxiuyin
        4
    fuxiuyin  
       2021-01-03 13:27:09 +08:00
    感觉异星工厂应该是基于物品的,每一帧应该是先计算物品移动,然后就能知道有多少机械爪需要计算,之后就知道有哪些制造工厂需要更新,这样想算下来每一帧的计算量也不大。物品也不是每一帧都需要计算全部的,有些物品在传送带上卡着,前面的不动就肯定不会动。
    himself65
        5
    himself65  
       2021-01-03 13:33:49 +08:00   ❤️ 1
    多看看官方 blog,里面写了很多优化的文章。

    说白了就是优化做的好,没别的……

    https://www.factorio.com/blog/
    himself65
        6
    himself65  
       2021-01-03 13:37:28 +08:00   ❤️ 3
    补充#2 的多线程
    https://www.factorio.com/blog/post/fff-215 这篇文章里说了多线程互相窃取 cache 甚至会让程序跑的更慢,最后说有良好的数据结构再用多线程会更好
    secondwtq
        7
    secondwtq  
       2021-01-03 13:44:33 +08:00 via iPhone
    Anno 1800 和 Factorio 是”同类型”的么……
    himself65
        8
    himself65  
       2021-01-03 13:52:16 +08:00
    @pabupa 和 Factorio 同类型的游戏应该是 Rimworld 和 Prison Architect 这种(从开发角度),不过 Prison Architect 明显已经放弃治疗了
    Girlphobia
        9
    Girlphobia  
       2021-01-03 13:52:46 +08:00 via Android
    @secondwtq Factorio 和 Anno 系列的流水线一定程度上是同一类型的,不过总体游戏性上两个差距还是有些大的。

    @pabupa
    Anno 1800 的画面全部拉满跟 Factorio 也不是一个量级的。不过 Anno 1800 20 万人口的档玩上两个小时能占用接近 30 GB 的内存也是很令人无语。
    secondwtq
        11
    secondwtq  
       2021-01-03 14:04:19 +08:00   ❤️ 1
    @himself65 #6 我怎么看怎么感觉他说的是 false sharing,然后说祖传引擎不好改,干脆就弃疗了
    说白了还是一核有难七核围观 ...
    learningman
        12
    learningman  
       2021-01-03 14:06:53 +08:00
    有人跟我说过,现代 CPU 近似认为每秒执行一亿次运算
    Revenant
        13
    Revenant  
       2021-01-03 17:15:24 +08:00
    之前就一直听说异星工厂的多核优化不好,很吃 CPU 主频
    千瓶流水线和万瓶流水线是两个世界
    mchong
        14
    mchong  
       2021-01-03 20:25:42 +08:00
    @secondwtq 确实是。在我的 5900x 上是一核有难二十三核围观。。。没多少东西,但是帧率就降低到不到 40 了。
    chenyu8674
        15
    chenyu8674  
       2021-01-03 20:26:08 +08:00
    居然没人提到 Mindustry……
    开源,玩法跟 Factorio 差不多,不知道有没有可供 LZ 参考的
    https://github.com/Anuken/Mindustry
    honjow
        16
    honjow  
       2021-01-03 21:08:19 +08:00 via iPhone
    单核游戏🌚
    shad0walk
        17
    shad0walk  
       2021-01-04 09:52:23 +08:00
    实例化吧,一个 mesh,N 个 instances
    levelworm
        18
    levelworm  
       2021-01-04 11:06:19 +08:00
    @VZikl1 我去居然是这个上古引擎。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1428 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.