Posted on October 07, 2007 at 02:37
Hmmm been ages since I produced a blog….. missed me? Yea I miss me too. You also may have noticed that I crumbled to the pressures of society and put a tag at the beginning of my title.
Now that I've been around the GMC for a while now I’m beginning to understand why many experienced users don’t visit regularly. It seems to follow a cycle where nobody learns from what has already been done and redone….. the same crappy example using the same already superseded technique. The simple fact is ignorant people are easily fooled.... its one of the mainstays of game programming in general. You paint a pretty picture, and bam - people believe it…. while you chuckle under your breath.
As a precursory experiment I decided to see what would happen if I simply modified the textures on my bump mapping example to be more bumpy, bamm 15 more replies. Its the nigh on the EXACT SAME example yet simply artificially exaggerating the effect made people think WOW.
If I can be bothered I would really like to demonstrate how easily the GMC can be fooled, I’ld bring together all my cheating wisdom and release an exe with the following advanced features:
• Only updating the scene ~60 times per second but display the game fps, I’m pretty sure this will also work with FRAPS, nobody would notice…. Yea its been done before but its just so effective.
• Render all effects at a lower resolution than the screen, 99% of people probably wouldn’t notice and really helps for fill-rate dependant lower end systems.
• Use ultra high quality sprites, ripped from where ever…. Probably from the Filter forge site. Very distracting, most people associate the general prettiness of the scene with that of the effect.
• Pre-render as much as possible. This would be especially funny with a huge kernel blur, wow that blurs fast…. XD. As long as I don’t start impacting upon the GFX memory limit or the bandwidth (unlikely) it’ll be fine.
• Create a singular static environment where the effects happen to work. Like I’ve got a realistic soft shadow (non blur based) example, but it only works with boxes and when the lights/shadow casters are at certain positions.
• Whatever else I can think of, or you guys can suggest…
I would then state that after I reach 100 (or something) replies I would release the source. Upon reaching this I would change the topic to GOT YOU FUCKERS and release the source…. Damn maybe I shouldn’t post this blog, I’m beginning to think I might actually do this.
This brings up another one of my little pet hates, The concept of releasing "demo" effects, is entirely flawed when you release an exe. Nobody learns anything, your simply displaying a pretty picture. Its like the ultimate convergence of ignorance and stupidity.
In many ways I think we need another GearGOD from his badass days.... to let people know that nothing is really as spectacular/new as they think it is. Or even better, Maybe I should sacrifice to the greater good of the GMC and become a condescending prick…. In fact, I’m already half way there.
Yes I’m an idealist, so shoot me…. I probably wont shoot back because I’m also a nihilistic left wing atheistic hippy.
LIFE…. or lack of:
Waiting for my GP2X-F200 to turn up. Should be fun: open source development, good emulation (MAME, Snes, NeoGeo, GBA, etc), Good ports/interpreters (Quake, Descent, Day of the Tentacle, Sam and Max).... and only cost me $200AU.
LIFE, Pixel Art & GMFI
Posted on June 19, 2007 at 01:37
Its my 1st attempt at pixeling. What do you reckon?.... Its the avatar of the player in my upcoming game "Tribal". Steal it and witness my wraith noobling.
As i guess some of you already know, i recently released GMFI
in the dll forum on the GMC. Its a wrapper of about 60 functions of the awesome opensource FreeImage Dll.... FreeImage can convert between 28 different image formats, and also do some snazzy pixel manipulation stuff (contrast,channel swapping,etc).... should be useful in games aswell as GM paint programs.
I made it because i've decided to include Perpixel bumpmapping (see previous blog) in my game and, inorder to save space, i needed a way of extracting the 5 neccessary greyscale bumpmaps from the usual single normal map. Its not practical to do this in GM because the greyscaling method is based of the hue of the image whereas i need it to work linearly.... ie i need: color = (r+g+b)/3, the hue algorithm is way more complex.
At the moment im writing a function interpretter for it.... so you can write a simple pixel shader, have it compiled, then let it loose on images. Should be way faster than doing it through GM.... although it is truly a bitch ironing out the bugs and making the "language" linient enough. User friendliness... HA, screw that. Yea, who would have thought, im a programmer at heart.
Just finished my last exam for the semester, so i've got a month of procrastination ahead of me. The exams were pretty easy.... except for Physics where they throw 6 really obsure problems at you and you have 3 hours to solve them. Apparently, last year, 6 out of about 200 people passed the Physics exam.... obviously they have to scale people back up, but still it was a complete bitch.
Been toying with the concept of having a randomly generated world, especially since im way better programmer than i am level designer. Would probably be alot of work, but still way cool if it worked.
Almost forgot, here's the kind of noob i like (the ass kissing variety):
your lighting engines are amazing,
Wich college did you study computing? Your work looks similar to some freinds of mine at UCLA, im thinking more along the lines of UNYC or VTECH? Any reccomendations? Id love to get into the industry, I presume your a game deesigner doing this **** in your spare time? any advice would be much appreciated dude!
I also find it funny that he just assumed i came from America, you know its not like 90% of humans arent American.... out wait yes it is.
GM Per-Pixel Bumpmapping
Posted on May 03, 2007 at 22:48
Yea i did it, and pretty fast too.... You can check out the GMC topic (and get the source) here:
It basically works by spliting the Dot3 blendmode into 3 seperate multiplies & add passes, although theres alot more to it than that. And yes this is true perpixel bumpmapping, just the same as you'll see in modern games, i really cant find any flaws in it. Using some wizardry i managed to get it to work without additional surfaces and only 2 additional sprite renders. I should really thank OpticalLiam
for getting me interested in GM lighting again.
In other new, my fancies have wandered and i've begun making the shift from GM to C++. To ease the transition i've started using Ogre3d and inspired by Toon-Master
i've begun making a GM framework. Im in limbo whether i should finish Tribal
before i move on.... what do you guys think?
What's with this blog randomly being removed from the front page....
Im an Atheist.... + Good "Tribal" pic
Posted on April 11, 2007 at 00:35
Rant: the passage below is purely my opinion, feel free to disagree in the comments....
Yep you heard right, im one of those godless people bent on destroying the human race.
All jokes aside, I really cant understand what the big deal/social taboo is about Atheism. From my experience, Its very rare you come across someone who will openly call themselves an atheist, even in fairly unreligious countries like Australia. Its not like I wish harm upon anybody, or harbour hatred of other religious beliefs.... actually all i really hold true is the thought that, even if there is some form of supernatural force, what's the chances we know exactly who they are? Still i do not condemn the ideals, virtues and holy relics upheld by specific religions, i just treat them from a scholarly perspective.... to me, they are artifacts designed to teach from what was learnt in the past, not words from the gods themselves.
One effect the declining numbers of "church going" people in western countries have caused, is that the extreme faithfuls now have greater power over their particular sect. This has lead to greater animosity between paricular religions, and increased extreme acts of faith.
I remember in high school a teacher once telling me you've got to really smart and sure of yourself to be an atheist.... I replied "Probably less sure of yourself than to explicitly follow a single religion". What makes one religion more probable than another? Especially since they are generally based on supernatural occurrances and beings, so we cannot use past "natural" experiences as a yard stick.
Just got off uni (which is really cool, by the way) for 2 weeks break, but i've still got 2 assignments which sucks, especially since one is a group assignment AKA one person (me) ends up doing all the work. Just discovered that my Aunty converted to Mormon-ism which finally tipped me over the edge and made me write the rant.
Done a little work on Tribal, mainly makes sprites and backgrounds so i can develope a consistent artistic style. Just discovered why i never made high res games in the past.... animation. Making the textures is fairly easy but animating it is a real bitch.... so ive developed a simple skeleton based system (single object though) for the humans.
Also made it so you can change the lighting quality on the fly.... which is having a wierd build up of video memory usage which i cant quite pin down (maybe another bug to add to the tally). Implemented a super secret smoothing techniques and a blur to the lighting so scaled surfaces dont look as bad. The super secret part refers to drawing them at 0.5,0.5 pixels instead of 0,0 because if you have linear interpolation on it will do a hardware accelerated 2x2 box blur.... neat.
Also moved back to GM6.... I know yoyo blogs are banned but i gotta say GM7 is really shitting me.
Heres a few good quality picture of tribal with new, more consistent sprites and showing what difference changing the light quality has:
<a href="http://img243.imageshack.us/my.php?image=tribal02007041113375314cf5.jpg" target="_blank"><img src="http://img243.imageshack.us/img243/952/tribal02007041113375314cf5.th.jpg" border="0" /></a><a href="http://img149.imageshack.us/my.php?image=tribal02007041113375871wa2.jpg" target="_blank"><img src="http://img149.imageshack.us/img149/521/tribal02007041113375871wa2.th.jpg" border="0" /></a><a href="http://img149.imageshack.us/my.php?image=tribal02007041113380301ry9.jpg" target="_blank"><img src="http://img149.imageshack.us/img149/6259/tribal02007041113380301ry9.th.jpg" border="0"/></a>
New Game: Tribal & Pics
Posted on April 07, 2007 at 00:21
's recent troubles and his new found social life, it would appear Kill Catalyst
is dead or at least postponed. Although i wasnt really surprised.... i seemed to be that person who says very little (on the forums) but ends up coding everything.... XD. Anyway so now im left with all these ideas and creations.... and no game.
So I've decided to have a decent stab at making my own game based entirely on all the TDS work (alot!) i've done in the past. Heres the creations i've finished at some point and now intend on incorporating:
(duh): Heavily modified version that deals with view scaling and view_angle without increased surface size. Might also use the radiosity stuff we were working on.
: A dll (C++) i wrote which uses lots of mathematical approximations, to take into accounts shadows and etc, to scan the light luminance at any position in the room. Quite impressive actually and (Ofcourse) hugely faster than retrieving pixels from the buffer/s. Will be used for the AI.
- A* DLL
: A dll (C++) i wrote using the A* algorithm to find the shortest route between nodes. Its much faster than the GM grid based A* and will be easily modified to work with dynamic weightings for bot AI.
- Collision System DLL
: Another dll (C++) which uses Seperating axis theorem to determine collisions between complex polygons and the optimal projection to exit collision. Also includes a fast Bounding Box collision line function which returns the x/y of the collision (much faster than using EricDB's).
Now you've know the basic engines ill incorporate heres some additional games features:
- Dynamic view:
Scaling (based on action, or set to static) & rotating (based on mouse postition).... makes the room feel much more dynamic and less blocky.
- Interesting control mechanism:
WSAD with mouse, but the view_angle changes based on the relative angle from the player to the mouse and vertical.
On a faraway planet the decendants of soldiers cut off from there homeland, have devolved into a tribal based society... unaware that the war still rages.
You play as a 'Theif'-like character (AKA bow & arrow) but with a few technological twists. Stealth is paramount. Enemies use node based AI (im not just focussing on GFX) to track and hunt you down. You have make use of the environment to turn the scales.
- Engine scalability:
You can set the resolution without changing the moniter's to as low as 320x240 and make L3S scale its surfaces (HUGE help) & turn off advanced effects. I've had a computer with 32mb of video ram and a 1.2GHZ processor play this at 30 fps.... its no way near as pretty (although i use a bit of cheap motion blur to make it smooth) but hey some people are willing to compromise.
Theres more but i cant be bothered.... and im pretty sure im rambling by now.
And heres a few pics of what i've done sofar (sorry about the shitty jpgs but im on dialup):
And heres a bigger pic for you to orgasm over: Tribal
Alpha Bug.... Actually Useful?
Posted on February 19, 2007 at 23:45
Thats right boys/girls (and inbetweens.... dont want to descriminate now), Pheonix101
on GMC) has returned.... Although im willing to bet OpticalLiam
is the only one who noticed my absence.
Ill get the boring stuff over first.... aka my life. This is my 2nd day at University (Australian National University) studying Bachelor of Engineering/Bachelor of Science and my lectures are completely packed.... its probably got something to do with the 80/75 % entrance score (i got 97%).... so it'll probably start to thin out once they realise building shit actually requires maths.
Now to some slightly more interesting stuff (to me anyway.... i doubt most of you will care).
Today i was bored so i decided to see it i could modify L2S to use only 2 surfaces (it usually requires 3 full screen surfaces) whilst still potentially (i didnt bother with a few of them because i know they'll work) maintaining all its features.... z ordered shadows/overlays especially. This may sound pretty easy.... but it took me a good 2 hours to complete.... and im not incredibly stupid (nor smart i may add).
Anyway, The basic theory revolves around presuming that the shadow buffer requires only one colour channel. If we had access to DirectX we could simply use an 8bit greyscale surface.... but alas GM could not possibly be that easy. I discovered the trick was to render shadows to the light buffers alpha channel in conjunction with GMs alpha bug.... then mulitplying the light texture with the alpha channel.
At this point its all pretty straight forward, the real problem occurs when you want to render overlays in proper z order (meaning shadows cast with higher z's go over overlays of lower z). After plenty of screwing around i managed it but at the cost of having to redraw the light sprite and the overlay sprite.
This method is slightly slower in terms of fill rate.... but if you need a game to work on limited spec computers (less than 32mb video memory anyway) it becomes more practical. Also realise that the download is not an engine, just an example.
PS: The white numbers above the shadow casters are their z values.
The HDR conspiracy
Posted on November 30, 2006 at 05:26
HDR seems to be the word of the moment (or acronym as the case may be)..... damn near every new game i see gushes with the magical HDR insignia. Yet, as with many fads, i have often discovered that many people really have no clue what it is. For this reason I seek to clear the air a bit.... and it also saves me having to explain or clarify it to every Expert
proponing there next GM HDR product.
I should note that this is purely my own opinion, much of what is present here is quite debatable (and i would never claim to be well versed on the subject).... so feel free to argue or completely disagree. In fact if you agree with everything your only sucking up XD.
+ The Technical:
The visible spectrum of light is quite extensive but our eyes are limited to seeing a small portion of it at any one time. The way our eyes manage to see this range is by focussing on only a small bit of the spectrum at any one time. For instance if light extended from 1-100 our eyes might only be seeing 1-10 or 50-60 at any one time.
Yea thats great but what does this mean for games?.... Well if you focussed on something bright then moved into a dark hallway your eyes would take some time to adjust, this is basically all that HDR is trying to replicate. Realistically it only occurs when you have something of huge intensity (ie the sun) which our eyes cant adapt to, or an intenisty shift occurs.
The point is that this extra range is still noticeable by the human eye, either as an extremely bright white light which consumes any obstructions or an equally dark area where you cant make anything out.
+ The usual render process:
1. Render HDR lighting to a floating point surface and apply to scene.
2. Determine the average brightness of the scene.
3. Use this value to decide on the range at which the entity's eyes are currently adjusted to. You usually take into account the previous value to make it shift smoothly.
4. Any thing brighter than this range is then usually bloomed (blur + add.... or what ever tickles your fancy). PS: bloom is not specific to HDR.
5. Clip the scene to bottom and upper boundaries of your range. Basically its reduced down to a 8 bit LDR (low dynamic range) image, since our moniters can only output a certain contrast range and the viewer's eyes will only notice a limited range anyway.
+ GM & HDR:
Quite simply.... real HDR isnt going to happen in GM6.1. At least not until we get access to floating point surfaces. These are surfaces which are not limited to the 8 bit int 0 - 255 range, instead they can be upwards of 64 bit aka the same (cough theoretical cough) precision as GMs variables. This precision allows us to truely represent light which extends further than we can focus on.
There are however some very dodgy ways of faking it. One involves using multiple surfaces with each representing a small bit of the range. I have not seen this method used, and its pretty much guranteed to be too slow in GM. There are huge practical and theoretical problems using this method.
Another is to simply using a contrasting blend mode (aka modulate 2x) like i did in L3S. This method unfortunately works at the cost of precision, so a 2x range has a 0.5x precision.
Another problem is determining the average luminance of the scene, doing 800x600 getpixel()'s just aint gonna happen. Although using some scaling and linear intepolation is a good way of approximating either way at some stage we'll need to use a getpixel().
Make your own damn conclusion this is already too long. XD. But i will just reiterate that technically HDR is either impossible of impractical in GM.... Now i command thought to stop spinning your HDR riddles.
Cheers.... wow i think thats the longest yet, and there was more but that will have to wait till next time.
PS: THIS IS NOT HDR:
More Prettiful Than GearGOD's....
Posted on November 04, 2006 at 21:18
unvieled to you yesterday, the experimental project i was working on was global illumination. Since i've never seen it done in a 2d environment, and even commercial companies have only just started implementing it, it took a little while to get right (and it still isnt perfect). Anyway, heres some prettier pictures, since GG's ones were from an earlier build:
Just recently i got one of the strangest PMs, it was basically the GMC life story (like when he joined, why he joined, his GM interests and aspirations) in chronological order of this guy named Neemesis
who want to develope some contact with me....
Removed, its too big and not particularly interesting. Post if you wanna see it.
In other news, i've been working my arse off all weekend to get two assignments down for Chem and Physics. Im really starting to dislike my Physics teacher because of his habit of giving the hugest assignments ever, current word count 3500 words. Basically he gave us 3 articles by physicists explianing aspects of modern Physics, ie Quantum Electro-dynamics, Wave Theory,etc and we have to write amongst other things a summary of each one.... geez Its like English all over again.
Whats with all the tags people put in their blog title now? Are people becoming too lazy to hold there mouse over the blog....
Posted on October 27, 2006 at 22:08
<U><b>RANT:</U> <i>Noob v2</i></b>
It would seem that <b>Topf</b> Area's is back with a vengence. From what i can see all he has removed <b>GearGOD</b>'s Font, but he's still claiming the textured path (+all the other shit) as his own. Also it seems that a mods gone through and removed all the posts regarding topf's obvious misuse of others examples.... what were the mods thinking? Sure give him another chance, hey he's just a poor noob.... lets leave only the good comments. I really cant see how any of these comments were breaking the rules, none of them were IMO overly inflammatory. I dont really blame the mods, it must be hard dealing with noobs.
Now , no fucking surprise, he's been caught out again, this time by <b>Indecomm4000</b>. <A HREF='http://forums.gamemaker.nl/index.php?showtopic=244877&st=50'> <b>Link</b></A>. When will this guy learn that simply assimilating others examples/idea's into a crappier whole isnt achieving anything..... geez he's also trying to rip my z-axis shadow casting algorithms.... haha i guess this is why i made my L3S code so unreadable.
To put it bluntly, im a lazy bastard. I've done near nothing on my game since i last blogged, except take these pics:
<a href="http://img208.imageshack.us/my.php?image=bot23pp5.jpg" target="_blank"><img src="http://img208.imageshack.us/img208/4106/bot23pp5.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us"
/></a><a href="http://img208.imageshack.us/my.php?image=bot24zh9.jpg" target="_blank"><img src="http://img208.imageshack.us/img208/2830/bot24zh9.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us"
You may notice the really crappy jpeg conversion and the absence of the HUD, i've decided that HUD was shitzen and just got in the way of the action. Basically at the moment im just looking forward to modifying L3S for kill Catalyst.... plus developing a few minor systems.
PS: Damn a mods removed my warn. XD
The Pheonix101 opinion
Posted on October 20, 2006 at 04:09
I've never really regarded the GMC on the whole as a bad community.... and i still dont, but here is one point which, although pretty thoroughly understood amongst this community, still worthy of discussion.
Noobs (Big surprise....) Im not talking of those appreciative albeit inexperienced GM users, more the actively annoying people who inbetween bumping their own topics, insist on producing crappy productions which bring nothing new to GM yet, for some reason unfathomable to my primitive mind, are heralded as gods amongst slightly noobier people. When i heard other 64D users speak of the noobs, i could never really relate since i had never been effected enough by one to notice.
Im not afraid to name names, so what really sparked this uprising of teenage angst was <b>Tofp</b> and his continuously bumped topic: <A HREF="http://forums.gamemaker.nl/index.php?showtopic=244877"><b>Tofp Area's V1.2</b></A>. Now i understand that this person is quite likely non-english speaking, but how many continuous bumps followed by 9999/10 can this person receive before he eventually realises that his examples have been done before to a fuller extent and are, to some extent, decieving. For instance, his highly touted bloom effect.... I wont go into the fact that its not actually a bloom since it doesn't determine whats above the threshold.... (woops i just did).... its more the reason that it gets such high fps, which is because he set the *cough* blur *cough* to redraw every six steps.... pffff and since every ones getting a high fps above 360 nobody can notice the glitchiness that would be caused by using such a system in a realistic environment.
Infact it is quite obvious (and well pointed out by <b>OpticalLiam</b> i may add) that many of these examples are merely direct rips of previously released sources. Hell he even ripped the font effect from <b>GearGOD</b>'s Radial without giving an ounce of credit.
The problem is I really didn't care what the noobs did until i realised just how many good productions are being lost due to lack of encouragement and ill treated amongst the bitching, biting and scratching that is known as the GMC Creations/WIP forum. One of these productions will likely be <b>L3S</b>...which is in my humble opinion worth slightly more than 30 posts. You may put this down to my own vanity, and it is to a degree, but it is the project that suffers not me, i had planned a few updates and inclusions. Maybe there's just not a need for high quality lighting engines....
Basically i believe the moderators and advanced users, should try and maintain a community which encourages high quality projects which push GM's limitations. The simple/ethical solution lies in not posting or flaming these annoying & bad topics and simply focus our bumping prowess on whats good and hoping the noobs will eventually grow out of it. I believe <b>SleepinJohnnyFish</b> posted a similar idea on the GMC community forum.
Anyway... enough bitching....onto GM, I've totally redone the rendering system of my game which now features a dynamic zoom, so it can either manually or automatically be zoomed in/out.... whilst maintaining shadow quality i may add (not the usual surface scaling). The rewrite did make it slightly slower and more vmem intensive since i upped the resolution from 512x384 to 800x600, which allowed me to prettify my HUD a bit more. Also i've been implementing a TDS multiplayer engine i've been developing using the 39dll, currently i've got a nice chat system as well as the some decent Dead-Reckoning movement. I'm mainly focussing on maintaining network/bandwidth efficency so all those poor buggers with dial up(like me) can play.
Anyway Peace out.
<b>EDIT:</b> Fixed most of the spelling errors, since i had to rush writing it.
L3S released + retartedness confirmed
Posted on October 08, 2006 at 00:27
After a good 2 weeks of work, its official I've released the edittable of L3S onto the unsuspecting mass of the GMC.
<A HREF="http://forums.gamemaker.nl/index.php?showtopic=247336&pid=1723995&st=0&#entry1723995"> Link</A>
What abouted the retarted bit you may ask?.... well something that had been keeping me from releasing L3S was this really strange error where i was creating a surface but it wasnt showing up, I even had it show a message using surface_exists. So i tried using the surface_save() function but once again no .bmp was appearing. After about a day of swearing and blaming GM for its stupid bugs.... i discovered that i was using surface_create(view_xview,view_yview) instead of surface_create(view_wview,view_hview)..... so i was creating a surface with 0 width and 0 height..... I felt like kicking my self. So for my self punishment, i decided to finally write the stupid readme and script reference.... it was agony.
This surface was for a glow filter which GearGOD had asked me to make. Here's a pic of it on action:
Boredom & L3S
Posted on October 06, 2006 at 02:36
Well i dont have much to say, hence the boredom but i was a bit surprised to find Onyx confused over who was actually developing L3S. I will state now to dissuade further confusion that ALL CODING WAS DONE BY PHEONIX101, GearGOD, since his engine died, was a play tester and idea's man.
Hmmm, I just noticed that Pheonix L2S has reached 101 posts, if i had the L3S documentation ready i would release it now.
Also i've made a pretty conclusive feature list of L3S:
- Light Bloom: Allows you simulate lights extending out of the monitors contrast ratio by specifying a threshold value at with light begins to glow and spread out. Includes 2 types of blurs, a guassian and a bloom specific guassian blur.
- Soft Shadows: Allows you to cast shadows which soften at the edges. They are most useful for static casters due to the rendering cost involved with casting soft shadows.
- Static Caster System: Three types, including mesh-based, surface based and dynamic surface based. Shadow casters can also be defined as “always dynamic” so they will never cast a static shadow, but will always cast one even with static light casters.
- Emissive Objects/Tiles: Allows shadow casters and other objects to emit their own light and appear to glow.
- Specular Highlights: Allows shadow casters and other objects to realistically reflect light, very useful for materials like metal or for wet surfaces.
- Emboss Bump-mapping: Allows objects to appear to have deviations in their surface normal.
- Full z-axis support: Allows shadows to realistically cast based off the relative z positions of the light and shadow casters. Also higher shadows will obscure lower bumpmaps
- Polygon shadows: create your own shapes. You can also have a different z for each vertex, so you could create a pyramid if you liked.
- Inbuilt Shapes: Optimised inbuilt shadow casters, including the commonly used, boxes and barrels.
To close this completely useless blog, heres some pretty pictures to distract you from its uselessness: