August 3, 2009

Fallout 3

Posted in games tagged , , , , , , , , , , , , , , , , , , at 10:27 pm by sagito

Bringing you a new section in this blog, and as I finished this game yesterday, I’m posting my opinion on it today! Fallout 3 is all about atomic bombs and nuclear power. In a distant future, the united states were devastated by a nuclear war and pretty much everything lies in ruins now… Before the war, a powerful company named Vault-Tec built some underground, radiation-proof bunkers where people could live in the case of such a war happening, named Vaults (wow, surprise!). The story begins with the birth of our character which is followed by a (not so) brief tutorial until our avatar reaches the age of 19. At this age, our sweet daddy doctor runs away from the Vault where we were born and guess what… We must find out what happened to him…

Now, the box says that we have the freedom to choose our story… Well, I tried to do that, really did… If the character’s father wanted to go to hell, that was his problem! I wanted to stay in the vault… However after a short time, some dumb guards showed up and without further questioning just shot the hell out of an unarmed 19 year old boy, which obviously resulted in a game over… Ok, so I really had the freedom to choose! Either I pretend to be a good son and get out of the vault searching for daddy or I get killed because I was following the Vault’s rules and stayed there… Way to go, Bethesda studios!

A note to the VATS Targetting System: Brilliant! Loved the concept and it didn’t make the game any easier… Well, maybe a little, but I welcome such a system with great pleasure! Basically, for those who didn’t play the game, it consists in a system that stops the action during combat and lets the player decide where to point the shots at. The chances of hitting depend on your stats, of course, but it eases the pain of pointing and shooting when using a XBox 360. It was an innovative system that realy brought a nice feature to the game.

Anyway, the game has some pretty nice graphics, using great particle and lighting effects, specially during combat. Also, the quality of each death makes the game not only visually stunning but awesomely fun to play.  I kept going back to some of the metro stations just to shoot the head out of some Feral Ghouls. Also, the missions are not boring… When I thought they were getting repetitive then the game came out with something really surprising… And this reveals a kind of attention that I really appreciate in video games. However, there are some bugs that could have been easily corrected, but are not really relevant… The animations when playing in third person are so bad that I would prefer to hide my characted in some dark spot and throw three grenades to my feet then to actually play with this perspective… Nevertheless, the good guys at Bethesda gave us a first person view, which is awesome, so that bug is pretty much forgettable… A somehow serious bug happened when I arrived at Rivet City. I wandered around the boat for a while until I found a door that lead to the wrecked outside. At this point, collision detection below my feet just failed and I fell to God knows where… All I knew is that I was receiving 5 rads per second, wherever the hell I was! Of course, I ended up dying, but at least I should look like a beacon with so much radiation on my body. Final bug, (but I loved this one), the final boss… He was protected by some minor guards, which were easy to deal with as soon as I had my reliable plasma rifle. When I killed these guards… There was no boss! Where did he go? This was answered on top of the stairs… Somehow the bunker door closed on top of him, blowing him to smithereens! Pretty easy to kill! 😀

The overall game is pretty good… The story is completely forgettable and now that I think about it, its sort of a nonsense… Who the hell are the enclave? Why did I risk my life to get to my father after all? How the hell did that general survive to the intense radiation? What was the enclave doing in those labs? However, I must say that if we forget the story, this is really a great game and above all… Its fun as hell to play it! And isn’t that what matters most? 😀

So, here is my veredict:

Story: 3/5

Gameplay: 4.5/5

Graphics: 4.8/5

Atmosphere: 4/5

Longevity: 4.3/5

Fun-niness:  4.9/5

Final Score:  4.25/5

July 23, 2009

Physics of Conspiracy

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

Hi again! This time I dwelling through some unknown ground and finding some real big monster-problems as I go. I’m trying to create a physics engine for the Conspiracy Engine! Well, as some of you might now, the ideia behind a physics engine is to predict where will something be in a future moment! (Yes, we, the computer people can predict the future!).

For example, if I have a ball and I drop it from a tall building, I want to be able to predict where will the ball be after 1 second, after 2 seconds, 3 seconds and so on, so I can be able to draw it on the screen. And I also want to do this in a minimally realistic way, so that the ball doesn’t start to fall and comes back up or something. So, many laws must be considered here and all of those come from general physics. These are not my big problems, because fortunately, many scientists around the world have already documented those.

The biggest problems are integration and programming. The first one can be solved in three possible ways. Give up, which is never considered in my life; using the Euler method; using the Runge-Kutta 4 Solver. As I have read through some documentation, Euler has some huge mistakes and can easily lead to big problems in a short interval of time. Runge-Kutta needs some more calculations, but guarantees pleasant results! As Gaffer On Games says: “If you use Euler, then you are a bloody idiot!” 😀

The second problem is how to integrate this in an existing engine. This can be done either as a separate DLL (which I think its best) or within the engine itself. The last approach is probably the reason for many suicidal or depressive mental states. So, I’m thinking about creating a separate engine that is able to represent the physics laws and somehow connect both in order to create a nice realistic environment.

And meanwhile, I will keep you posted… 😉

July 5, 2009

New Stuff!

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

I’m bringing you some news from the Conspiracy Engine! Since yesterday, I have been able to implement three new important things in the engine. The first is a TAL (Top Abstraction Layer) that manages the engine almost totally. This was implemented through several Adapters and a Facade pattern. It is working nicely now, and most of the code that was in the main.cpp could be hidden under this layer now, simplifying the whole thing. I will try to create a configuration (scene-graph like) file that will be loaded by this class and automagically presented. The whole engine is already prepared for that, it is just a matter of putting things together.

I have also implemented geometrical transformations. Due to the overall organization and architecture of the engine, this was much quicker than I expected and took only about fifteen minutes to complete.

Finally, I have managed to get the Picking-related stuff working. Picking is always a big headache because it envolves a lot of maths (matrix inversion between three vectorial spaces, conversions, etc), and also because it is a HUGE design problem! Why? Well, as some of you should know, Picking is the possibility of selecting an object in a 3D world through the click of the mouse. However, the mouse “lives” in 2D space while the scene is usually 3D. So, the mouse coordinates are caught up in the Input layer and must be propagated to the Object Rendering layer in order to check if some object was intersected by the ray generated by the mouse click. As you can imagine, crossing several layers many times and returning to the interface is a quite tough design job…

However, my approach tried to obtain not only quality in the design (without violating any abstraction encapsulation) and also performance. As I already need to go through every object while drawing, I figured that I could use the drawing cycles to perform picking. As every function returned void at the time, they now return the set of picked objects! This way, I shared as less code as possible (in a Aspect-Oriented Programming way) and still managed to obtain the most of the engine performance!

Now I shall work in the textures. There is not much work left, so that when I finish some last things, the game should be born! 😀 Promise that will keep you posted… 😉

July 3, 2009

3D Model Loading

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

Hi all! 😀

After a small time without posting anything, due to an exam which happenned today, I’m now proud to say that the Conspiracy Engine is already capable of loading  three-dimensional objects from the CMF format defined below. It still does not try to load neither textures nor materials, but the geometry is already being properly loaded!

In the past, I have tried to create a mesh from a format other than .X and I failed because I just couldn’t get access do an ID3DXMesh* vertex buffer correctly. Either the data was scrumbled and corrupted or the mesh would just not grant me access to the buffer. This time, I tried to adopt a different system and I created the mesh with different pool and memory flags. Apparently, this did solve the problem! 😛 However, I’m still looking forward to see if that really stands when I try to put some animations within!

I will be posting some screenshots very soon! The Conspiracy engine is now getting really solid and robust. I could even say, that even in such an early development stage it already is more robust than all of my Enoch engines all together!

So, what is it needing now? From my perspective, mainly two things… A scene file loader, which takes a file and builds a scene from it, and a graphical editor. This graphical editor should be a tool that would let me import new things into the game world, position stuff, create AI routines, etc… Something like all real engines have! And I’m looking forward for the challenge of developping such a thing.

Will be posting news pretty soon, stand by… 😉