Archive

Archive for February, 2010

Free Form Deformation

February 28th, 2010 Jerdak No comments

Free form deformation(FFD) is a fun little technique in animation allowing for region specific deformations.  You specify a series of control points around the surface of your object.  Each control point asserts a certain level of regional influence along the object.  That influence is directly related to the control point’s position in the grid and the number of contending points nearby.  (If that sounds convoluted just look at the link I have above.)


In this image we see the brain model is being pulled by a single control point. Notice how only a small part of the brain is modified. This is due to the other control points remaining in their original positions.

Computing FFD’s on the fly can be computationally intensive.   The most common FFD approach was developed by Sederberg and Parry in their paper: “Free-Form Deformation of Solid Geometric Model.” Basically you follow a pretty simple series of steps:

  1. Define a series of axes: S,T,U.  These don’t need to be orthogonal but in my example they are.  I also go one step further and align these axes with X,Y, and Z but scaled to the size of my object.
  2. Redefine your point P in terms of your S,T, and U axes and an origin.  The origin in my system is the minimum point on my mesh.
  3. Create a grid of control points.  The easiest way is to create a uniform series of points along S,T, and U.
  4. Solve the vector valued  trivariate bernstein polynomial shown in the Sederberg/Parry paper
  5. Draw new point

Code for my project can found here. SVN login instructions can found to your left in my page rollout. (Code will not be posted until 2/30/10 as this project has not been turned in yet.)

But let me point a few things out:

void tyrFreeFormDef::reParamVertices(vector<RectCoord> &param, vector3 &S,vector3 &T, vector3 &U){
	printf("  - Reparameterizing vertices\n");
 
	int nVtx = _ply.GetNumVertices();
	point3D_t *vtx = _ply.GetVertices();
 
	vector3 min = _ply.GetMin();
	vector3 p0 = min;
	vector3 max = _ply.GetMax();
 
	S = vector3(max.x - min.x,0.0,0.0);
	T = vector3(0.0,max.y - min.y,0.0);
	U = vector3(0.0,0.0,max.z - min.z);
 
 
	vector3 TcU = T.Cross(U);
	vector3 ScU = S.Cross(U);
	vector3 ScT = S.Cross(T);
 
	double TcUdS = TcU.Dot(S);
	double ScUdT = ScU.Dot(T);
	double ScTdU = ScT.Dot(U);
 
	for(int v = 0; v < nVtx; v++){
		vector3 diff = vtx[v].ToVector3() - p0;
 
		RectCoord tmp;
		tmp.s = TcU.Dot(diff/TcUdS);
		tmp.t = ScU.Dot(diff/ScUdT);
		tmp.u = ScT.Dot(diff/ScTdU);
		tmp.p = p0 + (tmp.s * S) + (tmp.t * T) + (tmp.u * U);
		tmp.p0 = p0;
 
		{	///Pre-calculate bernstein polynomial expansion.  It only needs to be done once per parameterization
			for(int i = 0; i <= 5; i++){
				for(int j = 0; j <= 5; j++){
 
					for(int k = 0; k <= 5; k++){
						tmp.bernPolyPack[n][k][2] = bern_poly(n,k,tmp.u);
					}
					tmp.bernPolyPack[m][j][1] = bern_poly(m,j,tmp.t);
				}
				tmp.bernPolyPack[l][i][0] = bern_poly(l,i,tmp.s);
			}
		}
		param.push_back(tmp);
		if(tmp.p.Dist(vtx[v].ToVector3()) > Math::EPSILON){
			printf("     - Warning, vtx[%d] does not match it's parameterization.\n",v);
		}
	}
	for(int i = 0; i <= 5; i++){
		for(int j = 0; j <= 5; j++){
			vector3 tK(0.0f,0.0f,0.0f);
			for(int k = 0; k <= 5; k++){
				controlPoints[i][j][k] = createControlPoint(min,i,j,k,S,T,U);
 
			}
		}
	}
}

This is my reparameterization function relating point P to an origin and distance along axes S/T/U. Notice the “pre-calculate bernstein polynomial…” section. Here each new parameterized point is also given a table of lookup bernstein polynomial values. At a cost in memory we save on recalculation later on. This becomes important if we’re trying to render our object in real-time.

double tyrFreeFormDef::binom_coeff4(int k){
	///Manually calculated binomial coefficients
	if(k==0||k==4)return 1.0f;
	else if(k==1||k==3)return 4.0f;
	else if(k==2)return 6.0f;
	else return 0.0f;
}	
double tyrFreeFormDef::bern_poly(int n, int v, double x){
	///bernstein polynomial expansion (currently only supports marker size of 4)
	return binom_coeff4(v) * pow(x,(double)v) *  pow((1.0f-x),(double)(n-v));
}

Bernstein polynomial expansion and binomial coefficient functions. Make note of the binomial coef. function. Before I implemented the bernstein poly. packing I was calculating binomial coef’s every frame, to speed up the process I wrote a simply function that assumes the total # of control points on each axis is 4. This function could easily be replaced with one that actually does a factorial expansion.

vector3 tyrFreeFormDef::getGlobalVertice(RectCoord &r,vector3 &S,vector3 &T,vector3 &U){
	double s = r.s;
	double t = r.t;
	double u = r.u;
 
	vector3 tS(0.0f,0.0f,0.0f);
	for(int i = 0; i <= l; i++){
 
		vector3 tM(0.0f,0.0f,0.0f);
		for(int j = 0; j <= m; j++){
 
			vector3 tK(0.0f,0.0f,0.0f);
			for(int k = 0; k <= n; k++){
				tK += r.bernPolyPack[n][k][2] * controlPoints[i][j][k];
			}
			tM += r.bernPolyPack[m][j][1] * tK;
		}
		tS += r.bernPolyPack[l][i][0] * tM;
	}
	return tS;
}

Last is the conversion function. This is where we apply our interpolations to the actual mesh. The return value is in global coordinate space. In other words the point coming out of this function is what you would display.

Categories: Uncategorized Tags:

Resurrected =vD=Ominae

February 23rd, 2010 Jerdak No comments

Update:
Just found some old gameplay footage from clanmates:

-Jump practice


-Random gameplay

I’m some what a gaming nerd, shocker right?

In 2004 there was a little known multiplayer expansion for Unreal 2 called XMP(Extended Multiplayer).  It was the first class based team FPS I had ever really played. Prior to this I had mainly been playing Unreal Tournament, Quake, and Tribes.  But none of those games ever forced the teamwork mechanic on the player.  XMP was different.  XMP had classes, each of which was good at a specific task.  On top of that you had 3 objectives every map: get artifacts, hold the generators, and maintain forward spawn points.

Generators supplied energy for turrets, shields, and mines.  If you reached zero energy, iirc, you would lose.  Artifacts would also win you the match if you collected all 4.   spawn points made sure your team was in the field faster.  Communication was key and making sure every was playing the right position.  Techs in the field, heavies on D, and scouts running artifacts.

For some reason I wasn’t half bad at taking and holding generators so I was almost always playing midfield as a tech.  On top of holding generators I was responsible for tracking down stray artifact carriers.  It’s not a position of glory by any means but in the last map of our tournament I remember 12m grumbling about how they’d had no power.  :)   You can see the complaints in their chat log below.

What follows below is a transcript I found on the Wayback website page.  It’s a full recounting of our win of the 2004 XMP Jolt Tournament.  We played in a 16 team bracket and ended up in the final match with 12m(12 monkies.)

My player was =vD=Ominae.  We were the best.  :)

Burning Raptors are funny to watch.  There is a “meat grinder” on the front that cuts up anything in its path.

[ Report ]


Five weeks ago nineteen clans and a dev team gathered into a new Jolt community to participate in the Jolt XMP Winter cup, the first of it’s kind for Legend Entertainment’s new multiplayer game Unreal 2:XMP and yesterday one walked away as the winner, the Jolt XMP Winter Cup Champions.

Clans vooDoo and 12 Monkeys first went through the preliminary knockouts vs Ho\\’ and Legend Ent with relative ease and continued progressing through the rounds like a pair of wrecking balls, destined to collide. Neither TEZC, DooZer, overCruel nor the International Assault Squad could do anything to stop them. Before either team could rest on their laurels, ‘so High can’t Lose’ and SEALs showed 12M and vD respectively that not everyone was a pushover; but although they proved themselves impressive, they found themselves losing out aswell and the final fixtures were set.

The coin toss decided that 12M’s map choice XMP-Garden would kick start the map, followed by vD’s Sirocco and then 12M’s tie map Lowlands. Things didn’t go completely as planned for either team…

XMP-Garden
When the match kicked off both teams put in a defense squad from the off which kept all of the artifacts safe for a period, letting both teams breathe and settle into the match. Living up to thier past history 12M (on blue) tried their hand at a steal first, getting away with the first capture of the game.
vD had first attempt troubles meeting a diamond style forcewall setup around the enemy node. vD laid down their tech def in a simpler layout with fences over the node room entrances, which seemed to work out better, letting the player defence know where the enemy was coming from.

With 12M’s setup noted, and the tech def clustered together =vD=Grasshopper and =vD=Auron had less problems the second time around, running circles around the artifact room while firing shock balls to destroy the defence. They didn’t get home with an artifact but the semi destroyed layout seemed to leave 12M with problems later on, with forcewalls around the node connecting with those over the teleporters. Some improvisation was tried but it wasn’t enough to stop vD on their third attempt. Grasshopper worked the teleporters across the map, feigning through them and back. [12M]Nez managed to clip his backup, Ominae with a Raptor turret but Grass didn’t stick around and teleported back; straight into Headwire’s sniper crosshairs.

vD stayed relentless and attacked in pairs, continually stealing and dropping the blue artifacts; mostly thanks to [12m]Loki as midfield Ranger, catching them in their tracks; but the pressure brought home the bacon and eventually vD evened back up the artis before Auron made it back home with another in a blazing Raptor.

Most of 12M took up the Ranger class and tried to penetrate vD’s defence but wEsRoX, Zaknafein and PRG kept a tight defence as Gunners, laying mines around the node and at the sniper nest teleporter (giving J@ckal a nasty surprise). Meanwhile on the other side of the map Grasshopper kept up his pied piper gig, trailing 12M and his cover Auron around the map and back again before ending the map with the last artifact. 12M did a good job keeping them at bay and the map ended with only twelve seconds left on the clock…

This is me defending the landlocked gen.  You can see I just lost the spawn (it’s red now because red team took the spawn) but you can also see I have a big ass turret staring at it.  :)

XMP-Sirocco
Sirocco played out as the quickest map with 12M on an all out attack. Gambit and Loki rested up for a while but they soon felt the wind in their hair and joined up in the attack at some points. vD were on blue and pulled up the Juggernaught for cover, which backfired when 12M hijacked it, distracting the defence to let Headwire steal the first artifact; making a safe Raptor getaway to cap.

Next up J@ckal fancied his chances for a steal only to meet PRG’s boomstick; Head tried again and lost out to a better placed Jugger while Nez was third time unlucky. Meanwhile Back at the Red home, Gambit’s tech and Loki’s sniper were keeping their node safe from attackers, freezing a quick peek from Auron in it’s tracks. Loki left for a forward role and soon Gambit got so lonely he took his own life. The tumbleweeds blew past the red team’s arti node as 12M went on full attack.

The defence returned for cover only to find wEsRoX and =vD=Ominae pilfering from their node. Ominae put up a fight while wEs fled with an arti, to be caught up by Gambit’s shotgun. Loki disposed of vD’s Raptor to prevent another quick attack as the rest of 12M took over the enemy base; but vD returned with a counter attack.

With vD encroaching on their base Headwire laid down some smoke over the node to cover his final capture only to blind himself and 12M from the surrounding danger. As the smoke cleared four of 12M lay wriggling on the node floor but luckily for them Gambit stepped in and made the last capture to tie the match.

XMP-Lowlands
12M started the map with two quick steals, leaving their field squad less in numbers and giving up the energy to vD who went straight for the generators. =vD=Xaero secured the Landlocked Gen with wEsRoX before taking back the Seaside gen with Zaknafein. Meanwhile Headwire and Nez hid behind the Red base in need of energy to capture the artifacts. Eventually Grasshopper found them but failed to take any back, and the artis moved upward to the main defense turret.

12M fought to get a gen but Grass, Xaero and Ominae kept a firm hold of them. Auron made sure vD still had an attack and with the aid of an island turret to destroy an attacking Juggernaught, managed to turn 12M’s artis blue. All while 12M were busy worrying about getting their node online. Despite the lack of energy 12M maintained an attacking stance and repeatedly grabbed the remaining artifacts. Headwire and J@ckal lucked out a few times as Zak and Ominae went on a retrieval mission. Grasshopper also found Loki trying his drained defence turret while holding an arti, getting it back home.

12M tried in vain to get a grip of one of the generators but with a four Ranger attack their midfielders were spread thin. They did have all of the artifacts so despite the generator problem 12M had the best cards, only they couldn’t play them. Headwire turned Spiderman and crept along the front base wall as vD came calling, showing he’d probably make a good TV license dodger.

The Monkeys finally got some energy and their risky game of cat and mouse almost paid off as they had all four artifacts in hand and the node was about to come online, giving opportunity to a spectacular win. However, things didn’t work out so well for them when vD focused on returning their harvested artis; PRG, Xaero and Grass ran a multiclass squad into the red base and returned two of their artifacts just in time. 12M kept the final two and evened back up but not before vD took the power back.

With the benefit of full team energy Xaero and Grasshopper put their Ranger clothes back on and slipped in and out of the enemy base while they were still feeling relieved. They returned home to the blue base just as Headwire left but Grasshopper[ed. note: This should be 'Auron'.  I should know, my tech. was too slow to catch their carrier and Auron ran past me in the nick of time.] didn’t forget which way he went, soon catching up to make Head drop the last artifact, returning it for the match win.

And that was that.  3 maps, 2 wins, 1 tie.  I wish I could get screenshots of the first 2 maps, I had top score on both.

After the match Jolt spoke to the teams to see how they felt about the match. First up are Jackal and Gambit from 12M…

L0cky: hey guys
^Jackal^: hey
[12M]Gambit: i blame it all on jackal
^Jackal^: LOL
[12M]Gambit: lol ;)
^Jackal^: the turning point was gambit running me over, until then we had won

L0cky: heh, well commisorations on the lose, but you did a good job getting to the finals
L0cky: were vD more or less what you had expected?
[12M]Gambit: yeh
^Jackal^: more IMO
^Jackal^: but mostly different from what we expected, a totally different style
[12M]Gambit: they had obviously thought out lowlands alot
[12M]Gambit: and it showed

L0cky: they said they practiced for 6 hours before the match, did you guys do something similiar?
* [12M]Gambit coughs
[12M]Gambit: well we all have families etc
^Jackal^: partly but not as a team, only on publics
[12M]Gambit: idd, our prewar warmup game fell through

L0cky: did you lay out a lot of tactics for the maps, work out on team coordination etc?
[12M]Gambit: idd, we all had clear positions etc
[12M]Gambit: ie defence attack
^Jackal^: yeah and they partly worked but a huge difference for us was their defence
[12M]Gambit: on garden
[12M]Gambit: ^^
^Jackal^: no team we have played has had as strong a defence in garden
[12M]Gambit: roger that
[12M]Gambit: and still they held power etc
[12M]Gambit: was impressive

L0cky: I noticed on sirocco you guys had moments of all out attack, and it worked! Was this part of the plan?
[12M]Gambit: yeah, once we had power down we could push to all out attack

L0cky: did you get lonely at the red node Gambit?
[12M]Gambit: lol
[12M]Gambit: well i had loki to talk to
[12M]Gambit: hes has a mighty fine ass btw
^Jackal^: no he had his turrets to keep him company
[12M]Gambit: lol

L0cky: lol, how do you think XMP holds up as a competitive game?

[12M]Gambit: my precious
[12M]Gambit: XMP
^Jackal^: XMP for me is the best game i have ever played on-line
[12M]Gambit: XMP IMO is one of the most team orientated games out there atm
^Jackal^: and hope the community grows for it to continue to be a challenge
[12M]Gambit: tbh it appears to piss on 2k4 in most respects
[12M]Gambit: graphically, team play, weapon balance, it’s all there
^Jackal^: 2k4 is an after game that you would play to wind down to after an intense game like we just played
[12M]Gambit: yeh, bit of a laugh

L0cky: the thing that stands out for me is that it’s not really possible for one player to win on his own
^Jackal^: idd
[12M]Gambit: but XMP is the thinking mans crumpet
^Jackal^: yeah, although it did feel as if i was carrying them LOL
^Jackal^: joke
[12M]Gambit: XMP = team game through and through

L0cky: well, too bad on the finals. are you guys happy to have gotten as far as you did?
[12M]Gambit: yeh, i personally am
^Jackal^: but the better team won on the day
[12M]Gambit: i was out of the online gaming scene for a bit.. so XMP was nice to come back to after a break
^Jackal^: i think we will learn from it and be even stronger
[12M]Gambit: idd jackal
[12M]Gambit: it seems to me that XMP is very map specific, in that u have to taylor tactics individualy for each map

L0cky: did XMP bring you back specifically?
[12M]Gambit: yes XMP got me back into online gaming as it were
[12M]Gambit: TacOps made me bitter with online gaming, too many cheats etc
[12M]Gambit: one nice thing about XMP is the lack of cheating
[12M]Gambit: a massive plus for me
^Jackal^: hopefully after this cup more people will try the game and help the community grow

[12M]Gambit: I want to say summat about the XMP master server thing
L0cky: about it being up and down?
[12M]Gambit: idd
[12M]Gambit: its gonna damage the community a lot until that’s sorted

^Jackal^: is this getting put on jolt website?
^Jackal^: if so can i get my picture taken with a couple of blondes from the daily star

L0cky: lol, well thx for participating guys, and ggs!
[12M]Gambit: thx for talk to me
L0cky: and you
[12M]Gambit: not many people talk to me
^Jackal^: cheers
[12M]Gambit: …
* L0cky hugs Gambit
^Jackal^: LOL
[12M]Gambit: lmao
L0cky: haha
[12M]Gambit: adios locky
^Jackal^: put that picture in instead of me and blondes, locky and gambit hugging LOL

Jolt spoke to the winners to find out how they felt about their win…

L0cky: hey guys :)
VD_Maxx: hey
VD_Maxx: whatta match huh

L0cky: congrats on winning, very exciting to watch!
vD_WulfMan: oh man
vD_Ominae: hahah. thanks.
vD_Ominae: That was intense.
vD_wEsRoX: ty it was a blast :)

L0cky: how does it feel to have beaten 12M and won? :)
vD_WulfMan: I’m still in shock myself
vD_WulfMan: all the matches were close and could have gone either way
vD_WulfMan: my heart is still pounding
vD_wEsRoX: your heart???
vD_wEsRoX: lol
vD_WulfMan: lol
vD_Ominae: lol
vD_WulfMan: hey I worked hard, I was typing my ass off in the main room ;)
vD_Zaknafein: We used a tactic on that last map that we only developed about 1 hour before

L0cky: yeh that last map, most of the time the win was a matter of fragging one person. everytime the carrier got fragged, they had just taken it again
vD_Zaknafein: Can’t score when you have no power to score with. Plus if they have 2 arts then that is two less people they really want to put on the field
vD_Ominae: Yeah L0cky. We were trying to press up on the gens.

L0cky: yeh I noticed. did you guys practice a lot before the game?
vD_WulfMan: we started practicing at 1:30 EST
vD_Ominae: Just a little.
vD_Ominae: :)
vD_Maxx: saturday for about 6 hours

L0cky: did you expect 12M to be a challenge?
vD_Zaknafein: Yes
vD_Ominae: yes
vD_Auron: Yeah
vD_Maxx: we were scared of them prolly the most

L0cky: what do you think of their performance?
vD_PRG: they were a great team
vD_Ominae: Their skill shows. They played well as a team, always in groups and with backup.
vD_PRG: we were really worried about the ping issue too
vD_Auron: They work very well as a team
vD_WulfMan: 12m has some awesome players, I had the chance to play with/against 5 of them on our server this week, and without comms, and without any teamchat, we all meshed together very well
vD_Zaknafein: Well, have them play us on a US server and we will see if they still hold up ;) … but seriously … they were the most organized team we have faced yet.
vD_Maxx: The intuitive teamwork was awsome

L0cky: heh I noticed grasshopper and auron teaming up on attack for Garden. you guys went in about 50 times before you finally got away with the last one
vD_wEsRoX: lol
vD_Ominae: :)
vD_Xaero: we travel in pairs
vD_Grasshopper: yea, their midfield was great
vD_Auron: lol yeah
vD_Maxx: Thats what they do…provde constant pressure
vD_Auron: their midfield was great they intercepted us everytime
vD_Grasshopper: kept killing us right in front of our base
vD_Xaero: haha yeah
vD_Ominae: Yeah. Our mid was trying so hard to get the gens and force them to concentrate on energy and not our carriers.
vD_Xaero: that was the most frustrating thing
vD_PRG: yah I kept sitting there in the base seeing a flashing arti.. then no flashing arti
vD_Xaero: haha
vD_Maxx: we wouldn;t have picked sirricco if we had know how well their midfield was
vD_wEsRoX: :)

L0cky: does grass practice with those teleporters all day? =0
vD_Zaknafein: Actually , yeah … when we arn’t practicing our jumps
vD_WulfMan: lol, there were alot of telefrags on both sides, more tahn I’ve ever seen in one match

L0cky: you guys were on voice comms?
vD_Maxx: Team Speak
vD_wEsRoX: rgr
vD_WulfMan: yes, we use teamspeak
vD_Ominae: yes
vD_Zaknafein: Team Speak 2.0
vD_Xaero: you guys use TS?
vD_Xaero: holy crap
vD_WulfMan: lmfao
vD_Xaero: i didnt know we used TS!

L0cky: lol, do you think it helps a lot in XMP? (dumb question)
vD_WulfMan: ummmm yes, just a little
vD_Zaknafein: It is almost a must
vD_PRG: LOl
vD_Ominae: hahaha. Yeah it helps.
vD_wEsRoX: yah a must have for this game
vD_PRG: it’s much more useful in XMP than any other game
vD_WulfMan: it can be a bit tough when the matches are intense and everyone is shouting something different, but that’s better than no communication
vD_Ominae: Without it I know that on mid I wouldn’t have been able ot run with Xaero so well on that first map.
vD_Xaero: actually, we practice together so much, I can pick out whos voice I need to hear in the middle of a shoutfest
vD_PRG: we all can xaero
vD_Xaero: on teamspeak that is
vD_PRG: :d

L0cky: how do you think XMP stands up as a competitive game?
vD_Zaknafein: Its the best team game in terms of team strategy out there in the FPS genre
vD_Grasshopper: xmp’s the best out right now
vD_WulfMan: XMP is by far the best and most engaging game I’ve ever played, it requires total teamwork, no one person can do it alone
vD_Ominae: XMP is phenominal for competition. Especially cause it combines holding power AND getting artifacts.
vD_Grasshopper: just wish it had support
vD_Ominae: It’s kinda like domination and ctf.
vD_WulfMan: roger that hopper
vD_wEsRoX: yes me too
vD_Xaero: i know grassy :(
vD_Maxx: We love it..and will play it as long as somebody is willing to play against us
vD_Xaero: amen maxx
vD_Zaknafein: Atari’s lack of support upset a lot of us.
vD_wEsRoX: rgr that maxx
vD_Ominae: But hey on the plus side, if XMP goes down we go down as undisputed champs. :)
vD_PRG: too bad more clans don’t play it, it’s definitely the best team FPS out
vD_PRG: it seems designed for clan matches

L0cky: well congrats on this win guys, you’ll be back for the league I trust
vD_Xaero: you cant keep us away

[ REPORT END ]

I’d like to thank my team as well:

  • Zaknafein
  • Auron
  • Grasshopper
  • Xaero
  • Wesrox
  • PRG
  • Maxx
  • Wulfman
  • Badau
  • PoD
  • Ravage
  • Xixax (later named Omni… it was confusing hearing Ominae and Omni on comms)
  • Silverbud (Our fearless leader who disappeared before the first tournament.)


Categories: Uncategorized Tags:

Redirects

February 23rd, 2010 Jerdak No comments

If you were intending to visit my root site(www.daksystems.net) you might notice you got redirected to my blog. I’ve pulled my main page down but it can still be accessed directly if you want. Eventually I’m just going to dump my front page.

Secondly I’ve reinstated my .htaccess file to disable hotlinking. Apparently quite a few folks wanted free bandwidth.

Categories: Uncategorized Tags: , , , ,

Deferred Payment DRM

February 22nd, 2010 Jerdak No comments

In “honor” of Ubisoft’s highly questionable/intrusive DRM system I’d like to propose a new payment model. I want payments made as micro-transactions. Every time you take a step, in-game, Ubisoft gets a small piece of their $60 dollar price tag. When their obnoxious system resets you to a previous location because your internet connection drops, Ubisoft returns that portion of your payment plus an additional annoyance tax not to exceed the total amount of the game..

When did we become so complacent how companies treat us as consumers? Sadly all I hear on the forums are calls of “pirate this game,” as if that is the solution. If you want to legitimately buy this game and then grab a pirated copy so you can play it whenever then great. But arguing that you are stealing it for the greater good is just dumb.

Categories: Uncategorized Tags:

Poets of the Fall

February 7th, 2010 Jerdak No comments

I’ve been a huge PotF fan since I first heard their “Late Goodbye” song at the end of Max Payne 2. I usually don’t gush over songs but something about Late Goodbye clicked. It’s one of the few songs with lyrics I felt really fit the mood of the game. More often then not my immersion is broken when I hear some power ballad playing in the background. *cough* Prince of Persia *cough* (I can’t remember if the link I provided is the original trailer but there is definitely an official PoP: Warrior Within trailer featuring GodSmack.)

This next song is one from their upcoming album. From the sounds of the video this copy was ripped from Finnish radio.

Categories: Uncategorized Tags: