Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Giselbaer

#1
This is, kind of, a duplicate of https://ludeon.com/forums/index.php?topic=54419.msg490455#msg490455, which is half a year old, with the last message being "sent to the devs", but it's still not resolved.

I never had this problem in any version between a16 and 1.2, when, half a year ago, I took a break from Rimworld. Installed 1.3 a few days ago - I have none of the expansions, just the base game, so it's a problem with 1.3, not with Ideology.

Whenever I move the cursor slowly, the "mouseover" effect of what's below the cursor doesn't work. For example, in the main menu, I can move the cursor up from below "Quit to OS" to above "Save" without any of the buttons ever highlighting, if I do it slow enough. Same with the tooltips in the bottom right; if one of them is highlighted (and the tooltip shown), slowly moving the cursor around won't highlight any of the others, and it won't replace the tooltip either. Which is very annoying if you move the cursor over one item, realize it's the wrong one, move it to the next, slowly, so you don't overshoot, but still get the tooltip of the old one displayed.

It's the same in the architect menus; move the cursor over "Cancel" in "Misc",  and if you move it right slow enough, the "tooltip" will stay on cancel even if I move the cursor all the way to the right to the pen marker.

Pressing the mouse button will use the correct item under the cursor - move the cursor to "Cancel", move it right (slowly) to the egg box - tooltip still says cancel - press the cursor, and you'll get an egg box to place.

The "mouseover not detected" bug seems to happen in all UI elements, but not the world itself. Moving the cursor over the landscape always updates the feature description in the left bottom of the screen.

It looks to me like there's some "safeguard" in the mouseover detection of UI elements, like, if the cursor hasn't moved at least X pixels since the last update, then don't run the "check if the mouseover element has changed" code.

This happens no matter if I have the "Custom cursor" on or off in the options menu.
In case it's of any relevance, my resolution is 2560x1440, UI scale is 1, and Fullscreen is on.
#2
Bugs / Re: Somehow i can't generate any Power.
January 19, 2018, 02:40:55 AM
You said "between ... and -6000W" and "how much energy I need and it was about 6000".

You are aware that solar panels don't generate power at night, and wind turbines don't generate power when there's no wind? Maybe it's just that ...

Or, maybe you built walls around the panels and turbines? Your colonists have the, sometimes annoying, habit of putting roofs over everything that looks like it should be a room. Check if there are roofs above your panels/turbines, and place a "no roof" area there. Also, remember to cut down any trees that may begin to grow next to your turbines, and pour concrete or construct stone floors to prevent more trees from growing in the first place.
#3
I was a bit reluctant to post the sed command, because there are three occurences of __ST in (my version of) the resources.assets file; sed will change all of them, and I don't really know if changing the others is ok or not. If you guys didn't have any problems, it's probably ok.

Anyway, I wrote a script that you can copy/paste into a file (I named mine patch_rimworld_shader) then run that file (bash patch_rimworld_shader). It will try to find the file using the locate command; in case that doesn't work you can give the file name on the command line as well.

This finds the resources.assets file (from the command line or tries to figure it out itself), makes a backup (unless a backup exists already), looks for the Custom/Vertex Color string and the __ST within 512 bytes of that, and finally overwrites the first _ with a G.



#!/bin/bash


if test "x$1" = "x"; then
    ASSETSFILE=""
    found=0

    while read file; do
        case "$file" in
            *RimWorldLinux_Data/resources.assets)
                found=$((found+1))
                ASSETSFILE=$file
                echo found file: $file
            ;;
        esac
    done < <(locate RimWorldLinux_Data/resources.assets)

    if test $found -eq 0; then
        echo No file found. Please call this script with a path name.
        exit 1
    fi

    if test $found -ge 2; then
        echo More than one file found. Please call this script with the correct path name.
        exit 1
    fi
else
    ASSETSFILE="$1"
fi

if test ! -f "$ASSETSFILE.backup"; then
    echo "Making backup to $ASSETSFILE.backup"
    cp "$ASSETSFILE" "$ASSETSFILE.backup"
else
    echo "We already have a backup, leaving it untouched"
fi

foundsection=0
strings -t d "$ASSETSFILE" | egrep '__ST|Custom/Vertex Color' | while read offset string; do
    case $string in
        "Custom/Vertex Color")    foundsection=$offset
        ;;
        __ST*)
            if test $foundsection -ne 0; then
                echo "Found String at $offset with section starting at $foundsection"
                delta=$(($offset - $foundsection))
                if test $delta -ge 512; then
                    echo "Too many bytes in between"
                    break
                else
                    echo "Patching file"
                    echo 'G' | dd of="$ASSETSFILE" bs=1 count=1 conv=notrunc seek=$offset
                    break
                fi
            else
                echo "Found String at $offset but it isn't ours"
            fi
        ;;
    esac
done
#4
Can't confirm this. After loading the game, in the main menu, RimWorld takes a constant 19.8% of one core.

When I'm in the game, on a 300x300 map, currently ~20 colonists, I need between 80% and 130% core, mainly depending on how far I zoom in/out.

HOWEVER, when the game is backgrounded, no matter if main menu or while playing, it always uses exactly 100% CPU. This is what top shows:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
24352 gbl       20   0 4385792 1,919g 116372 R 100,0  8,2 254:23.80 RimWorldLi+

I have two monitors, and had the terminal running "top" on one while playing on the other, so I was able to see what happens to the CPU. But I guess anyone who uses one monitor and alt-tabs to the terminal window will always see the 100% "background" CPU usage.

System: Ubuntu 16.04, 64 bit, Core i5-2500, Nvidia 660 (native drivers), Steam version of Rimworld

Btw, when I'm stracing the backgrounded, 100%, rimworld process, I get endless repeats of

select(7, [6], NULL, NULL, {0, 0})      = 0 (Timeout)
select(28, [27], NULL, NULL, {0, 0})    = 0 (Timeout)
recvmsg(6, 0x7ffdf9ef0fc0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
select(7, [6], NULL, NULL, {0, 0})      = 0 (Timeout)
select(28, [27], NULL, NULL, {0, 0})    = 0 (Timeout)
recvmsg(6, 0x7ffdf9ef0fc0, 0)           = -1 EAGAIN (Resource temporarily unavailable)

Looks very much like the game keeps trying to get a message from the X server when there isn't any, and doesn't set a timeout when doing so (the {0,0} parameter to select() is the timeout value), so instead of telling the system "wake me up when something interesting is going on", it just keeps asking "have something? No? And now? And now? And now?". Reminds me of my dog when it wants to play when I'm busy with something.

Of course, that may be a "feature" of Unity that the game developer has zero control over.
#5
I have a similar problem. Sent a colonist to a refugee map, found some steel there, decided to leave the colonist for a while to mine. His dog had been staying with the colony, and tried to "follow" him - poor doggie always stayed close to the coordinates where the colonist was, on the different map, ignoring its assigned zone.

As I'm playing on ludicrous, the colony map is a lot larger than the refugee map. With coordinates (probably) starting at the bottom left corner, the dog stayed in the bottom left corner of the colony map as well.

After a while, doggie started starving. Setting its restricted zone to "animals force barn", the zone where my animals are supposed to find food, didn't help.

Until I un-ticked the "animal follow colonist when doing field work" checkmark. After unticking, doggie ran to the barn and finally ate again.


So, animals probably don't move to the corner to like if they wanted to follow their master; if the master is at coord 50/50, animals move to 50/50 as well, but if the colony map is a lot larger than the map the master is on, those coordinates seem to be close to the edge. Master coords probably don't reset when the master enters the reformed caravan, so animals still try to move there.

As a workaround, unset the "animal follows master" option in the animals tab while the master is away.
#6
When playing on Linux, Ubuntu x64, nvidia 660, nvidia drivers, steam version, the "show roofed area" map doesn't show the green semitransparent map that it should; instead, it shows all roofs in non-transparent purple.

This seems to affect everything that uses overlays, including mods. For example, the description of the "Heat Map" mod on https://steamcommunity.com/sharedfiles/filedetails/?id=947972722 says

QuoteUnfortunately the overlay doesn't work on Linux due to an issue in the game code that prevents multi-coloured overlays working on Linux.

The problem seems to be that a shader doesn't compile on Linux, as the following message from rimworld.log suggests:

-------- Shader compilation failed
#version 150
#extension GL_ARB_explicit_attrib_location : require
#extension GL_ARB_shader_bit_encoding : enable
uniform         vec4 hlslcc_mtx4x4unity_ObjectToWorld[4];
uniform         vec4 hlslcc_mtx4x4unity_MatrixVP[4];
uniform         vec4 __ST;
in  vec3 in_POSITION0;
in  vec4 in_COLOR0;
in  vec3 in_TEXCOORD0;
out vec4 vs_COLOR0;
out vec2 vs_TEXCOORD0;
vec4 u_xlat0;
vec4 u_xlat1;
void main()
{
    vs_COLOR0 = in_COLOR0;
    vs_COLOR0 = clamp(vs_COLOR0, 0.0, 1.0);
    vs_TEXCOORD0.xy = in_TEXCOORD0.xy * __ST.xy + __ST.zw;
    u_xlat0 = in_POSITION0.yyyy * hlslcc_mtx4x4unity_ObjectToWorld[1];
    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0] * in_POSITION0.xxxx + u_xlat0;
    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2] * in_POSITION0.zzzz + u_xlat0;
    u_xlat0 = u_xlat0 + hlslcc_mtx4x4unity_ObjectToWorld[3];
    u_xlat1 = u_xlat0.yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * u_xlat0.xxxx + u_xlat1;
    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * u_xlat0.zzzz + u_xlat1;
    gl_Position = hlslcc_mtx4x4unity_MatrixVP[3] * u_xlat0.wwww + u_xlat1;
    return;
}
-------- failed compiling:
vertex shader
0(7) : error C7528: OpenGL reserves names containing '__'

Note: Creation of internal variant of shader 'Custom/Vertex Color' failed.
WARNING: Shader Unsupported: 'Custom/Vertex Color' - Pass '' has no vertex shader


In OpenGL, names containing a double underscore may turn into reserved keywords at some point, which is why the compiler refuses to compile them as variables now.

Checking into that, I opened the resources.assets file using a hex editor, and changed the __ST in the custom/VertexColor to G_ST. This fixed the problem for me. (The only reason for using the G letter is my name, it doesn't have any other meaning except not being an underscore).

This is how my colony with roofs turned on looked before the patch:


and this is after changing __ST to G_ST:


So, could you please fix this in the next version?

Thanks, Giselbaer