Playtesting tips ?

Post » Sat Oct 16, 2010 3:14 pm

Basically is there an easier way than CS > save esp > launch oblivion > load test save > shut down oblivion > modify esp and save > repeat ?

would closing the esp handle (using for instance process explorer) permit me to modify the esp and save it while loaded in oblivion ?

I mean there must be a way...

Workarrounds using two PCs, console commands (including obse) or/and tricky programs welcome :)#

Also interested in playtesting tips in general (I recently discovered tcl for instance which is a great time saver)
User avatar
Emily Jones
 
Posts: 3425
Joined: Mon Jul 17, 2006 3:33 pm

Post » Sat Oct 16, 2010 3:54 pm

No chance, if you could modify esp's whilst playing oblivion, you would have to reboot for modifications to tke effect :shakehead:
User avatar
Danny Blight
 
Posts: 3400
Joined: Wed Jun 27, 2007 11:30 am

Post » Sun Oct 17, 2010 2:27 am

:( you mean reboot oblivion ? a reload cell wouldn't do the trick ?
User avatar
K J S
 
Posts: 3326
Joined: Thu Apr 05, 2007 11:50 am

Post » Sat Oct 16, 2010 12:58 pm

Playtesting tip: Work in a way that doesn't require constant playtesting. Have console commands available to skip parts that are broken (mostly important when creating quests). Note as much down as possible. If you've got < 2 Gig of RAM, consider shutting down the CS before launching Oblivion (if Oblivion needs to use HDD space to store data, it loads so slow that it's quicker to just shut down the CS and launch it later again, than having it running and therefore blocking RAM).
User avatar
Ashley Tamen
 
Posts: 3477
Joined: Sun Apr 08, 2007 6:17 am

Post » Sat Oct 16, 2010 4:40 pm

:( you mean reboot oblivion ? a reload cell wouldn't do the trick ?


Nope the game keeps alot of the info in RAM once it is loaded and when testing it may never reload that info from the HDD so your changes would not take effect making playtesting useless !!
User avatar
xxLindsAffec
 
Posts: 3604
Joined: Sun Jan 14, 2007 10:39 pm

Post » Sat Oct 16, 2010 8:19 pm

In the general playtesting tips category, this is what I do, which may be redudant for you but I'll say it anyway, and may be overly focused on quest mods but oh well:

1. Work in bite-sized chunks. Usually I do the work for a single quest/part of a quest, stop, then try to play it through. For stuff I know is really complex, I'll sit and tinker with it and it alone until I'm happy, then move on, because there's nothing more annoying than needing to redo your quest 8 times because you broke the end.

2. While working, keep a list of what you've done. I keep an MS OneNote notebook (used to be Notepad text files), where I keep track of what changes I've made, what my quest stages are, things like that. Then when I go to playtest, I print it out and use it as a guide. Makes a handy place to write my mid-playtest notes, too.

3. My useful console commands are generally tdt (debug text, usually for cell info or actor AI info), tgm (god mode), sometimes tcl, and getstage/setstage for quest stages. If you're quest testing, it helps enormously to write down the name of your quest, so you don't get halfway in and then, like me, realize that your memory is terrible.

4. Test clean. I've got a save sitting around that I never save over where the only things enabled are the UOP and Oblivion itself. Then I use Bash and its handy feature to save load orders to disable everything but Oblivion, the UOP, and my mod. This reduces possible points of failure, so if something breaks, I know it was definitely me. Later, I worry about any other mods I want to be compatible with.

5. I'm a big fan of the cheat switch. I keep a big Ayleid switch sitting out where I'm testing (My AFK_Weye one is smack in the middle of town) with a script attached to it to do...whatever. Usually it loads items for me, or sets quest stages so I don't have to type a ton of console commands every time I go to test.

6. Keep copious notes. If somebody breaks during a quest, note the quest stage, note the AI pack if it's significant, note the dialogue, whatever. I've got notes in front of me to the tune of "Fix rock," which is ok if I'm going to do it immediately, but if not I should have said "Fix the rock covering the back door of the cave" or some such so I can remember.

7. Usually I play through to the point of irreversible failure, usually when quest stages or whatever fail to update. By that point I've usually got enough to spend some time fixing so I can come back. If not, being angry at my own idiocy is usually sufficient impetus to really figure out what the problem is. If I can keep going, however, I usually do.

8. If it can be done multiple ways, you should do it multiple ways. It's really easy to get stuck in a rut playtesting where, because you talked to the guy then killed the dremora then got the loot to always do it that way. Try not talking to the guy. Or running around the dremora. Whatever. Switch it up. This bit is hard, and the number one reason why we employ beta testers who are not ourselves.

9. I like to do, and this is primarily applicable to quests, two run-throughs of my stuff. One is to make sure everything works. Here I make liberal use of tgm, kill, and high-powered uberweapons to get through the fight scenes. Once it all works, I do a second run through to make sure it's actually balanced correctly. It's fairly annoying to have to fight legions of skeletons just so you can get to the broke part, so don't.

10. Lastly, I'm of the firm opinion you can't ever playtest too much. I generally figure if I'm not sick of doing it by the time I'm done, I did it wrong.

Hope that helps.
User avatar
KU Fint
 
Posts: 3402
Joined: Mon Dec 04, 2006 4:00 pm

Post » Sat Oct 16, 2010 3:07 pm

Here is the skeleton script of a hotkey token I add to the player.

It is handy, as you may add all kinds of things to run at the press of a key.
This example uses the left control key and the numeric keypad keys.
All keycodes are at the end for convenience

scn aaaaqqxxMyDebugKeysSCRIPT		float tmrDebug  begin gamemode			;------------------------------------------------------	; 	Timer  debug	;------------------------------------------------------	set tmrDebug  to tmrDebug  - getsecondspassed	if tmrDebug  < 0			set tmrDebug  to 1		;	Do stuf - like printing some status to console every second	endif				if IsKeyPressed3   29  == 0   ;  Left Control (or whatever key you want)		RETURN	endif				;==============================================================================	;	NUM 1 			;==============================================================================	if OnKeyDown 79   ;  NUM1															printc "111111111111111111" 																				;==============================================================================	;	NUM 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2															;==============================================================================	elseif OnKeyDown 80   ;  NUM2																														printc "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2" 																				;==============================================================================	;	NUM 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3															;==============================================================================	elseif OnKeyDown 81   ;  NUM3																														printc "3 3 3 3 3 3 3 3 3 3 3 3 3 3 3" 																																					;==============================================================================	;	NUM 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4															;==============================================================================	elseif OnKeyDown 75   ;  NUM4																														printc "4 4 4 4 4 4 4 4 4 4 4 4 4 4 4"			;==============================================================================	;	NUM 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5															;==============================================================================	elseif OnKeyDown 76   ;  NUM5																														printc "5 5 5 5 5 5 5 5 5 5 5 5 5 5 5"			;==============================================================================	;	NUM 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6															;==============================================================================	elseif OnKeyDown 77   ;  NUM6																														printc "6 6 6 6 6 6 6 6 6 6 6 6 6 6 6"			;==============================================================================	;	NUM 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7															;==============================================================================	elseif OnKeyDown 71   ;  NUM7																														printc "7 7 7 7 7 7 7 7 7 7 7 7 7 7 7" 			;==============================================================================	;	NUM 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8															;==============================================================================	elseif OnKeyDown 72   ;  NUM8																														printc "8 8 8 8 8 8 8 8 8 8 8 8 8 8 8" 			;==============================================================================	;	NUM 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9															;==============================================================================	elseif OnKeyDown 73   ;  NUM9																														printc "9 9 9 9 9 9 9 9 9 9 9 9 9 9 9" 			;==============================================================================	;	NUM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	;==============================================================================	elseif OnKeyDown   82   ;  NUM0															printc "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" 	;==============================================================================	;	NUM . . . . . . . . . . . . . . . . . . . . . . . . .	;==============================================================================	elseif OnKeyDown    83   ;  NUM.																														printc ". . . . . . . . . . . . . . ." 			endifend																;    0x01   ;     ;   1   ;  Escape;    0x02   ;     ;   2   ;  1;    0x03   ;     ;   3   ;  2;    0x04   ;     ;   4   ;  3;    0x05   ;     ;   5   ;  4;    0x06   ;     ;   6   ;  5;    0x07   ;     ;   7   ;  6;    0x08   ;     ;   8   ;  7;    0x09   ;     ;   9   ;  8;    0x0A   ;     ;  10   ;  9;    0x0B   ;     ;  11   ;  0;    0x0C   ;     ;  12   ;  Minus;    0x0D   ;     ;  13   ;  Equals;    0x0E   ;     ;  14   ;  Backspace;    0x0F   ;     ;  15   ;  Tab;    0x10   ;     ;  16   ;  Q;    0x11   ;     ;  17   ;  W;    0x12   ;     ;  18   ;  E;    0x13   ;     ;  19   ;  R;    0x14   ;     ;  20   ;  T;    0x15   ;     ;  21   ;  Y;    0x16   ;     ;  22   ;  U;    0x17   ;     ;  23   ;  I;    0x18   ;     ;  24   ;  O;    0x19   ;     ;  25   ;  P;    0x1A   ;     ;  26   ;  Left Bracket;    0x1B   ;     ;  27   ;  Right Bracket;    0x1C   ;     ;  28   ;  Enter;    0x1D   ;     ;  29   ;  Left Control			;    0x1E   ;     ;  30   ;  A		;    0x1F   ;     ;  31   ;  S		;    0x20   ;     ;  32   ;  D		;    0x21   ;     ;  33   ;  F		;    0x22   ;     ;  34   ;  G		;    0x23   ;     ;  35   ;  H		;    0x24   ;     ;  36   ;  J		;    0x25   ;     ;  37   ;  K		;    0x26   ;     ;  38   ;  L		;    0x27   ;     ;  39   ;  Semicolon		;    0x28   ;     ;  40   ;  Apostrophe		;    0x29   ;     ;  41   ;  ~ (Console)		;    0x2A   ;     ;  42   ;  Left Shift		;    0x2B   ;     ;  43   ;  Back Slash		;    0x2C   ;     ;  44   ;  Z		;    0x2D   ;     ;  45   ;  X		;    0x2E   ;     ;  46   ;  C		;    0x2F   ;     ;  47   ;  V		;    0x30   ;     ;  48   ;  B		;    0x31   ;     ;  49   ;  N		;    0x32   ;     ;  50   ;  M		;    0x33   ;     ;  51   ;  Comma		;    0x34   ;     ;  52   ;  Period		;    0x35   ;     ;  53   ;  Forward Slash   ;  		;    0x36   ;     ;  54   ;  Right Shift		;    0x37   ;     ;  55   ;  NUM*		;    0x38   ;     ;  56   ;  Left Alt		;    0x39   ;     ;  57   ;  Spacebar		;    0x3A   ;     ;  58   ;  Caps Lock		;    0x3B   ;     ;  59   ;  F1		;    0x3C   ;     ;  60   ;  F2		;    0x3D   ;     ;  61   ;  F3		;    0x3E   ;     ;  62   ;  F4		;    0x3F   ;     ;  63   ;  F5		;    0x40   ;     ;  64   ;  F6		;    0x41   ;     ;  65   ;  F7		;    0x42   ;     ;  66   ;  F8		;    0x43   ;     ;  67   ;  F9		;    0x44   ;     ;  68   ;  F10		;    0x45   ;     ;  69   ;  Num Lock		;    0x46   ;     ;  70   ;  Scroll Lock		;    0x47   ;     ;  71   ;  NUM7		;    0x48   ;     ;  72   ;  NUM8		;    0x49   ;     ;  73   ;  NUM9		;    0x4A   ;     ;  74   ;  NUM-		;    0x4B   ;     ;  75   ;  NUM4		;    0x4C   ;     ;  76   ;  NUM5		;    0x4D   ;     ;  77   ;  NUM6		;    0x4E   ;     ;  78   ;  NUM+		;    0x4F   ;     ;  79   ;  NUM1		;    0x50   ;     ;  80   ;  NUM2		;    0x51   ;     ;  81   ;  NUM3		;    0x52   ;     ;  82   ;  NUM0		;    0x53   ;     ;  83   ;  NUM.		;    0x57   ;     ;  87   ;  F11		;    0x58   ;     ;  88   ;  F12		;    0x9C   ;   156   ;  NUM Enter		;    0x9D   ;   157   ;  Right Control		;    0xB5   ;   181   ;  NUM/		;    0xB8   ;   184   ;  Right Alt		;    0xC8   ;   200   ;  Up Arrow		;    0xCB   ;   203   ;  Left Arrow		;    0xCD   ;   205   ;  Right Arrow		;    0xD0   ;   208   ;  Down Arrow		;    0x100   ;  256   ;  Left Mouse Button		;    0x101   ;  257   ;  Right Mouse Button		;    0x102   ;  258   ;  Middle/Wheel Mouse Button		;    0x103   ;  259   ;  Mouse Button 3		;    0x104   ;  260   ;  Mouse Button 4		;    0x105   ;  261   ;  Mouse Button 5		;    0x106   ;  262   ;  Mouse Button 6		;    0x107   ;  263   ;  Mouse Button 7		;    0x108   ;  264   ;  Mouse Wheel Up		;    0x109   ;  265   ;  Mouse Wheel Down								;    0x1D    	;     29   ;  Left Control	;    0x9D   	;   157   ;  Right Control			;    0x2A   	;    42   ;  Left Shift	;    0x36   	;    54   ;  Right Shift			;    0x38   	;  	 56   ;  Left Alt;    0xB8  	;   184   ;  Right Alt	

User avatar
Ellie English
 
Posts: 3457
Joined: Tue Jul 11, 2006 4:47 pm

Post » Sat Oct 16, 2010 5:11 pm

Thanks for the tips ! I have to add the "bat commands.txt" console command for executing multiple commands (the txt can be updated during gameplay as needed).

I was hoping for a workaround of reloading oblivion but this has to wait I guess :) (maybe the programmers out there ? an obse tricky ? am I being superstitious ?)
User avatar
Mr. Allen
 
Posts: 3327
Joined: Fri Oct 05, 2007 8:36 am

Post » Sat Oct 16, 2010 5:39 pm

And another one : set gamehour to (gamehour + 3) for waiting for 3 hours - still not as powerful as actually waiting for 3 hours...
User avatar
Baby K(:
 
Posts: 3395
Joined: Thu Nov 09, 2006 9:07 pm

Post » Sat Oct 16, 2010 3:58 pm

Bumpy bump bump
User avatar
Logan Greenwood
 
Posts: 3416
Joined: Mon Jul 30, 2007 5:41 pm

Post » Sat Oct 16, 2010 8:00 pm

Can't help you with the having to reload thing. That's just how it is.

But! Here's some stuff I do:
  • ~coc to the scene of what you're testing just before you activate the plugin for the first time, this is your "clean save" with no travel time
  • "centeronworld" (cow) instead of "centeroncell" (coc) when you only have cell coords for an exterior (i.e. "cow Tamriel 12,11")
  • also in this save, if you're testing something that is timing-dependent, go ahead and wait until an hour or less before the game hour you need
  • use the built-in beta comment system to take notes while testing, since it prints the ref ID of the targeted object in the text file for you
  • test with both a brand new character right out of the sewers (use the console to advance level/stats if needed) and your most well-loved save before the end of it
  • if your mod involves combat, check not just with multiple saves but with multiple classes
  • use multiple installs (one with only UOP/S and any masters your require and/or OBSE, and one fully modded) to test
  • use mTES4 to manage those installs so you don't tear your hair out
  • test with the UOP/S and without, so you know what bugs are already fixed and you don't duplicate unnecessarily (all mod users should be using the UOP/S)
  • don't just play through how you expect your users to play through, do whatever you can to break the mod in the process
  • don't forget to test a save after the mod has been used then uninstalled
  • if your mod adds any new items, put them all in a testing container so you can test them all without hunting for them
  • if your mod has scripts, put them on test activators to run them at your whim
  • test with and without a companion, if your mod contains new or edited locations - or at least use "moveto player" in the console on a wandering NPC to see how NPCs use the space
  • use "tai" to toggle AI off and on so you can "freeze" NPCs while testing if it suits you
  • use light spells to check darker nooks and crannies - your users will, you need to see everything they will see
  • give the mod to a non-modder to test, and see how many questions they need to ask you before they can install and use the mod successfully
  • non-modders also have less tolerance for what modders will let slide because of the PITA factor or bugs/quirks inherent to the engine, which may provoke you to up your quality standards
  • give the mod to a modder to test, so they can give you more technically specific feedback
  • once you've packaged the mod for upload, move all your resources out of your Data folder and install the mod fresh from the package to make sure you didn't forget or misplace/name any files (or install it to your unmodded install, if you have multiples set up)
  • plus everything Dwip & bg said, all excellent advice

User avatar
Nuno Castro
 
Posts: 3414
Joined: Sat Oct 13, 2007 1:40 am

Post » Sun Oct 17, 2010 5:10 am

I'm usually testing scripted and gameplay related mock ups. I don't need Tamriel for this, so I have an almost empty master file and ditto BSA files. These load ridiculously fast (nearly instant). If you regularly test something that doesn't require you to be in Tamriel, I highly recommend this.
User avatar
Stryke Force
 
Posts: 3393
Joined: Fri Oct 05, 2007 6:20 am

Post » Sat Oct 16, 2010 6:01 pm

Of all the advice given, I think these are the 3 best things:

give the mod to a non-modder to test, and see how many questions they need to ask you before they can install and use the mod successfully
non-modders also have less tolerance for what modders will let slide because of the PITA factor or bugs/quirks inherent to the engine, which may provoke you to up your quality standards
give the mod to a modder to test, so they can give you more technically specific feedback


The rest is all good too of course.
User avatar
DarkGypsy
 
Posts: 3309
Joined: Tue Jan 23, 2007 11:32 am

Post » Sat Oct 16, 2010 7:15 pm

@ Arthmoor - thanks :)
I'm usually testing scripted and gameplay related mock ups. I don't need Tamriel for this, so I have an almost empty master file and ditto BSA files. These load ridiculously fast (nearly instant). If you regularly test something that doesn't require you to be in Tamriel, I highly recommend this.
Sounds brilliant - not sure how I would go about creating those - could you maybe upload them at tesNexus ?
User avatar
Jack
 
Posts: 3483
Joined: Sat Oct 20, 2007 8:08 am


Return to IV - Oblivion