The Skyrim Mod Model



  • Skyrim, like its predecessors, is a highly mod-friendly game. The community created thousands of mods that add more content skimpy clothing or upgrade the gameplay graphics ([linux] hey, gotta work on what's fun, not what's important [/linux]). Anyway, its mod management is quite a nice piece of work. Most content is softcoded in a few large datafiles, which you can change and save as a "patch" file. Last mod in the load order takes precedence. Remove a mod and it will detect this and gracefully remove its content. You can even subscribe to a mod and its updates in one click through the Steam Workshop, predating a working appstore for Windows productivity software by about 18 years (at least they got their priorities right).



    Except for one thing. You can write scripts to do more advanced stuff. These scripts are saved with the character in order to "prevent bugs" when the mod is uninstalled. Well...




    • The most common scripts you will see are attached to a MagicEffect entry (basically any status effect or visual applied to a character). A typical script uses the OnEffectStart event to do something and OnEffectFinish to undo it when the magic effect runs out. Even though the game knows the corresponding magic effect was deleted when you uninstalled the mod, the script will remain and will not execute OnEffectFinish even though removing the magic effect is in no other way different from simply dispelling it or letting it run out during gameplay. This is apparently by design. Your script now remains active until the end of time. The most hilarious script I came across that worked like this was a disease that would kill you in 3 days unless OnEffectFinish ran first. Hope you have backups.


    • Most other kinds of scripts do not come with a built-in finish event so you have to forego the easy solution and go with something more complex. For instance, a common way to end quest scripts is to use RegisterForUpdate to start a repeating timer and then OnUpdate and check for a condition, like a global variable or absence of an item in the player's inventory, then resolve the quest if the condition is met. Guess what happens when you uninstall the mod: the script remains, it will dutifully check to see if global variable [NONE] has value [NONE] (cue error in log file) or absence of item [NONE] (cue error in log file), then resolve quest [NONE] (cue error in log file) every couple of seconds. In short, the script will continue spitting out errors for the rest of your character's lifetime, leading to gigabyte sized error logs and there is no way whatsoever to stop the script. There is a way around this: use RegisterForSingleUpdate and repeat this in the OnUpdate block... except the official docs recommended against this until recently because it would "slow down execution" (facepalm).





      The end result: there is a very large swath of mods which you cannot actually uninstall without bloating your savefile and/or creating a cascade of errors, including every slightly advanced mod, negating all efforts made to enable graceful uninstallation. Reinstalling tends to do nothing because most scripts are instanced. All because some bright light decided to save scripts with the character even though all other content (that could tell the script to stop or enable it to do useful work) is gone and you stated you don't want the script anymore through the act of uninstalling the mod. Operation "prevent bugs": Succeeded!


  • Sounds like you need to put the skyrim code into subversion.



  • Oh yeah. Skyrim is the WORST. Despite all their pronouncements, it's obvious it wasn't designed with modding in-mind... not even close.

    BTW modders have found a fix for magic effects. If you made a targeting rule making it reliant on a variable, the effect will become "temporary" and automatically dispell itself when the variable goes away. If your mod is uninstalled, the variable goes away. Bam. Unfortunately, it was discovered long after I first made my mod available, so God knows how many people are running the buggy version that'll screw their character to shit if they ever deactivate it. (The version up now works fine.)

    The real problem is they hard-coded a shitload of stuff:

    Want to create a Acrobatics skill that lets your character jump higher? Nope! Hard-coded! Every though every previous Elder Scrolls game had one!

    Want to create a mod to alter the controls so you can jump while running? Nope! Hard-coded! Tough shit!

    Want to create a mod that places an item on the landscape via script? Tough shit! You can't query the engine to find out the Z coordinate at a specific X/Y coordinate! That extremely basic operation literally can not be done! Want to move it only when the character isn't looking? Tough shit! There's no function for that! There's a function that *claims* to do that, but it doesn't work at all! Have fun coding up some half-functional bullshit to replace it!

    Want to add a new species of pet/follower? Turns out followers are implemented in a quest (of all things) and so every single mod that creates a new species of follower has to modify the same huge quest object-- guess how often this creates conflicts? Hint: 100% of the fucking time.

    Want to play as a dragon? Well the game engine doesn't have shit for dragons, they literally implemented the absolute bare minimum code to get the dragon behavior in the game. So you can't map controls to them without fucking hooking a goddamned fucking .dll.

    It's the perfect mod tool! You can make anything you can imagine! As long as you have absolutely no imagination whatsoever.

    And that's ignoring that it was literally impossible to create a new NPC (and have their face skintone match their body skintone) or create an area with a working navmesh for at least six months after Creation Kit was released. The Skyrim devs will swear on a Bible that Creation Kit is the same software they use-- yeah right! Because Skyrim has only one NPC-per-race and no navmeshes right? Or maybe you're a lying liar who lies and Creation Kit had the shit chopped out of it before you released it to the public. I pick option B.

    Then there's the WTFs around Steam's Workshop system... ugh.



  • Most of these are just feature requests, but:

    @blakeyrat said:

    Want to create a mod that places an item on the landscape via script? Tough shit! You can't query the engine to find out the Z coordinate at a specific X/Y coordinate! That extremely basic operation literally can not be done! Want to move it only when the character isn't looking? Tough shit! There's no function for that! There's a function that claims to do that, but it doesn't work at all! Have fun coding up some half-functional bullshit to replace it!

    You can sort of do this:

    1/ place two FXEmptyActivator derived activators at the desired point, move one into the ground, move the other into the sky, have the latter shoot a projectile spell at the former, add a Spawn Object to the explosion, hope there is no roof and no one gets hit by the projectile before it impacts terrain.

    2/ spawn an actor (for some reason actors DO spawn at ground level), give it a script that kills it soon after spawning and spawns the item at its location. Hope the location where you want the item to appear is not blocked.



    Here's another facepalm bug:



    You cannot use FindClosestActorToReference to find the nearest actor to a reference (eg yourself) that meets a condition, for two separate reasons. For one, if the reference itself is an actor it will always return itself. This makes it virtually useless. Secondly, you cannot pass criteria to the function - all you can do is basically spin and repeat the search until you finally find a valid target. Otherwise it will gleefully return dead bodies or things that aren't actors at all (but isn't it called FindClosestActorToReference... never mind).

    @blakeyrat said:

    Then there's the WTFs around Steam's Workshop system... ugh.

    That too. To be fair, it is an appstore and after many months of Error 501 Nexus and their useless "Mod Manager" it seemed like a breath of fresh air to most people. Except, of course, it doesn't have room for:

    • Descriptions of decent length.
    • Descriptions with bbcode.
    • Readme files.
    • Change logs.
    • Tags.

      But the mod creator can delete troll posts in his mod thread! Then again, as became quite clear, the definition of "troll post" is "post pointing out that I blatantly stole this mod from someone else". Admins, of course, do nothing. As a result some modders refuse to use it out of principle [tuxfan]and expect everyone else to ignore it[/tuxfan]. Doesn't mean we like it, but we have no choice...





      I don't think the skintone issue was ever solved btw. I just went with "body skintone slider -> 0%".


  •  You guys think Skyrim is bad? You've clearly never modded Space Empires V:

    • There is a set of functions you use when you are writing event scripts. There is a completely DIFFERENT set of functions you use when you are writing formulas in data files (e.g. definitions of ship components and hull sizes). The overlap between these two sets of functions is... not large.
    • Except for the script functions which are exact duplicates of formula functions, but with a meaningless "Sys_" prefix attached to them.
    • There is a script function to adjust the amount of supplies a ship is carrying by a specified delta. There is NOT a script function to adjust the amount of ordnance a ship is carrying by a specified delta. (You have to get the amount of ordnance the ship is carrying, store it in a variable, add to that variable, and then set the amount of ordnance to the new value.) Supplies and ordnance are functionally identical counters on a ship with slightly different in-game uses.
    • Asteroid fields usually count as "planet" type space objects, except when they don't, and are their own type.
    • You cannot have more than 1000 or so sectors in a star system, or else the broken SE5 code will generate two sectors with different coordinates but the same internal ID. And that's a BAD thing!
    • The scripting language is a horribly verbose bastardization of Delphi and VB, with WTF's aplenty. For instance, you cannot add an integer to a real; no, you have to call Sys_Convert_Integer_To_Real on it first. Or maybe you have to actually convert it to a STRING, and parse that string as a real, because there isn't even a Sys_Convert_Integer_To_Real function? I don't even remember... I try to stay away from SE5 scripting!
    • You'd expect formulas in the data files to obey order of operations. They don't. In fact, I've heard that you can trick the game into generating arbitrarily high numbers simply by repeatedly adding and subtracting 1 from a starting number. E.g. 1 + 1 - 1 + 1 - 1 + 1 - 1 might equal 5 or something in SE5's broken logic.
    • Also, if you leave out a space between an operator and its operands, the game will silently choke on that formula and treat everything to the right of the "error" as if it weren't there. E.g. 1 + 2 + 3+4 equals 6, not 10.
    • The program you use to compile your scripts takes an inordinate amount of time to compile longer scripts. Not because it actually takes so long to compile them, but simply because when you hit the "compile" button, it reloads the script from disk... which causes the text box containing the script you're editing to scroll through itself as it populates! Fortunately this can be worked around by compiling a small "stub" script which just includes the actual scripts you want to compile, which you then edit in a saner editor!


  • @Brother Laz said:

    1/ place two FXEmptyActivator derived activators at the desired point, move one into the ground, move the other into the sky, have the latter shoot a projectile spell at the former, add a Spawn Object to the explosion, hope there is no roof and no one gets hit by the projectile before it impacts terrain.

    Haha that's brilliant/stupid. I never thought of that possibility! Wow I might need to revisit this fucking retard mod.

    @Brother Laz said:

    2/ spawn an actor (for some reason actors DO spawn at ground level), give it a script that kills it soon after spawning and spawns the item at its location. Hope the location where you want the item to appear is not blocked.

    That's the solution I picked, but the actor sometimes gets into fights for reasons I can't fathom. (Everything about him is set to pacifist, as far as I can tell.) Also if the object (which is solid) moves only a small distance away from its last spawn, the actor spawns atop the old location of the object and then it's hovering.

    I don't get for the life of me how there's no "get landscape Z for X/Y" function. The game engine, as you mention, does it when you spawn actors, so obviously it *knows* the information, there's just no way to query for it. It's trivial to get the x/y of a location you want, they never anticipated needing to place an object on the ground? Or finding the elevation for any reason? They seriously never thought that would come up? Idiots. Like I said before, it's the tool for modders who have absolutely zero imagination.

    @Brother Laz said:

    That too. To be fair, it is an appstore and after many months of Error 501 Nexus and their useless "Mod Manager" it seemed like a breath of fresh air to most people. Except, of course, it doesn't have room for:

    • Descriptions of decent length.
    • Descriptions with bbcode.
    • Readme files.
    • Change logs.
    • Tags.

    Oh and the categories are fucking useless. If you make a new helmet, fine, boom, there's a mod-- "armor". But wait, should the helmet go under clothing too? Fine, "armor, clothing". Makes sense.

    But what about the mods I'm making? Which of those pre-generated tags should Real Dovahkiin Power go under? It's not really a cheat-- it's just a slight modification of game mechanics. It's not a item, clothing, armor, location, house, follower or spell. It never occurred to Valve that anybody would make a mod like that? Because roughly 1/3rd of the mods in the goddamned Workshop are exactly that-- people who wanted to tweak the vampire rules, or wanted to tweak weapon damage, etc.

    What about my Paranoia mod? It's NOTHING. It's a PRANK. It doesn't affect game mechanics in any way, shape, or form. It doesn't add any new objects. It's not a cheat. There's no mod category to put pranks into.

    Not only did Bethesda design their mod tools for people with no imagination, apparently Valve's developer who entered those tags is the target audience!

    They've fortunately fixed the bug where uploading a new revision to your mod would wipe-out all but the first 256 characters of the mod's description, so there's that I guess.

    @Brother Laz said:

    But the mod creator can delete troll posts in his mod thread! Then again, as became quite clear, the definition of "troll post" is "post pointing out that I blatantly stole this mod from someone else". Admins, of course, do nothing. As a result some modders refuse to use it out of principle [tuxfan]and expect everyone else to ignore it[/tuxfan]. Doesn't mean we like it, but we have no choice...

    The alternative is you put it on Skyrim Nexus, where the most popular mod is Super Elf Tits Naked Tits Ass Sex Positions Ass Jiggle Tits version 2.0 Gold: Extra Tits Edition. Uh... I'll leave it on Steam.

    @Brother Laz said:

    I don't think the skintone issue was ever solved btw. I just went with "body skintone slider -> 0%".

    It turns out you have to generate a new actor's FaceGenData, even if the actor only uses the default sliders and thus the game engine should easily be able to create the face on-the-fly like it does for PCs. I'd love to hear the WTF that led to this.

    Anyway, once you've finished getting the NPC looking how you want, you have to select that Actor's name (not in filter results, but in the main Actors list) and type Control-F4. That generates the FaceGenData files in your Textures and Meshes folders, then you just have to make sure they get included in the mod archive. (CK is pretty good about doing this by default.)

    No, there's no way to discover that magical key combination in Creation Kit or the docume-- haha I couldn't finish the word "documentation!" Let's say "woefully incomplete and confusing wiki." No, there's no indication that the game engine isn't capable of generating faces on-the-fly for NPCs (even though it can for PCs.) Yes, it's impossible to Google what the key combination is unless you know to use the magic words "FaceGenData". Oh and for the first 6 months or so of Creation Kit's existence, that key combination was disabled-- despite CK being "exactly what Bethesda used to develop the game". When they released it as a mod tool, apparently it didn't occur to them modders might want to make new NPCs. Welcome to Skyrim modding.



  • @ekolis said:

    You guys think Skyrim is bad? You've clearly never modded Space Empires V:

    I've never even heard of Space Empires V. WTF.



  • And then there's the Minecraft mod model, which apparently involves cracking the game's code... which somehow the dev team is perfectly OK with you doing, so long as you don't actually remove the authentication keeping non-paying players from using the client! No matter that anyone who would be into using the mod tools to remove the authentication wouldn't exactly be one to obey the warning telling you not to use them for that purpose!



  • @ekolis said:

    And then there's the Minecraft mod model, which apparently involves *cracking the game's code*

    "cracking" implies it's encrypted or something. It's just obfuscated Java, so not really "cracked"; just means none of the fields, variables, properties, or pretty much anything makes any sense at all. Though I doubt it makes much more even with the original names.The stuff that keeps non-paying users from playing it is not in the game itself but rather the launcher.

    The big problem was that, originally, you pretty much HAD to modify the base classes to do anything. apparently "protected" was not in their vocabulary, and a lot of classes are tied together when they really don't have to be, and some elements are hard-coded directly into it (though that might be the compiler, too). 

     

    Case and Point: I wanted to make a simple mod that would add a Anvil like the existing Anvil Item, but made out of diamond, which of course has better capabilities. Ideally it would just involve creating a derived class and changing/overriding the appropriate values. So, I thought, first, "well, this should be easy, I can just derive from BlockAnvil and customize it from there.

     Not a fucking chance. BlockAnvil has only one constructor that takes one argument, and it calls the superclass directly with the BlockID of the Anvil itself. Well that's fucking nice. (Bonus WTF: "BlockAnvil" Derives from BlockSand. Because yeah, that makes perfect sense. Perfect example of "Well, fuck, we want to make this block fall like Sand, but instead of rethinking things and realizing that, hey, we might want to make more than just Sand fall- I'll just derive from BlockSand again"

     So against my better judgement I kept at it anyway. I managed to pretty much duplicate everything for a standard AnvilBlock, andI actually got it working in-game mostly, sans the GUI. Which is where things got really fun.

    See first I thought I could derive from GuiRepair, which is the GUI component used for the default Anvil. Man, I really didn't learn from the previous experience, did I? It's pretty much inexhorably tied to the default Anvil Block. Well that's fucking great. So back to the drawing board, and this time I decide fuck it I'll just change the GuiRepair component to work with my "Diamond" Anvil, with the right changes.

     

    And I thought it might actually work for a few minutes there, except that apparently in some other piece of code somewhere else there is another piece of code that closes any Open GUI on some set of weird conditions relating to the phase of the moon. So I worked around that. Then I decided that the way it would work would be to check the block location to see if ite BlockID is the default Anvil or my Diamond Anvil Block, and in the latter case allow for the expanded capabilities. Unfortunately for me however it turns out that the World.getBlockID() method likes to inexplicably return 0, guess it's a prankster.

     Then I looked over what I had so far and basically said to hell with it- I'll wait until they add the allegedly planned mod API, and hope in the meantime they refactor in some sanity to the codebase.

     




  • Don't get me wrong, I love the hell out of Skyrim, it's a great game and a lot of fun to waste time on. Plus, some of the mods are just awesome. I particularly like the one that adds birds (I don't know why, I just like seeing Bluejays and the like flying around).

    That said, it's a freaking horribly executed port of a console game, when it should have been a PC game ported to console. The stock UI is next to useless, thankfully the modding community gave us SkyUI. Then there is the fact that it's quite top-heavy resource wise, but can only see 4GB of RAM because it's 32-bit only (mind you, it could only see 2GB at launch, so 4GB is better). Add a few mods in, and you quickly run over this limit, especially if you turn the draw distances up. Nothing quite like running from Riverwood to Whiterun only to suddenly come to a screeching halt because some entity tried to load that put you over the limit, or opening a door only to get stuck on an infinite loading screen.

    Plus, like you said, the save game bloat. I honestly wish I could have been there when they decided to stick scripts into save games. Really, because I can't think of a good logical reason why that's even remotely a decent idea. Variables I can see, but the entire freaking script? My mind is boggled.

    Still... awesome game.

    Edit: Wow, I sound bitchy. Probably because I spent a good part of my 'playing Skyrim' time this weekend just trying to get the game stable.



  • I think there are 0 game developers that don't inadvertantly expose their atrocious cowboy methods when their games are opened up to modding.

     



  • @dhromed said:

    I think there are 0 game developers that don't inadvertantly expose their atrocious cowboy methods when their games are opened up to modding.

     

    Well, lets be fair here, anytime you expose anything that can be scripted, or even variables tweaked, someone will find someway of abusing it. Doesn't even need to be a modder, I've seen some pretty atrocious internal script work (don't even get me started on our logic sequence system we've handed over to our exercise developers, and the rather 'creative' and 'clever' stuff they do with it).



  • @dhromed said:

    I think there are 0 game developers that don't inadvertantly expose their atrocious cowboy methods when their games are opened up to modding.

    The dirty laundry that mystified me the most about Skyrim is that it had zero support for unit testing of quests. The game has thousands of quests, all of which interact with each other in weird unpredictable ways (you ever had the Courier and the "join the Dawnguard" guy both try to get your attention at the same time? Hilarious.) And yet... they had no way of unit testing them, no way of fuzz testing them. They're still developing like it's 1988 in Gamebryo Central. (I refuse to call it "Creation Engine" until it's obviously not just tweaked Gamebryo.)

    No wonder the end product was so buggy.

    Now Bon Jovi.


  • Considered Harmful

    @blakeyrat said:

    (you ever had the Courier and the "join the Dawnguard" guy both try to get your attention at the same time? Hilarious.)

    No, but I had a fugitive ask me to hide his stolen equipment, while I was in close combat with a dragon. I think the dragon killed him a few seconds later.



  •  I never player Skyrim, because I already had my Gamebryo fun with Fallout 3, and cannot stand the stiff jerky character (non-)animation anymore.



  • @joe.edwards said:

    @blakeyrat said:
    (you ever had the Courier and the "join the Dawnguard" guy both try to get your attention at the same time? Hilarious.)

    No, but I had a fugitive ask me to hide his stolen equipment, while I was in close combat with a dragon. I think the dragon killed him a few seconds later.

     

    Was that what the guy was?

    I had an encounter where I map traveled to a marker, and simultaneously got a group of necromancers, a dragon, and some random dude who forcefully initiated dialog with me.  Unfortunately for him, when an NPC initiates dialog, the game thinks you released all mouse buttons - including that button that was keeping that arrow nocked while I was lining up a shot at one of the necromancers.  Long story short, Mr. Chatty took an arrow to the face.  Another guy came along shortly and had some dialog about a thief, but I didn't read it because I was frantically trying to close the dialog so I wouldn't get killed by the dragon that was still attacking me.


  • Considered Harmful

    @Cat said:

    Long story short, Mr. Chatty took an arrow in the knee.

    AITKTFY



  • @blakeyrat said:

    @ekolis said:
    You guys think Skyrim is bad? You've clearly never modded Space Empires V:
    I've never even heard of Space Empires V. WTF.
    Space Empires V is  a much simpler game than Skyrim, but if you look at all change log since v 1.0, it is staggeringly long.  Some of the bugs were painfully obvious and some lead to abuses that made KOTOR and KOTOR II exploits look wimpy.  Despite all the bug fixes they never got the AIs beyond drooling idiots.



  • @Cat said:

    I had an encounter where I map traveled to a marker, and simultaneously got a group of necromancers, a dragon, and some random dude who forcefully initiated dialog with me.  Unfortunately for him, when an NPC initiates dialog, the game thinks you released all mouse buttons - including that button that was keeping that arrow nocked while I was lining up a shot at one of the necromancers.  Long story short, Mr. Chatty took an arrow to the face.  Another guy came along shortly and had some dialog about a thief, but I didn't read it because I was frantically trying to close the dialog so I wouldn't get killed by the dragon that was still attacking me.
    Sometimes bugs like that make the game hilarious (for the wrong reasons of course).  I seriously question the single mindedness of some NPCs, they get so focused on their one little quest they fail to notice the dragon spewing ice everywhere.  One that got me was I opened a chest that was trapped with a giant fire column, no big deal I could back up once I was done looting the chest.

    But......

    The chest contained the plot item that my temp follower was looking for, so she decided this would be the best time to engage me in a conversation, all the while I am getting flamed to death.  By the time she was done talking and would let me abort the conversation (and trust me I was button spamming) I had just enough time to watch me lose my last bit of health.



  • @Anketam said:

    Space Empires V is a much simpler game than Skyrim, but if you look at all change log since v 1.0, it is staggeringly long. Some of the bugs were painfully obvious and some lead to abuses that made KOTOR and KOTOR II exploits look wimpy. Despite all the bug fixes they never got the AIs beyond drooling idiots.

    It came out as a discount game in 2006. Why the fuck would anybody be playing it today? Especially when, in the last two years, there's been like 20 really good releases in that genre? Are you only allowed to buy one game a decade?



  • One of the worst game engines I've seen for modding is the Souce (multiplayer) engine.

    Officially, server-side scripting is [url=https://developer.valvesoftware.com/wiki/Server_plugins]supported[/url] and client-side scripting isn't (except on GMod?).  You can compile Valve Server Plugins against the Source SDK, the public version was last updated in 2007. However, what you can do on the server is extremely restricted, as you only have access to [url=https://developer.valvesoftware.com/wiki/Edict_t]edict_t[/url] rather than the actual C++ classes for game objects.

    Unless, that is, you do binary [url=http://wiki.alliedmods.net/Signature_Scanning]signature scanning[/url] for the function you want to call in the server DLL.  Which is in a different spot in every game that uses the Source engine and the signature can change when a game is updated.

    Incidentally, signature scanning is how MetaMod: Source, SourceMod, and EventScripts all work.

    Did I mention that the public Source SDK is for a  version that no multiplayer Source games published by Valve actually use? You have to use a reverse-engineered version to even compile VSPs for modern servers.



  • @blakeyrat said:

    @Anketam said:
    Space Empires V is a much simpler game than Skyrim, but if you look at all change log since v 1.0, it is staggeringly long. Some of the bugs were painfully obvious and some lead to abuses that made KOTOR and KOTOR II exploits look wimpy. Despite all the bug fixes they never got the AIs beyond drooling idiots.
    It came out as a discount game in 2006. Why the fuck would anybody be playing it today? Especially when, in the last two years, there's been like 20 really good releases in that genre? Are you only allowed to buy one game a decade?
    Some people (like me) enjoy playing old games regardless of how good or bad they are.  Normally there is something about the game that despite it being bad or old makes it enjoyable.  One game I enjoy from windows 95 era (very early 95) had a very simple but fun enchanting system and an equally enjoyable random dungeon level generating system (was similar in style to Diablo, but came before it).  The reason why I still go back to a game like Space Empires V is that it has a few good systems in it like creating species/empires, the space ship designer, and it had better than average tools for managing a turn base empire, which reduced need to micro manage each and every planet.  Yes the game overall was a flop, but even bad games can have a system or two in it that make it enjoyable and cool.



  • @Anketam said:

    One game I enjoy from windows 95 era (very early 95) had a very simple but fun enchanting system and an equally enjoyable random dungeon level generating system (was similar in style to Diablo, but came before it).

    Does this game have a name?



  • @Anketam said:

    I seriously question the single mindedness of some NPCs, they get so focused on their one little quest they fail to notice the dragon spewing ice everywhere.

    That's because they literally are single-minded.

    NPC AI in Skyrim is implemented as a simple stack of ordered 'packages'. Each of these packages can have a thread of actions to take inside of it and can have scripted conditions attached, or can be attached to a daily schedule. However, an NPC can only have one AI package active at a time: the AI simply looks at the entire stack of packages and evaluates them top to bottom. The first one that is eligible (i.e. passes any conditional guards and is according to schedule) is run, the others are ignored completely. This means that all it takes is a bad package added by a quest to turn things sour. For instance, a package that overrides the default flee and combat behaviors by preventing them wholesale, instead of making a coarse estimate on threat level to decide whether to flee or not. That's one surefire way to arrive at this particular problem of NPCs running straight into dragons, vampires, environmental hazards, etc.

    (Another contributing factor is the fact that most NPCs are defaulted to a personality archetype with threat assessment skills swaying to the wrong side of suicidal. While it is a nice idea to be able to configure how 'heroic' an NPC should act, the actual implementation is utterly broken...)



  • @Ragnax said:

    @Anketam said:
    I seriously question the single mindedness of some NPCs, they get so focused on their one little quest they fail to notice the dragon spewing ice everywhere.
    That's because they literally are single-minded.

    NPC AI in Skyrim is implemented as a simple stack of ordered 'packages'. Each of these packages can have a thread of actions to take inside of it and can have scripted conditions attached, or can be attached to a daily schedule. However, an NPC can only have one AI package active at a time: the AI simply looks at the entire stack of packages and evaluates them top to bottom. The first one that is eligible (i.e. passes any conditional guards and is according to schedule) is run, the others are ignored completely. This means that all it takes is a bad package added by a quest to turn things sour. For instance, a package that overrides the default flee and combat behaviors by preventing them wholesale, instead of making a coarse estimate on threat level to decide whether to flee or not. That's one surefire way to arrive at this particular problem of NPCs running straight into dragons, vampires, environmental hazards, etc.

    (Another contributing factor is the fact that most NPCs are defaulted to a personality archetype with threat assessment skills swaying to the wrong side of suicidal. While it is a nice idea to be able to configure how 'heroic' an NPC should act, the actual implementation is utterly broken...)

    NPCs regardless of the game tend to be suicidal.  Personally if I was a bandit running around in hide armor and see an orc in dragon plate armor carrying a giant war hammer, odds are I am not going to pick a fight with him, and if I go down to one knee because I am almost dead and start to beg for mercy and he lets me live, I would not as soon as I get some health back resume attacking him.  I would take the Order of the Stick route where as soon as the goblins hear the good guys coming they smashed all of the enchanted items they had that they could not equip and took all their other loot and ran.  The goblins' commentary during the sequence was hilarious. 

    @blakeyrat said:

    @Anketam said:
    One game I enjoy from windows 95 era (very early 95) had a very simple but fun enchanting system and an equally enjoyable random dungeon level generating system (was similar in style to Diablo, but came before it).
    Does this game have a name?
    Castle of the Winds



  • @Anketam said:

    Castle of the Winds

    Haha I knew it! I have a Skype friend who plays that.

    Edit: it was Mission: Thunderbolt for me.



  • @Anketam said:

    Castle of the Winds

    You just had to mention that game, didn't you? Now I am compelled to pull it up from my store of old files and play again, damn it all!

    (It was from the Win 3.1 era, btw. Not the Win 95 era.)



  • @Ragnax said:

    (It was from the Win 3.1 era, btw. Not the Win 95 era.)


    ...which means it won't run on 64-bit versions of Windows. Damn, that means I'll have to play it in a virtual machine.



  • Yeah that's why my friend and I were talking about it a few weeks ago. I think he actually installed the 32-bit version of Windows 7 just for that dumb game... IIRC



  • @blakeyrat said:

    Yeah that's why my friend and I were talking about it a few weeks ago. I think he actually installed the 32-bit version of Windows 7 just for that dumb game... IIRC

    There are a lot of reasons to avoid Win64. It really sucks as a development platform for WinForms apps.



  • @Anketam said:

    Sometimes bugs like that make the game hilarious (for the wrong reasons of course).  I seriously question the single mindedness of some NPCs, they get so focused on their one little quest they fail to notice the dragon spewing ice everywhere.  One that got me was I opened a chest that was trapped with a giant fire column, no big deal I could back up once I was done looting the chest.

    But......

    The chest contained the plot item that my temp follower was looking for, so she decided this would be the best time to engage me in a conversation, all the while I am getting flamed to death.  By the time she was done talking and would let me abort the conversation (and trust me I was button spamming) I had just enough time to watch me lose my last bit of health.

     

    "Look, honey, I know that you're on fire and maybe this isn't the best time... but I'd like to talk about us.  Can you please stop the soul-rending shrieks of agony?  I feel like I'm the only one who is trying to make this work... are you even listening?"



  • @bridget99 said:

    There are a lot of reasons to avoid Win64. It really sucks as a development platform for WinForms apps.
    Of course, I just have to know - other than a legacy application why would you be writing any WinForms apps?



  • @The Bytemaster said:

    @bridget99 said:

    There are a lot of reasons to avoid Win64. It really sucks as a development platform for WinForms apps.
    Of course, I just have to know - other than a legacy application why would you be writing any WinForms apps?

    What's the alternative? WPF? We've done 2-3 apps in WPF and I just don't see the point. Equally important, my colleagues hated it. ASP.NET? Our IT man would veto that because of IIS. He hates IIS. Java? I can see that, but I'm still going to want to make a nice, desktop-based fat client application.



  • @dhromed said:

    I think there are 0 game developers that don't inadvertantly expose their atrocious cowboy methods when their games are opened up to modding.

     

     

    I was wrong, apparently!

     

     



  • @Ragnax said:

    @Anketam said:
    Castle of the Winds

    You just had to mention that game, didn't you? Now I am compelled to pull it up from my store of old files and play again, damn it all!

    (It was from the Win 3.1 era, btw. Not the Win 95 era.)

    Yea, I could not remember exactly when it came out.  I only remember playing it on Win 95.


  • @dhromed said:

    @dhromed said:
    I think there are 0 game developers that don't inadvertantly expose their atrocious cowboy methods when their games are opened up to modding.

    I was wrong, apparently!

    Funny; I was going to point out the beauty and logic that was Quake III's source code. Hampered by being limited to the expressiveness and flat C and being burdened by necessary pointer magic, it still managed to be more logical, well-structured and to the point than any bit of C++, Java or C# code I've ever seen in projects of comparable size.

    It's sad that as a part of the Zenimax family, iD software has gotten stuck with the champion of pushing bugged games out the gates; Bethesda... It shows too; Rage was their first title under Zenimax and had problem upon problem, whereas anything else they had ever produced before that could be liberally tossed onto any machine including the junker gathering dust in the closet and would still run free of issues (aside of performance, like reduced frame rate, ofcourse)...



  • @Anketam said:

    Space Empires V is  a much simpler game than Skyrim, but if you look at all change log since v 1.0, it is staggeringly long.  Some of the bugs were painfully obvious and some lead to abuses that made KOTOR and KOTOR II exploits look wimpy.  Despite all the bug fixes they never got the AIs beyond drooling idiots.

    I hear that in some of the beta versions, you could fling planets out of the combat arena into adjacent sectors using nothing but a frigate equipped with a tractor beam...



  • @blakeyrat said:

    It came out as a discount game in 2006. Why the fuck would anybody be playing it today? Especially when, in the last two years, there's been like 20 really good releases in that genre? Are you only allowed to buy one game a decade?

    I do still play SE5, actually, and yes, I have bought more recent games like Sword of the Stars II and Star Ruler. I actually kind of like the slower play-by-mail style pace of SE5 multiplayer (I don't play singleplayer SE5 anymore) compared to other games where everyone has to be online at the same time for hours on end.



  • @ekolis said:

    @Anketam said:
    Space Empires V is  a much simpler game than Skyrim, but if you look at all change log since v 1.0, it is staggeringly long.  Some of the bugs were painfully obvious and some lead to abuses that made KOTOR and KOTOR II exploits look wimpy.  Despite all the bug fixes they never got the AIs beyond drooling idiots.
    I hear that in some of the beta versions, you could fling planets out of the combat arena into adjacent sectors using nothing but a frigate equipped with a tractor beam...
    Would not surprise me.  Here are the ones that I know of (all of which they have since fixed):

    You could save empires you created for faster generation of new games.  Catch was it did no validation on the import.  So you could create a new game where each player starts with insane racial abilities and technology, then export the empire.  Change the game settings to no racial abilities and very low technology and import the empire.  Your empire now is insanely far more powerful than any other empire before even starting.

    When you gave a colony ship the command to colonize a new planet it would always move one hex closer even if it had no movement left for the turn.  So you could colonize spam a colony ship to its destination in as few as two turns.  There was a similar bug that a fleet of ships performing an auto move would cause all ships to move as long as one had movement points remaining.  Nothing like a slow fleet of dreadnoughts or base ships moving at the speed of a frigate.

    You could export construction queues and then import them on other planets (really awesome feature, wish other turn based strategy games would have this).  However, the import did no validation checks.  Normally you could only have one spaceport (or construction yard, can't remember the exact name) per planet, but if you exported a queue that contained one then you could import the queue and thus build multiple.  The spaceports construction rates would stack with each other, allowing huge planets to really be able to spam ships in emergency situations.  For the lols and giggles near the end of one game I had one sphere world with enough spaceports that it could literally construct an entire fleet of heavy cruisers in one turn (and that included support ships that could create warp points for them allowing them to strike any system on the map).

     



  • Another bitch about modding: every comment I get on Workshop is like "I like your mod but instead of what it does it should do X, Y, and Z. I like it but I'd like it better if it did X, Y and Z."

    And I always reply, "if you want to make your own mod based on mine, feel free. I'll even give you the source files."

    And they always reply, "nah I'm no good at that stuff."

    Do other creative endeavors get that, or is it only mods? "Look, I liked Star Trek, but I think it would be better if instead of a spaceship it's in a submarine and Klingons should be blue and act different."



  • @blakeyrat said:

    Another bitch about modding: every comment I get on Workshop is like "I like your mod but instead of what it does it should do X, Y, and Z. I like it but I'd like it better if it did X, Y and Z."

    And I always reply, "if you want to make your own mod based on mine, feel free. I'll even give you the source files."

    And they always reply, "nah I'm no good at that stuff."

    Do other creative endeavors get that, or is it only mods? "Look, I liked Star Trek, but I think it would be better if instead of a spaceship it's in a submarine and Klingons should be blue and act different."

    Answer: "Yes"

    It is great when the author (regardless of the medium) listens to a suggestion that 'everyone' wants, and then they start complaining about the change. 



  • @Anketam said:

    It is great when the author (regardless of the medium) listens to a suggestion that 'everyone' wants, and then they start complaining about the change.

    If they were willing to do it themselves, it'd be no big deal. But what bothers me is that tell me what to change, but when I say "go ahead and follow your dreams" they're always like "nope too hard".

    Well fuck. You guys know me. I'm a lazy-ass motherfucker who doesn't do shit, and I managed to figure out Creation Kit. I'm even willing to give them the source files for my mod which gets them 95% of the way to their goal.

    Just bugs me.



  • By the way, some people still play Space Empires IV... which came out around 2001 or so. Yeah.



  • @blakeyrat said:

    And I always reply, "if you want to make your own mod based on mine, feel free. I'll even give you the source files."

    And they always reply, "nah I'm no good at that stuff."

    Do other creative endeavors get that, or is it only mods?

     

    Yeah open source gets that a lot.

     



  • @Quietust said:

    @Ragnax said:

    (It was from the Win 3.1 era, btw. Not the Win 95 era.)

    ...which means it won't run on 64-bit versions of Windows. Damn, that means I'll have to play it in a virtual machine.
     

    Is DOSbox your friend here?

    I played Terminal Velocity through it quite recently. Fond memories of blocky graphics and distorted sounds.

     



  • @Cassidy said:

    I played Terminal Velocity through it quite recently. Fond memories of blocky graphics and distorted sounds.

    I had that. It didn't correct the perspective on textures correctly, so the closer you got to something the more screwy it looked.



  • @Cat said:

    @joe.edwards said:

    @blakeyrat said:
    (you ever had the Courier and the "join the Dawnguard" guy both try to get your attention at the same time? Hilarious.)

    No, but I had a fugitive ask me to hide his stolen equipment, while I was in close combat with a dragon. I think the dragon killed him a few seconds later.

     

    Was that what the guy was?

    I had an encounter where I map traveled to a marker, and simultaneously got a group of necromancers, a dragon, and some random dude who forcefully initiated dialog with me.  Unfortunately for him, when an NPC initiates dialog, the game thinks you released all mouse buttons - including that button that was keeping that arrow nocked while I was lining up a shot at one of the necromancers.  Long story short, Mr. Chatty took an arrow to the face.  Another guy came along shortly and had some dialog about a thief, but I didn't read it because I was frantically trying to close the dialog so I wouldn't get killed by the dragon that was still attacking me.

    Had the same thing happen with a shout. NPC guards will arrest you for using shouts in a town, and will turn you around in order to arrest you, so if you were in the process of casting a shout (not too far out given they are arresting you for exactly that) they take it in the face.

    Right now I'm trying to get NPCs in the same faction to stop telepathically informing each other of the PC's presence. Reminds me of the beta bug that was announced by the devs where chickens would rat you out to the guards. Not sure if they ever fixed the exploit where putting a bucket on an NPC's head would prevent them from seeing you steal.



  • @Brother Laz said:

    Reminds me of the beta bug that was announced by the devs where chickens would rat you out to the guards.


Log in to reply