(1) The NavMesh bug. You want to build a dungeon or a house? You are out of luck. You might be able to put your NavMesh into an .esm to pair with your .esp and have things work okay. Otherwise all the actors but you can be frozen to one spot and unable to move around.
(2) NavMeshing itself stinks. Oblivion pathgridding is much faster and easier, and actors use it quite well. The Interface for NavMeshing is somewhat like using Blender which is not the easiest program to learn. The forums are full of people having NavMesh issues like the one with the green bars/green triangles: having difficulty connecting the portals between cells. The system creates lots of edits that look sort of like mod dirt. Let's say you place a dungeon entrance in the center of an exterior cell. by the time you fix the NavMeshing, your chaste little dungeon entrance will possibly edit ten exterior cells! Your cell, plus the nine cells surrounding it.
(3) The facegen design flaw. You want to add some new NPCs to the game? You want to change the face on a vanilla Skyrim NPC? Forget about it! Your new face is going to be ugly because the skin color will be darker than the rest of the skin on the NPC and there will be a sharp neckline. The only workaround people currently have is to convert the .esp to an .esm, select the new or edited NPCs, and press CTRL + F4 to export facegen data. Now when you upload your mod, you will need to upload meshes and textures too, just because you wanted to add or change a face.
(4) The Papyrus scripting language stinks to work with. You want to make a quest mod? You want to have cool scripted events or items in your mod? Forget about it! Oblivion scripting language is a nice friendly C++ sort of language. Papyrus is a really bad Lua sort of thing. You spend half of your time setting up properties to attach to variables. This extends that. That extends the other. The extension extends the extension. You can't refer to anything in the game directly. You want to use Player in your script? Tough luck! For every script and result script you write that refers to Player, you will have to initialize the variable PlayerREF (type actor) and make sure that the property PlayerREF is set as the value for PlayerREF. And there are no Begin GameMode blocks! You are going to have to get real creative with triggers to try to make things happen in your scripts.
(5) External script files. The scripts are no longer contained in the .esp. This makes them hard to gather up when you are packaging a mod. The Steam Workshop auto-archive function is broken and will not package all the files you need. One thing to watch out for is vanilla Skyrim scripts you edit. The packager won't always see and gather those, even if it gathers the new scripts you wrote. External script files makes it difficult to package mods, difficult to install mods, and really difficult to remove mods you no longer want. It even makes it hard to update mods if the modder is switching over from the old-school loose files packaging to the more sophisticated .bsa packaging.
(6) Erratic unreliable game engine. You want to have custom dialog or quests in your mod? Good luck! There are numerous reports of new dialog failing to work. It works on the computer it was built on, and it works on most other computers, but there is a substantial number of other computers it will not work on. No pattern has been found to predict which computers these will be. A couple of explanations have been found for some of the issues, but the fixes do not work on all the problems. Voiced dialog that has been put into .fuz format rather than .wav format is usually, but not always, more reliable. Situations where there is little or no lag often, but not always, makes the dialog topics appear more reliably. Quest markers don't even appear reliably in custom quests. This could totally break some quests where there is not text describing where you need to go next. The cause of this bug and the way to fix it is not known.
(7) The .fuz files. If you have voiced dialog in your mod, you are supposed to put the combined .wav and .lip file into a .fuz file or the dialog may not work. You never had to do this in Oblvion. The .wav files worked just fine. Bethesda did not even provide an Unfuzer program. It was up to a talented programmer/modder to build one.
( 8 ) You can't merge mods. You want to merge your favorite mods to shrink your load order? Sorry. You want to work on a mod team where everyone makes an .esp and then they all get merged? Maybe someday. (Actually you can merge mods with the program TESVEdit which Bethesda did not provide and which a programmer/modder had to write. But it is not easy, and not automatic like TES4Gecko. It can take a long time and you have to be careful to not break the mod.)
(9) Horrible mod conflicts. There is no TES4Edit to automatically clean out identical-to-master records. All the mod cleaning has to be done manually, and if you are a modder, you probably have some idea of how badly the other modders besides yourself manually clean their mods. In Oblivion, mod dirt usually gives you ugly bugs. In Skyrim it often gives you CTDs. There have been reports that if two mods change the position of a single object, the game will crash. This did not happen in Oblivion.
(10) Worldspace generation software broken. You want to build a new worldspace? Sorry to disappoint you. Bethesda acknowledges that the software it provided the public for creating worldspaces does not work right.
Ten is a nice even number. I guess I will stop. I could probably go on and on to higher numbers.
Skyrim is just not a nice game to build mods for. It isn't fun. It is a lot of hard miserable work. Modding is supposed to be a fun hobby. A modder could suddenly discover that he or she is working really hard, making little progress, and not having fun.
Then in a moment of lucidity the modder suddenly may ask him or herself, "Is the game worth the candle?"
Edited by David Brasher, 14 May 2012 - 09:02 PM.