Mild spoiiers included.
Most of us agree that this game is a bit too fixed and static. Once you walk around a little bit, and especially if you complete the main quest line, there is very little left in the game world that is interesting or surprising. How do we fix this? I have some ideas, of course. As background I have a Master's Degree in AI from a large University and do have some experience with programming AI and emergent behavior.
1) Procedural vs static quests: Obviously, some main or major quests need many static elements. But why do all the smaller "side jobs" or "gig" quests need to be fixed? What if, every time a new game is started, the game takes some time to configure some fixed number of quests (say 100-200) throughout the city, and assigns most to fixers to dole out. Some others get tied to NPCs wandering around or to locations. These quests can be pretty formulaic ("save Bobby Newmark from Maelstrom gangers") to pretty convoluted ("Retrieve experimental cybermod X from NPC BIotechnica Scientist, and deliver it back to either Biotechnica or to the fixer that hired you, and whichever one you don't deliver too becomes pissed and later retaliates in some way), depending on the quality of the procedural generator. A combination of simple and complex would be ideal.
Additionally, the main and large static quests should include procedurally-generated elements. Maybe Johnny's true motivations can change on each play through, and his dialog and actions change accordingly. Maybe Saburo doesn't actually get murdered, but instead reconciles with Yorinobu, and they join forces to hunt down V and get the chip back. Maybe the chip doesn't have to get damaged, and Johnny wants to find a cloned body to get back into or something else you can help him with. There are lots of options. Does Hanako Arasaka plan to actually help V, or screw him/her over? Same for Alt? Johnny? Takemura? Make it different every time!
This makes the game infinitely replayable. It increases player enjoyment because no matter how many times they play, they will never know on a particular playthrough which combinations of characters are allies and which are truly evil enemies. Imagine walking down the street and some rando NPC walks up to you and says "Hey, I heard you might be able to help me. My brother has a contract with Militech, but they work him like a slave and they won't let him out of the contract. Will you help me get him out?" And next time through that quest doesn't even exist, but equally random and interesting quests do...
Does this seem too impossible? Not really. Instead of spending dev time hand-crafting every single quest and dialog line specific to it, you spend that time on making lots of potential quest locations, procedural AI to generate quests and debug game-breaking combinations, and record a lot of more generic dialog lines (with lots of variations!) you can tie to these generated quests (also done procedurally). Also you need procedures to generate appropriate quest rewards, but that's relatively easy.
2) Get the damn quest icons off the map: This goes with (1) above, but even in the current static world this needs to happen. Unless a quest has been given and accepted, it should not be shown on the map! There is this giant map, and CDPR discourages players from seeing 60% of it because there are no icons there. Same with merchants, make them discoverable (and move them around each play through)! Encourage, no FORCE players to explore Night City and find out where things are. THEN they should appear on the map. Random hints from NPC conversations like "Have you checked out the Boutique on Poplar Street? They have the best threads in the city!" would steer players to vendors AND encourage NPC interaction.
3) NPC AI needs to be procedural and different every time: What can we say...NPC AI sucks in this game, civilian and police alike. Once again, this behavior needs to be procedural. A subroutine that generates a model, clothing, reactions to various events (like being attacked or engaged in conversation), and potentially assigns a quest to them should be part of the system. All NPCs should be given characteristics like corrupt, cynical, hard working, naive, generous, needy, angry, mentally ill, etc that drive their behavior and dialog with the player.
These should all be set differently on each play though. Instead of the clearly randomly-generated NPCs that we encounter, the game should generate a couple of thousand NPCs and stick their characteristics in a game file. Whenever the game needs to populate an area, it just grabs the next NPC down in the file to use. The player can interact with them and they will always be different and unique, because literally they are never the same.
If the play through runs long enough to exhaust the generated characters, either pause the game and generate more, or recycle randomly. After all, even in a big city you see some of the same people over again. Ideally you'd generate some new ones and recycle some old ones. And if you have talked to them before that should be tagged as well as how the interaction went. How cool to strike up a conversation with a random character, talk a little about her family, and then many play hours later pass that same character elsewhere in the city and have her say "Oh hey V, good to see you again!" or if the interaction went badly hear her mutter under her breath "oh, that asshole again." Vendors too, make the guy selling noodles different every time and have different reactions to V.
4) Fix the loot system: The loot in this game is just bad. It's like the Loot Fairy just flew over the city and exploded like a pinata and randomly flung loot everywhere. Why are there just dozens of useful items laying around? There are hundreds of health boost airhypos laying about. If I found a needle on the side of the road marked "health boost" would I stick it in my arm? If I did, shouldn't there be some fairly high chance it would do something REALLY BAD to me? If I pick up the sunglasses I found next to a hobo, isn't he likely to scream "that's mine, you leave that alone!" and maybe even attack me? Why is there a box with a grenade in it sitting on an office desk?!? I get that this is a more brutal and dangerous reality than we live in, but c'mon.
The loot in this game feels like something in an old Quake game. Nothing is placed for reasons other than "hey, you might need this." For Christ's sake, there is a Legendary rifle just sitting on top of a well-known bar. Nobody in Night City should ever get a Legendary item without a major fight or quest, IMO. Please for the love of all that is holy, make loot locations make sense. 99% of stuff you just find on the street should be worthless or outright dangerous if you use it. That airhypo just poisoned you. That pistol you took off the ganger just blew up in your face. That armor vest just caught fire when you got shot, must be the cheap knock off Pakistani kevlar I heard about in the news. If you want good shit, go to a vendor and pay top dollar for it, or take it off legitimately dangerous foes, not the random ganger street trash.
Once again place this stuff where you'd legitimately expect to find it, not sprinkled everywhere like confetti, with no consequences to random use of random gear found in some random spot.
5) Physics: I have no experience in physics programming. But please but fix this. It's legit embarrassing.
Of course there are challenges in overhead with the above fixes. But most of the overhead can be shifted to happen each time the game starts as a new play through. At the end of character creation I would not mind a message saying "Generating a customized living Night City for this character" with a status bar and maybe some animated video intro to keep me from getting bored while I wait. Even if it took five minutes it would be worth it to have new quests, new NPCs, new twists to the main story, and a whole bunch of replayability.
These static systems have to go. When during Night City Wire the project lead said he had devs literally placing individual pieces of trash, I died a little inside as a person with an AI programming background. We have computers so that we can program them to do all these menial tasks for us. Work smarter not harder, CDPR!