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 - Profound_Darkness

#1
So something made me grin shortly after I found out 1.1 was out...

Take a look at this screenshot (special attention to the titlebar):


Did you notice the @ symbol in there?  That indicates that the application is really running on another computer, the computer name generally follows the @ symbol.  I've been trying to get this to work off and on for a while now.  Basically RimWorld is being run on the Linux box using it's CPU, Ram, and SSD.  The finished audio is being piped to my Windows machine via PulseAudio, generally an easy thing to get going.  The unfinished graphics data is being piped to my Windows machine via VIrtualGL, which takes a fair bit to get configured.  My machine then does the OpenGL rendering locally.  Any inputs I generate are being sent back to the Linux machine (X11).

It wasn't my intention to play the game this way... I had other interests in trying to get this to work.  The experience was unexpectedly pretty darned good though.  I should note I did my playing using a maximized window instead of the smaller window in the screenshot above.  The graphics response is such that I could play just about anything other that twitch heavy games requiring frame perfect inputs.  As usual with PulseAudio remote the sound lags behind just a bit, hard to pin down how much but when using something interactive it's noticeable, probably less than a quarter of a second behind.

The other reason this makes me grin is my research strongly suggests that the older version of Unity which RImWorld 1.0 used doesn't play nice with VirtualGL.  VirtualGL can show up in a few places behind the scenes on a Linux machine.  Most notably in laptops that have both discrete and integrated graphics, with dynamic switching to save on battery life.  The fact that this wonky configuration works now suggests that RimWorld 1.1 might be a much more pleasant experience on Linux.


I did encounter one odd issue which I don't know if it's specific to my oddball configuration (not looking for support/help) or Linux in more general terms.  I've observed that the mouse position on the Y axis is inverting when I press/hold a keyboard key.  Most visible by starting to draw a lasso starting from the middle of the window and then moving either up or down while keeping the mouse button down.  When I press a key the lasso will jump to the opposite Y position, so if I had started drawing the lasso down it will suddenly jump up.


So yeah, thanks for continuing to work on RimWorld.
#2
Quote from: Alaqdas on June 10, 2017, 08:35:28 PM
Does this mod work in saved games?

If you are adding CE mid save game, fairly sure that won't work.  If that wasn't what you were asking, my apologies.

There are two times that you are likely to need to start a new game with this mod, if your current save didn't have the mod already and if the current save had the ammo system disabled and you decide to enable it.


Quote from: MrWeeGee on June 10, 2017, 06:41:04 PM
I have a rather nasty bug that's happening to me though. Ever since I started my new game, my handlers have been getting "10 jobs in 10 ticks" errors that just loop endlessly when they try to pick up food to tame. I found the same issue on the Github, but it was closed back in April. I've added any information I had to it. My modlist is also in the Pastebin, but I don't think they'd give any compatibility issues.

That's quite a collection of mods there!  :) I see two possibilities for your issue: 1) There was a regression in the code and that bug is indeed back. 2) Some mod happens to alter the training/taming job such that CE isn't recognizing the job in order to track the food.

For anyone having this issue of 10 jobs in 10 ticks on training/taming, the work around is to add the generic raw food to any loadouts that might be assigned to pawns doing training/taming and make sure it's a large enough amount.  The default should suffice for most animals but big ones like Bears, Elephants, and others of such size might need the amount tweaked upwards.
#3
Mods / Re: DRM in mods
March 05, 2017, 01:29:14 PM
Mostly I side against DRM and allowing it seems a slippery slope.  IMO (this whole post is IMO) DRM should be considered on a case by case rather than blanket yes/no.  As a guideline against? Sure.  I can accept intentional mod incompatibility if the author clearly states that their mod is incompatible with the other mod, much like how most mods handle known incompatibilities, and that their method of breaking compatibility doesn't attack the user no matter how passionately they might feel about a given mod pairing.  It doesn't even have to include details, just that "My mod doesn't work with <OtherMod>" is sufficient.

As for methods of breaking compatibility: I'd prefer a Log.Error, with text not unlike what I'd expect on the forum post, along with something like a quick crash of the game.  A sit and spin loop without any message strays into punitive territory for me.  When something goes wrong with Rimworld you almost always get some kind of log message that something went wrong, even if you can only find it in the output_log.txt.  It's quite rare for the game to just seize up without saying anything, at least not without lots of pretty colors.

The other concern I have about DRM type stuff is that, generally, DRM seems to encourage selfishness and division... The rarity of those qualities was the strongest draw for me to this community.

At the end of the day, IMO, as long as modders are sticking to the hosting community's rules, it's up the the modder what they do with their time on mods.  No one forces you to install a mod so if you don't like what they did, don't use nor contribute to their mod.
#4
A bit of a setup, my question is at the bottom but might not make sense without context.  I've never fiddled with ThinkTreeDefs before, I've mostly fiddled with ThingDefs and dipped my toes into code.

I've been trying to fix up some errors in Combat Realism, in particular I was looking at how when a visitor showed up you'd almost certainly see something like "<name> has null dutyDefToSubNode"

I tried to follow the code flow, hit it with a fair number of troubleshooting tricks, including breaking things to see what starts working.  Stumbled on when Combat Realism's ThinkTreeDefs/Humanlike.xml failed to load the error went away.  So I started working on Combat Realism's Humanlike.xml until figuring out that the presence of <treeDef>LordDutyConstant</treeDef> was causing the error.

That didn't make a bit of sense as that same bit is in Core's Humanlike.xml.  I noticed that LordDutyConstant is defined in the Core file SubTrees_Duty.xml so I copied that over to Combat Realism and the error went away.


What I'm confused about is that LordDutyConstant isn't abstract and it is defined in Core so shouldn't it have remained defined in Combat Realism?
#5
... hmm I seem to have caused unnecessary confusion  :-[ ... maybe I should reconsider lurk mode...  I'll attempt to clear things up.

Quote from: Othobrithol on August 07, 2015, 01:34:58 AM
...
Were there changes to the xml, or 'just' the dll (with 'just' being an understatement :P) ?

Just the DLL changed. (and it really wasn't much by way of changes.  The code seems well organized which made it easier to attempt a fix with the proper source files.)

Quote from: Dante Montana on August 07, 2015, 07:26:14 AM
...
It took a while but after comparing both archives it seems that only the .dll changed. On my side I only updated the .dll (just overwrote the old one) and it works fine now.

Sorry for wasting your time, I kept it packaged similar to how it was when I got it so that those unfamiliar with moding could take advantage of the mod.  I'm not familiar with github so those other files that likely track changes (and would have helped you) were just noise to me.  I'm hanging out with a basic text editor (well it maintains indentation but doesn't auto-indent) and a windows batch file to do the compile so I don't have anything to help me with things like SVN.  I was repeatedly interrupted while putting up the post so some things got lost and unable to pick up my train of thought I went minimal.

Quote from: isistoy on August 07, 2015, 07:17:10 AM
From what I understood from his post, he compiled the existing source code for RedistHeat and apparently, that code was already up to date with specific issues that are named here recently.
Possibly no changes were made to the source code at all, only compiling source to a new dll. Then, I can't say for xml.

I compiled what I got from github and verified it wasn't working on my test cases, at least for ActiveVents and the Ducts.  I then made the 2 small changes to the code in an attempt to fix the ActiveVents and Ducts.  Granted not huge changes (in fact VERY small) relative to what I did when I was working from decompiled sources (prior to my being aware of where the sources were).  Thanks to the maintenance of the mod on Ninefinger's github combined with my apparently taking notes of issues from an older version of the assembly, I wasn't able to replicate the other problems I had been having.

Quote from: isistoy on August 07, 2015, 11:21:35 AM
...
I was afraid the github source to have bugs you spotted.
...

Since I don't know github and no idea if I could offer up my changes, unless someone has updated the source on github, there are 2 small bugs in the github source, that I know of.

Again, sorry for the confusion.
#6
I suspect I got ActiveVents and airnet (pipe system) from fresh start of game loading save fixed though I wasn't able to replicate all the other issues I had previously with this mod so I'm guessing those were fixed before I got pointed to the sources.  Specifically the null reference exception (ActiveVents) which caused it to fail to move air and 3 different types of ducts not moving heat around the airnet are what I concentrated on.

Hopefully this works for everyone: LT_RedistHeat-A11d (Mediafire, 7zip file).
#7
Hello all, I'm stepping out of long time lurk mode to seek feedback on an idea.  I approached Shinzy first due to their mod (apparello) being the reason I even started fiddling on this but they were busy and suggested I solicit feedback from a wider audience.  NOTE: That shouldn't be construed as an endorsement of the idea or tool by them.

I call my presentation/example app: Apparellator (mediafire link to release 4).
NOTE: I put updates to this app in the folder This Mediafire Folder, usually without updating this post.  Also a changelog if you want to read changes without fetching a half meg archive...  Most resent change at the top then chronological order.
It takes advantage of Rimworld's outfits feature.  The included readme has details on usage and what the different filters are.
(Initial) target audience: Those with at least some minimal computer skills and minimal abilities with Rimworld moding.
I've added in a folder (back) into the release called UseEx which has an example of how I've been using this.

-First off the details and warnings:

It's written in Autohotkey which is what I reach for while in Windows to build simple stuff that probably won't use a GUI.  It should run on Windows versions Vista and higher, 64 bit.  It was written/tested on Windows 7 and if desired I can attempt a 32 bit version.  The app is not only relatively mod agnostic but should function with any version of Rimworld that uses the same save file format for outfits and stockpiles found in Rimworld Alpha 11, this is why I don't include a specific version of Rimworld it's meant to work with.  This means that filter files can be shared for example if you come up with a good alternate definition for gear for soldiers you could spread that around.  Though you will have to import such things into your own filters.xml file by hand or replace yours with someone else's...

If you are feeling cautions due to the relatively untested state of some of the code I'd suggest backing up your mods folder as well as the Rimworld folder in appdata.  I've been using the app for some time now (though not this particular version) and haven't had a catastrophic failure that such data was at risk but those are the files the app looks at.  It reads/writes to other files in the same folder as itself, reads from thingdef files (xml) in mods, reads your Rimworld Mod configuration xml and reads/writes to a single save file (write only on your instruction).  Creates a backup of the save before writing to the save, I now do validation on if an outfit/stockpile name is valid for Rimworld but I think making backup is a good idea so I kept that code in.

Since I don't know how relaxed Rimworld is on xml definitions I left the xml strict meaning that it might miss apparel if the xml is not formatted correctly (this includes capitalization).  I haven't noticed such a problem with Apparello, Norbals, and a collection of other apparel adding mods loaded.

-Now onto the fun stuff:

Apparellator is a funny little app I started putting together after spending about half an hour creating ONE outfit in Rimworld and the help of a spreadsheet and realized I'd spend a minimum of another half hour for the second one I needed.  I decided to toss something together based on my extraction to spreadsheet code that would allow me to borrow concepts from databases to create outfits.

I've put a bit more polish on it relative to the version I asked Shinzy about so that those who try it can get a pretty solid idea of my intention even if the UI remains rather rough.  I don't really care for making GUIs though I still get drawn into it at times when something interesting catches my attention and I don't get bogged down with how whatever language handles things.

What it offers is a way to generate outfits using concepts not unfamiliar to those who know databases (though my implementation is rather crude and kludgy).  Basically you use a few simple filters to flag details about equipment that you want included in your outfit, complex filters using expressions like add(+), remove(-), and 'and' (&) to select gear with a few properties and save it all to an outfit.  The other interesting aspect is exclusives where a filter can mark items it outputs as exclusive so that they can't be removed or new items can't risk conflicting.  I've also added Unary operators such as not(!) and exclusive(~) as well as a keyword/filter called filterEverything that gives the contents of the database for those who like from everything down to a specific set.

The intent is to be able to rather quickly update a save with outfits you've defined.  Once you have outfits it's only about 4 steps to update a save.  Open the app, select Outfits Manager, select all outfits, and hit the write outfits.

Also I've added in the ability to update Stockpiles with output from filters, works much like outfits though it can't create new stockpiles, only use existing ones.

So lets take an easy example, that you want cold weather gear for soldiers.  You create a simple filterContains which looks for the string "soldier" in defaultOutfitTags calling this filter 'soldier', a filterNumeric that looks for values less than 0 (or some lower number) in Insulation_Cold naming it 'cold'.  Now you make a complexFilter which uses the expression 'soldier & cold' which will output gear which fits both those requirements, lets call this one 'coldSoldier'.

Taking it a step further lets say that you want to specify the pawn to wear a variety of gear but don't want any of the new gear to prevent the pawn from wearing the cold weather gear.  First lets mark 'coldsoldier' as exclusive.  Next lets make a filter called 'coldNeutral' which is filterNumeric searching Insulation_Cold for values of 0 (don't want positives).  Now we create a new filterComplex with the expression 'coldsoldier + (coldNeutral & soldier)'.  What this does is take all the elements from coldsoldier and adds to it all the coldNeutral gear with soldier tag but DOESN'T add the item if the layer/bodyPartGroups might conflict (and thus the pawn might opt not to wear the cold weather gear).

Lets say you don't want to bother with multiple nested named filters, with the unary operators you can accomplish the same as the above paragraphs with the following: '~(soldier & cold) + (coldNeutral & soldier)'
It's a lot easier to debug filter output if you use named filters but you... well we, now have the freedom to just slap a unary onto a filter or parentheses and skip making a bunch of other filters.

-The concept of this as a Rimworld mod:

Since Shinzy brought it up (and I thought about lightly it before PMing them) the idea of building this (or something similar) into a mod is something I'm willing to entertain but I'd need to do some type of collaboration with someone from the mod community here, chiefly regarding the GUI component.

Operating on the concept that those with the knowledge/experience are pretty darned busy and not wishing to waste their time I'm going to proceed in a manner like I have in the past, which is to try and offer up something tangible when asking for assistance (via pm).
To that end I've been poking around inside Rimworld and noticed a few things that made me smile.