ARM Build

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

torne
Filter Inserter
Filter Inserter
Posts: 342
Joined: Sun Jan 01, 2017 11:54 am
Contact:

Re: armhf Server Build

Post by torne »

The game isn't really client-server based - the "server" still runs the entire game simulation exactly like all the clients do. The only difference is the server doesn't start up a user interface or create a player.
AeonBear
Burner Inserter
Burner Inserter
Posts: 6
Joined: Sat Jun 24, 2017 5:41 am
Contact:

Re: armhf Server Build

Post by AeonBear »

A much simpler solution may be x86 emulation on ARM. Just did a quick google search and came up with this.
https://eltechs.com/product/exagear-des ... nd-prices/

Don't know if it will work but they offer a free trial, it's worth a try.
Koub
Global Moderator
Global Moderator
Posts: 7784
Joined: Fri May 30, 2014 8:54 am
Contact:

Re: armhf Server Build

Post by Koub »

viewtopic.php?f=5&t=18128&start=30#p119301
Good luck with an emulator :)
prg wrote:
sillyfly wrote:Is it actually playable before setting game speed to 1000?
Factorio on a software renderer running in an emulator on a 700MHz ARM CPU? No, no it's not playable.

Code: Select all

15119.321 Factorio initialised
Just starting the game took over 4h.
Koub - Please consider English is not my native language.
John_Dong
Burner Inserter
Burner Inserter
Posts: 5
Joined: Tue Jun 27, 2017 3:01 am
Contact:

Re: armhf Server Build

Post by John_Dong »

torne wrote:The game isn't really client-server based - the "server" still runs the entire game simulation exactly like all the clients do. The only difference is the server doesn't start up a user interface or create a player.
Regardless it can be written in a more portable language. You can make some insanely fast servers in Python or C#.
torne
Filter Inserter
Filter Inserter
Posts: 342
Joined: Sun Jan 01, 2017 11:54 am
Contact:

Re: armhf Server Build

Post by torne »

John_Dong wrote:
torne wrote:The game isn't really client-server based - the "server" still runs the entire game simulation exactly like all the clients do. The only difference is the server doesn't start up a user interface or create a player.
Regardless it can be written in a more portable language. You can make some insanely fast servers in Python or C#.
You're missing my point entirely: what I meant is that you can't just write a server that is a small part of what the game does, because you need to run the entire game simulation on the server. To "port" the server to another language you would need to reimplement literally the entire game with the exception of the graphics engine. This wouldn't just require that the protocol was documented, it would require basically open-sourcing the entire game, because your "new" server would need to know the exact logic of how every single thing in the game interacts.

People already regularly complain that the game as-is can't run the simulation at 60 UPS on a fairly-large base on a slightly-older-than-average x86 desktop PC - there is no way that someone can write a new version of that exact same simulation code in Python or C# and have it run with even comparable speed on an embedded ARM device with significantly less raw computing power.

The only realistic way the game is going to run on ARM is if the developers choose to do the porting work to make sure their existing C++ codebase builds cleanly for ARM and functions correctly (including calculating the exact same results for every situation, otherwise you get multiplayer desyncs) - how much work this would be to do the porting I don't know because I've not seen their code. It might be relatively low, it might be a lot, depending how it's coded. But... even if they've written wonderful portable code and it's virtually no work to get it to build and run on ARM, testing it and making sure it's good enough to release, and that multiplayer really works without desyncing, is still going to be a big time investment, and the result is *still* going to run significantly slower than it does on a desktop PC because the hardware you're talking about simply is less powerful (especially for single-threaded performance and memory bandwidth, which is primarily what Factorio needs). The developers have decided that this isn't currently worth the time investment and that they'd rather continue working on the game for the type of computer that virtually all their players actually run it on, and I think that's a reasonable decision - you absolutely can disagree with that decision, but just believing that it's easy or that the community could somehow make it work for them is untrue.
AeonBear
Burner Inserter
Burner Inserter
Posts: 6
Joined: Sat Jun 24, 2017 5:41 am
Contact:

Re: armhf Server Build

Post by AeonBear »

Koub wrote: Good luck with an emulator :)
I was thinking if you are running a server especially on weak hardware you would be running a headless server, and wouldn't have to worry about rendering any graphics at all.
Although it's interesting you brought up the challenge of graphical rendering and gaming on a PI so I did a little more digging to fuel my argument because I enjoy being correct.

The emulator I linked is bold claiming they are running Counter-Strike and Diablo II at playable framerates on a PI, which is quite impressive. They claim they are getting hardware 3d acceleration and support multiple cores.

Other PI Entusiests are even running windows games using wine and x86 to ARM emulation. I'm not sure if I should be impressed or scared...
https://www.raspberrypi.org/forums/view ... 8&t=137336

One user on that thread does have a valid point: "Yes BUT for that price could buy an old x86 PC Tower :shock: :roll:"
Just because you can, doesn't mean you should.

EDIT:
Hmm Ok so the headless server is x64 only so turns out I was wrong. Whoops.
Rest assured all dreams for ARM are crushed, as if not even 32 bit is going to be supported due to determinism and desyncing errors, hell will freeze over before they decide to port a project under development to a whole different CPU architecture. No emulator, No native server. Many tears. :lol:
PeaceDealer
Burner Inserter
Burner Inserter
Posts: 14
Joined: Sun Nov 06, 2016 1:00 pm
Contact:

ARM CPU Suport

Post by PeaceDealer »

Hi.

I've seen posts asking about hosting headless on computers like Raspberry Pis, being told that no arm version exists.

I'd just like to know, is arm suport a planned thing?
or is it deemed irrelevant, due to them being less powerful, less common ect?

I know c/c++ can compile to arm, but there may be sruff about the Dev environment that makes it difficult /impossible.

I also understand, this not being a priority, as it would cause alot of extra debugging, and I personally would prefer the focus to be on this amazing game itself.

Question is basicly, is it somethign in mind for the future?
posila
Factorio Staff
Factorio Staff
Posts: 5349
Joined: Thu Jun 11, 2015 1:35 pm
Contact:

Re: ARM CPU Suport

Post by posila »

PeaceDealer wrote:Question is basicly, is it somethign in mind for the future?
We do not plan to make builds that would run on Raspberry Pi (or other similar computers), nor consider making plans to ever do it. And if anyone does build Factorio for RPi, we won't support cross-platform multiplayer between PCs and ARMs (as in - we won't fix issues the cross platform multiplayer would have).

I am sorry :(
Arakasi
Fast Inserter
Fast Inserter
Posts: 109
Joined: Tue Feb 26, 2013 9:43 pm
Contact:

Re: ARM architecture

Post by Arakasi »

Hello Devs,

years passed and I would ask again, whether any ARM version is planned or not. Since v0.16 received portion of optimizations and in v0.17 more may come, the situation could have changed.

Thanks
nuhll
Filter Inserter
Filter Inserter
Posts: 946
Joined: Mon Apr 04, 2016 9:48 pm
Contact:

Re: ARM architecture

Post by nuhll »

If i read some posts about factorio performance correct, it isnt so hard the CPU, mostly RAM Bandwidth.. i dont know how good that is on rasp, but i guess, its crap.
posila
Factorio Staff
Factorio Staff
Posts: 5349
Joined: Thu Jun 11, 2015 1:35 pm
Contact:

Re: ARM architecture

Post by posila »

No plans to support ARM version.
Jap2.0
Smart Inserter
Smart Inserter
Posts: 2375
Joined: Tue Jun 20, 2017 12:02 am
Contact:

Re: ARM architecture

Post by Jap2.0 »

Arakasi wrote:Hello Devs,

years passed and I would ask again, whether any ARM version is planned or not. Since v0.16 received portion of optimizations and in v0.17 more may come, the situation could have changed.

Thanks
I'd say probably not. It's not something they've ever announced, there isn't much demand (they're not supporting mobile and PCs generally aren't ARM). CPUs in Raspberry Pis are meh at best (they'd never run a megabase above 1 UPS), they only have 1GB RAM (so it's questionable whether you could run the game in the first place), and, as nuhll pointed out, RAM latency/bandwidth is... bad. Really bad. With a lot of overclocking, you can get it to reach 600 MHz, which is (iirc) somewhere around the performance of DDR2.

Also, Posila confirmed that in the time I took writing this (and reading Wikipedia).
There are 10 types of people: those who get this joke and those who don't.
orbiter28
Manual Inserter
Manual Inserter
Posts: 2
Joined: Thu Nov 08, 2018 5:04 pm
Contact:

Re: Factorio (Server) ARM Build

Post by orbiter28 »

raspberry pi 3 have 1Gb of memory.
I think it's ok for a server, non-gui are optimized, and most game have few players.
It's a very good solution : efficient, cost saving, fanless, and it's ok for testing.
Rseding91
Factorio Staff
Factorio Staff
Posts: 14269
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: Factorio (Server) ARM Build

Post by Rseding91 »

We don't consider it worth our time to invest in making an ARM build. The deterministic nature of Factorio means we need to care about even basic math operations being the same across platforms and ARM being a completely different architecture is almost certain to have deterministic issues with x86 CPUs.
If you want to get ahold of me I'm almost always on Discord.
PunPun
Long Handed Inserter
Long Handed Inserter
Posts: 69
Joined: Sun Mar 27, 2016 7:08 pm
Contact:

Re: Factorio (Server) ARM Build

Post by PunPun »

Even if you could get it to fit in the pis limited memory(Would seriously limit the map size) and solve the determinism issues(which would most likely impact performance a lot since you would have to do anything other than basic integer math with a software solution) I don't think even the newest and fastest raspberry pi would be fast enough to get anywhere near 60ups. I would be very surprised if you got even half of that. x86/x64 does a lot more per clock sycle than the armv8-A that the pi uses. Also the pi3 has a 900mhz lpddr2 with very high latency compared to ddr3/4. For the purpose of running a factorio server the raspberry pi 3 would be comparable to a slow pentium 3 with low end ddr2 memory. Also note that because of the sequential nature of factorios simulation the pi having 4 cpu cores would not help much. I have multiple raspberry pis(including the 3+) and have done a lot of things with them and I'm quite confident that even if there was a arm build of the factorio server you would not like the experience at all.

If you want a low power&quiet server for factorio(or almost any other game that has a GUIless server) I would recommend getting a machine with an intel G5600. Its relatively cheap and has very low power consumption when compared to other processors with similar preformance for running game servers. And if you slap a big heatsink on it with a fan that only turns on when the cpu goes over 60c the fan would most of the time be off. Also it is an x64 processor so you would not need to worry about wheter there is an arm build or not for the game you are planning to host on it. It would be 2x or 3x as expensive as an rpi but you would get 20x to 50x the performance.
User avatar
bobingabout
Smart Inserter
Smart Inserter
Posts: 7352
Joined: Fri May 09, 2014 1:01 pm
Contact:

Re: Factorio (Server) ARM Build

Post by bobingabout »

Rseding91 wrote: Thu Nov 08, 2018 6:54 pmis almost certain to have deterministic issues with x86 CPUs.
You don't use x86, you couldn't sync it's determinism with x64, so you dropped it.
Creator of Bob's mods. Expanding your gameplay since version 0.9.8.
I also have a Patreon.
Rseding91
Factorio Staff
Factorio Staff
Posts: 14269
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: Factorio (Server) ARM Build

Post by Rseding91 »

bobingabout wrote: Fri Nov 09, 2018 9:01 am
Rseding91 wrote: Thu Nov 08, 2018 6:54 pmis almost certain to have deterministic issues with x86 CPUs.
You don't use x86, you couldn't sync it's determinism with x64, so you dropped it.
x86 is the CPU architecture. "32 bit" is the 32 bit build and we didn't drop it just because of determinism. We dropped it because it was annoying to maintain, < 1% of the player base used 32 bit, and the base game needed > 2 GB to run comfortably.
If you want to get ahold of me I'm almost always on Discord.
PunPun
Long Handed Inserter
Long Handed Inserter
Posts: 69
Joined: Sun Mar 27, 2016 7:08 pm
Contact:

Re: Factorio (Server) ARM Build

Post by PunPun »

Rseding91 wrote: Fri Nov 09, 2018 10:15 am
bobingabout wrote: Fri Nov 09, 2018 9:01 am
Rseding91 wrote: Thu Nov 08, 2018 6:54 pmis almost certain to have deterministic issues with x86 CPUs.
You don't use x86, you couldn't sync it's determinism with x64, so you dropped it.
x86 is the CPU architecture. "32 bit" is the 32 bit build and we didn't drop it just because of determinism. We dropped it because it was annoying to maintain, < 1% of the player base used 32 bit, and the base game needed > 2 GB to run comfortably.
All processors that implement the x86 instruction set and are part of the x86 architecture family. The x86 instruction set was named based on the first processor that used it the intel 8086 which was a 16 bit version of the intel 8080 that was for some reason exluded from the family. The x86 family has 8 generations so far with several architectures in each generation. The first two generations were 16 bit and only the last one is 64bit. Each newer generation was supposed to be backwards compatible with all the previous ones but the cpu manufactorers sometimes removed features making them only partly backwards compatible. Tough sometimes x86 is referred to as an architecture it is infact an architecture family. If you want to name an architecture that would be amd ryzen or intel kaby lake etc. x64 is a 64bit subset of the x86 and sometimes x86 is a 32bit subset of x86 that does not include the intel 8086 after which the whole thing was named after. And sometimes I wonder if the people making computer stuff are naming things the most confusing way possible on purpose. It also doesn't help that people are using the terms whicheverway and they have all become a jumbled mess and its sometimes impossible to know what exactly someone means when they use them making both of you wrong and right at the same time and then there's two gpu designers who released two different products with the exact same name multiple times and this stuff is just plain ridiculous.
Aeternus
Filter Inserter
Filter Inserter
Posts: 835
Joined: Wed Mar 29, 2017 2:10 am
Contact:

Re: Factorio (Server) ARM Build

Post by Aeternus »

Then here's it simplified for those who have terminology OCD:
32 bit Windows operating systems have a 2GB addressing space for applications (by default).
Factorio needs more then 2GB to function properly. Therefor Factorio doesn't work well within a standard 32 bit environment.
Therefor Factorio is now a x64 only application.
Post Reply

Return to “Ideas and Suggestions”