If it runs in Debian.. it will run on anything. Thanks @MarcosRC!
Posts by Steve
A new update is now available, introducing seasons and more!
Latest hotfix: 0.8.0.1 (2024-12-20)
Latest hotfix: 0.8.0.1 (2024-12-20)
-
-
Hi @red51 is there any known workaround for running the game in 2160p (3840x2160)? I've included two screenshots: one from the game today running in 2160p where some of the items are scaled, such as chat, but others like the inventory and cursor are not; the other screenshot is from my desktop/application selection on Arch Linux/Gnome 3.24 for comparison showing how the overall desktop is scaled fine.
I run the game from a self-written "launcher" to give it more memory as I've found that this helps a lot in multiplayer, especially with teleporting, and overall runtime smoothness. Other than the scaled items, it runs great in 3840x2160 and I'm able to maintain a smooth framerate even flying in single player at 200X, with max view distance and detail, full AA (GTX 1080 Ti, 11GB). Thanks for all the help and all the hard work, I really appreciate it!
-
@Steve: Basically it would be interesting to see the different distros, unfortunately it's a little bit tricky, since the lsb_release command would not work on all distros, and some distros are not lsb compliant... Although I guess this only affects very few servers... We'll try to implement it for the next version, then we can see how many servers are actually affected. Depending on how many different distros are actually in use, we may add this information to the stats page
Thank you! Yes, there are hundreds (or more?!) of distributions, but the top ten or so dominates most of the desktop, and definitely server installs. lsb_release is tricky.. as with everything in the Linux world, people have all sorts of opinions about what/how/if something should be done or included. I don't think it has the support that the original team would have liked, but it is still a pretty good way to get the distribution of the machine it's run on. At the very least, it's supported by the major distributions. Looking at the Steam Hardware survey (n= ??) and the GamingOnLinux user survey (n=2308, July 2017) it looks like the vast majority of players are on either Debian or Arch ( ) based systems... so it should be pretty simple to get that information.
-
@red51 I noticed that a majority of the servers are running on Linux; I'd be interested to know a little more about the distributions they are on, like the information that's shown on Windows. For example, right now there are 103 Linux servers (general description) but we know that (lol!) one server is on Windows Vista?! I know it's a little tricky because different Linux OS will put the information in different files, but they should have lsb_release available that you can capture:
-
Oh, could you provide more information about that? Which JRE/JDK did you use exactly? Eventually we may replace the current JRE which is delivered with the Steam Linux version
Thank you! I noticed today how soon "eventually" means in Red-time
-
Oh, could you provide more information about that? Which JRE/JDK did you use exactly? Eventually we may replace the current JRE which is delivered with the Steam Linux version
See edit at bottomSo I've actually tested this game enough to ask for QC title. On Arch Linux ( the plain ole shoot yourself in the foot 5X then it runs for the next 10 years, Arch ) rolling release, 64bit,
currently on 4.10.10, but I have I think 2 kernel updates need to compile. I'm either the best Linux tester for you or the worst. Best b/c I know what info you're looking for.
Worst b/c on a rolling release I get updates within hours of them being available (Ubuntu might be 2 years.. not a dis, just facts, people So in a way it's like someone
futureproofing your code so long as it doesn't break before 50% of your Linux users catch up on libraries, etc. Ok, sorry JRE/JDK:2017 JDK: (relevant timeline since I've played) Arch 64bit
===============================================[2016-11-04] installed jdk (8u112-1) < I switch between these two. Probably 80-90% Oracle Java, but when testing
[2017-04-22] installed jdk8-openjdk-jetbrains (8.u112.b783.1-1) < JVM features, I would usually go test on both and they are 99% compatable I think.
+ The Oracle installs are binary install, while I compile the patched OpenJDK.
* Also on the laptop is Oracle early access 9 (snapshot), but obviously doesn't run RW.I'll also probably be filing a but report tomorrow or Monday when I get a chance. My CPU usage went up with the latest release (why I was delayed reporting back here -- trying to figure out what it was before I blessed any given JDK... ) I've seemed to narrow it down to libfmod, but will need to install previous build to confirm. If there is something you can shoot back one line here, like "YEAH, we had a fmod update" that would make me feel better otherwise I'll gather some logs and such and let you grep your way through them.
2017 JDK: (relevant timeline since I've played) Arch 64bit [ host ] Windows XP 32bit, Windows Vista 64bit, Windows 7 64bit [ guests in Wine software]
======================================================================================================================
Before you ask -- it was to get some screenshots and test some setting for our server. I maintain a performance guide and it's tough getting people with time or give a s* to test config parameters like a proper group of Linux users would : ) JK Anyways, I ran all the above clients in Wine, so not quite the same as real Windows, but it was the RW Windows build, no
problem. Actually quite well.. Vista seems to be the best about 90% performance of native host. They were all tested using the Windows / Steam JRE/JDK. I wasn't about to try to install
java on a guest without a real VM in between. That just seems like a recipe for disaster : /Probably more than you wanted, but that's it for now. I'll get you more details on possible regression from update, but I want to test the previous build first before I "cry wolf".***see edit
Thanks @red51
I did some more testing with the current version and found that of all things the FOV under View Adjustments made a huge difference going from 1.00 to 0.90. Obviously with less objects to draw, there was a noticeable increase in FPS, which didn't necessarily help the CPU usage (around 30%, 120-150 FPS). After adding vsync to bring it down (60 FPS), several benefits were immediately realized:
- CPU usage dropped from 30% to 20% (previous release was around 15-18%, but will confirm)
- CPU temp dropped from 71C to 57C (19% decrease) due to freq. decrease from turbo @3.4GHz to @2.8 GHz, which is about the base freq.
While I enjoy 1.0 FOV, I'll be using 0.90 for now.
-
...]Also a different question now:
I created two test cases one with a single ramp texture 21 and one with a single stair1 again texture 21 to test the block data structure.The values I get from the blueprint file are:blocktype hex dec ramp 26C1 9921 stair1 0F51 3921 seeing this result I understand that 21 refers to the texture, while the first two numbers refer to the position? If that is the case how does the game know if the block is a square block, a ramp or a stair1, a stair2, or a stair3 etc.?
Not where I can test this, but does the variation byte have any difference?
Basically the first step would be to read the bytes of the blueprint file and decompress it (the game uses GZIP for compression). Once you have the decompressed byte buffer/array, you can start reading the single bytes. This is the structure of every blueprint (I hope I didn't miss anything - if you have any questions, don't hesitate to ask):
Bytes Info 1 blueprint version 2 blueprint size x 2 blueprint size y 2 blueprint size z 8 creation date (timestamp, amount of milliseconds passed since 1st of January 1970) 4 name length (String bytes) xx blueprint name (byte length see previous 4 bytes) 4 author name length (String bytes) xx author name (byte length see previous 4 bytes) 4 world name length (String bytes) xx world name (byte length see previous 4 bytes) 4 block data length xx block data (see below)
**** see "arrow" in modified code block ***4 object data length xx object data (see below) 4 construction data length xx construction data (see below) 4 preview image data length xx preview image data [...]
Object data information
Objects (furniture, doors etc) are represented by a special object which holds information about the typeid (short), the variation (byte), position x y and z (float) and rotation x y z (short). The first 4 bytes in the encoded blueprint bytes hold information about the actual amount of objects in this blueprint. Java way to read the objects:
Java -
You could read from the byte buffer directly and use bit shifting to convert the bytes to short values. This is the fastest method, however, using a ByteBuffer instead is more convenient
JavaThat's true. I think we're even talking about ns here (or more precisely, it isn't possible to measure the difference at all). It really doesn't matter, especially if you're not using a performance-critical application (e.g. if you have to execute this code 10000 times per second, it makes sense to use the faster method)
If anyone is up for the challenge, I'm sure you could shave off a few n.s. here and there with direct x86 assembly... maybe run on bare metal?
You made me think on the kilohertz building output... if the world is infinite you have the room to lay the material but could you? *
* Side note -- I took the Pepsi challenge from one of your recent change logs on 400?x fly mode, using the native system JDK (Steam java is bogus on Linux, FYI.. I know the Ubuntu 2001 edition er 12.04 runtime and all...) and a few JVM tweaks for GC management to see if I could get screen tear or stutter... Arch Linux 64GB/1TB Nvme on GTX 1070 held up! No bottle necks I could see. RW kept up no problem.
I take back all the bad things I *may* have said in previous years about Java (friendly Python v. Java, right?! )
-
Thank you for sharing this! But this part:
What is the alternative faster method?
I haven't had a chance to dive in yet, but I'd venture to guess we're talking ms at the most here. For me, and likely anyone else diving in, they will go with the easy route and find that it's more than fast enough to give any sort of optimization a second thought..
I say this in all seriousness, and would not take the time just to "troll" or to start some argument, just speaking from personal experience (and personal opinion.. so take it for what you will)
If it turns out I'm completely wrong, then I will promptly update this post, admit I spoke too soon, and jot down a lesson learned
-- Separate topic for the curious --
My goal (I don't think I've stated above) is to use image processing/machine learning experience to tackle the task of reversing a "real photo" into RW primatives, which is why I needed to understand the atomic elements of a blueprint (thank you again for the detailed explanation and code, @red51!)The idea came when I noticed a lot of friends using internet images as their reference point for RW builds (with a lot of time involved for very detailed buildings) and thought, "wouldn't it be cool if a program could do the same... in seconds or minutes (image processing can be resource intensive both GPU and CPU) not weeks or months". Anyways, thought I'd share my initial project goal while I was posting
-
@Deirdre I will start writing a standalone program to edit .blueprint files. I cannot promise it will be coded in java since I have no experience with it (it will either by python or c++, I haven't decided yet) but I will try to make it as simple as possible for everyone.
For now my only advice would be to look at the file and try to understand it with red's instructions, took me a few hours with simple test case blueprints (like 1 block, or 1 plank, or a series of a few blocks) but after I understood the file structure it took me a couple of minutes to change the textures. When you do it by hand you just need to be careful not to change any of the position or rotation bytes by accident.
I am also a non-native Java user, so will be using Python. Once I have something to share I will put up link to GitHub page. Thank you very much @red51 this is more than enough to get started
-
Hello. My question is regarding the blueprint format/API. Is there a reference someone can point me to?
There was a post last year
Well, unfortunately you can't edit the file directly by opening it with a texteditor for example. The blueprint files contain compressed bytes, but basically there is no magic in converting it. You just have to decompress the file, and then read the single bytes. If desired, I can give further information about how to convert the bytes into actual construction elements
that seems to be open unless I missed a response somewhere else. I was so glad when I found the post but then I couldn't find the final answer..Any help is greatly appreciated. Thank you --