So, 10TB of a RAID 6 resulted in 5.44 TB of usable space; and it only took about 7 hours to parity check, maybe 1 to build! If you think about it.
10TB / 8hr => 364 MBps
Which, my poor ass router can't go that fast.
So the thing is fast. I started formatting and toying with settings and stuff, uploading movies and music to test it's integrity.
Pending results from the UPnP test with some PS3's.
Remove the DNS so the box is intranet only, which is awesome.
Here's what it looks like in action, using Synology's DSM web interface:
I'm a little hesitant to enable the transcoding on it, but we'll test it out while it's still fresh.
Great job so far guys, this is the best tech product I've ever used. Props Synology!
-Z
Miscellaneous banter, Useful mathematics, game programming tools and the occasional kink or two.
2011-02-09
2011-02-07
Synology DS 1511+ - Initial Setup
So, the unit arrived this afternoon.
after a greedy session of package unwrapping, I uncovered the DS1511+ itself.
It looks a lot better than the picture.
Everything is exactly as stated. I had no problems opening the packaging, the instructions were all in a .pdf, easy to follow, the drive sleds were a little flimsy feeling, you have to really be gentle with them.
Basically, you unlock the bay, push in the bay, and it pops out making it easy to slide out. Then, you screw in the hard drive (rubber grommets don't fit for noise abatement, need that fix.) And slide the sled back in, and push the clip back down.
It took me a few tries on the first drive to get it push back enough before it would click back, slightly frustrating, but it only happened the first time and was user error.
With all the drives in place, I carted the unit into the NAS Room, and setup the UPS for the unit.
The UPS is manditory for any kind of storage operation, since if the power fluctuates, you need a battery backup to keep the unit running until it can shut down and suspend proporly.
I plugged it all in, and installed the Disk Manager software.
Now this part is a little hairy, but my systems have auto-everything disabled. So, I manually allows the autorun, and a little splash window popped up, and you click a big install button. Wait a minute, then you detect your NAS.
Initially, nothing. I check the ethernet cable, and I guess it had wiggled out. So be careful with those ethernet cables, make sure you have a good connection physically.
After that, it blinked on, and I logged in.
From there, it got easy. The Linux OS they use is really damn clean. It works through a web browser nicely, I had 0 trouble using it. Was like home.
More interestingly, is that using a OS like that in a web browser (aside from being really stupid imo) was insanely easy to do. Kinda like using a strong VNC/RDP connection.
So, I clicked arround, made some user accounts, setup the RAID6 array, and let it go ahead and check everybody for errors.
So, it should be done tonight.
I'm impressed with this product. Using their software online as a testbed was a good way to test it, and getting the unit in a flawless configuration was a really nice bonus as well.
The next test will be to load it with data, and yank out a drive to see how it rebuilds.
BUT, I probably don't need to do that. It seems perfectly fine to me, I'd rather make sure the UPnP stuff works for the PS3's and the Mac in the house, so I can stream stuff to em.
SUMMARY PROS:
Until next update!
-Z
after a greedy session of package unwrapping, I uncovered the DS1511+ itself.
It looks a lot better than the picture.
Everything is exactly as stated. I had no problems opening the packaging, the instructions were all in a .pdf, easy to follow, the drive sleds were a little flimsy feeling, you have to really be gentle with them.
Basically, you unlock the bay, push in the bay, and it pops out making it easy to slide out. Then, you screw in the hard drive (rubber grommets don't fit for noise abatement, need that fix.) And slide the sled back in, and push the clip back down.
It took me a few tries on the first drive to get it push back enough before it would click back, slightly frustrating, but it only happened the first time and was user error.
With all the drives in place, I carted the unit into the NAS Room, and setup the UPS for the unit.
The UPS is manditory for any kind of storage operation, since if the power fluctuates, you need a battery backup to keep the unit running until it can shut down and suspend proporly.
I plugged it all in, and installed the Disk Manager software.
Now this part is a little hairy, but my systems have auto-everything disabled. So, I manually allows the autorun, and a little splash window popped up, and you click a big install button. Wait a minute, then you detect your NAS.
Initially, nothing. I check the ethernet cable, and I guess it had wiggled out. So be careful with those ethernet cables, make sure you have a good connection physically.
After that, it blinked on, and I logged in.
From there, it got easy. The Linux OS they use is really damn clean. It works through a web browser nicely, I had 0 trouble using it. Was like home.
More interestingly, is that using a OS like that in a web browser (aside from being really stupid imo) was insanely easy to do. Kinda like using a strong VNC/RDP connection.
So, I clicked arround, made some user accounts, setup the RAID6 array, and let it go ahead and check everybody for errors.
So, it should be done tonight.
I'm impressed with this product. Using their software online as a testbed was a good way to test it, and getting the unit in a flawless configuration was a really nice bonus as well.
The next test will be to load it with data, and yank out a drive to see how it rebuilds.
BUT, I probably don't need to do that. It seems perfectly fine to me, I'd rather make sure the UPnP stuff works for the PS3's and the Mac in the house, so I can stream stuff to em.
SUMMARY PROS:
- Easy Setup Physically
- Amazingly easy software setup
- Works so far
- Unusually quiet
- Able to add DX510 units to expand the unit's capacity greatly (26 TB theoretical! 16 TB probably max due to FS problems)
- Drive bays a little flimsy
- No anti-noise grommets for hard drives, nor is there room to add any
- Uses a web interface (However, it has a VGA port and USB ports, I bet you can run it with no web interface. Not yet tested.)
- Filesystem limitations come into play unless you smartly divide the drive out. Which is really hard to do, initially.
Until next update!
-Z
Labels:
NAS
2011-01-31
Synology DS 1511+
So I purchased this baby, it should be here in a week. Maybe more since our atmospheric conditions are trending to the less than favorable end of the spectrum. Loaded with 2 TB drives, I'll configure it as a RAID 6 or equivalent level of protection NAS.
This represents the first serious move I have ever made in the attempt to clean up and organize the vast amount of data I have acquired. Having a HD video camera sucked all the little magnetic pikmin out of my drive platters so fast you'd think it was some sort of monster movie. But, since I have about 3.7 TB of data and almost a literal million files, I figured I needed some way to back up this garbage; the important data only amounts to about 400 GB or so (models, music I made, data, programming) and the critical data still fits on a CD (core code, finances).
So, package wise, this NAS seems to be one of the top products out there. When I get the unit setup, I'll do a full review on it. So far it looks great, and very promising in the software end.
in the meantime, I've been attempting to fix a blender problem, which has been exceedingly difficult for no good reason. (I implemented the fix myself in C/C++ in an hour or two, and got it to work fine) I've been fighting it for over a week, and I'm still not anywhere close to done. Well, that's a lie, but it's not perfect yet.
The script, for those of you who use blender, lets you edit an armature, and it then corrects your animations after you finish editing. That way, you can model, tweak your armature, make a animation to test, and not lose all that work in the process. You will still lose some, in some cases, since moving bones cannot be corrected; but rotating them or changing their roll can.
I know, it sounds simple right? The problem is the data is stored in local keyframes, as you know:
Parent Matrix * Armature Default Matrix * Pose Matrix = Final Matrix
And you simply solve for Pose Matrix:
Pose Matrix = Armature Default Matrix ^ -1 * Parent Matrix^-1 * Desired Final Matrix
So that applying the pose gets you the desired final matrix.
For whatever weird reason (mostly blenders shitty internal representations of rotations & poorly constructed math utilities, I'm sure many people suffered this) it doesn't. I'll figgure it out eventually. I seem to have rotations working, but not positions since positions apparently come from a different space transform or some silly thing.
Platforming game was going fine, as usual, artist hit RL problems, so I don't know what I'll be doing with it yet.
Played with Unity some. Using Unity makes the Blender Game Engine look good. And that is seriously saying something. And that something is that unity sucks*. But, what do you expect for free? It suffers from the same problems all game engines have. Oh well, it's still fun to mess around in. Did everyone just forget BGE had a webplugin too? Or did Unity just steal their source? Who knows.
Also, work is hard, and we're upgrading what I'm doing again. Fun stuff.
Peace out folks!
-Z
Labels:
NAS
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
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
Labels:
flash,
programming
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
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.
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
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
Subscribe to:
Posts (Atom)





