2013-Nov-26, Tuesday

dorchadas: (Green Sky)
This week was all about classes and objects and object-oriented programming.

Hmm. It's a good thing this class doesn't cover hardware or I'd be writing about master/slave systems.

Anyway, this week we programmed a graphical implementation of Blackjack. To my surprise, the graphical part was really easy--it was the logic of getting the cards to work that was hard and required some banging of my head against the wall. The way they suggested we did it involved three object classes: a Card class that handles the individual cards, including assigning values and suits to each of them and retrieving the proper image for drawing a single card to the GUI, all of which was implemented already in the program template we got; a Hand class that combines cards into a hand, deals with drawing new cards from the deck, and calculates the value of the hand for comparison, and a Deck class that assembled the proper 52 cards into a deck, figured out which card was on top and passed that card to each hand, and shuffled itself when starting a new game. Each class also had a method to report its contents which wasn't useful in the final program but was really, really helpful when I was trying to figure out what the hell was going wrong.

And oh, did things go wrong. Not with the graphical part--that was actually really easy to implement. But getting Hand and Deck to work was an adventure. First I couldn't get it to properly calculate the value of a hand, so it was a wildcard whether you won or lost. Then it was ignoring the ace special rules completely, so the classic blackjack hand was only worth 11. Then the Deck wasn't properly drawing cards, so I was pulling cards aren't that weren't on the top. Then when I fixed that and got both hands implemented, hitting worked, but standing caused an Index Out of Range error on an attempt to access a relative list element (blahblah[-1], which should get the last element in the list no matter how long the list is). Then I went and fiddled with something totally unrelated to fix the problem that after a single game the hands weren't cleared, so a new game would start with the hands from the previous game plus two new cards for each player. When I fixed that, all of a sudden the list index stopped returning errors because reasons, and despite extensive testing I couldn't get the index errors to show up again. Then I had a problem with calculating the score properly because sometimes I was doing it one way and sometimes another way, and sometimes the testing statement I printed showed the one way when it was actually using the other way, which is why you shouldn't rely entirely on print statements to debug your code. Then I extensively tested the program as an implementation in the console and made sure everything worked.

Then I implemented the GUI without problems. Crazy, right?
dorchadas: (Kirby sweatdrop)
I bought this when it first came out on Steam last year, but I left it alone because I have a ton of games sitting around and I had heard that it had been rushed near the end, meaning that a ton of planned content got cut, and wasn't that good after a certain point, a lot like Vampire: the Masquerade: Bloodlines. Then I learned about The Sith Lords Restored Content Mod, which was supposed to fix a lot of the problems and bugs that remained in the game. I had a lot of fun with the fan-patched V:TM:B, so I patched KotOR II up and played the game.

First thing I have to say is that, like Knights of the Old Republic, the reliance on D20 mechanics is a big downer for establishing any kind of Star Wars-like mood. The way d20 focuses on gear and gearing up is fun in a video game, true, but endless tinkering with your lightsaber to get an extra 1d6 Cold damage out of it isn't exactly what I expect Luke was doing during the time between The Empire Strikes Back and Return of the Jedi. Not to mention the way everyone wears facemasks, two armbands, has cybernetic implants jammed into them, has really bulky armor, etc., etc.

It also retains the utterly broken Jedi combat strategy from KotOR, namely, "Buy Force Wave and win forever." It doesn't take that many Force points--by the end of the game I could spam it literally forever--it affects an unlimited number of targets, it has a chance to stun anyone it knocks down, and it does damage even if people succeed on their saving throws. I even managed to win the final battle by running around with Force Speed on and repeatedly casting Force Wave. Not exactly a heroic duel that fits the Star Wars movies, but I haven't seen any game that managed to actually do lightsaber duels well, either pen and paper or computer. Either people hit each other repeatedly with lightsabers and somehow don't die (Star Wars d20) or the combatants run at each other, both draw iaijutsu-style, and one of them gets liquified (Star Wars d6, the Jedi Knight games).

On the other hand, there's a hilarious callback to d20 mechanics later when one of the character's explains the fluff reason why your character gets so powerful from running around and slaughtering everyone.

Knights of the Old Republic II starts out super-mysterious-like on an abandoned mining station, and in a different universe it would totally have gone survival horror and I would have loved it, but since it's Star Wars, it was just some crazy droids. This part actually almost put me off playing the game entirely as I ran back and forth alone through identical-looking orange and brown tunnels while droids randomly attacked me and a voice over the comlink told me what to do. Then after the Sith showed up and I managed to escape, I went to another planet where I ran through silver and blue identical-looking tunnels while clicking on people and hoping they had quests I could do. Basically, KotOR II has the problem a lot of modern games do where the first X hours are really kind of dull and railroaded and then the game opens up. When most of your Jedi's usage of the Force is for running faster so you can complete quests...

Once I got off Telos and could go wherever I wanted, though, the game got more interesting. Each planet is pretty self-contained, but even the theoretical ability to go wherever I want was a salve that made the railroaded portions easier to handle, though it helped that there weren't many. Except on Nar Shaddaa, where I was wandering around and doing what I wanted to and then all of a sudden it was all railroad all the time until the end, and then there were quests I was in the middle of that I suddenly couldn't do. Or Korriban, where there was barely anything to do at all.

Hmm...

The plot wasn't the most interesting part of this section, though--the real fun was the NPCs. Like Baldur's Gate II, they chat with each other, get into fights, question your decision, and you also have an "Influence Meter" with each of them that indicates how much they respect you and how much control you have over them. Get your influence meter high enough with some of them, and you can train them as Jedi, or upgrade others in other ways. Certain companions have certain tendancies toward either the Light Side or the Dark Side, but even there you can win them over to whatever alignment you choose. You just might have to go about it in a different manner. I do have to admit that at times it ended up more like I was gaming the system to get the companions to do what I wanted, because that's at least partially because I set out with a goal in mind instead of just going with the flow and acting a certain way and seeing how my character would have turned out. Running back and forth on Nar Shaddaa with Mira and Atton to Jedify them was extremely gamey, but I have to admit that d20 brings that out in me. Or maybe it's just the problem with a meter that can go up and down. Even though the Influence Meter is hidden from the player, I knew it was there, and that was enough for me to want to raise it as high as possible. I didn't get influence with all the characters, though, since that would have required a lot of switching characters while I was on planets, backtracking, and otherwise randomly messing with my party composition that I just didn't want to do.

As an example of where the Influence system leads, early on you meet a character called Handmaiden who's a member of a warrior order and is deputised by the Jedi who leads them to follow you and look after you (though apparently this openly happens if your character is male). Later on, you find an apprentice of one of the Sith waiting for you on board your ship when you return to it and fight her, and when you win, she submits to your leadership. Visas the former Sith apprentice and Handmaiden obviously do not like each other, and getting too much influence with one without raising influence with the other pisses that one off and leads to a falling out with her. In my case, I ended up raising Visas' influence up and when I next went onto the ship, Handmaiden freaked out about me hanging out with a former Sith apprentice and refused to talk to me anymore. Though I have to say that all this occurred because I used Visas for a single planet, so I really didn't have any warning that it was going to happen, and it's not like influence decays on its own. On the one hand, they could have done more to warn me it was going to happen, and on the other hand, people do get annoyed sometimes. So, it's kind of an encapsulation of the good and bad points.

And no review would be complete without talking about Kreia. She runs into you on the mining station and follows you throughout the game, and for most of the game she's a really odd character. She has a Force bond with you, where feelings and pain can pass through it, but she doesn't explain where it comes from. She has contempt for the Jedi, but claims she's not a Sith. If you act too altruistic, she points out that you're making people dependent on you by running around and solving all their problems for them, but she also disapproves if you act like a psychopath. She apparently knows you, but refuses to tell you from where. The Sith are hunting her as well, but she doesn't tell you why. And sometimes, in cutscenes, she performs actions which are really suspicious and hint that she has some other game that she's playing.

Here the major spoilers begin: Note that everything in this spoiler is a railroad. Once you start this path, forever will it dominate your destiny.

(Credit goes to [personal profile] schoolpsychnerd for coming up with that one.)

So after completing each of the four planets, you head back to Dantooine to meet with the Jedi council. When you get to the enclave, Kreia waits for you outside. Then the Council says that you're a walking Wound in the Force, that you did not regain your connection with the Force as you suspect but are instead some kind of necromancer drawing on the power of all the people who died at Malachor V (where your character fought the Mandalorians), and for the good of everyone, they have to cut you off from the Force. Then Kreia strolls in, insults them, kills them all, and leaves.

Now you have to head after the Sith who are attacking Telos, lead by Darth Nihilus, who is apparently some kind of planet-eating monster who uses the Force to devour the lifeforce of entire populations. Also, his flagship is a ruined ship with parts of its skeleton visible, and it's crewed by a bunch of mind-controlled troops with creepy grey skin, plus roughly a billion mooks. It feels a lot like Obsidian wanted to include an evil necromancer and his legions of undead and had to come up with some way to do so in the Star Wars universe, and this is what we got. But honestly, this part felt like there was some background I had missed. I knew that the main character was a general during the Mandalorian Wars, and had fought at Malachor V, but since I didn't go through it in-game and not that much is revealed, Darth Nihilus kind of comes out of nowhere. You see him sending Visus after you, and...that's about it.

So, you fight your way through a billion mooks, kill him, blow up his ship, and then you go down to the surface of Telos to fight that Jedi I mentioned earlier, who had actually turned to the Sith! And this is set up as some kind of revelation, except you knew almost nothing about her and only saw her for maybe ten minutes of gameplay, so she doesn't have enough characterization for anything to be shocking about her at all. There are a bunch of Sith holocrons in the room with her that might tell you what was going on, but they all talk in weird growling voices and are nearly impossible to understand, so there's nothing you can learn in that direction either. You just fight her, win, and then you hear that Kreia has gone to Malachor V and is waiting for you, so you head there and crash land on the planet. And now that you've played the game for hours, spent a ton of time building up your relationships with your companions, you get to do Malachor V alone!

This part of the game really feels unfinished. It keeps jumping back and forth between characters, you see cutscenes that imply things are happening or outright show things happening--like Handmaiden and Visas dueling--that never actually get any resolution, and it's actually a lot like the end of Bloodlines, where it just turns into an endless succession of corridors filled with faceless mooks who attack you on sight even through you see Kreia explicitly telling her lieutenant to escort you to her when you get there.

Of course, maybe it's because he decides that he's fighting you. The duel between the PC and Darth Sion was really good in the way that it was set up as a philosophical combat as well as a lightsaber duel, but the actual fight isn't that great because he magically heals between fights and you don't, so it's either running around spamming Force Wave, or healing yourself repeatedly in between strikes. See above for how lightsaber duels in games never turn out like the ones in the movies.

Then once he's defeated, you go further into the citadel and face Kreia and learn that the big secret is that the plot of Knights of the Old Republic II is the Eternal JRPG Plot. Kreia is sad because the world sucks, so she wants to kill G-dthe Force because the Force apparently manipulates people to its will, surrounds us, penetrates us, blah blah, and that's part of why she was following the main character around because of the whole Wound in the Force thing, and because the main character lost their connection to the Force deliberately, and she was interested in someone who willingly turned away from the Force and from its influence.

And...well, this is kind of ridiculous. KotOR II tries to be a deconstruction of Star Wars black and white morality, except that it does it by including a non-character who goes around eating planets and piloting an undead fleet and a final boss that has this big philosophical beef with the Force manipulating her and decides to prove it by manipulating everyone else to such a degree that I was cursing her sudden but inevitable betrayal. She talks a good game, but at the end of it all she's just your standard Sith villain. And the other villains include someone who literally isn't even a character--he has no lines, no motivations, and only exists to be the scary boogieman--and a guy who you fight maybe once, then he disappears for 20 hours, then he shows up again but you don't care anymore.

When you beat Kreia, she uses foresight to tell you what happens to some of the characters--but not all of them because that would take effort--and then you walk out of the room, and the game ends. No splash screens to tell you what happens, no hint of the fate of most of your party. You break a couple of them out of jail that they somehow ended up in without the game ever explaining how they got there, but your dialogue choices are 1) No, I must face Kreia alone and 2) No, I must face Kreia alone. I'm not even exaggerating here.


The whole ending is completely terrible even with the fix patch.


I wouldn't play it again. Even with the patch, KotOR II is far too obviously unfinished to be that interesting. The beginning is on rails, the middle just starts to be interesting, but the end makes it all fall apart. There are gigantic plot holes that seem intentional because what actual plot exists in the game is so vague. Every planet has parts that that make no sense. Korriban barely has a reason to exist. Nar Shaddaa throws you on the railroad with barely any warning. The overall plot makes no sense, the moment-to-moment gameplay is easily solved, and the parts of each planet that actually are kind of fun are overshadowed by the parts that aren't.

Knights of the Old Republic II is an okay half of a game, but I expect most people would rather play a full game instead of a blatantly unfinished one, especially since the half that's unfinished keeps bleeding into the finished half. If you want to play a flawed gem that has a ton of value that can still be extracted from it, play Vampire: the Masquerade: Bloodlines. Don't play this game.