[1.4] Moody (v2.6.0) A colonist mood dashboard

Started by GiantSpaceHamster, December 26, 2016, 10:52:52 PM

Previous topic - Next topic

[deleted]

[deleted]
0 (0%)
[deleted]
0 (0%)
[deleted]
0 (0%)
[deleted]
0 (0%)
[deleted]
0 (0%)
[deleted]
0 (0%)

Total Members Voted: 0

wwWraith

Quote from: Sarge on December 14, 2017, 02:30:28 PM
Hello! 1st post and bound to be a shocker, apologies in advance.

I used to have little icons for various needs displayed on the left hand side of each little guy on the screen so that I could minimise my Moody window. I don't have it anymore in B18 and can't find where to activate it... or dl it.

Halp plz?

Probably you mean Colonist Bar mod: https://steamcommunity.com/sharedfiles/filedetails/?id=729908976 or https://github.com/Killface1980/RW_ColonistBarKF/releases or https://rim-world.com/colonist-bar-mod/
Think about it. Think around it. Perhaps you'll get some new good idea even if it would be completely different from my words.

Sarge

YES! TY!

So sorry to have posted in the wrong thread, even wrong modder's thread.  :-[

GiantSpaceHamster

Quote from: Sarge on December 14, 2017, 05:55:03 PM
YES! TY!

So sorry to have posted in the wrong thread, even wrong modder's thread.  :-[

Haha no worries! But...ya know...check out Moody while you're here ;)

Sarge

Quote from: GiantSpaceHamster on December 14, 2017, 06:21:15 PM
Quote from: Sarge on December 14, 2017, 05:55:03 PM
YES! TY!

So sorry to have posted in the wrong thread, even wrong modder's thread.  :-[

Haha no worries! But...ya know...check out Moody while you're here ;)
Yeah, it's awesome thanks. I've been using it from the moment I found it when I started playing this game early 2017. It's one of the top ones on my 'must haves' list.

GiantSpaceHamster

Moody 2.2.0 released. Happy Holidays!

Major changes this release are the grouping of pawns by map/caravan and lesson text remembering that you have read it across disable/enable of Moody.

Ignore the lesson related error when updating. It is benign but I cannot do anything about it.

Mst

On game startup i get the following error twice
Could not resolve cross-reference to RimWorld.ConceptDef named Moody_Updates_2_1_0
Verse.Log:Error(String)
Verse.DirectXmlCrossRefLoader:TryResolveDef(String, FailMode)
Verse.WantedRefForDictionary`2:TryResolve(FailMode)
Verse.DirectXmlCrossRefLoader:ResolveAllWantedCrossReferences(FailMode)
Verse.DirectXmlLoader:ItemFromXmlFile(String, Boolean)
RimWorld.PlayerKnowledgeDatabase:ReloadAndRebind()
RimWorld.PlayerKnowledgeDatabase:.cctor()
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:<Start>m__1()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()


And on game load this one

Could not find class Moody.MoodyController while resolving node li. Trying to use Verse.MapComponent instead. Full node: <li Class="Moody.MoodyController" />
Verse.Log:Error(String)
Verse.ScribeExtractor:SaveableFromNode(XmlNode, Object[])
Verse.Scribe_Collections:Look(List`1&, Boolean, String, LookMode, Object[])
Verse.Scribe_Collections:Look(List`1&, String, LookMode, Object[])
Verse.Map:ExposeComponents()
Verse.Map:ExposeData()
Verse.ScribeExtractor:SaveableFromNode(XmlNode, Object[])
Verse.Scribe_Collections:Look(List`1&, Boolean, String, LookMode, Object[])
Verse.Scribe_Collections:Look(List`1&, String, LookMode, Object[])
Verse.Game:LoadGame()
Verse.SavedGameLoader:LoadGameFromSaveFile(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

netherous

Thanks for the update. I did have a problem after steam automatically updated to the version released on December 25th. I could not start a new game or load any saved games. The new game dialog would simply not progress to the storyteller page, and trying to load a saved game produced the error


An error occurred while generating a new map. See error log for more information.


In both cases, an error was produced in the debug log:

full gist


Exception filling window for RimWorld.Page_SelectScenario: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.LessonAutoActivator.TryInitiateLesson (RimWorld.ConceptDef conc) [0x00000] in <filename unknown>:0
  at RimWorld.LessonAutoActivator.TeachOpportunity (RimWorld.ConceptDef conc, Verse.Thing subject, OpportunityType opp) [0x00000] in <filename unknown>:0
  at RimWorld.LessonAutoActivator.TeachOpportunity (RimWorld.ConceptDef conc, OpportunityType opp) [0x00000] in <filename unknown>:0
  at Moody.Settings.TeachLesson (System.String lessonName, Boolean lessonSeen) [0x00000] in <filename unknown>:0
  at Moody.Settings.LoadSeenLessons () [0x00000] in <filename unknown>:0
  at Moody.MoodyGameComponent..ctor (Verse.Game game) [0x00000] in <filename unknown>:0
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
at System.Reflection.MonoCMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x001d1>
at System.Reflection.MonoCMethod.Invoke (System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x00027>
at System.Activator.CreateInstance (System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo,object[]) <0x0033d>
at System.Activator.CreateInstance (System.Type,object[],object[]) <0x00021>
at System.Activator.CreateInstance (System.Type,object[]) <0x00028>
at (wrapper dynamic-method) Verse.Game.FillComponents_Patch1 (object) <0x00102>
at Verse.Game..ctor () <0x002d3>
at RimWorld.Page_SelectScenario.BeginScenarioConfiguration (RimWorld.Scenario,RimWorld.Page) <0x00025>
at RimWorld.Page_SelectScenario.CanDoNext () <0x00035>
at RimWorld.Page.DoBottomButtons (UnityEngine.Rect,string,string,System.Action,bool) <0x0039a>
at RimWorld.Page_SelectScenario.DoWindowContents (UnityEngine.Rect) <0x003fc>
at Verse.Window/<WindowOnGUI>c__AnonStorey0.<>m__0 (int) <0x00735>


The update says this error is benign but something is still going wrong with Moody for me. I disabled Moody and then was able to create/load games again. I thought I could remove Moody from an in-progress game, but after loading my game the debug log is spammed with this error every tick


Exception filling window for Verse.ImmediateWindow: System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.LearningReadout+<LearningReadoutOnGUI>c__AnonStorey0.<>m__0 () [0x00000] in <filename unknown>:0
  at Verse.ImmediateWindow.DoWindowContents (Rect inRect) [0x00000] in <filename unknown>:0
  at Verse.Window+<WindowOnGUI>c__AnonStorey0.<>m__0 (Int32 x) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.<WindowOnGUI>c__AnonStorey0:<>m__0(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)


I'm going to see if uninstalling from steam workshop and manually installing v2.1.0 will work.


GiantSpaceHamster

Quote from: netherous on December 25, 2017, 06:16:31 PM
Thanks for the update. I did have a problem after steam automatically updated to the version released on December 25th. I could not start a new game or load any saved games. The new game dialog would simply not progress to the storyteller page, and trying to load a saved game produced the error
...

Please try the latest 2.2.1 and let me know if that addresses the issue.

netherous

That seems to have done the trick. I was able to start a new game with Moody 2.2.1 and also load the saved game that had been saved with Moody 2.1.0. There were a few errors in the log when starting a new game or loading from the existing game.


(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Could not find class Moody.MoodyController while resolving node li. Trying to use Verse.MapComponent instead. Full node: <li Class="Moody.MoodyController" />

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

SaveableFromNode exception: System.ArgumentException: Can't load abstract class Verse.MapComponent
  at Verse.ScribeExtractor.SaveableFromNode[MapComponent] (System.Xml.XmlNode subNode, System.Object[] ctorArgs) [0x00000] in <filename unknown>:0
Subnode:
<li Class="Moody.MoodyController" />

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Could not find class Moody.MoodyController while resolving node li. Trying to use Verse.MapComponent instead. Full node: <li Class="Moody.MoodyController" />

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

SaveableFromNode exception: System.ArgumentException: Can't load abstract class Verse.MapComponent
  at Verse.ScribeExtractor.SaveableFromNode[MapComponent] (System.Xml.XmlNode subNode, System.Object[] ctorArgs) [0x00000] in <filename unknown>:0
Subnode:
<li Class="Moody.MoodyController" />


Moody seems to be functioning fine though. Thanks for the quick update.

GiantSpaceHamster

Quote from: netherous on December 26, 2017, 02:39:25 AM
That seems to have done the trick. I was able to start a new game with Moody 2.2.1 and also load the saved game that had been saved with Moody 2.1.0. There were a few errors in the log when starting a new game or loading from the existing game.
...
Moody seems to be functioning fine though. Thanks for the quick update.

That error related to MapComponent is benign and should not cause any issues (glad to hear it doesn't seem to be). That is the result of changing Moody from MapComponent to GameComponent, which was introduced in A17 but I was holding off because I knew this error would occur. I eventually just decided to pull the trigger since it needed to be done. It should only pop up for games saved in an older mod version and only before saving the game with the new mod version enabled.

Let me know if you encounter any other problems and have a great holiday!

Harry_Dicks

Thanks for the update, your mod is definitely an essential one for me! Hope you had a merry Christmas, and thanks for all of your hard work!

Quick question - I see you keep mentioning "lessons" in your update notes. Errr, what are these "lessons" you speak of? :D

GiantSpaceHamster

Quote from: Harry_Dicks on December 26, 2017, 08:53:53 AM
Thanks for the update, your mod is definitely an essential one for me! Hope you had a merry Christmas, and thanks for all of your hard work!

Quick question - I see you keep mentioning "lessons" in your update notes. Errr, what are these "lessons" you speak of? :D

The tooltips that pop up in the upper right corner with help info about various topics in the game. You may have turned them off, but if not, there is one for each Moody view that provides a bit of an overview for new users.

GiantSpaceHamster

Minor patch release v2.2.2 to fix an issue with new pawns not being added to the list if the colonist bar is turned off

Harry_Dicks

Hi GiantSpaceHamster, thanks for making such an incredible mod.

How resource intensive is Moody? Does it depend which view is currently being displayed; e.g. mood view vs temperature view? Also, does Moody use resources when it is minimized, or less than normal? I ask because my mountain base of about 25 pawns, 60 animals and maybe 40 bots on a default map size with too many mods is running rather poorly and I'm trying to see what I else I can do to trim down on resource intensive systems.

Now that I think about it, could there be any application for a sort of RimWorld "task manager" so that you could see where any bottlenecks were? It could help make it a bit easier for dummies like myself trim down some of the fat wherever would be most efficient, instead of just kicking the bucket around until I've broken too much! :P

GiantSpaceHamster

#134
Quote from: Harry_Dicks on January 03, 2018, 07:53:24 PM
Hi GiantSpaceHamster, thanks for making such an incredible mod.

How resource intensive is Moody? Does it depend which view is currently being displayed; e.g. mood view vs temperature view? Also, does Moody use resources when it is minimized, or less than normal? I ask because my mountain base of about 25 pawns, 60 animals and maybe 40 bots on a default map size with too many mods is running rather poorly and I'm trying to see what I else I can do to trim down on resource intensive systems.

Now that I think about it, could there be any application for a sort of RimWorld "task manager" so that you could see where any bottlenecks were? It could help make it a bit easier for dummies like myself trim down some of the fat wherever would be most efficient, instead of just kicking the bucket around until I've broken too much! :P

Hey...I'm just gonna call you "Harry"...thanks for the feedback!

Moody only performs calculations for the view that is currently displayed. If Moody is minimized or hidden then no data is tracked and there shouldn't be any performance impact at all. If you want to check if Moody is impacting your performance just compare performance between minimized and restored states. Some views require a bit more processing to gather the data so some views may also affect performance differently. Similarly, if you are viewing colonists, then animals and prisoners are not recalculated. Having tons of animals should not impact performance if you're not in animal mode (same for colonists and prisoners).

Since we're on the topic, Moody also only recalculates 10% of the colonists per tick. Since at normal speed there are 60 ticks/second all colonists will still get updated at least 6 times per second (more at faster speeds). Also note that playing at a faster game speed will exaggerate any performance impact since the calculations are done on a per-tick basis, so faster ticks means more processing per unit of time needed.

Monitoring performance for all mods would likely have to be implemented in the base game, but tbh I haven't given it much thought.

EDIT: Now that I think about it, maybe I should consider throttling recalculations more when the game speed is higher. That might help performance for larger heavily modded games at faster speeds at least.