2010-12-19

2D Platforming Game

Well, I had a dream one day, December 1st or something, where I was instructed how to make a platforming game.
I woke up, coded it, and it worked.
DAMN simple too.

Given a list of AABB's in space, and Actors which contain AABB's for motion against the level,
Simply calculate the current bounds and previous bounds (stored)
then detect any EDGE crossings based on the difference from the previous/current bounds for edges;
Then take the minimum edges found, and move the character out from those edges, with some epsilon (in flash, 0.1 works)

To fire a laser in the game, use a space hash (Make a uniform grid of blocks that store references to the objects) and use a specialized edge traversal algorithm, that moves to the next best slope cell, and check everything in that cell until the laser is exhausted or hits something. Handle the case if it changes a major cell, and check the next two to avoid errors.

Both these ideas work PERFECTLY, and thus any 2D platforming game (without ramps so far) is easily made.

Once I clean up the engine, I'll post it so people can make their own high-powered 2D platformers.

-Z

2010-11-16

Blue Dragon - XBox 360


Well, that was fun. Learned a few things too.

1. Mesh data stored in the XBox 360 is identical to all other formats that you expect in a high end graphics application; Specifically, large VA/IA arrays and a nicely formed VAO with a geometry shader system for handling matrix weighting/radial basis. No surprises.

2. Textures are still DXT1-5 style blocking, but arranged differently in memory. Uncompressed normal maps.

3. Meshes seemed to average ~10k polygons, and have ~170 bones apiece. Level of complexity requires on-GPU processing; may have special hardware for this, like OpenGL 3.0 or DX 11.

I like the style for this game. Internally, it's fun and NPR; high enough resolution to some really cool animations. It was hard to find a lot of information about it though.

Also, I found out my older ripping technology had a bug; and now all of my models are 100% spot on with weights, which means it's identical to the in game data for just about everything else I have. Which is really neat, now I can learn a whole lot about how Monster Hunter 3 animated their creatures so well, and how poorly some other games did the same thing

It's like having the coolest action figure collection ever!


-Z

2010-10-20

Zoning

It has been a long time since I posted.

I've become far more proficient at modeling in blender.

Also, I've improved the DXML format to the point where it writes C/C++ code automatically, and is far more stable, fast and simple. In fact, DXML seems to be my new "does everything" format, because unlike XML or other bullshit standards, it's lexically simple and forces you to write better file formats. Which, it turns out, are directly C-struct translatable. Also, it has less possibility of confusion or errors due to it's very strict nature; and as a result, makes you far more intelligent.
The downside is slightly larger files, but when you are dealing with a text file, you want it to be comprehensible, not efficient. DXML files are built for comprehension and logical structure. They're perfect!

Also, the TED format has been getting a lot of attention and improving, I've added scripting to animations, so now attack animations can contain code (lua) so that punch animation can mean something.

Also, I embedded Lua into my programs, now I can script (safely, mind you) so extensibility is fast simple and external; allows for a lot of flexibility, and as all you truly experience programmers know, a script is only as powerful as the core that drives it. In this case, core handles a lot of things normal engines like Unity, Blender, Torque, and many others do NOT handle. No surprise; you're supposed to extend those engines in C/C++ code anyways. Most of them are also not built for magnitude/scaling either.

So, with all these improvements, the focus has been on scene management; ted files provide a vast array of graphical and animation data; they also now provide zoning information, which is used to reduce collision requirements and provide an effective scene graph that can be non-spatial (a critical requirement for adventure clone!)

Here's a rough idea of what "zones" and "zplanes" mean, in terms of blender; In text, a zone is a axis aligned bounding box (AABB) that contains a list of objects that intersect it, and a list of other zones that intersect it. A Zplane contains a reference to two Zones, and a position and matrix, used for culling.



Until next update! Maybe we'll get a video of some in-game action.

-Z

2010-07-24

Game Physics - We got balls


Summary: Game physics works per frame, and is discretely accurate. Normal physics engines simulate real physical principals, and do integrate. Design is what keeps your game from having errors, not the engine integrating better / more accurately.

Game Physcis. The long debated quitnessential problem with most all games. Do you take an existing physics engine and force it to work the way you want? Or do you roll your own collision system for perfect accuracy at the cost of far greater development time?

Obviously, I chose to roll my own since I've never seen a "game" physics engine. I've seen bullet, novodex, Aegia PhysX, ODE, tokamak, Newton, ect... and they all attempt to be "physics" engines, not game physics engines.

What is the difference between a physics engine and a game physics engine?
  • 1. Game physics do not model reality; they model fixed frame impulse systems; IE they are not time based.
  • 2. Game physics generally have multiple levels of physical objects, static objects are handled vastly differently than dynamic objects, and objects that have one way interactions are handled differently still.
  • 3. Game physics trades accuracy for quantity & speed. Also, their accuracy has no real physical model to use, other than the most basic physical principles (ray reflection, momentum, mass)
So, the worst part about rolling your own (maybe 500~ lines of code if you're good) is the geometry. The nastiest part about any collision engine is simply generating all the 'trivial' geometry intersection and distance functions you will need. I've consulted more than 3 PhD mathematicians on this subject, and none of them were able to solve these "trivial" problems. And these guys are seriously brilliant professors! So don't arrogantly think that these are ever trivial questions to ask; they only appear trivial because the solution seems so logically simple. Much like, if you asked what the arc length is on an ellipse. Seems innocent enough at first, go research it.

Also, game physics use special models of collision, specifically the ray-bounce-slide model, so you character will slither along corridors and walls with great clarity and smoothness, and essentially have perfectly inelastic collisions with just about everything. Lots of optimizations present themselves for broad phase testing, especially when you break up the static / dynamic environments.

So for my purposes, I made a simple little game physics engine that lets me run objects like I would expect them, it's discrete time stepping, fully consistent, but it does allow something I have always hated, which is possible penetrations. I'll have to think more to figure out how to integrate that type of dynamic into a system like this, but the truth is, if you have dynamic/dynamic object collisions, there are very few ways to solve them (refer to the classic 3 body problem, and enjoy your porkchop with cyclic coordinate descent.) So, stepping your dynamics works against dynamic objects, but you can make much more accurate collision assessments against the level. But wait! if you set your steps and velocities right, guess what? You can just completely ignore that problem all together. 

Game physics doesn't rely on correct simulation. It relies on correct DESIGN.

Your levels, collision areas, rooms, whatever; If they are designed right, you can make it so they can't mess up on the even inaccurate stepped integrations. So, it's never been a question of 'physics engine', it's only been a question of how smart you really are when it comes to designing the actual game. This would be called 'cheating'.

The difference here, is all of this is a beautiful, easy to plug into anything C/C++ class relying on the core components I have made.


Here's some balls moving around in the physical simulation. Note the time in the upper left (milliseconds / FPS) and the quantities of object in the upper right. The broadphase method used is taking a bounding sphere for each object, then calculating the best axis based on the minimum position along x,y,z axes (O(N)) using the in-line variance sum ( 3*O(N) ), then taking that axis, and making a vector with all the minimum positions and pointer back to the object, sorting (O( log2(N)*N )), then running along that sorted interval list, and testing all unique overlapping interval pairs (O( N * m ), m is far less than N). This methods worst case is N^2, as in all broadphase systems, and it's best case is O( log2(N)*N ) because of the sorting. It performs very well and has no physical size restrictions, and it can use AABB's instead of spheres for greater reduction to m.





2010-07-02

Data & Geordi - Shuttle Rave YTP

 IN CASE YOU DIDN'T NOTICE:



This is actually my first Vegas Project ever. So it's not that great.

(WILL FIX TOMORROW; Apparently codec was broken...)

A preview of things to come. Some (very bad) Editing, this is still 100% raw footage.

Star Trek : The Next Generation Season 3 Episode 08 - " The Price"

Music: http://www.youtube.com/watch?v=Nl4opbNt8_E

2010-06-12

Dream - Flying n' Dragons n Stuff'

Dream 2010-06-12

There was some buildup; apparently something like a generic medieval fantasy plot; some random magical overlord type creature was taking over the generic kingdom and enveloping it in generic darkness and distributing generic dark villains over the generic lands. Generically.
Well, me, mike, reed and zach were armored up to fight these things (These cool black-obsidian armor suits with colored light beams), and went about doing so. Running around the countryside, slaying doom-like demons and monsters with powerful weapons; well eventually we got into a castle, and ran through it mario galaxy style, eventually finding the end boss and kicking his ass easily. As a reward, it dropped this strange silver hang-glider looking apparatus; which, allowed you to glide-fly.
So, you don the thing, and it spreads out like a pair of batwings/batman style. At that point, if you get a good running start, you generate enough lift (somehow) to go airborne, then you hand glide to gather height and momentum. I believe it had some sort of futuristic scram-jet on the back of the unit, because you were propelled quite fast, fast enough you would actually fly (airspeed) even in real life.
Since I happened to be the plane guy, I tried it first. It was amazing.
No dream about generic flying could beat this; I could run, jump and take off into the air, gliding with minimal effort, flapping my wings if necessary for a quick change in course. It was like being a bird, you could soar over landscapes, dive down through rings and even shoot your enemies down while flying. With practice you could gain altitude in any condition as well, so there were no gliding limitations.
Well, we had to go onto level two, so I was designated "dragon-man" because I could fly + shoot plasma via plasma rifle. Level two was much harder, and required some tricky aerial switch throwing, IE dropping bridges and the like to allow the companions time to maneuver over. At this point, things got difficult, and we were forced to split up, I solo, and the other three as a strike force on the ground. I flew on ahead, taking out defenses and barriers from above, fighting some of the larger sky-predators as well. The ground team pressed down into the caverns to destroy the generators powering the evil machines that created force fields and creatures.
Eventually, I got bored of being a human with a flying suit, so I typed in a cheat code and just became a dragon instead. A big red cartoony looking one, was pretty strange. (Kinda, I have a model I made of the exact creature) Technically, no abilities changed, except that shooting plasma/fire was much more powerful and much faster, although I had a shot-cap, so I couldn't fire more than 8 fireballs at a time, like old arcade games.
Being the dragon, I could maneuver in the air way easier, and hover if I needed to, plus gain a free attack bonus on everything I did, and intimidation for lesser enemies. After assaulting the tower, I flew down into the caverns to rejoin my team; turned out they were doing just fine even without flying ability, so when I met up with them they kinda freaked a little, but figured out it was me pretty quickly. (cue mustache gesture)
Then, we tag teamed moving up this complex twisted tower, full of odd gravity puzzles like super mario galaxy, moving blocks, fighting vastly upgraded iron knuckles, hitting switches, fending off mobs, solving puzzles... It had just about everything you like to do in video games, but a flexibility in approach that was unmatched by any. You could kill all the enemies, use the environment to your advantage, negotiate, threaten, or even just slip by unnoticed. There was no set "objective" to complete except the main one, although every decision had consequences. Eventually, after winding up this long tower, we came to an impasse; The only way to go was up, and I couldn't carry anyone thanks to load restrictions (wasn't THAT great of a dragon).
So I grabbed an extra gun, and went upward to fight the boss myself. Turns out, it was some generic lich demon that had no real purpose in taking over the world. I'm sure it explained some crap to me, but I just shot at it instead of wasting time talking. It ran around like the end boss (The Campaigner I think) in the N64 Turok game; Was very hard to hit. Eventually he went down, but then morphed into this giant darkness form; And began the generic projectile-pause-claw swipe-pause-vortex loop of attacking. However I was privy to physical knowledge, it never was able to even hit me in that form, and eventually gave up on it and morphed into it's TRUE form, which was some weird looking alien-dinosaur skeleton with rotted flesh dripping off it (think Odin Sphere's King Gallon). That made the fight hard, since I had trouble determining the weak spot without an obvious bright red heart to pummel. Eventually I gave up because plasma and fire was useless, and just physically tackled the thing and tore it's head off; instantly killing it but making me lose dragon powers and flight wing just like mario when he collides with an enemy.
So there I was, atop the tower splattered with rotted blood, rifle scattered on the ground, darkness turning to light again, and no friends nearby (they can;t get up the tower, lol). I just looked off into the distance wishing I could fly again, because that was freakin awesome.


I was *about* to re-don the flight suit, but then, horror of horrors:

The cat woke me up. I took every measure to prevent this from happening. But it still meowed and woke me up anyways.

$@#^*(#$& Data.

-Z

2010-06-11

GHOST, Mingl, XCore, Core, XGFX

Continually working on improving all the above components;

Here is a quick overview of what all this garbage is:

ghost - Lets you make programs for X11, Windows, Mac
mingl - Draws stuff in hardware lingo
core - Does everything you don't want to write yourself
xcore - Does things you should be doing anyways
xgfx - Makes everything look pretty + move around

In more details:

GHOST - Made primarily by the Blender.org guys; this is their generic host operating system toolkit; In other words, this is the code that allows you to receive low level input events and a OpenGL context; And the ability to create windows and draw to them/receive messages from them. I've heavily modified it to include some more game-friendly features, timing looks, multithreading and some specialized input event abstractions, joysticks support and other goodies. It's at least as good as SDL, and in many ways, far superior. Hard to find something better than code that has been attacked by many people.

Mingl - "Minimum Graphics Library"; essentially a wrapper around OpenGL; but, it's designed to specifically mimic OpenGL 3.0 specifications, and does an insanely good job of managing more annoying aspects of OpenGL programming; It makes writing graphical routines trivial, where you may spend hours trying to orient yourself in 3D space using any other toolkit (that includes you, blender. F*** your armature space conventions!). However, it's also interface abstracted just like GHOST, so it can use OpenGL, DirectX, software... it doesn't care. But it is primarily designed to expose low level hardware techniques to force you to write more efficient graphics code; and does a ton of things internally (like managing VBO/IBO/RC, states, transformations, ect...). It is still missing FBO operations, but those are trivial if you have a GL 2.0 + system (just need to sit down and do this)

XCore -  Operating system and hacking level tools. A quite extensive library I made of tools I use frequently, such as texture conversions from DXT to / from anything, mathematical algorithms, VA/IA generation algorithms, numerical methods, statistics, even some unique IK algorithms and other tools. IT also contains agressive memory management and a slew of commonly used structures.

Core - The heart of everything; Based on the std C++ library; core contains separate components that should not rely on any one other component, like vec3 vec4, matrix3x3, matrix4x4, index_array, geo, and a lot of other commonly used, but often not needed tools. Chances are if you need any one of these tools, you need all of them.

XGFX - My rendering system built ontop of using mingl as the renderer interface. IS still under construction for the resource abstraction and management of massive resources.

No good screenshots; Just the city level again after implementing multithreaded loading + mingl improvements.

2010-06-04

TED Exporting + Mingl

"Walk the Walk"

I talk a lot of smack about things that I do. It's really nice when I visit artists that I can actually pop open their files and show them how to export them so I can load them in game.

It's much easier to convince people you aren't just blowing smoke when you can show them what you are doing in real time. Hard to dispute that kind of presentation.

So, more improvements on the TED file's; the exporter is more robust, and I'm in the process of verifying the data output is correct. So far this seems to be true, I've seen textures, models, scenes, and just about everything in the file working perfectly, especially animations. It's wonderful to just be able to load in a file directly exported from blender, and import it, then see your work immediately and accurately duplicated in a realtime game.

So here are some example shots; the next long haul is building the xgfx resource management system so I can maintain a logical coherence for all of these vastly different resources + files. Resources are essentially reference counted, but are not cleared until flagged to do so. Instance objects exist physically, so once they terminate they just dump all data. Plenty of re-use optimizations, tons of weird paradigms like "resource-source-instance" ideas with meshes; But this will be demonstrated eventually.


In order from top left clockwise;

Rayne from BloodRayne on PC with a static keyframe applied,
two of my custom levels,
Charizard from Super Smash Brothers Brawl on Wii with standard_wobble applied and hacked texture
another custom level,
The first boss from Dragon Blade on Wii, with wobble, note the material colors are showing now; easily removed.
Bowser Trophy from Super Smash Brothers Brawl on Wii
Rayquaza Boss from Super Smash Brothers Brawl on Wii with wobble.

Looks like I need a damn artist.

-Z

2010-05-31

Fencing - Problem Solved

4 days of brain bashing of a very complex error to track it down and slay it.

At first, the program would crash if run outside of debug mode.

"Okay, so it must be a memory overrun, and I'm writing past the end of the array, because the debugger puts padding for detection against clobbering memory"; which looks like this:

uchar myarray[ 10 ];
myarray[ 10 ] = 60; //WHOA, myarray holds 10 ELEMENTS, so position 10 is the 11th element.

Often called a fence, I couldn't find it. What was weirder, std::string was throwing errors. std::map was having kittens. and ntdll seemed to vomit all over the floor at this party from hell.

As I burrowed into the code, seething rage ignited; was I being burned by out of date compilers? Was my code wrong? What had I done? What had THEY done wrong?

This project had it all, nested complex templates, deep inheritance heirarchies, large blocks of data and nasty C algorithms. Luckly, most of my (good) code has __debug_regression defined, so I was able to quickly rule out very large segments of code against error with a single look back at passed test dates.

But my mind was going, Dave.

I ignored the fact that if my code worked in debugging, then only the heap allocation method would cause 0xc0000005 errors thanks to ntdll 's nice memory bounding protection (mainly protects it from 0xBAADFOOD but yeah)

So, I eventually upgraded my compiler, my debugger, brought in the help of my custom designed memory heap manager (igtl_MMHeapSystem; I love you, I LOVE YOU! OH GOD YOU'RE SO SEXY MMMMM*codepronz*) and tracked down the offending bug. Hours of poking and prodding landed me with a really surprisingly simple conclusion.

I was off by one.

I'd been accused of being off kilter, off base, and not even on this world, but one? Off by one causes these insanely weird errors? Why did the debugger not detect the stack corruption? Why did the heap manager skip telling me I was writing one integer past my array? Why did absolutely none of the tools find this till I made my own?

Here's why:

When my array was writing past the end of it's detection, it wrote (coincidentally) over the bad food word. But, in the running of the program, that error PROPOGATED until some time later, when the error detection actually scanned memory; because no one in their right mind scans every single memory allocation (super slowness). By the time a scan actually occured, it was too late and bizzaro values had multiplied. But only in a small well contained region. That is, inside of a system dll I don;t have debug points in. Ironically, since the error affected nothing else in MY code, it really screwed up ntdll, and cause it to throw weird errors all over the place.. So, my code was just missing a +1, but the stack was being blow to pieces thanks to trying to protect itself.

Moral of the story?

Make sure to take a nice drink if you run into a hard problem. Usually, it's just something stupid. I use High Gravity Steel Reserve.

-Z

Here's some preliminary results with a nifty 3 instruction toon shader I made: (<3 Mecha Dragon)

2010-05-28

CURSES!

I've been fighting some errors for a while now with my importer code;

Eventually (2 days of brain bashing) I figured this out:

0xC0000005 errors are normal; But they're a good hint into memory over-walking.


Turns out, you can;t do this anymore (used to be able to; I'll figure out the fix):

struct myvec{ float x,y,z; } //Nicely packed struct takes up 12 byts, 3 floats in order.

float myfloats[9] = { 0, 0, 0, 10, 15, 10, -5, -10, 0 };  //Nicely packed float coordinates.

myvec somevecs[3]; //Make some vectors

memcpy( &somevecs[0].x,  &myfloats[0], sizeof(float) * 9 );  //Copy them in!


Before you scream at this; Note that this works perfectly lots of times. Apparently, there are some rare cases you can cause this to break and GDB is helpless in figuring out you just walked passed the save/writable zone in an array. It's really hard to get this kind of thing detected, especially when using pointer casts.

Basically, if you run into a situation in which you find yourself doing this; Please stop and redesign your code so you do not have to do this. Unfortunately, there is no "fast" solution without redesigning some kickass wrappers and C-style code; but if you OOP this, you run into massive overhead and ultra slowdown from all these specialized copy operations; So, what can you do.

In my testing, caching blocks of floats seems to work best, then just forcing your user to slowly copy them into their structures. Although, I don't do that, because I redesign my structure to WORK with a float * internally so this can be as fast as possible and still lexically coherent.

What a $(#@^& problem.

-Z

Here's a picture. .TED files contain a lot of information; Once I clean up this stupid problem I'll post more goodies. By the way, these are models from the PC game "I of the Dragon" because I don;t want to show my models until they look somewhat decent. Obviously, again, I'll never use these; They're only good test sets to play with.

2010-05-14

TED file format; Restricted XML

Ever notice how awful XML documents are?

Well, I upgraded my model exporter from blender to 2.49b; so now, instead of the annoying variety of formats I used to use (obm, arf, brf arf2.0, brf3.0, grf, iRF) I decided to spec out a more logical, easier to understand but far more byte/size inefficient DXML format.

I call it "TED" (Text Extracted Data).

The goal of TED files is to export the maximum usable, useful information out of Blender 2.49b+.
  • This includes Meshes, Armatures, Animations, Objects, Materials, Textures, and some scripting and logic elements. Meshes should contain enough data to be GLSL renderable (IE normals, tangents, uv layers, parameters).
  • TED files must also conform to a very strict file standard, so there will be NO allowed coordinate systems other than the default universal correct system (RHR, +X forward, +Y left, +Z up; This is universal for ALL transforms. Matrices also have a standard definition of Xx Xy Xz Yx Yy Yz Zx Zy Zz where X is the forward axis, Y is the left axis, Z is the up axis. Quaternions follow these definitions as well.) 
  • TED files must be easy to read in; Though they are not (byte) efficient, they should contain "hints" for a loader so it may allocate elements beforehand; for example declaring the number of elements in an array before reading it in. You might notice .TED files can be
  • TED files must maintain a logical and render-system friendly data model; And must encapsulate all data elements; No element can have differing types of data; ergo a tag can store an array of strings, an array of ints, an array of floats, or other tags ONLY.
Why TED files? Because my old exporters did not generate shader code or export tangent vectors. Also, the old exporters somewhat obsfuscated the data, and did not present it in a correct hardware manner; There are fixed graphical paradigms in working with 3D polygonal data; TED files will adhere to them strictly and yet maintain enough data to be edit-friendly.

What TED files should NOT be used for:
  • Final game data (you should convert to your own or local host format)
  • Final Level descriptions (TED files do not provide hashing or optimizations or portals of scenes)
  • Replacing something you already understand (unless it has something you need; just make a converter to convert TED to whatever)
TED files could possibly be placed in direct competition with other formats, such as "OGRE XML", "COLLADA", "Alias Wavefront .obj", "Direct X 8.0 .x" and other such lexical, human readable formats. None of those formats contained all of data I wanted to use, therefore I made .TED files. It would be a trivial exercise to convert FROM TED files to those formats, but the other way around is much more difficult due to those other formats inefficiencies and shortfalls in dealing with hardware level data. Yes, I've used all those formats before, and yes I have used and loaded .3ds, .mshp, .md2 .md5 and many many others. So no, the format you are thinking of also sucks.

I have not made the exporter for 2.5.2 yet because I have been burned many times by blender changing specifications mid-stream on me. Luckily, the ted exporter is written to avoid this as much as possible; but when more alpha versions come out I will snap one in easily. Until then, 2.49b it is.


If I could show you a .TED file I would; but HTML can't understand < > signs.

Have a dragon instead (All credit goes to DragonBlade from the Wii; Obviously I'll never use this model, it just happens to be the first example I picked)


Blender on the left, mingl without GLSL on the right (in-game)

-Z

2010-04-12

Nathan + Dinosaurs = WTF?

Dream 2010-04-12

Summary:

Mal works for a space mine, enters a dimensional portal, meets creatures that seem to have come from "Dinosaurs"

Details:

Mostly fuzzy; But I remember this space mine working on some sort of larger extrasolar object in some small star system; It was a rather rich deposit of extremely rare and non-natural elements (that's right, this SOB had naturally occurring elements heavier than uranium!) so, they were mining it for fuel. Well, Nathan Fillion apparently was the star of this episode (Damn you, Captain Hammer!) and after losing his wife and kids in some sort of car-accident; he continued working his mining job. Well, someone discovered an anomaly, some sort of portal, and after some testing they decided to send a human in without telling any outsiders. Being a space mine, you go to the place to work, and don't return for quite some time, so this was easy to keep secret, always a lot of illicit practices in these sorts of "prying eye" isolated situations.
The backdrops looked like any stereotypical deep earth mine, large steel girders lining large elevator shafts, domed, reinforced ceilings and plenty of weird looking mine equipment (I've been in a few myself, so if you've never been in a mine, look it up!). Well, the anomaly was just some sort of large blurred region of space, and, well they voted Mal up to jump in, since he had nothing to lose. Would certainly end his pain or make him a hero, so why not? He obviously didn't feel that way, but, eventually consented and in a rather Mal-like way, just ran into the damn thing with no warning.
Well, upon entering the other side, it was a direct seamless transition to this darker world, there was breathable air, survivable pressure (~1.2 atm, similar to being under 2m of water on earth), and reasonable temperature (~87 F). Well, comically, the portal was above ground, and lands our hero in a are filled with cycad like trees. Naturally, he was now screwed as he could not get back up to the portal, and wanders around. Eventually, he finds he is near an ocean, and can see civilization by the hallmark of regular geometric shapes being constructed near the sea shore. Upon investigating, he finds all of the structures heavily damaged by some sort of raging sea current, and promptly leaves after finding some really disturbing skeletal parts; Not human, but some sort of alien/dinosaur like parts.
The sky in this are was black, grey at the edges, but seemed to emit light ambiently, as if there was light coming from the sky, but it was only visible in reflections off the earth. There were no stars visible, the sea was also black, must be some odd light-absorbing pigments in the world chemistry;
Well, this part gets a little fuzzy, but somehow Mal runs into this teenage dinosaur, and they become allies, and he introduces him to their world, and becomes some sort of science project, blah blah generic plot basically. Mal almost gets into a fight with a small gang of dinosaurs, but being Mal smart talks them out of it, gaining respect from the gang. I remember something about deeply rooted political messages, environmental concerns, societal oddities about sex and crudeness; Was a really interesting situation;
But! His friend helps him get back to the portal, so he can return home, which the mining company didn't expect, but he brought back a few artifacts to prove he was gone, and destroys access to the portal (to save his friends in the other world).

So yeah, the social parts were hazy at best; not 100% sure what actually happened, though it would be trivial for any Firefly fan to fill in the gaps with some terrible fanfic writing.

-Z

2010-04-01

Dream: Splinter Silent Snake Solid Hill Cell

Dream: 2010-04-01

Summary:

Recurring dream mixing metal gear and splinter cell and silent hill

Details:

This is a recurring dream; as such, the majority of events are similar to all the previous reincarnations of the dream, with only minor changes. I'd say it's very graphic, and horrible. (how often do you get to disembowel things anyways?) Definitely nightmare quality.

So, the dream usually starts out, you take the movie-role of this gray haired, grizzled marine in his 60's; Getting a debrief from president Kennedy about a mission to stop a Russian bioweapon from being released. Your main character looks a lot like a regular chisel jawed blond haired blue eyed German marine, constant fatigues, side bowie knife, a poker face that could break glass, and plenty of gnarled features indicating a slew of victories. Always looks angry though, the beret slightly off kilter, as if asking any young punk with enough balls to mention that was the wrong angle, just to start a fight.
Kennedy gave you a top secret clearance, and this dark green folder with information on this russian woman (naturally in a black latex suit with dark red hair and goth-style accenture; d-cup) who is in charge of the train shipment of the materials needed to create the bioweapon.
You repeatedly ask for more information on the bioweapon, as it is obvious no marine can withstand that kind of weaponry, a bit like trying to punch a landmine. No information is given, apparently this whole thing is hush-hush since it would severely escalate tensions.
Switch scenes to a large cargo plane, four engines and a regular "Red Cross" drop mission of aid, with you secretly stowed on board; jumping off for a night skydrop to land deep in a pine forest, silently, and with plenty of guns and ammo to take out a small militia.
At this point I'll describe the scenery to get an idea of the feelings invoked, since text leaves a lot of detail out. It's about 0320 (sun relative time), damp is forming on all the leaves, you can feel the earth cooling; but it was mid-summer, so the respite from burning heat is welcome. At night, you can hear trucks in the distance, men barking commands, the train had stopped here, secretly, the moon was not out, so darkness was impressive, seeing farther than 20 or more feet was impossible, what lay in the unknown was a mystery; it was likely there were infra-red autoturrets posted around the site, more than likely landmines or classic beartraps laid to thwart and unprepared soldier; classic tripwires and claymores a traditional favorite. All of the trees were dark and tall, traditional pines, the forest floor was mostly cleared; unsure why. There was a rich smell of damp in the air, mostly the dew pervading. Knowing this mission was essentially suicide, as you were ordered to stop this train and shipment at all costs didn't help your mentality; smoking would simply trip an alarm and get you shot early.
Moving cautiously, using all of your available skill to avoid the assumed traps; luckily there were none. There were only 6 guards, and only off duty ones. The train may contain secrets, but would it be better to follow the train to it's destination and discover where the base was, using your e-rad to signal your location?
Apparently, you decide to sneak onto the train, and quickly find out that is impossible; as the train is a unusual design, it looks out of place, a futuristic, slightly blue steel color; No visible doors or windows, it had the feel of an airstream trailer, but quite a few of them connected.
Somehow there is a gap in memory, and it's 1240, afternoon sun glaring down producing a high 90's heat. You had found the camp, and damaged the rail tracks so the train could not make it's shipment, and radioed the position, all without being seen, detected, or killing/alerting anyone. Now you wanted blood; you could see your female target having a cigarette with an AK-47 slung across her back; she was still wearing the ridiculous black leather getup, lol fanservice I guess. Anyways, you strafe one of the smaller buildings, to get a look inside and see if you can start causing some havok; well, inside of this "small" building is a solid black cat; it approaches you, it's rather friendly. Inside the building is a darker red metal decor, lots of white plastic spherical containers and hoses connecting them, leading to a side chamber. This was no building, it was a gas chamber to test the bioweapon.
Immediately you move to sneak out, but the door slams shut and the alarms and lights go off; gas of a light yellow color begins to come from some of the hoses. You whip out your mask and use the cat to determine what the gas would do; holding it with a knife to it's neck so you wouldn't make it suffer too much. The cat seems annoyed, but entirely unaffected by the gas. IT wasn't an irritant, or mutagen, or anything obvious; You put the cat down, the room now hazy with this thick gas; it doesn't stick to you skin either. Time splits, since this is a dream, and you become two instances in time, one of them NOT having entered the chamber, and sneaking to a larger building, the other entering the secondary chamber ,where there were larger plastic cylinders and spheres with other colored chemicals. In that reality, the cat follows and a door from nowhere slams shut like a guillotine; and a greenish gas pours out, immediately burning the skin like fire; the poor cat's eyes begin to melt and it begins hacking up blood, so you mercifully cut it's head off; then quickly gut the can and use it's hide to protect other regions on your body while you wait for the gas to time out. The green gas left unusual burns on the skin, but otherwise seemed to just be a extremely toxic agent. Well, in that reality, turns out the gas penetrates clothing, and while you are basically chemically burned alive, searing agonizing pain; trying to break the door down or stop the system or just escape, you cant, and get to suffer the agony of death, and fail your mission.
Now imagine for a moment, YOU were that person. And also assume that you could not tell it wasn't a dream (lucid). You're trapped in a sold metal box, nothing but dangerous storage vats of chemicals in the corners and ceiling, tubing piping a agent capable of melting your epidermis, And the door is magnetically sealed, and at least a centimeter thick. Unhinged and sliding into the other side about a half a foot too. Basically, you are dying a horrible death, and there is nothing you can do about it. Isn't that lovely?
Now, since this dream had that parallelism moment, let's continue with the dude who DIDN'T poke into the wrong building.
Upon sneaking into this larger facility, which was very poorly lit, only small red lights here and there, dimly illuminating what looked like a power facility, larger generators and tanks, narrow walkways and halls, a more concrete underground feeling. Eventually, you run into a larger section of hallway, some 20x20 ft, and see two guards talking, but one of them is beating the hell out of the other, which isn't even fighting back. Then, this sick thing happens, and the winning guard pulls out this jar and jams it into the other guys gut; Cue class gut-worm scene; this small, 8 inch long alien parasite of some kind tears the victim open, and begins threading itself through and consuming all of the poor bastards innards. Being undetected at this point, and pretty sure of victory, you run in and kill the other guard,kicking his body away and go to kill the other in another mercy kill, just like that cat (that in this reality, you did NOT kill but it is silently following you). But when you turn, the worm had grown at a unprecedented rate, you could see it moving around under the skin, blood and scraps leaking fluids as the guard just stares off, trying to scream without lungs in a agonized expression; seeming to be saying something important, but then the work gets to his brain, and pokes out an eye, blood gushing out and littering the face with brain bits. You ignore the posse, this is getting too weird, and you take a service elevator down a floor; The elevator had red lights, and was large, build for moving trucks it looked like. So much for being unannounced, but luckily, down here there was nothing but a few mech-armors and not many guards; This place held missile components for delivering the bio weapon. Solid snaking your way around, you simply murder guard after guard, leaving only the mechs to take out. Nothing you had could even get close to stopping them, so you continue onto the next room, which was a very large bi-level room with many smaller rooms, kind of like the stack/library in goldeneye. Well, it was still dimly lit in red, and in the middle of this giant empty room was some sort of weird reactor with seats in it ala borg style. You get noticed, and it becomes a intense firefight, you using a traditional revolver in favor of automatic weapons, since you didn't spray and pray, you killed. Eventually, whats her face walks in (leather chick) and talks to you in russian; sadly I can't understand it; nor do I have any way to reproduce it.
Well, turns out she is an alien queen, and had given the russians the keys to making this mutagen that would allow her to generate parasites across the world, and consume our race like we do mcdonalds hamburgers.
Like hell any US marine would let that shit happen, buuuuut we're not talking about an analyst here. Jumping down to take out the queen, you're electrocuted by the floor grid; A simple trap meant to take out aggressive morons. Lucky for you, as you lay there incapacitated on the floor, you see the black cat walk in, parasite sticking out of it's mouth, guiding it. The alien queen comes over and drops a worm on you, and it tears your guts out so you can feel how horrible the pain of death is before it damages your brain past the point of cognizance.
But, like a US Marine, you totally fucked her over. You didn't shoot her, because you unpinned a few grenades first. BLAM!
You eliminated the queen and the machine, saved your country.
The end. Or is it?


What makes me chuckle, is modern games are way more graphical than this in terms of content, but in terms of immersion? Hardly. You'd have to look at some older games to really get a good creepout or scare; simply because the composition for immersion is a very delicate balance and very hard/expensive to get right.
I hope some game house recognizes this and cranks out a decently silent-hill style game.

-Z

2010-03-30

Dream - Really? FF13 dreams already?

Dream: 2010-03-30

Summary:

While working out at a new gym, it turned into some sort of FF13 game.

Details:

Apparently I started at the gym; well, it wasn't an ordinary gym, it seemed to have a very tall ceiling like one of those large superwalmart buildings, and plenty of mercury bulb lighting, keeping the entire indoor place lit well. It was also confusing, because equipment was next to kiosks that were selling workout equipment; apparently, you just grabbed what you needed and paid when you left; they had all sorts of machines and freeweights; it was a pretty cool little place. I started out on some 35 freeweights to warm up, and ran into Jennifer; apparently she was running the place, so we chatted for a while, then Mike D. showed up so we started running around the track, but he got distracted because one of his old buds was on a barlift machine; so he stopped running to chat, and I continued lapping. I grabbed some weights with triggers on them, and continued running, apparently these weights were inertial increaser's; they had gyroscopes so they could alter the resistance to change in direction, which was a weird feeling. After a few more laps, I walked over to the heavier machines to cool down, since nobody was over there, so I thought. I ran into an old friend, Randy M., so we talked for a bit, he seemed to be doing well.
Well, I also ran into Caleb, and he talked about his new job and some other nonsense, and I was about to continue running, when on the end of one of the later laps, out of nowhere Kami appeared; Not the lung-style kami, but the new anthroid-chubby version. I laughed, and went to have a conversation, but as anticipated, the dragon noshed on the nearest redshirt (nobody I knew) then attempted to take me out. Luckily, he was in a rule-restricted area, so I could easily dodge his attack. Then everyone started screaming, and these really strange alien creatures began to enter the gym; Things then turned into final fantasy 13 style; I was the leader, of a special class "Assist" though they abbreviated it "ARC" instead of, well. Kami joined my party as a "Power" class, which was also special, denoted "VOR".
Well, we ran into our first encounter, attempting to wipe out the invaders to save the people at the gym (mind you, everything is in full HD at this point, every whisker, blade of fur, gnarled expression and clothing was maximum detail and behaved graphically like any commercial movie). The creatures were apparently 3 legged insect like aliens, of a drab brown color holding some sort of purple-raygun weapon, with beady black eyes and tentacles for mouths. In fact, the looked something like a mutated vortigaunt + maraisreq monster; I wasn't sure why but they also had on weak armor like leather or something. In either case, when we entered the battle, the music naturally went from "06 - The turn storm of road canyon.mp3" (Choro Q HG 1) to "Blinded By Light" (FF13 battle music). I was acting mostly like Snow, I had no weapons so I ran over and beat the hell out of it since Assist class has instant preemptive no matter what. Kami just kinda sat up, apparently starting the battle in a sleeping position, and fidgeted his paws together; The alien fired a beam, a nice shiny purple effect, I dodged quickly. On the next turn, Kami used "Water Blast"; a very high level water magic attack, and being an Assist I augmented with "Spark", so that the combined damage was water + electrical, and did a large factor more than it would have alone. The bug was vanquished, we got points, and moved on.

Then my alarm went off before I could continue playing the game *sadface*

Was kinda nice to team up with RPG characters that don't completely suck. A tad unfair, but who's counting?

-Z

2010-03-06

Dream - Terahertz Sono-wave gaming machine

Summary:

Goathouse, me, and some of my other friends were at some drunk party, it seemed like we were in Canada and the bars were really slow, so it was about 5:30 am, and we drove to this gaming place that had been raved about (~2030, but we're still in our 20's). This huge gaming place has a large TeraHertz gaming server that linked you into the game with both mouse, keyboard, and a brain-link (looked like a plastic necklace) to allow the game to read your input before you actually make it. It didn't "put you in the game" but it was as close as is physically possible (you were still sitting down staring at a screen (4k screen))

Details:

I don't remember much about the party, except brien, john, jay, zach, kelly, adam, and probably everyone else were drinking a lot, I had too much already so I was on the floor (as usual); Somehow our drunken mobility decided we should play games since the only two chicks present were dumb. We had all heard about this new "synthesis" gaming experience, and somehow we all drove there.
When we got there, it was this big decorated building in white, with lots of industrial pipe decor, something right out of universal studios or something. After going though a regular queuing line (not many people there at 5:30am) we entered, and inside was a large guest room and a initiator room, full of computers (from a yet-nonexistent company; they were *nix though). Inside there were the two guys responsible for training people to use the machines, some regular fat unix looking dude (beard, scraggly, glasses) and a more normal dude. (no chicks in the VR business, save for Nisha, which was the goth-type; she worked in the server room. cute!) Well, we all took our places, and they talked to us about safety, how the device worked, and what the hardware was; meanwhile Supreme Commander 3 or something played on our monitors, showing us what possibility the games interface had. We were all given a necklace that laced over the shoulders like a seatbelt, so it could monitor our heart and safely disconnect us if things go too intense. There was also this V-shaped plastic thing that we wore on our necks, that connected to the VR interface fort (some sort of SATA looking connection). This device was responsible for reading our brain waves; and giving the game the appropriate data stream.
So, after getting lectured about problems we might encounter, and how to shut off the device (apparently, some people can't handle being "in" the game) we were moved into the next room once the previous group was finished.
The next room was all black, save for the soft glow of many high resolution computer monitors (4096x4096 displays, at least 25 inches wide). Each computer station was put behind a plexiglass wall, which contained the tera-server, running inside a bath of liquid nitrogen. the thing was the size of a van, and goth chick was constantly checking it every 15 minutes (in a suit :( ). The room had a tall ceiling too, was cool as well. Well, we each sat down, had 15 seconds to connect to the game then WHAM

IT started off as Unreal Tournament Tera-Edition; And we were all running around in a familiar setting blasting eachother with familiar weapons. It looked great, all the monitors were 3D, and the gameplay was fluid as always. However, what was happening was the brain reader was calibrating; by using a known experience, it can use that as the heuristic to generate the 'next best' scenario, and get used to your mind. Eventually, I no longer needed to use the keyboard or mouse to control my character, but had hands ready just in case. The unreal part was fine, but I ran away from the fight, wondering just what kind of virtual world this was. Apparently, just around the corner for unreal world was medieval world; a place full of Dragon-Age type shit; swords, magic, magicians, plague, dragons. All the generic stuff. The seamless transition was really something else, I just ran in there, fully armed in unreal tournament gear, and began running around the town shooting down guards. Eventually the game adapted, and it took away my gear (Unfair Use Justification Award) so I was now a peasant trying to stop a feudal government. Along the way, one of the AI people helped me out, and don't get me wrong, the AI was as real as another person in this game. IT could talk, interact, think and do all by itself. Gone are t he days of state based AI, now we have true organic processors that act alive (in a scarily realistic way). So, we and this other peasant start sneaking around, picking off guards using our knowledge of tactic; The AI player copied me and learned really fast; We eventually snuck our way into the armory, and found a treasure vault. Meanwhile, some other unreal players ran by outside, just continuing to fight eachother ignoring they were messing up medieval world. So, after stealing lots of money (the game felt real now, you know how that works when you get "into" a game) we tried to escape, but the guards were on us. WE could run faster though, and escaped outside and got to the top of the buildings quickly. The guards were real hesitant to follow us (soled shoes suck on mud roofs); so clambering onto the roofs we could see for miles; the entire kingdom of medieval world; the border of Jurassic world across a small river, the b order to jungle world up north, the "dead sea" (the admins told us the world did not wrap; it terminated and anyone going into or above the dead sea would be eaten ala Spore.) And the unreal world, with projectiles constantly going AWOL like fireworks. There was only one dragon in the air, but it didn't seem interested in what we were doing. So, after jumping around from roof to roof (the medieval buildings were 50+ ft tall, and made of very thick mud and concrete, supposedly a game design decision) I found that there was a giant golden cannon hidden atop a tower that we could get to, so after clambering around (I found a diamond, +5000 points) I aladdin'd my way down to the ground, still running from guards, pushing people away. The guards stopped taking interest in me, as my AI friend had got upitsnacthed by that flying lizard. They were busy, so I ran over to the cannon, and once I managed to get to the top via lots of hardcore mario platforming, I got a LEVEL SELECT. Which, I could preview any area I wanted, to see what there was in this unbelievably huge world to explore.
From memory, There was Unreal world, Jurassic World, Medieval World, Jungle World, Ice world, Air world (high skyscrapers & scaffolds), Slug world, Fusion world, Food world, Random world, Dark world, and quite a few others. Each world had it's own creatures, people, and AI's to interact with. The game was essentially 0-consequence real life; Everything could be interacted with, and it would change somewhat as you would expect. If you "died", you could respawn or chillax for a bit. The game kept track of your lives, score, and modified each by each region as needed, so it was unfair that I found that diamond (putting me ~4600 points over the top unreal player), but that's why it was there. Exploring was always a reward, but it wasn't always immediately obvious HOW you would be rewarded. Fights were as realistic as the zone employed; it could be RL fighting (as in medieval world) or game fighting (unreal world) or even turn based MMO style. Everyone that was local lan was playing in the same server, if we'd have cooperated it coulda been amazing.

Then, before I could select a new world, our time was up. Shaking myself to consciousness, apparently me and Zach were the only two really affected by the system, so we had to sit in a waiting room for an extra 5 minutes while we recuperated. (the machine can raise your brain temperature; so this is somewhat dangerous to do, especially if you get into it) WE talked about what we did, Zach went up north and conquered an entire north pole civilization using necromancer powers; murdering stupid elves and christmasy things. Sounded like fun! After a while one of the employees came by and offered us jobs, because we were able to actually interface with the system and do things most people couldn't. We declined for the moment, and the dream ended because some noises coming from the living room woke me up.

If a picture is worth 1000 words, and this game was running at 240FPS, for 15 minutes, then how many words would I need to describe what I just lived through? (hint: 60*15*240*1000) Unfortunately, I'm not into wasting my time describing the emotional and graphical details of the dreams; You'll just have to know that whatever it was is more vivid and amazing than anything you're used too. You'd have to travel to world to even get close to experiencing these kinds of wonders. And trust me, as anyone who has "been there" knows; Pictures, movies and games can't even get close. Being there is really something else.

-Z

P.S. There was some cool fanservice in the game I didn't mention. ;)

2010-01-31

Dream; Final Fantasty 6 - 2

Summary:

A high res remix of FF6 with a improved battle system, extended more in depth plot, and a lot of additional new features.

Details:

So, I put in my game blu-ray disc, to see what all the buzz was about with this final fantasy 3/6 TWO controversy; Having enjoyed the hell out of the first FF6, I was really skeptical about the remix. To my surprise, it both exceeded my expectations and blew my mind with awesomeness.
A lot of it is really fuzzy in memory, but Kevka was a lot mroe seriously evil in this one, and the plot was changed to match up with the more recent final fantasy's; The idea of 'magic' being used to dominate and ultimately destroy the world was still there, and espers were still there, but holy shit they are scary as hell in high res. Also,  the espers are a lot more interactive, not merely quest items; They do actually converse, follow you around and make suggestions depending on how you treat them. Naturally once you kill an esper, it only exists as a spirit, so they cannot do anything until you summon them, which always costs 1 HP + some amount of MP. The battle system was vastly improved, implementing a mixture of both real time fighting and strategic turn based trickery; Also all done in glorious 3D. You had the option to command classically, where actions were mere dice rolls, or you could switch to Star Ocean mode, and stop-time fight all at once, OR you could keep the 'Neo' mode, where it was classical turn based, but each action had *you* play it out, so if you said 'Sabin -> Pummel' then you have to run in with Sabin, and mash buttons or do some sort of mini-game. Sometimes, basic attacks are just running and aiming correctly; which means doing so gives you far more options to have critical attacks, since WHERE you hit an enemy determines that, but only in Neo mode (IE using a sword against the neck = critical hit)
The graphics were photo-realistic photon ray traced HDR Spherical Harmonics ambient occlusion self shadowing ect. goodness. It was amazingly pretty to look at, all of the objects had absurd levels of detail, when you put it in star ocean mode and paused, you could move around the battlefield to look at all the detail of the characters and monsters, seeing every little scar, emotion, item, scrap of clothing, was crazy! Kinda like the first time you discovered link wore earrings in Ocarina of Time.
So, now we have a excellent combat system, an amazing visual presentation, and the traditional orchestral music but this time with less music; Most of the game takes place in an 'ambient' environment, only when you do something that requires a beat, or a induced emotion is there a musical score. This adds greatly to the emotional and immersive impact of the game; For example, walking through a town sounds like a town, but stopping at a shop to do mundane purchasing pops up the lively 'shop' music, and it all blended acoustically together, forming a seamless transition. Lots of the environment was interactive, pots, crates, bushes could be examined or broken; Obviously sometimes with consequences; Most of the time you wouldn't really find anything either; Exploring was well emphasized, there were still invisible walls, but they were there only to help you, and eventually dissapear if you push on them long enough. Though, trying to walk off a cliff, your character stops youl, not a wall. They don't want to jump in lava, spikes, acid, death.
The controls meshed well with a PS3 remote. Was very intuitive for an RPG.
So the plot! Because that's what was so awesome about FF6, is how you got drawn into the world by the story. This is where I'll likely make mistakes; because I didn;t even get past the first part of the game, since I only played it for about 6 hours.
I remember being 'Setzer' in a team with Edgar, Cloud (wtF? musta been gau), Celes, Terra, and Relm (who is an adult this time around, if I could draw you a picture of her she'd get instant cult fame), and we were walking around some town, stocking up before attempting to infiltrated on of the larger magitek ships that had been docked in port. The world was torn, there were multiple powers fighting for supreme control of the magitek and espers, and there was of course the resistance that aimed to stop them from killing the planet/espers. That's what you do, and the first part was just going from town to town, fighting monsters (another note, monsters are very dynamic in Neo mode; They have a lot of specialized attacks and depending on the monster, you can indirectly tame/lure them depending. IE, I would have Setzer try and bait them with food, then Cloud critical them when they got close. Earning me a 'Evil' ranking most of the time, but hey, times are tough. I'm sure the game will cause that to backfire on me later, for being evil to so many of a specific enemy I'll probably run into a much larger one that kicks my ass)
So, eventually, after a lot of fighting and killing magitek guards, we found a drawbridge, and had to solve a physics puzzle with an open ended solution. WE srewed it up, so we had to find a boat and cross the moat; didn;t work, we ended up swimming into the sewer pipes of the ship (if it HAD worked, we would have saved a lot of time & got some cool items)
So now we're in the bowels of this really large, iron rusty colored monster, it was insanely large, larger than the superbowl; it had lots of smoothed out high tech looking cooridors, and the platforms above this sluice, which Terra figured out was 'cooling' their magitek reactor, which contained an esper, we eventually got cloud to ninja us a guard so we could take their weapons; The room we were in was about 35 ft tall, the bottom half had a hemispherical cutout that was full of hte sluice we were hiding in, and was really dark. The top half had cutout platforms nad rooms, lots of scientists in white walking around, and guards with white and red symbols. They looked a lot like the ones from FF6, mind you. so we split up, and each took some positions to try and get intel on where the reactor was. Most of the girls took labcoats and became 'scientists' and the guys took on casual appearances (there was a entire city in this ship, after all.) After some espionage, we got really unlucky, and Kevka showed up. Kevka, in this stage of the game, looked a LOT like sephiroth, but with a much crazier grin all the time, and was tall, but did not yet reach feather in hat stage. He was becoming mad with power, but hadn't completely lost it. Well, Kevka has a few bodyguards, and was actually being pretty personable, hitting people he didn't know on the shoulder, really hard and laughing about 'How's the Day' or something like that, knocking them down and just laughing about it. Was quite fitting. Apparently, Cloud got pissed off and confronted him...
So suddenly, boss mode happened.
Boss mode is really different; If you confront a boss OUT of character, this special mode comes up, where time is slowed down a lot, and you get all these new special gauges; Because if you were to actually defeat kevka at this point, it would probably mess up the game, the game makes sure to give you a damn good challenge. When a boss fight occurs, your teammates can suddenly join the 'battle sphere' which is a large area surrounding the boss. Joining it gives you your command queue;
Once the fight starts, everyting happens in REAL time, but slowed down about 10 times; so you can see everyone attacking at once; thinking quickly is the only way to survive. Kefva had a revolver like the joker, and luckily missed cloud but killed two people in the immediate area (battles don't "transport" you somewhere else, you exist in the world at all times, so your fights can fuck up the world!) cloud tried to hit him but got stabbed in the gut (Kevka had armor on under his white suit) so he backed off; Kevka ended the fight by default, so we couldn;t fight him. Apparently, he had no idea who we were, and was actually delighted we tried to kill him. Something about "I haven't seen such fire in a long time! Cecil, get this man to the recuiting station!" And just continue on, laughing manically after hitting shocked cloud on the shoulder, knocking him down. Kevka's bodyguards never entered the fight, indicating they knew you were no match.

There is so much detail in this dream, but I can't really remember all of it. Point is, if it was written out correctly, I sure hope that someone makes a RPG like it. Woudl be awesome.

-Z

2010-01-29

Picking, Mouse Projections, Screen to Ray

 The Problem:

When the user clicks on the 2D screen, how do we know in 3D coordinates where they actually clicked, so we can select the object they clicked on?

The Solution:

Obviously a simple geometric / linear algebra problem. It is commonly done by querying the graphics card for the projection, modelview, and viewport. I despise asking the card for anything, as it should be a one way pipe. (minus CUDA, which is still new).

Our special case is, if we know how we constructed the projection matrix, we can easily invert the process to convert a screen ray into world coordinates. Then we can make those world coordinates relative to our "camera" matrix, and you can then perform a ray to scene collision detection;

This is also called "picking", "selection", and has a variety of other names. I highly reccomend never using any method but your own geometric methods, since you can't rely on this type of functionality to be consistent, without ensuring your own code is.

In layman terms, "You can click things in 3D" / "What you see is what you get"

The orange dot is the actual 3D position of the Ray -> AABB intersection
(A Ray is defined by a point and a direction, a AABB is a axis aligned bounding box, so it has a minimum position and a maximum position, or a center and a half-size for each axis)



Here's some code snippet:

class matrix
{
    public:

    //+X = left, +Y = up, +Z = forward
    float Xx, Xy, Xz, Xw;    //Order from spec; Colum major 0..16. Have to transpose all the mathematics (internally)
    float Yx, Yy, Yz, Yw;
    float Zx, Zy, Zz, Zw;
    float x, y, z, w;

    ...


void mingl::matrix::frustum_get_ray( int umouse_x, int umouse_y, int window_w, int window_h, float distnear, float distfar, float fovangle, float & Rx, float & Ry, float & Rz, float & Rdx, float & Rdy, float & Rdz )
{

    float scrn_x =  (float)(2*umouse_x - window_w) / ((float)window_w);
    float scrn_y =  -(float)(2*umouse_y - window_h) / ((float)window_h);

    float td_dx, td_dy;

    float td_tan = tan( fovangle * (M_PI/360.0f) );

    if( window_w > window_h ){

        td_dx = td_tan * scrn_x * ((float)window_w/(float)window_h);
        td_dy = td_tan * scrn_y;
    }else{

        td_dx = td_tan * scrn_x;
        td_dy = td_tan * scrn_y * ((float)window_h/(float)window_w);
    }

    //Generate points on the projection viewport
    float p1[3] = { td_dx*distnear, td_dy*distnear, distnear };
    float p2[3] = { td_dx*distfar, td_dy*distfar, distfar };
    float dv[3] = { (p2[0] - p1[0]), (p2[1] - p1[1]), (p2[2] - p1[2]) };

    //Note this is a specialized "To Global" operation (because of the inversion on axes)
    //Ray does not start from center of camera.
    Rx = x - Zx * p1[2] + Xx * p1[0] + Yx * p1[1];
    Ry = y - Zy * p1[2] + Xy * p1[0] + Yy * p1[1];
    Rz = z - Zz * p1[2] + Xz * p1[0] + Yz * p1[1];

    //note the conversion.
    Rdx = -Zx * dv[2] + Xx * dv[0] + Yx * dv[1];
    Rdy = -Zy * dv[2] + Xy * dv[0] + Yy * dv[1];
    Rdz = -Zz * dv[2] + Xz * dv[0] + Yz * dv[1];
}
 From reading that code, you'll notice the projection matrix is defined by:

    //3D projection matrix via symmetrical frustum; the most common projection.
    float fov = 60.0;
    float aspect = 1.0;
    float unear = 0.125;
    float ufar = 1024.0;

    float top = tan(fov*0.00872664625997f) * unear;    //0.00872665f = pi / 360 = (pi / 180) * 0.5
    if( (window_h > 0) && (window_w > 0) ){

        if( window_w > window_h ){

            aspect = float(window_w)/float(window_h);
            projection.frustum( aspect * -top, aspect * top, -top, top, unear, ufar );
        }else{

            aspect = float(window_h)/float(window_w);
            projection.frustum( -top, top, aspect * -top,aspect * top, unear, ufar );
        }
    }


void mingl::matrix::frustum( float ul, float ur, float ub, float ut, float un, float uf )
{
    float dx = (ur-ul);
    float dy = (ut-ub);
    float dz = (uf-un);
    dx = (dx <= 0) ? 1.0 : dx;
    dy = (dy <= 0) ? 1.0 : dy;
    dz = (dz <= 0) ? 1.0 : dz;

    identity();

    Xx = (2.0*un)/dx;
    Yy = (2.0*un)/dy;
    Xz = (ur + ul)/dx;
    Yz = (ut + ub)/dy;
    Zz = -(uf + un)/dz;
    Zw = -1.0;
    z = -(2.0*uf*un)/dz;
    w = 0;


Works beautifully! Onward with my megaman project.

-Z

2010-01-24

Dream; Apparently, photon rendering is a big thing

Summary:

reed, scott, amanda and I go on a failed tulsa telescope trip; then reed and I play a VR cube-like game.

Details:

I'm trying to remember the events leading up to the start of the 'game', there was something about a really long trip to tulsa, and scott, reed, amanda and I broke down so squeeky came by and had to rescue us, with nathan, turned out we had to get a rental car or something and who knows what else. I think we were going on a camping/telescoping trip, but I really don't remember as there was this phase shift,
Suddenly, it was virtual reality videogame time, and after watching this boring plot introduction to these two biologists, both of which were studying some fossils up in the mountains, got killed by natural enemies like venomous spiders and snakes; It was odd, as if the grounds were possessed.
Suddenly, it fast forwards, and this place as near this ancient ruins site that looked like a Cube level, I began running around, pickup up weapons in the arena; Little chuck came by and asked me some stupid question, I ignored it and showed him how awesome the graphics were. After that, the gameplay started, and I was waiting for someone else to join. Apparently though, there was a pterodactyl as an enemy, and fucking hell it was invincible. So I'm running around, this super skill avian like monster, at least 12 ft wingspan, is trying to hit my collision box and transfer away 25% of my health; I pick up this regular pistol, an AK-47 like weapon, my M-16 (favorite), futuristic purple plasma belcher, and a green flux rifle, all of which had multiple secondary modes, and looked awesome like they SHOULD be doing some damage. Nothin, the damn bird was invincible. So now I'm running around avoiding getting pecked to death, trying to shut doors behind me, but the goddamn thing could open them with it's face; so it was able to follow me everywhere, there was no escape. Randomly, Nemesis shows up with a rocket launcher and is now also trying to kill me. Luckily, Reed logged in and we both started trying to kill nemesis, but the stupid dinosaur was continuing to attack me only; who knows why.  Nemesis could run like nobody's business, so we were having trouble getting away from him; The arena was a very large place, with ruined columns jutting out all over the floor, there were 2 main corridors you could go down anbd a 5 - level rope bridge with huts area in the middle of this Colosseum like ring; The other corridors led to many separate and unique rooms, and a grand hall; the separate rooms usually had a theme, like trophy room, bath room, study, torture chamber, ect... But we ended up climbing our way to the top of the huts since nemesis couldn't jump, continuing to get hit by that stupid pterodactyl, and eventually make it to the top hut with a large button panel. I hold the door shut, the damn dino bird was really strong, it tris to swipe my feet or grab my ankles, since it was able to hold the door partially open, easy to dodge b ut I thought twas was an unusual detail for an enemy that basically just runs into you; maybe there were conditional attacks that we'd really need to avoid?
Either way, there was a puzzle, I tell reed to solve it, he does, but in a way the designers didn't intend, so a giant swarm of anti-dermestic beetles comes from nowhere, and we start running and shooting at them, nemesis shoots them all with a rocket, and we continue playing the game.

2010-01-20

Dream - Fanservice; Slightly disturbing

As stated, this is somewhat a fanservice dream. Don't read if you don't like reading disturbing things.

Summary:

Something about folks visiting someone's friend because their friend's just got killed in some accident, or maybe from cancer. So we visit this freaks house, nice house, then go get some groceries before going home and I find a dreamcast and play this crazy vore fanservice game where you were some chick that could turn into a dolphin.

Details:

I remember some of the dream, not the events leading up to visiting this random guy. Apparently, some friend of my parents had kicked it, don't really know how they died, but they had no surviving relatives, just a friend that had been taking care of them intermittently, so they decided to pay a visit to him to get the scoop. This dude lived on the coastline, somewhere further east, was a beautiful 4 acre lot on the water, with it's own jeti and pier, boatdock, multi-part house (had a main home, and a side home for tools/games like Bill's 'Mancave') and a very well kept lawn. This guy was single though, which was odd. Either way, I'm bored, the dude doesn't seem that interesting, and he actually had a friend over, which I thought was strange, since he knew we were coming over, but I guess the friend was just leaving. Ironically, I overheard some of their conversation, and some words came up about eka's and such, and I wondered who this guy really was.
So, we putz around his house, he shows us all the cool shit he had, like the exercise room with TV and his tool filled garage with a classic car, his two cats, blah blah blah. He asked me some question, I can't remember what it was, but it was indirectly asking if I was a member of eka's too, so I responded "I bet Imaginary Z would know." and then we left.
Was really weird, and boring. No cool events, but the house was pretty awesome.

Second part, we're driving home, it's raining a lot, so we stop in at a place that is topologically identical to my Homeland in mustang, so the folks go in and start shopping, me and sis hang out in the front, where they had some crazy arcade games. I find this one, I make fun of it, because it was something like a mermaid/transformation game thing, the demo reel looked like Ecco from the dreamcast. So, I give it a shot, it played fairly well, like a mario 64 type game, there wasn't really anything slowing down the gameplay, you could run around as some chick, use a energy whip to kill shit like Zero suit samus does in brawl, and, if you jumped in the water, you could turn into a dolphin and fly around. The dolphin form initially could not shoot, and the game did not prevent you from going into 'difficult' areas, so, that's the first thing I did. Not too surprisingly, there were these lightly lavender/grey colored plesiousaur/dragon monsters slowly moving around, and since you didn't have any weapon equipped, speed-ramming them did nothing, I tried it a few times, but apparently, if you get too close to their neck/head kinematic range (kinematic range is a probabilistic region defined by the "energy" required to stretch a chain of bones to that position; Much like the 'rope around a silo' problem) you get treated to a funny little cinema scene of the thing swallowing your dolphin with ease. Though, the designers, being sick fucks apparently, let you mash buttons to try and wriggle enough to make it spit you out; So it wasn't really insta-death, though you were given the option to 'suicide' or attempt escape. I thought that was rather bizarre, so I experimented with it; It turned out a glitch allowed you to change back into human form while being eaten, but due to the way the game was programmed, your dolphin form would still exist, so your human form just pops into existence next to your assailent, so you can wail on it's ass while it eats your old form. If you happen to rescue the old form, your human form dissapears, and you're a dolphin again. Was quite strange, and even MORE weirdly, if you let the sea dragon finish off your dolphin, your human form would NOT disappear, but you would switch control back to the swallowed dolphin, from which you could struggle indefinitely, with accompanying highly detail animation (the "object under a silk cloth" type animation) until you got bored of the screen telling you to restart. But when you DID restart, you would start from where you left off the human form, in a way, you had a glitchy emergent behavior trick; Maybe this was intentional, I don't know.
The environment of the game was very blue and icy looking in color, the waters were dark blue and deep, there were very few creatures or plants or things in it, just a couple of those sea dragons and some glowing rocks at the bottom, maybe 500+ ft deep. The point was, this was obviously subconscious fanservice; I'm not complaining but I sure wish I had those models. They looked oddly similar to one of the models I'm currently working on though...

2010-01-10

Odd Nuclear Disaster Dream

Parts of this are in fragments, but it was rather long.

Summary:

I pick a fight with some douchebag highscool kid trying to currupt one of my friends little brothers, he pulls guns, I smack them away and shoot him. Nuclear disaster happens ,the world floods, all temperatures rise near 110 constantly, people starve and run out of water, marine life comes ashore (all the way to Kansas) bizzare cults and non-eco friendly clans develop, me and the dragon clan have a huge fight out with this large group of savages; we win in the end.

 Details:

The first part of the dream involved me going to some sort of high school graduation; Apparently, mike, dustin and some people I forgot I knew were there, and dustin's kid was graduating to middle school finally (zach),  so I went along to see him walk along his ceremony. At the same time was a high school graduation, filled with lots of idiot punks as usual. Though, Zach started hanging out with this greaser punk in leather, I'd never seen this kid before, and he was trying to tell zach to do drugs, and hang out with the cool crowd. Zach was a smart kid, and knew to stay away, but I saw this event occur later, and confronted the idiot, and we got in some sort of stupid argument and he pulls a gun on zach and threatens to shoot him, so I pull a gun as well, taken from some kid I secretly swiped, and I shot at him. Lucky for him, the gun sucked and it grazed his head so he let go and put his hands up and ran away, so I went to talk to Zach but zach ran off to go with the punk kid.
Chase scene ensues, and the punk drives off but only for about 100ft since car's don't work without gas; And they take off running. I eventually chase him down to this large apartment building, and we face off, I disarm his stupid ass and he pullls an old knife out, threatens me with it until I disarm him from that too, then I just shoot him in the foot and kick him out the door, which at this time led to the ocean, tens of feet down. The fish got him.
So now time fast forwards, zach is in his teens, dustin and co are living in this high rise building, we're on the 20 somethingth floor, which the bottom or so floor are completely underwater, networks of floating bridges are made between buildings, and ours just so happens ot have the only working well, so we are naturally well armed and defended, I had personally executed hundreds of people, and fed them to the local fish so we could have food.
IT wasn't exactly a pretty future, but there were still lots of good people in existence, but the beutiful thing is it's OK to weed out the stupid people now, unlike today where we seem to encourage the breeding of idiots; In the future, if we were breeding idiots it would be for food.
So one day, I was sitting in the window with my homemade sniper scope, and I notices some large black asian dragons flying around some of hte other buildings, I showed everyone and pointed out that they were people holding up these elaborate costumes, running around like idiots. I heard one of them come up the stairs, and this weird ass group of Yoga people just ran through the building in dragon costume, saying a few passing words and leaving just as quickly; taking nothing, but making their presence known.
Eventually, I went over to their cult, and found out they were a group of ecologically minded folk, who were valuing the same ideals my tower did, preserving the marine ecosystem so that it would naturally sustain and preserve itself, and us in the meantime. So we banded up, and I joined the dragon cult minus the goofy rituals.
Well, one day they pointed out that there was this large band of stupid idiots trying to drag nets across our oceans; but they were heavily armed and there were many of them. I confronted them once, killed four of them and slashed their nets; all before their bandwagon began firing back and I ran them into a trap, as hundreds of these motherfuckers came out of nowhere, wasting shots trying to kill me. I lured them into the courtyard of a hollow building, where our dragon clan rained death upon  them using medeival weaponry and some of my own custom devices; After a long battle, both sides had heavy losses but we mostly wiped out the intruders, I ran down and cut their throats, those that survived. I alone, apparently, was immune to death b ecause I knew what the future meant for humanity, and I also knew that executing a few humans would mean nothing on the cosmic scale; especially those who believe that might makes right, and anchient reptilian function that lives on as our own personal demon.
Eitherway, we fed the fishes, and birds, and made out with a large feast; sadly our numbers had been halved, but we set out a ritual for them to be given back to the earth; And time proceeded on. Maybe sometime in the hundreds of years distance the earth would start repairing itself, and we could recontinue a new human spirit; One that values peace, balance, and the cosmos more than itself.

Nothing feels better than killing stupid people, then feeding them to the earth. If only our world's educational standards could promote real thinking instead of political regurgitation. Don't forget that there are a lot of scientists and engineers that are stupid; Stupid is defined as lack of tolerance and understand, and lack of diplomacy. you can be book smart, money smart, street smart, and still be stupid as a rock. Only the scientific mind that values the cosmos is intelligent; your reptilian brain is the enemy. Rise up against it.

La mayor victoria esta en vencerse a si mismo.
(The greatest victory is to conquer yourself.)

2010-01-09

F'd up dream

Summary:

Pan-Man family versus Super Mario Bros as they begin to destroy a holiday resort; I bash in a bobcat's skull with a 2x4 to save Scott, who fell down a rusty sewer grate.

Details:

I remember being in some sort of older van, like a 1996 Chevy Lumnia or something, with my sis, dad, mom, all driving up to Colorado or somewhere equally resort like. It was cold, snow glazed the hills but the temperatures were not bad, so the roads were fine. There was plenty of traffic, I had my Sega GameGear and was playing Sonic 2 on the trip. Eventually, we reached this large ski-resort place, which was connected to a hot spring, it was a nice place, rustic decor, but elegant tables, paintings, and professional attire everywhere, somewhat like  the interior rooms on a cruiseliner.
So, we moved our luggage to the room, which had the typical 2 bed Suite, a small kitchinette and 1 bathroom. Obviously, you were not meant to use the room for more than sleeping, so we all discussed where to go grab some food; Turned out there was a really nice buffet downstairs in the lobby, with lots of types of ethnic foods. So, we go wait in line and eat dinner aqt the buffet.
Meanwhile, the camera pans over to the entrance where people check in, and , well, Pac-Man and his family (pac jr, pac baby, mrs pac man, pac man and that little dog) check into the resort as well; If you have ever seen the pac man cartoon (I do not recommend it) You can imagine the stark contrast as cartoon characters walk into a resort with humans ala Roger Rabbit style; It was nightmarish, but they were just vacationing as well, nothing weird. Of course, in the background see Clyde and Pinky conjuring up a plan to kill him as per usual.
The camera goes back to use, and we all split up, mom + dad hit up the casino area, and I just went to the game arcade to see if I could beat donkey kong and galaga 88'; I dunno where sis went to, I think ben was there too, so they went somewhere. Odd that ben was not in the car ride with use but appeared later.
So I'm in the arcade, and it pans back to the pac fammily as they tour the resort; being pac people means they don't have any luggage; Pac man had on his red tophat and mrs pacman had some sort of scarf/ascot thing on. Either way, they were looking at the pool area, which was a lake formed by natural springwater, so it was a large, moderately temperatured swim resort, but nobody was in there, weirdly. Spatially, the pool was rectangular, one half had a large auditorium for concerts, the other had the arcade casino, and the other half was leading back into the resort complex. So, at this point, the ghosts come out of nowhere and attack that pac family, and they go all super-pellet and try and fight off the ghosts; It's comedic, and total 80's cartoon style, but as a team they eat teh ghosts and those creepy as hell floating eyes go back to whence the came. They brush up, and pac man decides he needs to get cleaned up before hitting the casino!
The ghosts respawn from somewhere, and start messing around in the arcade, I leave as soon as I see them, I have strong racial prejudice toward non-physical entities. But they check out my game, and do some sort of ghostly magic and pull the mario brothers OUT of the video game, even though it was donkey kong, we get the Super Mario Galaxy looking brothers in the real world, which was more cartoonery nonsense. Of course, the mario bothers immediately stare at the ghosts, who shy away, and they start talking like mario and luigi, and begin destroying bricks and bouncing around like maniacs.
Pac man hears the commotion (Apparently the pac family is well adjusted to western lifestyle and causes no harm) and they rush in to stop the brothers, but, none of their pac-magic works against them; they aren;t ghosts, and they kick the hell out of pacman, but they really aren't willing to do too much, since they get confused about what is going on.
Meanwhile, Pinky gets a cardboard cutout of bowser, and a princess (live, real person that looks like somewhat like Peach) and lures the brothers, but they tank this, and both pull out super stars...
When they do, the game changes, and the brothers start pulling insane acrobatic stunts and just plow through the pac family, and contiue breakign and destroying the resort. The weekend police show up and rain firepower on them, but all of them get 'thrown' away from the super star powers. Everyone is now running around screaming, trying to escape these invincible madmen, people swimming away, going places they shouldn't. Scott apparently was there, and was running away from teh crowd down a rickey, rusty railroad tie area which led away from the resort through the hot spring, but a large metal grate collapsed and he fell down some tunnel. I didn;t notice for a while, since I made sure my folks had got to safety, and I went back to see if any hot chicks were in trouble; None to be seen, but I heard some bullshit and found scott trying to scar away a large bobcat, who was lured by the smell of blood and injury. So, I picked up a two by four and yelled at it; The cat was hardly persuaded, and jumped at me, so I bashed it's head in Scout style. The cat reeled, and started walking funny, it's skull caved and blood pouring down it's face, as it laid down to die from the concussive loss of lifegiving fluid. Ihelped scott up, he got scraped up pretty bad, but only twisted his ankle. So we left, and the mario brothers had run away, jumping around and screaming like madmed, powered by the ilusion of star power. The pac family was knocked out, and the ghosts had one this time.

None of this mess made any sense. What a waste of sleep power.