Jump to content

ConScribe - How to use it


Tinien

Recommended Posts

Well, the subject is as stated in the topic name. I haven't found answer to this question on any forum (including this one) with discussion of ConScribe, nor in the Readme and on cs.elderscrolls.com - there are only general instructions about commands and their syntax on these sources. My goal is to find out why crashes happen in Oblivion, to know their cause. I read that ConScribe helps to comprehend reasons of crashes and bugs and I want to learn which commands should I use to log all these unexpected events. For example I'll bring a syntax for a main command Scribe:

 

(nothing) Scribe formatString:string var1 var2 ... var20 printToConsole:bool

 

And additionally:

 

string_var svLog

begin gameMode
scribe "This will be printed to the Script log, but not to the console" 0
registerLog "Log A"
registerLog "Log B" 1
scribe "This will be printed to the default log, Log B" 1

let svLog := "Con" + $player + "Scribe"
scribe "String Var - %z. Will be printed to the Log A|Log A" svLog 1

scribe "This will be printed to the script log|script" 1
end

 

I don't understand what does first command mean, what do these variables and formatString thing mean and what does this command do in the whole. Similarly I can't make out all other commands above - what do they do and when should one use them. They look like part of some code which I don't understand. Sorry, I'm a noob, I'm neither programmer nor modmaker and all these unclear commands and formulas embarrass me. Could anyone explain with plain words, step by step how to use ConScribe and which commands to use to get to know a cause for crashes and bugs? I'll be very thankful to such a good-hearted person who will interpret all of this to me. Or if there is already answer to my question please give a link to that answer.

Edited by Tinien
Link to comment
Share on other sites

So assuming I am not too terribly mistaken, ConScribe is a tool for mod makers, to help them log things related to their scripts for later use. A sort of "why does my script crash the game, when does it do that exactly, I could not see my console-printed debug messages because it crashed" helper, or just a general debugging helper for values, where authors can use it to trace their scripts' processing by adding logging commands, so that they can see where the script (approximately) crashes and how different values change throughout the scripts.

 

The ConScribe readme says this:

 

 

ConScribe is an OBSE plugin that supersedes speedo’s long-since-gone Console Logger. It logs all console output to text files for later reviewing, including those typed in by the player. It removes the need for modders to adopt independent logging functions.

So all in all, it looks like a mod makers' utility for debugging their script. If you just want to find out why your game crashes, then ConScribe is probably not what you are after. Sorry.

 

One thing that might help, or might not, is MessageLogger, but the info you would get from it either can or cannot be of use, I have not used it myself much --> http://www.nexusmods.com/oblivion/mods/45870

 

As for what the things mean. The first line, unless of course I make some sort of mistake here:

 

(nothing) Scribe formatString:string var1 var2 ... var20 printToConsole:bool

It is a sort of function description. What it tells the user (from left to right):

  • the function returns nothing (some functions can return and int, a ref, a float and all that, this one returns nothing)
  • the command name is Scribe
  • the first parameter for the command is a format string (that, according to the examples, also can include an optional log name to print to, to print it elsewhere, not in the default log)
  • the second parameter (lots of them, but thinking about them as a group helps) are values, up to 20 of them, that would be inserted into the format string, to replace the formatting symbols like "%d" for integer, "%.f" for floating point value and the like
  • the third parameter is a boolean value (actually 1 or 0) that determines whether the message should also be printed into the in-game console

The rest of the lines are just an example, a sort of "one way to use it". It is Oblivion scripting, with OBSE (the let commands and String_vars). Again, only relevant if you want to debug your scripts, and the actual implementation would need to be in your mod's scripts that you want to debug.

 

Hopefully that helps. :thumbsup:

Link to comment
Share on other sites

Conscribe is mostly a tool for modders debug their scripts.

 

Modders will intersperse those commands in their scripts to log information to text file(s) so they can analyse the behavior of the scripts after tests. Usually, those commands are removed before publishing a mod.

 

By itself, Conscribe has no use to the mod user.

 

Contrathetix just gave a better answer.

Edited by QQuix
Link to comment
Share on other sites

Contrathetix, thank you for such a detailed answer and for link to this MessageLogger. I hope that it will help me to reveal the cause of crashes/bugs in case they happen. I'm not mod maker but just a gamer and I like Oblivion very much for its design which is very aesthetically pleasing for me unlike design of Skyrim. This concerns everything: GUI, weapon, armor, magic spells appearance, icons (of items, magic spells, skills and attributes), houses interiors, cities architecture and so on. I suppose that in design aspect Oblivion is much better than Skyrim, and in the melee fight aspect as well (especially with Deadly Reflex or Unnecessary Violence battle mod). So I continue playing Oblivion even now, 10 years after its release and long to make it better, more stable and bugless. It would be best if Bethesda republished original Oblivion on Skyrim's engine, much more efficient and stable. I know that there is Skyblivion project but it has just all the same bugs and glitches which I want to dispose of, so some sixth sense tells me that original Oblivion is more stable than Skyblivion. Besides Skyblivion's design is performed in the Skyrim's way, not Oblivion's.

 

About ConScribe I wish to say that suspected it to be a tool for not a regular user but for those who understand all these commands and parameters. But nonetheless I wanted to try it, see how it works, maybe some crashes or bugs occur not because of particular mod but due to wrong settings in Oblivion.ini, and ConScribe would reveal the culprit. That means that some causes of bugs/crashes I can eliminate by myself just changing Oblivion.ini like how it should be set for a stable and crashless gameplay.

 

In the end I want to ask you and/or those who knows the answer: should Oblivion.ini be tweaked at all or it would be better just to leave it be like it was set by developers? The matter is that Bethesda set all these default values as they were due to aspire to make Oblivion as stable and bugless as possible. Otherwise some of these ini settings would be present in Game Settings menu. For example: In Oblivion game settings menu there are Water Reflections only whereas in Oblivion.ini beside Water Reflections there are Water Reflections - Misc, Statics, Trees, Actors. One may ask: WHY all of these additional water reflections aren't present in the Game Settings menu if not for stability reason? (it's obvious that all these additional water reflections add realism and beauty to the game appearance). And same reason applies to all other Oblivion.ini settings which tune the game appearance and performance. In other words maybe it's a hint that Bethesda doesn't recommend to change all these settings and therefore they aren't present in the Game Settings menu. Thank you in advance.

 

P.S. One more thing: Is Process Lasso useful utility for Oblivion? Does setting of Core Affinity and I/O Priority affect game performance/stability anyhow? And if yes It does then which values should be set in Core Affinity and I/O Priority? My specs: i7 4790K, 8 GB RAM DDR3, GTX 770, SSD 840 PRO Series, 2 HDDs. Win 8.1 x64 Enterprise.

 

P.P.S. Here is my modlist sorted by LOOT just in case:

00  Oblivion.esm
01  Open Cities Resources.esm  [version 4.1.6]
02  SDR.esm  [version 9.000]
03  HorseCombatMaster.esm
04  Unofficial Oblivion Patch.esp  [version 3.2.0]
05  DLCShiveringIsles.esp
06  Unofficial Shivering Isles Patch.esp  [version 1.4.0]
07  DLCBattlehornCastle.esp
08  DLCBattlehornCastle - Unofficial Patch.esp  [version 1.0.4]
09  DLCThievesDen.esp
0A  DLCThievesDen - Unofficial Patch.esp  [version 1.0.5]
**  DLCThievesDen - Unofficial Patch - SSSB.esp  [version 1.0.4]
0B  DLCMehrunesRazor.esp
0C  DLCMehrunesRazor - Unofficial Patch.esp  [version 1.0.4]
0D  DLCVileLair.esp
0E  DLCVileLair - Unofficial Patch.esp  [version 1.0.5]
0F  DLCHorseArmor.esp
10  DLCHorseArmor - Unofficial Patch.esp  [version 1.0.5]
11  DLCOrrery.esp
12  DLCOrrery - Unofficial Patch.esp  [version 1.0.3]
13  DLCSpellTomes.esp
14  DLCSpellTomes - Unofficial Patch.esp  [version 1.0.1]
15  DLCFrostcrag.esp
16  DLCFrostcrag - Unofficial Patch.esp  [version 1.0.4]
17  Knights.esp
18  Knights - Unofficial Patch.esp  [version 1.0.9]
19  Open Cities Classic.esp  [version 4.1.6]
1A  Open Cities New Sheoth.esp  [version 2.0.1]
1B  Open Cities Outer Districts.esp  [version 4.1.6]
1C  OCC-KOTN-Patch.esp  [version 3.1]
1D  DeadlyReflex 5 - Combat Moves.esp
1E  Harvest [Flora].esp  [version 3.0.0]
1F  OCOD+FrostcragSpire Patch.esp
20  Harvest [Flora] - DLCFrostcrag.esp  [version 3.0.0]
21  Harvest [Flora] - DLCVileLair.esp  [version 3.0.0]
22  Harvest [Flora] - Shivering Isles.esp  [version 3.0.0]
23  HUD Status Bars.esp  [version 5.3.2]
24  SDR_Mechanics.esp  [version 9.000]
25  SDR_Oblivion.esp  [version 9.000]
26  SDR_Oblivion_noDDLS.esp  [version 9.000]
27  Enhanced Grabbing.esp  [version 0.5]
28  Bashed Patch, 0.esp

Edited by Tinien
Link to comment
Share on other sites

Ooops, forgot to reply to this one. :blush: No problem, happy to help.

 

I have not used things like that process lasso you mentioned, so I have no idea if they are of any use. As for ini settings: I really have no idea about those, either, I usually tweak some things in it because I want to. Alenet (the developer of Oblivion Reloaded) suggest using a default ini, I think, but with some recommended tweaks. You could see the mod page for details --> http://www.nexusmods.com/oblivion/mods/45749

 

MessageLogger might or might not help, I have not used it myself much, but I think it is reasonable to suppose that it does require some knowledge to be able to actually understand it. And still I am not sure if it can log the reasons behind crashes. From what I have noticed, it is easy to make Oblivion crash - a lot - and there are all sorts of little things to keep in mind, and also a ton of tweaking when it comes to the preferences of all the utilities. Like Oblivion Stutter Remover: changing a setting to the wrong direction can cause more crashes than one would have without OSR.

 

Hopefully someone else can help you more with those things. As for Oblivion - there definitely is something in it that just cannot be matched. Like many many others here, I would also call it home. I only started playing Oblivion in 2011 or 2012 I think, but at this rate, I will definitely still be here in 2022. :happy:

Link to comment
Share on other sites

Thank you for the answer. Still I don't quite understand this command Scribe - how exactly it should be written down to begin logging all output. Can someone tell me this if you please? Because I don't quite grasp this:

 

"(nothing) Scribe formatString:string var1 var2 ... var20 printToConsole:bool".

 

Should I write this (nothing) at start or not? Then should I write formatString:string parameter after Scribe or is it non mandatory? Then as far as I got it, var1 var2 ... var20 values are related to this formatString:string parameter but what are they needed for and what value exactly must be written down to substitute these vars?

 

I only want ConScribe to log to separate file all events including crashes - maybe some entry in this file would reveal true cause of the last crash.

Link to comment
Share on other sites

I do not think it works that way. It is a tool for mod makers, specifically for script writers, to log things into an external file. It is not a tool to analyse game crashes in general, if I have understood correctly. For example you could use it to:

  • trace where a script crashes the game (logging ends between scripted debug entry 16 and 17, so the issue is somewhere after 16 before 17 or at 17)
  • print variables at certain intervals, for example if building an algorithm that accounts for several dynamically changing values and adjusts some internal values accordingly, one could print all those variables every second or every few minutes, and then write something like a Python script that parses the ConScribe log and prints a graph of all the values so the mod maker can see how different values change and affect each other, so the mod author can adjust his/her algorithm accordingly
  • print debug messages in both in-game console and in a log file, so that one could close the game and still have access to all the debug messages, to make adjusting a script easier

So I think you cannot use it to analyse why the game crashes. It is a tool for scripters, to help them debug their own scripts.

 

If you still want to know how to use it, though, there are already examples on the wiki page: http://cs.elderscrolls.com/index.php?title=Scribe

 

If there is something in it that you do not understand (the usage example on the wiki page that is) then just ask. They are scripting commands - you need to know how to do scripting for Oblivion to use them. However you probably do not need ConScribe, and do not need to do any scripting. Actually, if you do not plan on doing any mods, you do not need to learn to do scripting in Oblivion, and consequently you will not need ConScribe. If that makes any sense. :wacko:

 

Hopefully that helps.

Edited by Contrathetix
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...