What are SNIS's effective minimum system requirements? #333
Replies: 11 comments 13 replies
-
That's a reasonable question, but I don't have a precise answer. According to Google, windows XP was discontinued in 2014, and Core 2 discontinued int 2012 so I suppose it is safe to assume this machine of yours is more than 10 years old, correct? The requirements for SNIS have also changed over time... in the early days (2013, 2014), it was quite easy to run on low end hardware, and there used to be a "limited client" that didn't even need a GPU (though it was ugly, esp. for main screen and weapons), but when I converted from GTK2 to SDL2 a few years ago, the limited client didn't survive, and now it makes a lot of use of the GPU with some hefty textures for the planets. (planets typically have 6 1024x1024 textures, which, when decompressed will require something like 25M of RAM per planet, then this gets copied to the GPU, and there are typically 6 planets, so lets call it 150M just for planet textures. Looking at snis-client in htop, on my system, I see it consuming 2.4G of virtual memory (VIRT), 700M of physical memory (RES), and 570M of shared memory(SHR). The latter is probably shared libraries. That VIRT is 2.4G and your machine has a total of 2G physical memory might be problematic, but it might not, it's hard to say. You can use up a lot of virtual memory address space mapping the same phyiscal memory to different virtual addresses, etc. In any case, I am suspicious that 2G may not be big enough. I believe my raspberry pi 4B's have 4G. What do you have for a GPU? That you're seeing weird things on the screen rather than only low FPS makes me think you might be running out of GPU memory. As an experiment, you could try replacing the planet textures in share/snis/solarsystems/default with smaller textures (e.g. just scale them down to 128x128 in the gimp or with ImageMagick or something) and see if that helps (will look ugly, but might make it run if GPU memory is the only problem because it should reduce memory foot print of planet textures to 1.5%) "make update-assets" should restore them to normal after such an experiment. I'm not too hopeful this will actually help though. Is there anything interesting in snis_client_log.txt? A "normal" snis_client_log.txt should look something like this:
|
Beta Was this translation helpful? Give feedback.
-
Out of curiousity, I tried my experiement of converting all the planet textures (I used share/snis/solarsystems/zolon, not share/snis/solarsystems/default, because the latter is a bit weird for reasons I won't go into right now). The memory usage reported by htop was: VIRT: 1962M, RES: 460M SHR: 331M compared to (with the original, large planet textures): VIRT: 2400M, RES 700M, SHR: 570M So, fairly hefty savings. Surprisingly, it looked a lot better than I expected with the 128x128 textures. If you want to try this, install ImageMagick, and run this script in the share/snis/solarsystems/zolon directory:
Then run with "zolon" as the solarsystem snis-server is serving. |
Beta Was this translation helpful? Give feedback.
-
I had the same thought, but let's see if it helps first. |
Beta Was this translation helpful? Give feedback.
-
This could mean it's running out of memory, because linux overcommits, so malloc() will return what appears to be a valid pointer, but then when you try to use it it, the kernel fails to find physical pages of RAM to back it up, and kills your program with a SIGSEGV. I noticed this in the logs:
However, in this case, those are all related to an anti-aliasing shader which isn't used by default, so I don't think that's a problem. One of the log files (crash4) contained this... which is a bit strange.
You somehow got a lot of entities going.
This means you said "y" (or took the default) when it asked you "Autowrangle snis_servers (y/n, default = y)?" so it started 4 instances of snis_server, the idea being that you can travel from one solar system to another through warp gates. Better to say "n" for that since memory is constrained so it will only start 1 instance of snis_server. It's not looking too good for getting it to run on this old machine though. |
Beta Was this translation helpful? Give feedback.
-
Well good that it runs at all, I suppose. 5:35 loading time does seem excessive. My guess is most of this time is decoding PNGs. 20FPS isn't great either. Pressing F11 to take it out of full screen mode, and shrink the window down to a smaller size might get the FPS a bit faster. Or run the screen at a lower resolution (maybe it's already low on such an old machine). Or, if memory pressure is driving it to swap, that would kill performance. |
Beta Was this translation helpful? Give feedback.
-
I'm working again on this project. At the moment, it's heading in the direction of building a custom .ISO for personal use. What all does SNIS expect to be present before it will compile and run? I just tried running it from a TTY to save on GPU RAM, but SNIS_launcher didn't even seem to notice it lacked a graphical server in which to start the client. |
Beta Was this translation helpful? Give feedback.
-
Everything other than snis_client should run fine without video. For the client, if you look in snis_client_log.txt, you'll probably see this:
Maybe this will help: https://askubuntu.com/questions/443053/could-not-initialize-sdl-no-available-video-device-dont-move |
Beta Was this translation helpful? Give feedback.
-
BTW, there's this project: https://github.com/hugglesfox/snis-live although it hasn't been updated in quite some time, and I've never tried it. |
Beta Was this translation helpful? Give feedback.
-
I've not tried Arch either, and I'd probably look for ISO solutions for a distro I was already familiar with before trying that. Ages ago, I had step by step instructions for creating SNIS ISOs for Linux Mint, using, iirc, mintconstructor, but over time those instructions suffered excessive bitrot so I removed them. |
Beta Was this translation helpful? Give feedback.
-
Oh... wait, I forgot I have this: https://smcameron.github.io/space-nerds-in-space/new_bootable_media_instructions.html Maybe that's some help? Those instructions weren't written by me, but they are a replacement since mintconstructor disappeared. They might also be too old now though, since they talk about Mint 18, and I'm currently running Mint 20, and Mint 21 is current, and that file was last touched in 2018. At a minimum, the packages have changed, e.g. GTK2 stuff is no longer needed, SDL2 is needed, etc. The dependencies under "Step 2: Install Dependencies" on this page https://smcameron.github.io/space-nerds-in-space/#buildinstructions should be pretty accurate. Oh, and I didn't delete the mintconstructor based instructions, they're here: https://smcameron.github.io/space-nerds-in-space/old_bootable_cd_instructions.html last touched in Jan of 2017 ... was still living in California then. |
Beta Was this translation helpful? Give feedback.
-
You can start snis_client without snis_launcher. snis_launcher is there just because there are a lot of command line options, and it's hard to remember, type and explain them all. So snis_launcher figures them out for you easily. However, you can see what it's doing.
I made the above change so that it prints out what it would have done, and also captures the shell environment. Then, I can do:
And it prints out:
So that is the command it's running. Well, snis_client doesn't have so many mandatory options these days as it used to. And we can see what changes were made to the environment:
I think the only important difference is:
If you don't want to use libttspico, it will fall back to espeak. (The quality of libttspico is miles and miles better than espeak though, especially with the British lady voice.) |
Beta Was this translation helpful? Give feedback.
-
I understand this is going to be a very complicated answer owing to the modular nature of the game and variable weight of Linux, but I couldn't find anything except [Not a Raspberry Pi] or more recently: [Nothing weaker than Pi 4B for most stations].
I just got to a SNIS client running its own servers using a system with 2GB of RAM and a Core 2 CPU with 2 cores (originally built to run XP). The game took minutes to load, the weapons were sluggish, and the main screen degraded after a couple minutes into displaying random tri's with simple rgb colors, but the other stations appeared to work for a few minutes of testing. (I had no speakers hooked up, so I couldn't test sound.)
So while I understand it doesn't make much sense to ask the minimum/recommended specs on the simple stations as about anything with a window manager can run them, what is needed for Main Screen/Weapons?
Beta Was this translation helpful? Give feedback.
All reactions