August 6, 2009

Death of PopFly

Posted in Web tagged , , , , , , , , , , , , , , at 10:53 am by sagito

Some of you probably know and have used Microsoft’s PopFly! I did and I think it was a pretty cool online service and above all it was pretty fun to use… (Although it also a bit useless too). PopFly was the Microsoft’s response to the Web 2.0 fever that struck the internet some time ago. For those of you who didn’t know PopFly, it was an online service that allowed users to create mashups by simply dragging and dropping the features you want and connecting them together. This mashups could be sites, games, simple web apps, etc…

Well, at first this seemed to be pretty cool… The truth is this was useless, because there were few contents that I could really export from their site and use as standalone… Nevertheless, we could see some really great works in the popfly site, some of which took obviously lots of time and expertise to create. So, what does Microsoft decided to do with that? Shutdown popfly and destroy every single content that could not be exported!

I was registered in PopFly (and I had to obtain an invitation to join this “elite” in the beginning) and I had some work there… And all of that is now lost. Microsoft, I want you to give me back the time you wasted from my life! Well, at least they warned the users with some funny message which states: “Thanks for stopping by. Unfortunately, on August 24th, 2009, the Popfly service will be discontinued, all resources will be taken down, and access to your Popfly account, including games and mashups, will cease.”. So, I just want to thank you, Microsoft, for valuing my work so much…

But now, lets think for a while… PopFly came out in 2007 and at the time you needed an invitation to work with that thing. Somewhere in 2008 I think, the invitation system was removed and anyone could login. And now, only 2 years after its birth, PopFly is getting killed… In my opinion, this reveals two things: The first is that it was an amazing failure in the Microsoft’s strategy and planning. Because this was obviously expensive to Microsoft. Also, as you couldn’t obtain anything that really matters from this service, it was quite obvious to me that it wouldn’t work… The second thing is that Microsoft must be desperate with something and is trying to reorganize or redraw its strategy… Shutting down a service, even if it is useless and obsolete, is not Microsoft’s style… So, either they are planning something big and need to focus their resources on that or they are trying to reduce costs… Desperately…

But PopFly is not the only thing that Microsoft is killing… Microsoft Money (Microsoft’s Management Software System) was also discontinued and it will no longer have technical support. When I heard of that I thought: “What the hell is Microsoft Money? Never heard of it…”. Apparently it really existed… But not any more!

My opinion is that Microsoft will be closing some more stuff soon. Probably not its social Live Network, as social networking is Microsoft’s main bet now, but I don’t expect a long life for Skydrive, XNA, Live Mesh and Silverlight. The first is quite useful but is very expensive because it requires a huge online storage space. XNA represents an enormous investment from Microsoft, was well received and it is very useful as a prototyping tool. But NEVER as a game creation platform as they intended, because it is way too slow to be able to compete with a C++ engine, for example. Live Mesh is a complete failure in its implementation as I’ve mentioned in this post. Finally, Silverlight was Microsoft’s idea to compete with Flash. However, people got used to Flash over so many years and they don’t want to learn something new that doesn’t bring any real advantage over Flash (although Microsoft invested a lot on saying otherwise, which obviously isn’t true, at least so far).

So, Microsoft seems to be in a very bad and dangerous path… Maybe they will get it someday, but for the moment I think they are just desperate and trying to patch up some mistakes they made in the past few years. This said, I leave you with a sentence that I saw somewhere a while ago: 

“The day Microsoft makes something that doesn’t suck is the day they make a vacuum cleaner.”

July 31, 2009

Constraints

Posted in Computer Graphics tagged , , , , , , , , , , , at 11:11 pm by sagito

Hi everyone! After some absence due to the lost of someone who was very close to me, I’m back to posting… This time to talk about a constraining system that I will attempt to implement within the Conspiracy Engine.

I have been having some problems with some DirectX functions, namely GenerateAdjacency and OptimizeInplace. These functions just crash unexplainably in some memory address that is not in my addressing space. Also, neither the DirectX debugger nor the PIX (tried it in despair), not even the Visual Studio 2008 debugger could do anything to show me the problem… So, I analyzed the assembly code, to find out that something inside the mesh is not properly set. However, I don’t have the means to find out what, so I just commented out the functions and moved on until I have the patience to deal with Microsoft’s brilliant lack of information.

So, I decided to implement a constraining system. Now, what the hell is that? Basically a system of something that constraints something to some other something. 😛 Ideally, this will, for example, stick a camera to a travelling object! Imagine a car in a racing game. We want the camera to be able to follow the car along the track as it moves, otherwise the camera would just be left in the beginning of the track.

It is important to say that… I never, ever, whatsoever, tried anything even near such a thing… My basic idea so far is really making an object stick with other… You could say that this can be achieved using hierarchy. Yes it could! However, I think some more flexibility is desirable… For example, if I want to attach a gun to my vehicle, I would probably like to place it in the door or in the roof… I need something that allows me to control its position and the constraining system will hopefully give me that kind of offset.

I know that there is a huge number of possible constraints to be implemented. However, I will stick to this one at the moment, but I will create a solid enough structure that can be expanded to some other constraint types further on… For now on, I will be keeping you posted! 😉

July 26, 2009

Octree in DirectX

Posted in Computer Graphics tagged , , , , , , , , , , , , , at 11:27 am by sagito

Hello everyone! Back to some news from the Conspiracy… 😉 This time I’m implementing a feature that is quite new for me. An octree! Ok… Wait… What’s an octree? Well, an octree is basically a technique for dividing the drawing space. You start with a huge cube which surrounds the entire scene. If there is something inside it, then you subdivide that cube in eight smaller and identical cubes. Then, for each of these cubes, we must check if there is something inside them, if there is we subdivide them again, and so on…

Ok, now… Why is this so useful? Lets consider rendering… It is not necessary to render everything that we don’t see (because its behind us for example). This seems quite logic to me. But, the DirectX backface culling and occlusion system should be capable of doing this, right? Yes and no! In a matter of fact it really does not render the objects that we can’t see… However, it sends them to the graphics pipeline, executes a draw and only checks if they are visible afterwards. Only at this moment it decides if it really sent to the screen or not. With an octree, we are actually able to avoid such a thing, because we just don’t sent the objects which belong to an octant that we cannot see to the pipeline, avoiding some unwanted overhead.

Another example is the picking! Why try to perform picking on something that we cannot select? It is a heavy operation and we want to be able to ignore such operations if they are unnecessary!

However, there is a small problem, at least, with my implementation. I can reach 6 iterations of depth in an admissible time… Seems that these are few iterations, and maybe they really are… But if we think it through, each subdivision creates 8 space divisions. So, for 6 iterations, that stands for 8^6 = 262144 divisions (maximum). After doing the maths, this seems quite acceptable now… 😛

So, standby for new updates, as they are coming fast! 😀

July 15, 2009

Project Natal

Posted in Computer Graphics tagged , , , , , , , , , , , at 10:50 pm by sagito

For those of you who never heard of it, Project Natal is a new Microsoft project for the XBox360… Ok, let’s see this from a real-world perspective. I build games and play games. I have a XBox 360 and a Wii. The concept of Wii is just brilliant, I loved every cent I paid for each and every one of the games I bought. The very same can be said for XBox 360, except for the concept which is pretty much common nowadays…

Ok, so what is Project Natal? Microsoft’s attempt to control a console without controllers… Ok, right… So, what can I do? If I move my arms, then the character moves the arms in the screen. One of the videos from this year E3 shows someone playing a dodge ball-like game in a XBox360 without controllers. Hmm, nice, but I would prefer to actually PLAY the game with some friends in a real-world field rather then making a fool out of myself in front of a TV. But you can say: “Yeah right, but you could say the same about Wii”. Yes I could, but Wii was created as a party-game console from the beginning. XBox 360 was created for Halo 3 and Gears of War, and you can’t really make a party out of those…

Moving on… What if I don’t have an arm? What will the console do? Throw a NullReferenceException? What if I’m on a wheel chair? Or if I am a midget? Or if I’m tired and just want to sit down? Yes, I sometimes play Wii while I’m confortably sitting on the couch…

For more technical stuff… How the hell do you play a FPS with this system? The answer is simple, you probably don’t… Once again, you could say: “But wait… This is meant for party games”. Yes, I think that Microsoft has already planned the “DodgeBall Instincts Trilogy”, “Overdrive that cube!” and the “Kill the old blocky man – Collector’s Edition: Director’s cut”. Trying to transform a console which was prepared for bleeding-edge graphics into a party-game console seems to be a complete failure to me… You should have thought of that before, Microsoft… 😛

Here is the project Natal video from E3:

July 7, 2009

Textures!

Posted in Uncategorized tagged , , , , , , , , , , , , at 12:06 am by sagito

After a long, long day of work, I’m proud to announce that the Conspiracy Engine now feature textures (finally)! Well, textures do not use to be such a pain, why did it took so long this time? The answer is quite simple… When exporting the object data, 3D Studio Max exports the (X,Y,Z) vertex data and the (U, V, W) texture coordinate data. However, I was surprised to see that I had 8 vertices in my object and 12 sets of texture coordinates… Well, this made sense, because a vertex shared between edges may hava different texture coordinates along each face!

The problem is that 3DS does not keep any kind of relation between one vertex and its texture coordinates. So, we must first ask the face which vertices and which texture coordinates it uses and only then attempt to relate both these kinds of vertices. I could have done this the easy way by just ignoring repetitions of vertices and letting DirectX handle the optimizations. Of course that I chose not to…

So, I had to create two auxiliar data structures to aid me: An Hash Table (with customizable rehashing) and a Pair. With the Hash Table I was now able to set keys for each vertex individually, thereby removing repeated indices and vertices with ease! The Pair was just a helper utility that I used to handle some data more easily. However, I think that these structures will prove worthy in the future, as they did now! 😀

Well, here is the actual result from all this work:

textured

Tomorrow I will be working with collisions, although that should be a pretty simple matter to handle… 😉 As promised, I will be keeping you posted!

July 6, 2009

About Microsoft’s Live Mesh

Posted in Uncategorized tagged , , , , , , , , , , at 12:03 pm by sagito

Not long ago I found out about this new Microsoft product called Live Mesh. The idea was appealing, if you have some data that you want to synchronize between your computers (PC or Mac) or even with your mobile phone, then you just had to install the Live Mesh client, sign in for a Windows Live ID account and it’s ready to use. Microsoft synchronized data among the computers and mobile phones and also with a Remote Desktop which is located somewhere in some Microsoft server and has a 5GB storage space.

At first this seemed like an amazing idea! Was it really? Of course not!

As soon as I heard about this Mesh thing, I installed the Live Mesh Client thing in both my desktop and my laptop. As I was working in a project that used a SVN repository, I wanted to synchronize the SVN local folder between my desktop and my laptop automatically to avoid having to do a SVN update on both computers every time I changed something. Live Mesh looked like a great option for that!

However, one beautiful day, the SVN just crashed in my laptop while updating. Then, as usual, the .svn folder became corrupted, the cleanup wouldn’t work and so, I had to delete the whole folder and perform a complete checkout again. Problem is, that when I deleted everything that was inside the folder, Live Mesh synchronized and deleted everything on both the Remote Live Desktop and in my desktop. Well, that kinda makes sense, because I actually wanted to delete the whole project, right? The problem comes when I do a new full project checkout… For some stupid reason, as the new files were being downloaded from the SVN, they were imediately deleted by Live Mesh! Why? Because it synchronized with the desktop and the Remote Live Desktop and decided that those files should definitely NOT be there… And this would happen everytime I did a checkout, so if I kept Live Mesh working I would have lost the entire project. Thank you Microsoft!

But you may say that this happened because this is a beta version! Oh c’mon, this is a problem that is too serious to be left undetected and released to the public! Either this reveals an amazing lack of testing or an amazing ammount of naiveness…

However, this is not the only problem… When you install the Live Mesh client,  your computer is automatically open to Remote Desktop Connections (RDC). With a RDC you can control your computer over the internet and perform any action that you would do if you had physical access to the machine. Of course that this feature should only be enabled when its really necessary because it represents a serious security issue… But Mesh does not even ask! It just opens the RDC and controls it as it wishes… The access is locked to your Windows Live ID account, of course, but… What if your Windows Live ID is stolen/hacked?

Not only do you lose control of your MSN, Hotmail, etc. but also to your computers now! Every single one that is connected to the Live Mesh! This is too serious to be put aside, and as far as I know, I refuse to use Live Mesh until this is solved! Once again, thank you Microsoft for making me lose my time and work!

June 30, 2009

X File Format Dying?

Posted in Computer Graphics tagged , , , , , , , , , , , , , , at 12:13 am by sagito

As some of you should know, .X files were the Microsoft “standard” format for three-dimensional model and animation within DirectX. These consisted of binary or ASCII files with some a kind of scene graph describing a specific scene. Although they were not very complete, this format along with the helper functions such as D3DXLoadMeshFromX were always a major help while developing simple games or applications using DirectX.

Of course that almost every major company developed their own formats, and in that perspective, the .X file format was quite useless… But what about the small developers? Or the people who are learning DirectX? Will they have to start learning parsing techniques in order to read some other file format? Or will they have to learn some scripting language like MaxScript to export their own models?

As a matter of fact, as far as I know, Microsoft never said anything official about this matter. However, everyone who uses the DirectX SDK may have noticed that since November 2007, support for writing files in the .x file format has just disappeared. Also, what happened to the DirectX Mesh Tool? It was replaced by the DirectX Viewer which is buggy, slow and to be honest, quite useless…

Without .X file format, what can small developers use? Well, for one side we have the .FBX file format. As the .X file format it has a binary and an ASCII mode, so that could be an option… But there is so many useless code inside that I doubt I couldn’t get a working parser for this format in less than one week… Also, the binary mode is a proprietary (undocumented) format from Autodesk…

If this is really Microsoft’s decision, then I’m terribly sorry… Really… If this is just a matter of giving less importance to the small developers… I’m even more sorry… As I mentioned before, I will try to develop an exporter for 3D Studio Max on my own… If it gets anywhere near good, I will post it here… At least, I hope that can help someone!