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?

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.

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.

August 3, 2010

Too much RAM

Found this gem on the HoN forums. Made me laugh :)

August 2, 2010

Balance Friction in Multiplayer Games

Since (as you may or may not know), I’ve been playing competitive online video games for quite some time now – more than a decade, I have a MP theory I came up with while debating class homogenization on the SWToR forums. In reply to one of my posts, a community user posed a question:

My question to you Dvvx is:

Do you think in terms of balance, gameplay mechanics, loot tables and difficulty scaling, that it’s much easier to balance out an MMO with having classes that lean much more to a pure side rather than a hybrid side?

It’s important to understand what the poster means by both pure as well as hybrid, so I’ll do my best to give a Cliff Notes explanation.

Pure classes can be equated with the Trinty in this case. The Trinity, by definition is an RPS system: the rogue beats the cleric, the cleric beats the warrior, the warrior beats the rogue. Balance is inherently part of this system because by definition a cleric could never beat the rogue. Similarly, when playing Rock-Paper-Scissors, paper never beats scissors. As a real-life example, in RuneScape (a popular MMORPG) melee attacks are effective against ranged opponents, ranged attacks are effective against magic opponents and magic attacks are effective against melee opponents. RuneScape calls this the “Combat Triangle”. This system traditionally favors teamwork.

The hybrid system is what one may call Free-For-All. A game system where all players/units get the exact same set of abilities/skills/strengths/weaknesses. A perfect example is Chess. Both players start with the same 16 pieces that have exactly the same abilities. As far as online games go, Quake is a great example. A game where everyone has access to any gun, any power-up or any ability. This system traditionally favors individual skill.

But going back to the initial question, I think that both difficulty scaling as well as gameplay mechanics and loot tables all have balance as their common denominator. Essentially that’s what I decided to look at. What happens to balance as you go from a Rock-Paper-Scissors approach of the classes/units/players to a Free-For-All approach? The answer, I think, is a somewhat complicated one, but can be summarized by this graph:

Several relationships are instantly recongized: making a Chess-type of game, as well as an RPS-type of game is easy (from a balance perspective). As a matter of fact, most games are one or the other. Since PC games (and video games in general) are more advanced when compared to their deck-of-cards or board counterparts, they always tried to push theoretical boundaries.

Ergo, what we are left with is essentially an optimization curve (a parabola) that represents the difficulty of bringing balance to a game system (represented by the Y-axis), and the game type, where the negative values of the X-axis represent an RPS game and the positive extremes of the X-axis represent a fully homogenized game. The sweet spot is the apex where the two paradigms meet.

Imagine a game where all “classes” are viable against any other “class”, and yet every “class” feels unique and different and can fulfill a specific role. Starcraft(2), in my opinion, is one of these games that has almost perfected the art of bringing these two paradigms together. The races are different enough to feel very unique, but they are viable against one another. Although some remnants of the RPS system can be seen, most professional SC players would agree that RPS is not Starcraft’s paradigm. What do you think?

July 29, 2010

Review: Vanya on 42nd Street (1994)

This collaboration between Lois Malle, Andre Gregory, Wallace Shawn, and David Mamet (one of my favorites) is a visceral and relevant look at Chekhov’s Uncle Vanya. Filmed on-stage during rehearsals, the film bypasses sets, costumes and makeup, reducing Vanya to its bare essentials: loneliness, wasted lives, and unreciprocated love. Wallace Shawn gives an especially riveting performance as the loathsome uncle Vanya; a performance that makes Vanya truly deplorable – perhaps exactly what Chekhov intended.

Overall, “Vanya on 42nd Street” is a visceral performance that stirs the emotions rather then the mind. Clever cutting and intermissions leave much of the set design to the imagination. I felt like I was watching a play on TV. But in a very very good way.

Beauty should be pure. Of face, of dress, of the mind.
What attracts me? Beauty attracts me.