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

2021-01-03 12:30:32 +08:00
 pabupa
玩到后面每一帧至少都要有几十万几百万次的计算吧,,,它是怎么做到的?
4228 次点击
所在节点    游戏开发
18 条回复
pabupa
2021-01-03 12:53:17 +08:00
而且最神奇的是 cpu 和 gpu 的负载都不大。而同类型的游戏 anno1800 ( 3d 的),不仅负载高,而且内存和显存全都占满。
cest
2021-01-03 13:07:42 +08:00
负载不大?

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

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

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

@pabupa
Anno 1800 的画面全部拉满跟 Factorio 也不是一个量级的。不过 Anno 1800 20 万人口的档玩上两个小时能占用接近 30 GB 的内存也是很令人无语。
himself65
2021-01-03 13:55:35 +08:00
secondwtq
2021-01-03 14:04:19 +08:00
@himself65 #6 我怎么看怎么感觉他说的是 false sharing,然后说祖传引擎不好改,干脆就弃疗了
说白了还是一核有难七核围观 ...
learningman
2021-01-03 14:06:53 +08:00
有人跟我说过,现代 CPU 近似认为每秒执行一亿次运算
Revenant
2021-01-03 17:15:24 +08:00
之前就一直听说异星工厂的多核优化不好,很吃 CPU 主频
千瓶流水线和万瓶流水线是两个世界
mchong
2021-01-03 20:25:42 +08:00
@secondwtq 确实是。在我的 5900x 上是一核有难二十三核围观。。。没多少东西,但是帧率就降低到不到 40 了。
chenyu8674
2021-01-03 20:26:08 +08:00
居然没人提到 Mindustry……
开源,玩法跟 Factorio 差不多,不知道有没有可供 LZ 参考的
https://github.com/Anuken/Mindustry
honjow
2021-01-03 21:08:19 +08:00
单核游戏🌚
shad0walk
2021-01-04 09:52:23 +08:00
实例化吧,一个 mesh,N 个 instances
levelworm
2021-01-04 11:06:19 +08:00
@VZikl1 我去居然是这个上古引擎。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX