2008-08-22

Just a post, like every normal blaugh

So, I'm closing my house wednesday in Galardi. I landed me a 1654 sq footer, with some nice features and dragon-sized rooms (no kidding! The ceiling is like, 10 friggin feet tall!), a big kitchen with a vaulted ceiling, breakfast room, and the living room is a good 20x18 or so feet no including the tile parts, large master about 18x12, big master bath with a jacuzzi tub, two aux bedrooms at 12x9, more normal sized but with deep closets, and a two car garage. Small yard, but no back neighbors at all! I'm just glad this mess is finally starting to be over.

Here's some interesting trivial, the price of happiness. Interestingly, it's about 23,000$USD a year! Because, I'm changing jobs, and losing THAT MUCH MONEY annually, because my happiness is worth more than that. 45k is livable, but suffering needlessly when other people who are more competent would be willing to do so for that salary (top of 80k 10 yr) can go do that. Right now, I'm too young to give a flip about doing anything more than playing into my retirement, home, and other investments. So, if you ever get in the situation where you are unhappy with your job, AND you are a good, hard worker with a solid education, just go find another job. You have no obligation to anyone, except those you actually care about.

Also, all this cash I am making has nothing to do with my degree, it is simply because I DID WORK. I did it once, my name got spread around, people WANT to employ me. Which, this breaks my heart (shutup, Regina) to no end, because I work with very great people, they're a blast to hang out with, however, the higher ups are killing me (as expected for those who know what I do) and it just isn't worth it. I neither have the correct mentality for this job, or the chronological maturity to handle this type of situation; I have NOTHING stopping me (kids, debts) so why put up with this shit? IF I did, I could use that as emotional and physical support to survive for the paycheck to provide for my family. Without that, my only family is my friends, and I don't provide for them, except that I guess I'm fun to get drunk or something like that. And I certainly don't pay for them... maybe.

To sum it up, I do not think that a 'guaranteed financial future' means shit in a world that does not have a future. Thus, I will choose the path that makes me happy, fuck you world. And your 80k a year job. *flips the bird*


On other notes! I've run into some issues with GUtil for Blender, here's the results:
-You can use a simple function to convert GE position and orientation into any camera flawlessly (refer to _camera functions in game.py)
-When you duplicate a object, it duplicates all child objects with it. So, the Entity philosophy is being rewritten with this in mind, and storing and REMAPPING objects on runtime, that way, the same functionality is present, but none of the gross duplications (this also makes it WYSIWYG)
-Ray sensors are the only sensor that detects static triangle meshes.
-Sensors only detect dynamic objects that are not ghosts (sometimes they detect actors, eh. trying to figure this out)
-A sound actuator cannot load sounds; For each sound you want, you need a new sound actuator (ballz)
-Armature actuators can change most things except blendin times. This is broken, and crashes blender if done in python.
-Using blended animations crashes blender on the second game run (memory leak)
-Rasterizer.mist functions don;t do anything. Someone needs to go glFog some shit.
-If you save a controller object( on your root controller, save that controller) you can add objects instantly, from anywhere (this is key to GUtil)
-Remember that python sucks, and if you delete a object in a sequence you are iterating through, it crashes. So, delay your deletions and additions, but allow the user to kill themselves with a AddNow and RemoveNow function.
-Function calls hurt a lot in python, I wish function pointers could be automatic (working on it, I wish there was a python function that called a function for each object in an array WITHOUT making a new array!!!)
-Obtaining armature bone positions works, but only if there are at least 3 distinct unique verticies in that bone group (IE, a head has ~ 200 verts, at least 140 of those are unique, so we CAN get it's true bone position and orientation). This is done via 'gram schmiddt orthonormalization' or, for those of you like me who hate formalities, you take 3 points, a center, x, and y, calculate x - center and y - center, and cross those to get z, then make your matrix from them. From that matrix, if you know the bone matrix you can calculate the offset and rotational offset to get that point calculated matrix to the bone position. This is easy to do, but must be done in blender, not your game engine (IE, save all the armature and vertex data your can (xyz that is) and then sync it to your game on loading) This works well, and is a very nice thing if you want your dragon to actually pick up and eat the player.
-Sometimes ray sensors miss greatly if they are moving
-You can't store function pointers correctly; Because python functions seem to be evaluated out of scope, if you store a function pointer from one modules scope, then try and call it from another, the actual calling scope changes, so you get fucked. The way around this is annoying, but using the function locals() you can get a map of function name -> function pointer, so you can just store the function name instead of the actual pointer, and this works fine because those function pointers have a different module scope or some shit.

Things to work on, or neat things I have noticed in GUtil:
-Mesh animations are good, the model is accurate and simple
-Adding meshes and sensors realtime works well, same with removing them (no damage)
-Shaders will be nice, I am not 100% sure how to tackle this.
-Generalizing the camera is the greatest thing you can do, it makes any game more fun. Also, since you can getCameraXY, maybe there should be a generalized plane projection function for motion? (IE, if you want to move mario, he moves relative to his current direction, right? If you want to move in the direction of the camera, you project the camera's forward direction onto the XY plane if gravity is in the Z direction only, that way your forward isn't trying to go up or down, and is a true 2D forward. This can also be done per plane normal that your character is on, a traditional 'ray cast' player.)
-Adding entities is OK, but slowdown seems to hit hard around 20 or so complex entities. This is annoying, because I expected 6%, my older versions of GUtil were faster, and I am not 100% sure why, except that there are many more function calls in this version. I bet if I bind functions to local names it'll go way faster. (python uses lookups so bleh)
-You can't deform a mesh that is animated yet. (would be nice to do this after the animated part.)
-Thanks to a friend, you can assign a 'overlay' to your scene via the _overlay actuator, this should allow you to easily print text via that function and move on from there.

Maybe this is too much work for something that is needed. My suggestions are:
-Add a SoundBank actuator, where you load a LIST of samples, and can change them via a property (maybe via index or string)
-Add a AnimationBank to do the same thing, have a list of selectable animations
-Fix the mist functions
-Make aramture parenting system AUTOMATIC (I did it, it should be internal!), just let us know the indices to use! (just vertex parent stuff)
-you could probably add a Motion -> Types actuator to make control a lot simpler.
-Input should have a generic device, so that input key can be set to any input to generate the same result. (I did this, it should be internal!)
-Provide some sort of python game math class. Using Mathutils isn't exactly a good idea, since it is a blender module, not a GameLogic one. We need a Vector, and Matrix, with plenty of functions for interpolation, adding, comparing, operations per element, and all the stuff I had to make myself. This has been needed for some time.
-Get rid of the logic blocks, or at least start to favor making more python classes to use. It's about time this system became useful for something. (and no, saying 'you made it work' is not valid, did you see the CPU usage? That is a crime, my friend. If my C++ games can handle 100,000 game objects and barely choke, why can't GE handle 20? shoot for at least 100 on a decent CPU (2GHz single core))
-What about simd optimizations? SSE2/3 could be great in the game math class!

No comments: