Saturday, August 18, 2012
Rant on Augmented Reality vs Virtual Reality
I've recently been doing a bunch of interviews on AR/VR around the internet, and I want to put my opinions here in my own blog.
First, when talking to a skeptic, its basically impossible to convince them otherwise. These are people who may have been burned by AR in the past and will only believe when they actually play it for themselves. In the famous words of Steve Jobs, "A lot of times, people don’t know what they want until you show it to them."
Second, we should not be asking whether virtual reality or augmented reality is better than the other. They are different. They have different strengths. They each have different killer applications. The question is, is augmented reality (when done right) fun? 'cause that is what really matters to games. Is it fun?
Third, I'd like to criticize a way of thinking that the only augmented reality that is good augmented reality is perfect augmented reality. This opinion is held erroneously by some prominent people in the games industry. Where the only good AR is where you can walk anywhere, use it in any condition, etc... If we followed this train of thought where we didn't work within limitations of technology to make great content, traditional gaming would have never made it past Pong. We would have been stuck thinking games would only work if they were all photo realistic and they worked with your schedule and you could take your games with you wherever you are. Obviously games are doing very well and they still are not photo realistic even today.
Fourth, Augmented Reality is nothing but gimmicks. While I agree that most AR games today are very uninspired and not creative enough, I strongly disagree that AR can only produce gimmicks. What is Mirror's Edge? What is Assassins Creed? What is Grand Theft Auto? These are all gimmicks, yet they make truck loads of money.
Fifth, will Augmented Reality displace VR or standard gaming? No. Just like mobile gaming will never kill PC or Console gaming. If that was going to happen it would have by now. I personally feel its more likely actually that mobile and standard gaming on a big screen TV will merge into one. There will always be room for deep emotional experiences that can be best experienced when played for more than 10 minutes at a time.
Sixth, the key to making great AR games that are fun and not boring gimmicks is to involve the world to a great extent and ideally involve other people.
So, can we make augmented reality fun? I've spoke with some incredibly creative people with ideas I could have never come up with. There are fun ideas out there for Augmented Reality, but you have to think inside the limitations box to come up with them. All it takes is a bit of creativity, and remembering what it is like to have the imagination of a child. AR is a new field a lot like the beginning of video games where you have to re-learn how to make things fun. Like a child we are learning to walk and that comes with bumps on the road. But like any child, they will grow up one day and those which were there from the beginning can grow with it.
In my spare time with some friends I am making some indie games for VR, AR and traditional games. Our first game is called Dragonfly. I'll post more about it later :)
Tuesday, March 20, 2012
Backing up your Data in the Cloud
Prerequisites: An Ubuntu Linux Box
Due to all the lightning around here my paranoia kicked in and I've decided to move my data into the cloud. The question was, how to do it at a reasonable cost? and also be reasonably certain that the people who host your data don't some day go out of business and you end up losing your data.
There are many options: http://en.wikipedia.org/wiki/Comparison_of_online_backup_services
Which to choose?
Dropbox seemed like the best choice in terms of company reliability.
Dropbox costs $10 per month for 50gb or $20 for 100gb.
This is not actually horrible, but has the problem of paying for gb you don't actually use.
Lets look at raw providers:
Rackspace CloudFiles: $0.15 * 50gb = $7.50 per month.
Amazon AWS S3 Standard: $0.125 * 50gb = $6.25 per month
Amazon AWS S3 Reduced: $0.093 * 50gb = $4.65 per month
Clearly Amazon is the winner here in terms of cost at less than 50% the cost of dropbox.
Setting up with CloudFiles:
Install cloudfuse: https://github.com/redbo/cloudfuse
Setting up with Amazon AWS S3:
Install s3fs: http://code.google.com/p/s3fs/
Setting up the common elements:
Due to all the lightning around here my paranoia kicked in and I've decided to move my data into the cloud. The question was, how to do it at a reasonable cost? and also be reasonably certain that the people who host your data don't some day go out of business and you end up losing your data.
There are many options: http://en.wikipedia.org/wiki/Comparison_of_online_backup_services
Which to choose?
Dropbox seemed like the best choice in terms of company reliability.
Dropbox costs $10 per month for 50gb or $20 for 100gb.
This is not actually horrible, but has the problem of paying for gb you don't actually use.
Lets look at raw providers:
Rackspace CloudFiles: $0.15 * 50gb = $7.50 per month.
Amazon AWS S3 Standard: $0.125 * 50gb = $6.25 per month
Amazon AWS S3 Reduced: $0.093 * 50gb = $4.65 per month
Clearly Amazon is the winner here in terms of cost at less than 50% the cost of dropbox.
Setting up with CloudFiles:
Install cloudfuse: https://github.com/redbo/cloudfuse
Setting up with Amazon AWS S3:
Install s3fs: http://code.google.com/p/s3fs/
Setting up the common elements:
- Set up a network share with Samba. https://help.ubuntu.com/11.04/serverguide/C/samba-fileserver.html
- Install rsync via
apt-get install rsync - Then open up "
crontab -e" and setup a rsync copy into your fuse mount from the samba share.
0 0 * * * rsync -va --size-only /srv/samba/share /media/cloudfiles
Sunday, August 7, 2011
Voxels vs Displacement Mapping
Voxels on the left. Displacement mapping on the right.
What is being shown here is a pyroclastic sphere primitive. Link
This is a good example of the difference between a voxel technology, and a displacement mapping technology that the GPU manufacturers are pushing.
The DM tech is pretty obviously just pushing out parts and pulling in parts of the surface, making things look more like a wave function on a sphere.
The Voxel tech looks like a much more natural expression of the function.
Disclaimer: To be fair, both pictures are using voxels in the source article. However the right picture could easily have been accomplished with DM and does IMO represent the difference between the two approaches.
Saturday, July 30, 2011
What a 128bit addressing space is useful for...
What if you had unlimited storage capacity and it was fully redundant... and what does this have to do with a 128bit addressing space?
To answer that question, you have to look into how to implement a P2P Cloud Storage solution.
To make a long story short, every file sector gets an address - a very big one. Some P2P services use up to 160bits. 128-bits is good enough for this new purpose though.
What if every file, every document ever made was in this P2P cloud storage. And it could be referred to as naturally as having a pointer in your code. The OS would page in part of this data from the internet on demand.
This is what I would think of as the ultimate computer storage solution -- blurring the line between computer and internet - to the point of being indistinguishable. This blur between internet and computer is where I believe computers are headed... I can't wait. :D
A shame 128-bit addressing is probably 20 years away... I'll be old by then (by my current standards anyway). It will be neat to watch the incremental progress towards this though as the years go by.
A few questions that keep crossing my mind is - If the internet could be applied to computing in general, to the extent of running something as simple as notepad.exe. How would it be done? How would it be secure? Is that possible with the internet of the future which has 10-100 times the bandwidth and 1/10th to 1/100th the ping? Which brings up more questions, such as what are the limits of internet related technologies? How fast is it advancing as to be able to make predictions about where it will be. etc...
To answer that question, you have to look into how to implement a P2P Cloud Storage solution.
To make a long story short, every file sector gets an address - a very big one. Some P2P services use up to 160bits. 128-bits is good enough for this new purpose though.
What if every file, every document ever made was in this P2P cloud storage. And it could be referred to as naturally as having a pointer in your code. The OS would page in part of this data from the internet on demand.
This is what I would think of as the ultimate computer storage solution -- blurring the line between computer and internet - to the point of being indistinguishable. This blur between internet and computer is where I believe computers are headed... I can't wait. :D
A shame 128-bit addressing is probably 20 years away... I'll be old by then (by my current standards anyway). It will be neat to watch the incremental progress towards this though as the years go by.
A few questions that keep crossing my mind is - If the internet could be applied to computing in general, to the extent of running something as simple as notepad.exe. How would it be done? How would it be secure? Is that possible with the internet of the future which has 10-100 times the bandwidth and 1/10th to 1/100th the ping? Which brings up more questions, such as what are the limits of internet related technologies? How fast is it advancing as to be able to make predictions about where it will be. etc...
Sunday, April 3, 2011
Designing to make ATM Skimmers impractical
I was curious about how thieves make these things. Turns out you can buy ATM skimmers on online auction sites for $3000. They make them by manufacturer. So this got me thinking about what ATMs could do to make a skimmer impractical.
My first thought is to have 1000 different ATM front plates from each manufacturer. That would make most skimmers very expensive, but not quite impractical yet as they can just make a universal fit -- we can do better. If the shape of the card receptacle was easily identifiable by a human and able to match easily with a picture, then you could take advantage of the fact that a skimmer, no matter how complex never hides the display. You can use that to show a picture and have people manually verify the shape of the receptacle. If it is different, then there is a skimmer on top. While it would not eliminate skimming, it would make doing it incredibly expensive and unpractical to do for most thieves. The maker of the device would often be directly involved.
While this sounds all well and good, manufacturers would not like making 1000 different versions of their ATMs just to stop skimming. Implementation of that approach is unlikely and it doesn't solve the problem for millions of existing ATMs. Is there any other way to solve those problems?
Holographic stickers. If they printed out 10,000 different holographic stickers and put a different one right over the face plate, and then had people do the manual verification with a picture (for example a bunny, a squirrel, etc... easily recognizable to humans and you can have many hundreds if not thousands of variations). That would also serve the make impractical purpose for the most part. Its not as good as the former solution, but its a whole lot cheaper and can work on existing ATM machines with just a software upgrade.
At a minimum, you might even be able to not have the manual verification part and instead just have the holographic sticker with some special certification message. If it doesn't say ATM verified something or other, than its a fake. Having a sticker in the first place is a deterrent. Only risk without is somebody could rip off the sticker off the ATM and then use it on their skimmer. So that wouldn't be full proof.
Perhaps you could have a sequence of numbers on the sticker that you would have to enter before using the ATM. I would hate that, personally. It would work as well though and only work for that single ATM.
My first thought is to have 1000 different ATM front plates from each manufacturer. That would make most skimmers very expensive, but not quite impractical yet as they can just make a universal fit -- we can do better. If the shape of the card receptacle was easily identifiable by a human and able to match easily with a picture, then you could take advantage of the fact that a skimmer, no matter how complex never hides the display. You can use that to show a picture and have people manually verify the shape of the receptacle. If it is different, then there is a skimmer on top. While it would not eliminate skimming, it would make doing it incredibly expensive and unpractical to do for most thieves. The maker of the device would often be directly involved.
While this sounds all well and good, manufacturers would not like making 1000 different versions of their ATMs just to stop skimming. Implementation of that approach is unlikely and it doesn't solve the problem for millions of existing ATMs. Is there any other way to solve those problems?
Holographic stickers. If they printed out 10,000 different holographic stickers and put a different one right over the face plate, and then had people do the manual verification with a picture (for example a bunny, a squirrel, etc... easily recognizable to humans and you can have many hundreds if not thousands of variations). That would also serve the make impractical purpose for the most part. Its not as good as the former solution, but its a whole lot cheaper and can work on existing ATM machines with just a software upgrade.
At a minimum, you might even be able to not have the manual verification part and instead just have the holographic sticker with some special certification message. If it doesn't say ATM verified something or other, than its a fake. Having a sticker in the first place is a deterrent. Only risk without is somebody could rip off the sticker off the ATM and then use it on their skimmer. So that wouldn't be full proof.
Perhaps you could have a sequence of numbers on the sticker that you would have to enter before using the ATM. I would hate that, personally. It would work as well though and only work for that single ATM.
Friday, March 18, 2011
Know your SPU transposes - part 2
In this part of the SPU transposes series, we will cover 2 element transposes. Same format as last time.
4 input vectors of the format:
2 output vectors of the format:
I'll start with the simplest way to do it - all on the odd pipe. Then show some ways to do things differently to trade odd instructions for even instructions.
0 even, 4 odd, 3 shuffle masks, 10 cycles
1 even, 3 odd, 4 shuffle masks, 9 cycles
4 even, 2 odd, 4 shuffle masks, 10 cycles
2 input vectors of the format:
4 output vectors of the format:
Again, I'll start with the simplest way to do it - all on the odd pipe. Then show some ways to do things differently to trade odd instructions for even instructions.
0 even, 4 odd, 4 shuffle masks, 7 cycles
0 even, 4 odd, 2 shuffle masks, 9 cycles
2 even, 3 odd, 4 masks, 7 cycles
2 even, 3 odd, 3 masks, 8 cycles
AOS to SOA, 2 elements
4 input vectors of the format:
in1 = in1.x, in1.y, ?, ?
in2 = in2.x, in2.y, ?, ?
in3 = in3.x, in3.y, ?, ?
in4 = in4.x, in4.y, ?, ?
2 output vectors of the format:
out1 = in1.x, in2.x, in3.x, in4.x
out2 = in1.y, in2.y, in3.y, in4.y
I'll start with the simplest way to do it - all on the odd pipe. Then show some ways to do things differently to trade odd instructions for even instructions.
0 even, 4 odd, 3 shuffle masks, 10 cycles
| Instructions | In English |
| shufb t1, in1, in2, s_AaBb | t1 = in1.x, in2.x, in1.y, in2.y |
| shufb t2, in3, in4, s_AaBb | t2 = in3.x, in4.x, in3.y, in4.y |
| shufb out1, t1, t2, s_ABab | out1 = in1.x, in2.x, in3.x, in4.x |
| shufb out2, t1, t2, s_CDcd | out2 = in1.y, in2.y, in3.y, in4.y |
1 even, 3 odd, 4 shuffle masks, 9 cycles
| Instructions | In English |
| shufb t1, in1, in2, s_AaBb | t1 = in1.x, in2.x, in1.y, in2.y |
| shufb t2, in3, in4, s_BbAa | t2 = in3.y, in4.y, in3.x, in4.x |
| selb out1, t2, t1, m_FF00 | out1 = in1.x, in2.x, in3.x, in4.x |
| shufb out2, t1, t2, s_CDab | out2 = in1.y, in2.y, in3.y, in4.y |
4 even, 2 odd, 4 shuffle masks, 10 cycles
| Instructions | In English |
| selb t1, in1, in2, m_F000 | t1 = in2.x, in1.y, ?, ? |
| shufb t2, in3, in4, s_aABb | t2 = in4.x, in3.x, in3.y, in4.y |
| shufb t3, t1, t2, s_BAba | t3 = in1.y, in2.x, in3.x, in4.x |
| selb out2, t2, in2, m_FF00 | out2 = in2.x, in2.y, in3.y, in4.y |
| selb out2, out2, t3, m_F000 | out2 = in1.y, in2.y, in3.y, in4.y |
| selb out1, t3, in1, m_F000 | out1 = in1.x, in2.x, in3.x, in4.x |
SOA to AOS, 2 elements
2 input vectors of the format:
in1 = in1.x, in2.x, in3.x, in4.x
in2 = in1.y, in2.y, in3.y, in4.y
4 output vectors of the format:
out1 = in1.x, in1.y, ?, ?
out2 = in2.x, in2.y, ?, ?
out3 = in3.x, in3.y, ?, ?
out4 = in4.x, in4.y, ?, ?
Again, I'll start with the simplest way to do it - all on the odd pipe. Then show some ways to do things differently to trade odd instructions for even instructions.
0 even, 4 odd, 4 shuffle masks, 7 cycles
| Instructions | In English |
| shufb out1, in1, in2, s_Aa00 | out1 = in1.x, in1.y, 0, 0 |
| shufb out2, in1, in2, s_Bb00 | out2 = in2.x, in2.y, 0, 0 |
| shufb out3, in1, in2, s_Cc00 | out3 = in3.x, in3.y, 0, 0 |
| shufb out4, in1, in2, s_Dd00 | out4 = in4.x, in4.y, 0, 0 |
0 even, 4 odd, 2 shuffle masks, 9 cycles
| Instructions | In English |
| shufb out1, in1, in2, s_AaBb | out1 = in1.x, in1.y, in2.x, in2.y |
| shufb out3, in1, in2, s_CcDd | out3 = in3.x, in3.y, in4.x, in4.y |
| shlqbyi out2, out1, 8 | out2 = in2.x, in2.y, 0, 0 |
| shlqbyi out4, out3, 8 | out4 = in4.x, in4.y, 0, 0 |
2 even, 3 odd, 4 masks, 7 cycles
| Instructions | In English |
| shufb out2, in1, in2, s_Ba00 | out2 = in2.x, in1.y, 0, 0 |
| shufb out3, in1, in2, s_Cc00 | out3 = in3.x, in3.y, 0, 0 |
| shufb out4, in1, in2, s_Dd00 | out4 = in4.x, in4.y, 0, 0 |
| selb out1, in1, out2, m_0F00 | out1 = in1.x, in1.y, 0, 0 |
| selb out2, out2, in1, m_0F00 | out2 = in2.x, in2.y, 0, 0 |
2 even, 3 odd, 3 masks, 8 cycles
| Instructions | In English |
| shufb out2, in1, in2, s_BaCc | out2 = in2.x, in1.y, in3.x, in3.y |
| shufb out4, in1, in2, s_Dd00 | out4 = in4.x, in4.y, 0, 0 |
| shlqbyi out3, out2, 8 | out3 = in3.x, in3.y, 0, 0 |
| selb out1, in1, out2, m_0F00 | out1 = in1.x, in1.y, 0, 0 |
| selb out2, out2, in1, m_0F00 | out2 = in2.x, in2.y, in3.x, in3.y |
Next post...
... 3 elementsThursday, March 17, 2011
Know your SPU transposes
It has come to my attention that this is some needed and useful information to have. Too useful to keep to one's self. At Naughty Dog, some years back, Cort Stratton and I compiled a pretty comprehensive list of transposes. Its unbelievably handy to have on the fly as you need it. I've reconstructed the transposes as best I can and put it up here for your general use. Enjoy!
There is more than one way to skin a cat. When converting from AOS to SOA and back there are many variations. How many instructions you have available to schedule in your even/odd pipes, how many spare registers you have to spend, and the latency of the combination of instructions used will dictate which you should use.
The goal is to first find all variations where you can trade even for odd or odd for even instructions -- and minimize the number of registers used in the process (including shuffle masks used).
Shuffle Masks
To specify shuffle masks, I'll use A-D,0 to specify the element 1 through 4 in the first parameter and a-d,0 to specify element 1 through 4 in the second parameter. '0' is special in that it means put a zero in the output for that element.
For example, s_ABab would take the first 2 elements in parameter 1 and the first 2 elements in parameter 2 and put them side by side into the output register.
Example - AOS to SOA, 1 element - 0 even, 3 odd, 1 shuffle mask, 9 cycles
Lets first consider the simple case of 4 input registers, where we are interested in combining the first element of each in(1-4) register into a single out register.
Example - AOS to SOA, 1 element - 1 even, 2 odd, 2 shuffle masks, 7 cycles
This variation on the above splits up the even/odd pipe usage a bit at the cost of more masks.
Example - SOA to AOS, 1 element - 0 even, 3 odd, 0 shuffle masks, 6 cycles
This example converts back from SOA to AOS. Still working on 1 element.
Contribute
Know a transpose that I didn't list? Find a better one? Post in the comments and I'll update the post.
Next post...
... will be on 2 element transposes.
Introduction
There is more than one way to skin a cat. When converting from AOS to SOA and back there are many variations. How many instructions you have available to schedule in your even/odd pipes, how many spare registers you have to spend, and the latency of the combination of instructions used will dictate which you should use.
The goal is to first find all variations where you can trade even for odd or odd for even instructions -- and minimize the number of registers used in the process (including shuffle masks used).
Shuffle Masks
To specify shuffle masks, I'll use A-D,0 to specify the element 1 through 4 in the first parameter and a-d,0 to specify element 1 through 4 in the second parameter. '0' is special in that it means put a zero in the output for that element.
For example, s_ABab would take the first 2 elements in parameter 1 and the first 2 elements in parameter 2 and put them side by side into the output register.
Example - AOS to SOA, 1 element - 0 even, 3 odd, 1 shuffle mask, 9 cycles
Lets first consider the simple case of 4 input registers, where we are interested in combining the first element of each in(1-4) register into a single out register.
| Instructions | In English |
| shufb t1, in1, in2, s_ACac | t1 = in1.x, ?, in2.x, ? |
| shufb t2, in3, in4, s_ACac | t2 = in3.x, ?, in4.x, ? |
| shufb out, t1, t2, s_ACac | out = in1.x, in2.x, in3.x, in4.x |
Example - AOS to SOA, 1 element - 1 even, 2 odd, 2 shuffle masks, 7 cycles
This variation on the above splits up the even/odd pipe usage a bit at the cost of more masks.
| Instructions | In English |
| shufb t1, in1, in2, s_Aa00 | t1 = in1.x, in2.x, 0, 0 |
| shufb t2, in3, in4, s_00Aa | t2 = 0, 0, in3.x, in4.x |
| or out, t1, t2 | out = in1.x, in2.x, in3.x, in4.x |
Example - SOA to AOS, 1 element - 0 even, 3 odd, 0 shuffle masks, 6 cycles
This example converts back from SOA to AOS. Still working on 1 element.
| Instructions | In English |
| shlqbyi out2, in, 4 | out2 = in.y, in.z, in.w, in.x |
| shlqbyi out3, in, 8 | out3 = in.z, in.w, in.x, in.y |
| shlqbyi out4, in, 12 | out4 = in.w, in.x, in.y, in.z |
Contribute
Know a transpose that I didn't list? Find a better one? Post in the comments and I'll update the post.
Next post...
... will be on 2 element transposes.
Monday, February 28, 2011
Designers should Learn to Code, Even if Poorly
2,500 years ago, a Greek writer told us something about creating software: Thucydides wrote, "The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools."
The same is true for companies that separate their designers from their engineers. The most important trait a team can have is empathy. Without it, the engineers will not care, and the designers will not be realistic. When companies complain of specs and code being "thrown out the window", a lack of empathy is to blame.
The best way to create empathy as a designer is to make a prototype. It meets the rest of the team half-way and gives you a sense of what's hard and what's easy to implement. Having thought through the edge-cases and being able to speak an engineer's language gives you street cred. You don't need to be a great coder, but you should at least be able to get your idea across in a scripting language.
To design is to inspire participation. To do that you need to be respected. For that you need to be a designer-coder.
The same is true for companies that separate their designers from their engineers. The most important trait a team can have is empathy. Without it, the engineers will not care, and the designers will not be realistic. When companies complain of specs and code being "thrown out the window", a lack of empathy is to blame.
The best way to create empathy as a designer is to make a prototype. It meets the rest of the team half-way and gives you a sense of what's hard and what's easy to implement. Having thought through the edge-cases and being able to speak an engineer's language gives you street cred. You don't need to be a great coder, but you should at least be able to get your idea across in a scripting language.
To design is to inspire participation. To do that you need to be respected. For that you need to be a designer-coder.
Friday, February 4, 2011
High Resolution Textures -- The Field Guide
The options:
Static Texturing
No dynamic loading. Just use higher resolution static textures. Standard stuff.
- VRAM limited
Dynamic Texturing
Dynamically load mips (Unreal 3 style).
+ Allows for much higher resolution
- Still ultimately resolution limited.
- Sometimes implemented with a feedback pass to a low resolution buffer.
Virtual Texturing
Dynamically load parts of textures.
+ Use as high of resolution textures as your heart desires.
+ Static memory footprint
- Sampling the virtual texture is slightly slower than Static or Dynamic texturing.
- Bi-linear filtering. (Tri-linear is possible, but requires more work.)
- Requires an extra rendering pass with most implementations (for the feedback of what pages to load)
- Problems with transparent materials. *****
- Popping mips when the disk streaming doesn't keep up very well with the game. *
Unique Virtual Texturing (AKA Mega Textures)
For each mesh in the world, allocate a portion of virtual texture space for that mesh and then bake in any lighting and diffuse information.
+ Use as high of a resolution texture as your heart desires.
+ Static memory footprint
+ Infinitely complex lighting algorithms.
+ Can bake in decals to allow an infinite number of them. ****
- Bi-linear filtering. (Tri-linear is possible, but requires more work.)
- Requires an extra rendering pass with most implementations (for the feedback of what pages to load)
- Iteration time is very slow
- Popping mips when the disk streaming doesn't keep up very well with the game. *
- Lighting is mostly static. **
- Requires massive disk space. ***
- Some games may have a world that is too big for UVTs -- exceeding floating point precision.
- Problems with transparent materials. *****
* The popping can be mitigated through "blending" of tiles as they load. However this requires using RGBA uncompressed textures for your physical tiles -- making texture reads slower and increasing memory requirements.
** I toyed around with animating virtual textures, so that you could have looping or one off lighting animations. Is a lot of extra space, and streamer had a hard time keeping up with the animation. Not impossible to pull off though, so something to keep in mind.
*** The disk space is typically reduced by both compression, and not storing the higher mips for areas that are never seen in game. If you happen to predict incorrectly, they just see a blurry texture.
**** Watch out for problems with changing the meshes after the baking process. Causes headaches.
***** VT typically uses a feedback rendering pass to a low resolution buffer to tell what to load and what not to load. This is typically rendered opaquely. The common work around is to render transparent materials using Standard or Dynamic texturing.
Where is the sweet spot?
Standard texturing is the easiest to implement.
Unique virtual texturing offers the best results.
But -- Virtual Texturing takes the prize.
Huh?
While Unique Virtual Texturing is great, it doesn't work for every game (your world size may be so large that it is unrealistic or you require a day-night cycle), and the bake times for lighting and texturing can be horrendous -- making fast iteration very hard.
Living Blog Post
I'll be updating this blog post from time to time as reference for myself and others. If you would like to see something added or corrected, send me a message or post in the comments.
-- Kind of wish this was a wiki or something. --
Static Texturing
No dynamic loading. Just use higher resolution static textures. Standard stuff.
- VRAM limited
Dynamic Texturing
Dynamically load mips (Unreal 3 style).
+ Allows for much higher resolution
- Still ultimately resolution limited.
- Sometimes implemented with a feedback pass to a low resolution buffer.
Virtual Texturing
Dynamically load parts of textures.
+ Use as high of resolution textures as your heart desires.
+ Static memory footprint
- Sampling the virtual texture is slightly slower than Static or Dynamic texturing.
- Bi-linear filtering. (Tri-linear is possible, but requires more work.)
- Requires an extra rendering pass with most implementations (for the feedback of what pages to load)
- Problems with transparent materials. *****
- Popping mips when the disk streaming doesn't keep up very well with the game. *
Unique Virtual Texturing (AKA Mega Textures)
For each mesh in the world, allocate a portion of virtual texture space for that mesh and then bake in any lighting and diffuse information.
+ Use as high of a resolution texture as your heart desires.
+ Static memory footprint
+ Infinitely complex lighting algorithms.
+ Can bake in decals to allow an infinite number of them. ****
- Bi-linear filtering. (Tri-linear is possible, but requires more work.)
- Requires an extra rendering pass with most implementations (for the feedback of what pages to load)
- Iteration time is very slow
- Popping mips when the disk streaming doesn't keep up very well with the game. *
- Lighting is mostly static. **
- Requires massive disk space. ***
- Some games may have a world that is too big for UVTs -- exceeding floating point precision.
- Problems with transparent materials. *****
* The popping can be mitigated through "blending" of tiles as they load. However this requires using RGBA uncompressed textures for your physical tiles -- making texture reads slower and increasing memory requirements.
** I toyed around with animating virtual textures, so that you could have looping or one off lighting animations. Is a lot of extra space, and streamer had a hard time keeping up with the animation. Not impossible to pull off though, so something to keep in mind.
*** The disk space is typically reduced by both compression, and not storing the higher mips for areas that are never seen in game. If you happen to predict incorrectly, they just see a blurry texture.
**** Watch out for problems with changing the meshes after the baking process. Causes headaches.
***** VT typically uses a feedback rendering pass to a low resolution buffer to tell what to load and what not to load. This is typically rendered opaquely. The common work around is to render transparent materials using Standard or Dynamic texturing.
Where is the sweet spot?
Standard texturing is the easiest to implement.
Unique virtual texturing offers the best results.
But -- Virtual Texturing takes the prize.
Huh?
While Unique Virtual Texturing is great, it doesn't work for every game (your world size may be so large that it is unrealistic or you require a day-night cycle), and the bake times for lighting and texturing can be horrendous -- making fast iteration very hard.
Living Blog Post
I'll be updating this blog post from time to time as reference for myself and others. If you would like to see something added or corrected, send me a message or post in the comments.
-- Kind of wish this was a wiki or something. --
Monday, January 17, 2011
Business and Ethics
I've been reading a book called the Ten Day MBA
Its got a pretty interesting chapter on Ethics...
Relativism
The proponents of relativism hold that we can't decide on matters of right and wrong, or good and evil. Things are rarely black or white. There are so many shades of gray. Relativism proposes that ethics are "relative" to the personal, social, and cultural circumstance in which one finds oneself. Relativists are not torn by ethical dilemmas since they do not believe that truth can be discovered through soul searching. Professors teach relativism so that students may guard against it. To understand relativism, you need to recognize its four forms.
Naive Relativism
Naive relativism holds that every person has his or her own standard that enables him or her to make choices. No one can make a moral judgment about another person's behavior. So many variables affect behavior that an outsider cannot possibly be privy to all the elements that went into making a decision. Therefore, an executive at Borden is not equipped to make a moral judgement regarding the actions of the CEO of Nestle, whose corporation is possibly selling harmful baby formula in developing countries.
Role Relativism
Role Relativism distinguishes between our private selves and our public roles. These public roles call for a "special" morality which we separate from the individual making the choices. The president of a fishing company may personally dislike the incidental killing of dolphins in his company's tuna nets, but as an executive, he must not let his feeling interfere with the best interest of the company.
Social Relativism
Social relativism is akin to naive relativism. People refer to social norms to render ethical judgments. "Industry Practices", "club rules", "professional codes of conduct", and "accepted practices" are the cop-outs of the social relativist. In the produce industry, it is "industry practice" to ignore child labor laws and employ small children to work in the field and miss school.
Cultural Relativism
Cultural relativism holds that there is no universal moral code by which to judge another society's moral and ethical standards. If a whole culture holds certain beliefs, how can an outsider sit in judgment? "When in rome..." The concept of cultural relativism becomes more important as companies compete globally. Multinational corporations often follow local laws and customs that may violate ethical standards in their home countries. Discussions about aparthied revolve around issues of cultural relativism. Adopting a cultural relativist philosophy, a multinational corporation might have justified its participation in South African gold and diamond mining activities despite the employment of "slave" labor in the mines.
In some instances US corporations and citizens are barred from adopting the host country's business practices. In some countries it is ordinary business practice to pay bribes to get favorable treatment from businesses and government. The Foreign Corrupt Practices Act of 1977 outlaws overseas bribery.
The relativism concepts provide MBAs with an awareness of and a way to guard against inaction on ethical and moral issues. They provide a framework to go beyond currently held beliefs and patterns of behaviors.
Natural Law
Natural law serves as a guide to some who believe that the "right" thing to do is revealed in nature or the bible.
Utilitarianism
Utilitarianism holds that an action is justified if it provides the greatest benefit for the greatest number of people.
Universalism
Universalism propounds that any action is condonable if the motive behind the action is good, since the results of a person's actions are so often not in his or her control.
My Personal Take
What is ethics?
Ethics, in my opinion, is what you do when you think that nobody is watching.
People are easily corruptible. Money and more specifically the love of money, really is the root of all evil. To justify putting an additive into a baby formula because it saves you money when it actually hurts the people your giving it to.. is morally wrong. I don't care if you think that because it costs less you can sell it to more people, and thus less babies go hungry. Its evil and wrong to knowingly sell things that hurt other people. Find some other way to make more money. Sure the road is harder, but the payoff is that everyone is better -- Not just the company. Doing what is ethical is doing the right thing, and saying no to doing what is wrong just because it is easy.
Nobody is perfect. Everybody makes mistakes. Sometimes, you might find yourself doing something that you think you shouldn't be doing. Making the choices which correct those things after the fact takes courage. Courage to face yourself in a mirror. Do it though. For your self, your family, your community, and your world.
Its got a pretty interesting chapter on Ethics...
Relativism
The proponents of relativism hold that we can't decide on matters of right and wrong, or good and evil. Things are rarely black or white. There are so many shades of gray. Relativism proposes that ethics are "relative" to the personal, social, and cultural circumstance in which one finds oneself. Relativists are not torn by ethical dilemmas since they do not believe that truth can be discovered through soul searching. Professors teach relativism so that students may guard against it. To understand relativism, you need to recognize its four forms.
Naive Relativism
Naive relativism holds that every person has his or her own standard that enables him or her to make choices. No one can make a moral judgment about another person's behavior. So many variables affect behavior that an outsider cannot possibly be privy to all the elements that went into making a decision. Therefore, an executive at Borden is not equipped to make a moral judgement regarding the actions of the CEO of Nestle, whose corporation is possibly selling harmful baby formula in developing countries.
Role Relativism
Role Relativism distinguishes between our private selves and our public roles. These public roles call for a "special" morality which we separate from the individual making the choices. The president of a fishing company may personally dislike the incidental killing of dolphins in his company's tuna nets, but as an executive, he must not let his feeling interfere with the best interest of the company.
Social Relativism
Social relativism is akin to naive relativism. People refer to social norms to render ethical judgments. "Industry Practices", "club rules", "professional codes of conduct", and "accepted practices" are the cop-outs of the social relativist. In the produce industry, it is "industry practice" to ignore child labor laws and employ small children to work in the field and miss school.
Cultural Relativism
Cultural relativism holds that there is no universal moral code by which to judge another society's moral and ethical standards. If a whole culture holds certain beliefs, how can an outsider sit in judgment? "When in rome..." The concept of cultural relativism becomes more important as companies compete globally. Multinational corporations often follow local laws and customs that may violate ethical standards in their home countries. Discussions about aparthied revolve around issues of cultural relativism. Adopting a cultural relativist philosophy, a multinational corporation might have justified its participation in South African gold and diamond mining activities despite the employment of "slave" labor in the mines.
In some instances US corporations and citizens are barred from adopting the host country's business practices. In some countries it is ordinary business practice to pay bribes to get favorable treatment from businesses and government. The Foreign Corrupt Practices Act of 1977 outlaws overseas bribery.
The relativism concepts provide MBAs with an awareness of and a way to guard against inaction on ethical and moral issues. They provide a framework to go beyond currently held beliefs and patterns of behaviors.
Natural Law
Natural law serves as a guide to some who believe that the "right" thing to do is revealed in nature or the bible.
Utilitarianism
Utilitarianism holds that an action is justified if it provides the greatest benefit for the greatest number of people.
Universalism
Universalism propounds that any action is condonable if the motive behind the action is good, since the results of a person's actions are so often not in his or her control.
My Personal Take
What is ethics?
Ethics, in my opinion, is what you do when you think that nobody is watching.
People are easily corruptible. Money and more specifically the love of money, really is the root of all evil. To justify putting an additive into a baby formula because it saves you money when it actually hurts the people your giving it to.. is morally wrong. I don't care if you think that because it costs less you can sell it to more people, and thus less babies go hungry. Its evil and wrong to knowingly sell things that hurt other people. Find some other way to make more money. Sure the road is harder, but the payoff is that everyone is better -- Not just the company. Doing what is ethical is doing the right thing, and saying no to doing what is wrong just because it is easy.
Nobody is perfect. Everybody makes mistakes. Sometimes, you might find yourself doing something that you think you shouldn't be doing. Making the choices which correct those things after the fact takes courage. Courage to face yourself in a mirror. Do it though. For your self, your family, your community, and your world.
Saturday, January 8, 2011
This is why Facebook is Valuable
The data plot above is google.com, the data plot below is facebook.com. Google has a market cap of 250 billion. What the investors are betting on, is that with all that juicy information they get from users, they can make uber targeted ads that people can't help but click. Basically achieving the same click-through ratio that searching enjoys, about 1 in every 100 people (sometimes better). Now, I'm not really sure if they can achieve that ratio or not, but I do know one thing -- I hardly use facebook anymore, but I have been using google consistently for 11 years. I don't think I'm alone in that. Maybe that doesn't matter? Maybe they figure the can get enough of the world hooked on facebook, it doesn't matter that they don't get everyone hooked on facebook. Who knows. But anyway, yes it does look like a good investment. The stock will likely triple after the IPO. I would suggest to buy it until the honeymoon period wears off, then sell like crazy.
Friday, January 7, 2011
Facebook is worth 50 billion
You've got to be kidding me. This is obviously just investor valuation overload. Goldman paid 450 million for less than 1% of Facebook. Really....
So facebook has 500 million users. That means each user is valued at $100. And thats assuming that each user is an active user, which is not the case. The real valuation may be more like $250 - $500 per active user. That just doesn't make sense to me. Their primary revenue source is advertising. You get about $1 for every 1000 views in non-search advertising. If somebody visits their Facebook page once every day, then each user is worth $0.365 per year. To recoup the best case of $100 per user, that would take 300 years or so. As in, impossible. I don't know what those investors are smoking, but it must be Zuckerberg's !@#$.
In other news, Apple is worth more than Google. Seriously, and not by a trivial amount either.
Something is wrong with the world.
So facebook has 500 million users. That means each user is valued at $100. And thats assuming that each user is an active user, which is not the case. The real valuation may be more like $250 - $500 per active user. That just doesn't make sense to me. Their primary revenue source is advertising. You get about $1 for every 1000 views in non-search advertising. If somebody visits their Facebook page once every day, then each user is worth $0.365 per year. To recoup the best case of $100 per user, that would take 300 years or so. As in, impossible. I don't know what those investors are smoking, but it must be Zuckerberg's !@#$.
In other news, Apple is worth more than Google. Seriously, and not by a trivial amount either.
Something is wrong with the world.
Sunday, January 2, 2011
Next generation graphics
While there are many directions for video games to improve in the future. Animation being a big one. People are looking for things to do for graphics. First, avoiding the uncanny valley in next gen games may be a big problem. In general high level though (probably mostly obvious)
- Higher resolution textures.
- Higher resolution geometry.
- More world clutter and detail.
- Enormous worlds with little to no loading.
- I'd like to see water reflections that are actually reflections and not just cube-maps.
- Some people think that many more dynamic lights (1000's in a scene) are the future of video games.
- Soft shadows via variance shadow mapping or the like.
- Hair on video game characters will get a huge upgrade. No longer will characters look like they haven't showered for 2 weeks.
- Smoke using fluid simulations (this would be awesome)
- Geometry LOD is going to be a serious problem (even more so)
If you were to stick with triangles, then you would probably do some kind of subdivision surfaces.
There are other options though like voxels which can give triangles a serious run for their money. When properly optimized, they can provide very consistent frame rates irrespective of world detail.
Voxels aren't all static either. Lattice skinning can be used for characters, as well as I've seen some research in the area of dynamic KD-tree generation. There has also been some research in completely dynamic voxels, such that the world is actually changeable real-time. Leaving a foot-print in the sand actually leaves a foot-print there. Possibly permanently depending on how you implement it.
You could also do interesting procedural stuff if you had the compute power, where grass could grow back over craters over time, etc... Other benefits of voxels are the sampling you can do to do motion blur, depth of field, etc stochastically.
You can guarantee a framerate by doing progressive rendering of the frame. Stopping at a certain ms. That gives a lot of freedom to the content people to make the world how they see it in their imagination and no longer be limited by what hardware can provide.
All very interesting stuff, and I'm sure its only the tip of the iceberg.
However... things are not without its challenges. The PS4 may make the life of voxels a little harder. You will likely have to write a custom ray-casting solution for the PS4.
I'm sure many people will continue to use triangles. Hell, even I might. I'm a reasonable guy and will likely measure both approaches and pick the best one for the task at hand. However, ignoring voxels as an option seems kind of silly to me. The game developing public needs a good example implementation of voxels in order for it to really take hold in any sort of realistic way. There is an open source one from NVidia which has lots of ideas pulled from my stuff, however their solution is not really prime-time ready. For example, it doesn't stream from disk so you can only do what you can fit in memory. I don't really have time to write a public implementation of voxels, or to really contribute anything significant to the nvidia one. I'm just too darn busy right now. Who knows though, maybe I'll have time in the future.
Ok, enough voxel talk.
Another big challenge is going to be doing things for 3D displays. I don't have a lot of experience with 3D conversions for games yet, but I will very soon. I'll write more when I know more. Doing so in a deferred renderer seems like it might be a bit troublesome.
I'm sure there is much more that I could chat about here with next gen graphics. Taking each of the previous things in detail. Maybe I'll do a dedicated post to each one.
- Higher resolution textures.
- Higher resolution geometry.
- More world clutter and detail.
- Enormous worlds with little to no loading.
- I'd like to see water reflections that are actually reflections and not just cube-maps.
- Some people think that many more dynamic lights (1000's in a scene) are the future of video games.
- Soft shadows via variance shadow mapping or the like.
- Hair on video game characters will get a huge upgrade. No longer will characters look like they haven't showered for 2 weeks.
- Smoke using fluid simulations (this would be awesome)
- Geometry LOD is going to be a serious problem (even more so)
If you were to stick with triangles, then you would probably do some kind of subdivision surfaces.
There are other options though like voxels which can give triangles a serious run for their money. When properly optimized, they can provide very consistent frame rates irrespective of world detail.
Voxels aren't all static either. Lattice skinning can be used for characters, as well as I've seen some research in the area of dynamic KD-tree generation. There has also been some research in completely dynamic voxels, such that the world is actually changeable real-time. Leaving a foot-print in the sand actually leaves a foot-print there. Possibly permanently depending on how you implement it.
You could also do interesting procedural stuff if you had the compute power, where grass could grow back over craters over time, etc... Other benefits of voxels are the sampling you can do to do motion blur, depth of field, etc stochastically.
You can guarantee a framerate by doing progressive rendering of the frame. Stopping at a certain ms. That gives a lot of freedom to the content people to make the world how they see it in their imagination and no longer be limited by what hardware can provide.
All very interesting stuff, and I'm sure its only the tip of the iceberg.
However... things are not without its challenges. The PS4 may make the life of voxels a little harder. You will likely have to write a custom ray-casting solution for the PS4.
I'm sure many people will continue to use triangles. Hell, even I might. I'm a reasonable guy and will likely measure both approaches and pick the best one for the task at hand. However, ignoring voxels as an option seems kind of silly to me. The game developing public needs a good example implementation of voxels in order for it to really take hold in any sort of realistic way. There is an open source one from NVidia which has lots of ideas pulled from my stuff, however their solution is not really prime-time ready. For example, it doesn't stream from disk so you can only do what you can fit in memory. I don't really have time to write a public implementation of voxels, or to really contribute anything significant to the nvidia one. I'm just too darn busy right now. Who knows though, maybe I'll have time in the future.
Ok, enough voxel talk.
Another big challenge is going to be doing things for 3D displays. I don't have a lot of experience with 3D conversions for games yet, but I will very soon. I'll write more when I know more. Doing so in a deferred renderer seems like it might be a bit troublesome.
I'm sure there is much more that I could chat about here with next gen graphics. Taking each of the previous things in detail. Maybe I'll do a dedicated post to each one.
Saturday, January 1, 2011
Playstation Brain
It would be very interesting for a next generation console (I'm looking at you Sony) to do a brain-wave controller. It would be different enough from both Nintendo and Microsoft to stand out. Of course the technology itself is incredibly primitive at the moment, but nothing a massive r&d push can't fix. :) How awesome would it be to play a game by not moving at all?
Wednesday, December 29, 2010
Gaming in 2011
Free to Play
Despite Red 5's game Firefall being a AAA free to play game, most games will still be pay to play in 2011. However, this is a growing trend that more and more games will adopt in the future. Red 5 is 2 steps ahead of the curve. Companies will always be willing to accept lower margins in order to gain market share. (Interestingly though, some free to play games make more money being free to play than they would if they were pay to play.)
Retro-fitting a free to play mechanism into an existing game will fail. It must be designed that way from the start.
Mainstream Indie
Minecraft has put indie in the forefront of many gamers eyes. Next year will have at least one other popular indie game that goes mainstream, and chooses to not align with any console manufacturer or publisher.
I know that many can argue about other games which reached this category, but I do believe that Minecraft is different enough to be considered its own class.
Linear Videogames
More and more games are going to feel like they are on rails. The rising costs of creating content will push most if not all games in this direction. Sad... but true.
Next generation Console Details Leaked
Some detailed information about the next generation consoles may be announced or leaked. After which the pissing matches get worse then they already are...
Playstation Move Fail
I love Sony dearly, but I do believe they have been out-gunned. Kinect is different enough to stand out against Nintendo. PS Move isn't really all that different from Wii. I expect to see lots of Wii knock-offs that many people will buy. However, I don't expect to see anything radically different. More of the same, but with fancier graphics and possibly some better camera interactions. I'm interested to see SPUs saving the day with PS Move. Go SPU!
Kinect Success
Microsoft will spout out some big numbers showing how Kinect is a financial success. Followed shortly by people being tired of flailing their arms and legs in every game. Still, I expect to see some interesting titles come out of Kinect.
Rage redefines beautiful
Rage from id Software is a fantastic game that I had the pleasure of working on. Id will release Rage with unique virtual texture mapping with a very many jaw dropping scenes in the game. I am a bit worried about the financial success of the product. This being ids first new title in a great many years (over 11 years). Will Rage be able to garnish the attention the title deserves, or will it be a viral hit that takes a while to reach its potential market penetration? Only time will tell. I hope for the best.
Epic releases next generation game
In typical Epic fashion, they will release a game shortly after id which many will praise as being superior. The flame wars begin! At the very least, I expect a tech demo showing something incredible. Epic won't give up their #1 spot without a good fight.
Despite Red 5's game Firefall being a AAA free to play game, most games will still be pay to play in 2011. However, this is a growing trend that more and more games will adopt in the future. Red 5 is 2 steps ahead of the curve. Companies will always be willing to accept lower margins in order to gain market share. (Interestingly though, some free to play games make more money being free to play than they would if they were pay to play.)
Retro-fitting a free to play mechanism into an existing game will fail. It must be designed that way from the start.
Mainstream Indie
Minecraft has put indie in the forefront of many gamers eyes. Next year will have at least one other popular indie game that goes mainstream, and chooses to not align with any console manufacturer or publisher.
I know that many can argue about other games which reached this category, but I do believe that Minecraft is different enough to be considered its own class.
Linear Videogames
More and more games are going to feel like they are on rails. The rising costs of creating content will push most if not all games in this direction. Sad... but true.
Next generation Console Details Leaked
Some detailed information about the next generation consoles may be announced or leaked. After which the pissing matches get worse then they already are...
Playstation Move Fail
I love Sony dearly, but I do believe they have been out-gunned. Kinect is different enough to stand out against Nintendo. PS Move isn't really all that different from Wii. I expect to see lots of Wii knock-offs that many people will buy. However, I don't expect to see anything radically different. More of the same, but with fancier graphics and possibly some better camera interactions. I'm interested to see SPUs saving the day with PS Move. Go SPU!
Kinect Success
Microsoft will spout out some big numbers showing how Kinect is a financial success. Followed shortly by people being tired of flailing their arms and legs in every game. Still, I expect to see some interesting titles come out of Kinect.
Rage redefines beautiful
Rage from id Software is a fantastic game that I had the pleasure of working on. Id will release Rage with unique virtual texture mapping with a very many jaw dropping scenes in the game. I am a bit worried about the financial success of the product. This being ids first new title in a great many years (over 11 years). Will Rage be able to garnish the attention the title deserves, or will it be a viral hit that takes a while to reach its potential market penetration? Only time will tell. I hope for the best.
Epic releases next generation game
In typical Epic fashion, they will release a game shortly after id which many will praise as being superior. The flame wars begin! At the very least, I expect a tech demo showing something incredible. Epic won't give up their #1 spot without a good fight.
Housing bubble precursor
Foreclosures were way up in Q3 2010 causing housing prices to plummet in Q4. Read More
A precursor of things to come.
A precursor of things to come.
Monday, December 20, 2010
Real-time translation on an iPhone
Wow, I'm very impressed that this exists.
http://www.wimp.com/iphoneapp/
This is basically what I said few posts ago w/ computer vision & real-time translation. Very very impressed. I have to try it out.
They just had to cut some corners somewhere. :) Still very cool even if they did!
http://www.wimp.com/iphoneapp/
This is basically what I said few posts ago w/ computer vision & real-time translation. Very very impressed. I have to try it out.
They just had to cut some corners somewhere. :) Still very cool even if they did!
Home owners association
This is some really messed up things some people are doing.
As a member of the HOA, you have the ability to put a lein on somebody's house if they don't pay their dues. You then have the ability to foreclose on the house. Then you personally have the ability to bid on that house and then re-sell it at a profit to you personally.
That is messed up.
As a member of the HOA, you have the ability to put a lein on somebody's house if they don't pay their dues. You then have the ability to foreclose on the house. Then you personally have the ability to bid on that house and then re-sell it at a profit to you personally.
That is messed up.
The crash of 2012
The housing market may have another dip in 2012. My measurements show that this may be a real possibility. Watch out home owners!
Review Xbox Kinect & Kinectimals
I got one of these for my daughter for X-mas. She loves it. She loves to watch me play it that is, not so much playing it herself. That is probably due to her age though. Kinectimals is a genius bit of hardware / software combo. Very well matched.
Here is my review of the hardware: Kinect.
Overall Fantastic device. I'm very impressed that they have been able to pull off what they can with it. The data is fairly low resolution in Z, and very noisy I bet.
It only works when you face the camera. Kind of obvious when you say it like that, but this has some pretty serious implications for what kinds of games you can create.
If you try to play the game with one hand behind your back, it breaks completely: Randomly positioning your arm trying to figure out the best position for it. Don't put your hands in your pockets or behind your back.
Don't point the camera at a window. If sunlight comes in the window, it doesn't work very well at all.
Don't have anything in your hands. It screws up. Including don't hold your kids in your arms.
Don't play while sitting on a couch.
In general, I think the corollary to the Wii's waggle is the flailing of your arms and legs wildly while you try to get the game to do what you want it to.
Precision with the device is apparently pretty bad. So bad that most games auto-aim for you when you try to toss something.
It doesn't detect any finger motion at all, so don't worry about it.
There is also a pretty significant lag from doing something, to the game actually registering the movement. Its pretty easy to plan for that ahead of time with the existing games. So no problems there. It might limit what kind of games you could make with it though.
As long as you are using the games the way they were intended. 9 times out of 10 it does what you want. Which is pretty awesome considering the data they are working with.
The software:
My daughter loooves kinectimals. She just can't get enough of it. Good job on that one Microsoft.
You purchase real-life stuffed animals and then register them with the games. Very cool idea connecting the physical and the virtual with that.
The other games are pretty nice too. Kinectimals is clearly the winner of the bunch though.
Here is my review of the hardware: Kinect.
Overall Fantastic device. I'm very impressed that they have been able to pull off what they can with it. The data is fairly low resolution in Z, and very noisy I bet.
It only works when you face the camera. Kind of obvious when you say it like that, but this has some pretty serious implications for what kinds of games you can create.
If you try to play the game with one hand behind your back, it breaks completely: Randomly positioning your arm trying to figure out the best position for it. Don't put your hands in your pockets or behind your back.
Don't point the camera at a window. If sunlight comes in the window, it doesn't work very well at all.
Don't have anything in your hands. It screws up. Including don't hold your kids in your arms.
Don't play while sitting on a couch.
In general, I think the corollary to the Wii's waggle is the flailing of your arms and legs wildly while you try to get the game to do what you want it to.
Precision with the device is apparently pretty bad. So bad that most games auto-aim for you when you try to toss something.
It doesn't detect any finger motion at all, so don't worry about it.
There is also a pretty significant lag from doing something, to the game actually registering the movement. Its pretty easy to plan for that ahead of time with the existing games. So no problems there. It might limit what kind of games you could make with it though.
As long as you are using the games the way they were intended. 9 times out of 10 it does what you want. Which is pretty awesome considering the data they are working with.
The software:
My daughter loooves kinectimals. She just can't get enough of it. Good job on that one Microsoft.
You purchase real-life stuffed animals and then register them with the games. Very cool idea connecting the physical and the virtual with that.
The other games are pretty nice too. Kinectimals is clearly the winner of the bunch though.
Subscribe to:
Posts (Atom)

