January 3, 2012

Resolutions

I’m not very goal oriented. Maybe I should be. So here are some resolutions for 2012.

  • Continue getting straight A’s
  • Launch E-Sports Rankings and make it successful
  • Gain 10-20lb of muscle mass
  • Read at least 12 books
  • Do some stand-up
  • Release a game on the Android market
  • Update this blog daily
  • Moar?

Here’s hoping I’ll at least get through half of those!

January 1, 2012

2012!

Happy New Year. Lets all look forward to the impending apocalypse. :)

Justine: Life is only on Earth. And not for long.

December 23, 2011

A Tale of Two Games: ToR and WoW – Review!

(The following review was taken from this thread on the ToR forums.)

It was the best of times, it was the worst of times. For ToR, unfortunately, mostly the worst. This isn’t my first review – I reviewed the game during the beta several times, but I was shunned by incredulous and overzealous fans. After all, it was “just” a beta. Well here we are, at the dawn of release – no longer in the beta. So where does this game stand in the grand scheme of things? How does it compare to WoW, SWG, Rift, GW2? Lets find out.

Who am I? I’m some dude that led a top-US CS:S team for many years, was a part of two top-10 WoW guilds, and played in several WoW Arena Tournies (including the CGS invitational) and many many CS tournaments, including the CPL. I also had a stint working for an indie game developer several years ago. I like to think that I know what I’m talking about, and usually, I do.

Story

Story. Story. Story. We’ve heard it over and over again. Bioware has really hammered this home – much how Vincent Chase is Queens Boulevard, The Old Republic is story. And story is one of the few battles ToR wins. The voice over quality is top notch and primary class quests are mostly interesting and engaging. Some may be deterred by the incessant use of family drama as a plot device since it gets old pretty fast. With that said, don’t expect Chaucer, but the writing is sufficient.

Unfortunately, the side quests are problematic and suffer from trivial subject matters (“blah blah click some turrets”) or endless fetch questing (go to X, come back to Y, go to X again, now back to Y). This wouldn’t have been a problem 10 years ago, but 2012 is almost here. WoW has moved us past the trivialities of fetch questing and now we do cool stuff like lassoing dragons, bombing runs or mind-controlling giants. ToR pretends like there hasn’t been an entire generation of MMORPGs since KOTOR and suffers for it greatly. Bonus quests are an interesting touch, but more often than not, they insult the player. Here you are doing the most trivial of tasks (ex: clicking control panels – a Bioware favorite) and a bonus quest pops up that asks you to kill 30 of the same type of mob. And just like that, we’re all sent back to the late 90s. Bioware has a lot to learn from Jeff Kaplan.

On many levels, however, the VO is a technical achievement. Ordinarily, I’d have no problem with pouring so much money into something like voice over, but the gameplay significantly suffered from it. To me, that’s unforgivable.

Combat

The crux of a good MMORPG is solid combat. I expect combat to be fluid, responsive, and logical. ToR has a pretty good grasp of what it wants to do, but doesn’t quite reach the bar set by better MMOs. First of all, the “heroic” combat Bioware preached for years and years isn’t as heroic as they made it out to be. Animations are often choppy and blocking animations seem to happen at random times (as opposed to having weapons make contact). But lets face it, it’s not a big deal. What is a big deal, however, is the lack of an auto-attack.

This quizzical gameplay choice hurts more than it helps. It means that the gamer needs to manually press 1-1-1-1-1 (or right-click like a madman) to use the regular “white attack” ability and to generate resources that one may use (in the case of the Warrior-archetypes). Not only is this boring, but it literally provides zero gameplay improvement – what is the reasoning behind no auto-attack? Who knows.

Stealth and cover are very underwhelming. Cover, in particular, is nigh worthless in PvP. The conical radius, the spent GCD, the fact that 4 classes can easily close range, and the fact that almost every class has a knock-back should be very clear indicators that a mechanic like cover is a terrible, terrible idea.

Stealth, as mentioned, is very odd. On one hand, it tries to mimic what stealth is in WoW (a fundamental mechanic of classes like rogues and feral druids), while more often than not it becomes merely a trivial escape mechanism. It needs to be fundamentally reworked – stealth should be a game mechanic, not a novelty.

PvE and Leveling

Admittedly, a high point of the game are the instances (known as flashpoints). Black Talon, Athiss, Hammer Station, etc. are all fairly well-designed. Mechanics are tried and true: get out of the fire, interrupt heals, kite bad stuff. This is where ToR really does feel like “WoW in space” and it’s also arguably the best part of the game. As a matter of fact, the only reason I’m still playing is because I’m curious to see if the large-scale Operations will be as good as Flashpoints.

Leveling is fairly smooth, but the fact that the world is sharded can be distracting and does discourage grouping. Heroic 2+ man quests can be fun, but I found myself skipping them more often than not – the time invested doesn’t seem worth it. During hardcore leveling periods, I also found myself skipping all VO. I don’t care about your life story, I just want to get this quest out of the way. I feel somewhat guilty about it, but these are the scenarios that make me feel like side-quest VO is a swing and a miss – a very expensive miss.

PvP

PvP is a joke, there’s not much more to say. It’s an insult to any form of competitive activity. Huttball is one of the worst ideas I’ve ever seen implemented in an MMO: Warsong Gulch with a passable flag? Really? What irks me most is that someone actually made money coming up with such a terrible idea. Inconsistent traps, obnoxious commentators, bad layout, Huttball has it all. There are 15-year-olds that designed better Unreal Tournament maps. Sure, there may be some occasional mindless fun to be had with Huttball, but there’s no real value here.

Alderaan is significantly better, but doesn’t even compare to the wide variety of BGs present in MMOs like WoW or Rift. Ignoring WoW’s trailblazing here, Rift’s “Black Garden” was a particularly awesome innovation. World PvP is more or less nonexistent.

If ToR was Communist Russia, PvP would be human rights.

Companions

Companions were lauded by Bioware as being an evolutionary step as far as the genre is concerned. Unfortunately, they turned out to be glorified pets. They even have an ability pet bar just like in WoW! Some companions are interesting, some are boring. They do seem to break up the monotony of the often morose landscapes, but they are basically just pets.

Companion crafting is a great idea, however. Not having to worry about crafting stuff yourself is pretty neat. ToR sometimes surprises you with interesting and progressive innovations. Unfortunately, these moments are far and few in between.

DOA

Does The Old Republic have a chance? Not with what we see on day 1. No chance. Fanboys and fangirls may try to make a case for ToR, but the reality is that there is no case for ToR. There are many changes that need to make their way into ToR for it to be a competitor to 2nd tier MMOs, let alone giants like WoW.

UI mods have been requested since beta. A combat log has been requested since beta. There are absolutely no features that even begin to address the social element of the game: guild achievements, guild skill trees, etc. There’s a need for competitive PvP, LFG finders, etc, etc. These shouldn’t be post-release patches, this is 2012! These are basic elements of modern MMORPGs. I don’ think ToR is finished.

The only reason ToR won’t die in 6 months is “Bioware” and “Star Wars.” Will these two names carry the burden for a year? Two? I doubt it. But then again, I could be wrong. http://warhammeronline.com/ is still going. Don’t fool yourself though. It’s dead.

You may berate me now, but don’t forget this review 1 year down the line. ToR is dead. Long live Titan?

May 6, 2011

Lostmunity

Honestly, how can Community get any better? Josh Holloway guest starred this week and apart from the obvious awesomeness he brought to the show, the writers had to also pay some serious tribute to Lost.

In the words of Jeff Winger, “You’re just an average looking guy… with a big chin.”

“Son of a bitch!”

Absolutely epic. With the Office losing steam and Family Guy/The Cleveland show losing quality, it feels that Community is one of the few remaining shows that are both funny and unique. Props. Also, my birthday is in 2 days :)

March 18, 2011

Dove Body Mist = Heroin?

Saw a commercial on Hulu that reminded me of a scene from Requiem for a Dream. It’s eerie how similar they are (especially the pupil dilation — why would you even experience that when taking a shower?):

Dove:

Drugs:

March 16, 2011

I had a dream…

I literally had a dream about a web-based sketch image search a couple of days ago. I wondered whether or not I could write such a thing. Spoiler alert: I could. And here it is: skrch.dvt.name. I’ll make more posts about how it works and how I’ll make it better soon enough.

It basically uses histograms to analyze picture similarity. Right now, the histogram is three-dimensional (hue/saturation + y-coord) but for more accurate results I may have to make the histograms n-dimensional, where n >= 3. I’ve also been reading about SURF methods and template matching, but that may be overkill for comparing a simple sketch to a complex image (the sketch may be more representative than a template may like) so I’m not sure if that’s a good approach.

February 24, 2011

Mount Analogue

Its summit must be inaccessible, but its base accessible to human beings as nature made them. It must be unique and it must exist geographically. The door to the invisible must be visible.

February 15, 2011

The American Decade

A long time ago I was told, perhaps as we all were, to never begin an essay with a quotation. The suggestion is well-warranted – just as I wouldn’t want Bill Cosby opening for me at a comedy club, I certainly don’t want Twain or Hemingway or Poe opening for me on paper. With that said, I apprehensively reject the notion, at least when the quote is the catalyst for a great deal of self-reflection and introspection. In a 1996 New York Times article, Bharati Mukherjee (a professor at UC Berkeley and an Indian immigrant) remarked:

“I need to put roots down, to vote and make the difference that I can. The price that the immigrant willingly pays, and that the exile avoids, is the trauma of self-transformation” (Mukherjee, Two Ways to Belong in America).

Having recently become a United States citizen, her entire essay struck a chord but the above quotation accurately resonated with my experience. To be frank, I didn’t know why I was so moved – I felt as if I had been abruptly woken up but couldn’t find the alarm clock. After all, America is permeated by the positivist idea of the “metamorphosis”. Chicken Soup for the Soul is the American staple of a healthy self-help diet; we like to think that change is good, that losing weight is good, and that seeing a therapist is good, but I digress. My self-transformation began in late 1997 when the Titarenco family (I use the third person because I’m not even sure I still know who these people were) stepped off of a Boeing 747 into the uncomfortably warm evening air of Phoenix, Arizona. We had just arrived from Romania, an Eastern Bloc country that was devastated by communism. Most of my parents’ lives were spent in the oppressive clutch of a communist dictatorship – America wasn’t only a childhood dream or a political ideal, it was a real-life Utopia. We found ourselves in Eden and we were elated; every man woman and child seemed to be a perfect human prototype: an Adam or an Eve. So then why does Mukherjee describe the immigrant self-transformation as “traumatizing”? Better yet, why do I almost subconsciously agree? I couldn’t help but wonder what exactly changed between that puerile inception, the grueling decade that was to follow, and the oft too-cynical position I find myself in today. Read the rest of this entry »

December 31, 2010

2011, Max Weber, and Markov Chains

I’ve been quite lazy in updating this blog. I guess WoW has really taken its toll on my free time but once school starts back up, I’ll have to tone it down. In my sociology class this past semester (I have a love-hate relationship with sociology), we had to read some interesting essays by Max Weber. He coined the term “life chances“:

Weberian life chances can be seen as an expansion on some of Karl Marx’s ideas. Both Weber and Marx agreed that economic factors were important in determining one’s future, but Weber’s concepts of life chances are more complex; inspired by, but different from Marx’s views on social stratification and social class. Where for Marx the class status were the most important factor, and he correlated life chances with material wealth, Weber introduced other factors, such as social mobility and social equality. Other factors include those related to one socioeconomic status, such as gender, race, race and ethnicity.

While some of those factors, like age, race or gender, are random, Weber stressed the link between life chances and the non-random elements of the three-component theory of stratification – how social class, social status and political affiliation impact each individual’s life. In other words, individuals in certain groups have in common a specific causal component of their life chances: they are in similar situation, which tends to imply a similar outcome to their actions. Weber notes the importance of economic factors.How the power of those with property, compared to those without property, gives the former great advantages over the latter. Weber also noted that life chances are to certain extent subjective: what an individual thinks of one’s life chances will affect their actions, therefore if one feels that one can become or is a respected and valued member of society, then it is likely to become a reality and results in one being more successful and respected than somebody without this conviction.

Naturally, this interesting sociological idea immediately made me think of Markov chains and how one would mathematically model such a hypothesis. Having never attempted to implement a Markov chain programmatically before, here’s my first stab at it:

class Markov {
public:
	Markov(int _o) {
		this->order = _o;
		markov_chain.resize(this->order+1);
	}

	void Learn(ifstream &_i) {
		string word;
		while (_i >> word) {
			this->words.push_back(word);
		}
		for_each (words.begin(), words.end(), bind1st(mem_fun(&Markov::LinkChain), this));
	}

	void DumpStates(string _s) {
		int _o = _s.length();
		if (_o <= markov_chain.size() && markov_chain[_o].find(_s) != markov_chain[_o].end())
			for_each (markov_chain[_o].find(_s)->second.begin(), markov_chain[_o].find(_s)->second.end(), bind1st(mem_fun(&Markov::DumpChain), this));
	}

	string GetLink(string _s, int _o = 1) {
		int order = _o;
		string seed;
		if (order == 0 || order > this->order || order > _s.length()) {
			return "";
		} else {
			seed = _s.substr(_s.length() - order, order);
		} if (markov_chain[order].find(seed) != markov_chain[order].end() && !markov_chain[order].find(seed)->second.empty()) {
			random_shuffle(markov_chain[order].find(seed)->second.begin(), markov_chain[order].find(seed)->second.end());
			string s = markov_chain[order].find(seed)->second.back();
			return s;
		}
		return "";
	}

	~Markov() {

	}

private:
	// just for debugging
	void DumpChain(string _s) {
		cout << "dumping: " << _s << endl;
	}

	void LinkChain(string _s) {
		transform(_s.begin(), _s.end(), _s.begin(), ::tolower);
		for (int order = 1; order <= this->order; ++order) {
			for (int i = 0; i < _s.length(); i++) {
				// Create a new key if we need to
				if (markov_chain[order].find(_s.substr(i, order)) == markov_chain[order].end() && _s.substr(i, order).length() >= order) {
					markov_chain[order].insert(make_pair(_s.substr(i, order), vector<string>()));
				}

				// Link the next single state to key of order o
				if (_s.length() > (i + order) && _s.substr(i + order, 1).length() >= 1) {
					markov_chain[order].find(_s.substr(i, order))->second.push_back(_s.substr(i + order, 1));
				}
			}
		}
	}

	int order;
	vector <string> words;
	vector <map<string, vector<string>>> markov_chain;
};

The above implementation actually works with any order which is kind of neat; it also dumps the chain as a sort of unit test but the class could be significantly cleaned up. This was also my first encounter with bind1st(mem_fun(...)) which, as most would agree, is a complete nightmare. C++0x should fix some of these annoying idiosyncrasies when binding functions (or rather, function pointers).

However, as I was writing this C++ class several months back, I couldn’t help but think that Weber, and Marx, were perhaps partly wrong. It’s easy to forgo personal responsibility for ones life when one owes much to what they are to a socially deterministic model so easily put into an algorithm. Not only that, but I was looking at the problem from an admittedly personal perspective. My parents had incredibly poor life chances – even I had arguably poor life chances, and yet the current position along this “Markov chain” of life seems to be completely anomalous (at least statistically speaking). However, Weber has made the stipulation that life chances are largely subjective; saying that, however, seems to discredit the very idea of life chances and perhaps some aspects of social determinism.

I do appreciate the elegance of the idea of life chances and how eloquently it’s modeled – and the Markov brothers would perhaps agree. As far as 2011 goes, a new year brings new life chances, and I suppose the point I’m trying to make is that maybe another year is yet another link in the (Markov) chain, or another year is what we (or rather, you, dear reader) want to make of it. The programmer in me wants to believe the former, but the romantic in me wants to believe the latter. After all that, I really need a drink. Thank God it’s New Years.

December 6, 2010

Oops

If I have a blog that no one reads, I should probably update it for my imaginary fans. Here’s what’s been going down in the past 3 months:

  • I’m getting straight A’s. Yay.
  • I applied to four UCs: UCI, UCR, UCSB, and UCSD. My grades should be good enough by the end of Spring semester.
  • I made Pong with SFML.
  • I’m working on a Starfox64-type tunnel shooter in Ogre3D.
  • I decided to play Cataclysm. This is probably bad news bears (for a number of reasons).

And speaking of bad news bears, The Old Republic went from looking awesome to looking “meh”, to looking like absolute poop. Disappointing. I was just thinking the other day how awesome it must be to be a game designer. *fantasy*. Now I’m going to sleep eagerly awaiting finals week and all the anomie that comes with the holiday season. Did you know most suicides occur in December?

PS: Sociology is stupid. Brb, turning a correlation into a sociological theory.