Site Sections

Sunday, May 11, 2008

Back To School

Oh the joys of summer... Nice weather, pretty flowers, clean air, and the first Grad class towards my MBA...

Ok, everything in that list is good, except the last one. I am excited to be pursuing my MBA as I would really love to run my own software development company some day (preferably in game development - obviously), but in truth I am not really looking forward to going to class 4 days a week on top of working 40 hours a week. Not to mention it is a class on accounting.

Obviously there is nothing wrong with accounting (or business classes in general) in fact, I think that it will give me an opportunity to work in a more interesting field, as I should be able to do Software Architecture for large scale projects. For this type of work you need to be able to manage a team of engineers in performing smaller parts of the big picture. No one creates large scale applications on their own these days, its all done using team management. Software needs to be designed with this in mind, it is the basis of OOP (Object Oriented Programming). Also, with the dream of owning and running your own software development firm, it might be a good idea to know how to do some accounting.

However, this does not leave me much time for socializing, traveling (which I have been trying to plan this summer without much luck), video game playing (which I have a few on my list that I would like to play), or most importantly, work on my level editor, let alone the other projects that I have started. Also it is important to get a good nights rest (if I get the opportunity).

Bottom line... to succeed in life, you can never sleep.

Friday, May 9, 2008

Joys of Life

So I have an amusing story to share. Last night, I was working on my Direct X Editor, trying to get the initial polygons on the screen to test my viewport/learn a little about vertex buffers in direct x. Needless to say I learned something about Vertex Buffers.

So the plan was to create a grid of verticies for the purpose of creating a reference grid on the xz plane about the y axis. Simple enough right? I thought so. Anyways, I get my verticies set up and I create my Vertex Buffer (so I thought) and set up the function to do the drawing. Nothing appears...

Well shoot! What did I do wrong? Am I drawing the Polys in the wrong direction (Counter clock wise instead of clock wise). So I try a simple test, I rotate the grid using an x transformation of 180 degrees. Still nothing.

Hmmm... I think to myself, that is strange. Time for some debugging. So I step through my vertex declaration and convince myself that my location of verticies are correct. I check my viewport declaration, its correct. And now I am frustrated.

I get out some sample code, add it to the project, and give it a try. Sure enough, the sample code appears on the screen as two annoying little spinning squares right where my grid is suppose to be. So there is obviously something wrong with my code. I compare and compare to no avail. I try to insert my vertex buffer into the sample drawing code, no luck. I even try to redefine my vertex points exactly as the sample code, no luck. Now I am really confused.

Finally! I figured it out, apparently when you create the vertex buffer. Normally you have to create a void pointer object for use in referencing the memory that the vertex buffer will use to hold our vertex information. Then we use this pointer to lock the vertex buffer, copy the memory and unlock the vertex buffer and all is good.

Well... let me tell you, sometimes life has a way of playing small games with your head.
Frustratingly enough, the memcpy function used in this procedure doesn't care much what type of pointer you place in its parameters. We want this definition: memcpy(void*, Verts, sizeof(Verts)); where Verts is the array of vertex structs that we want to put in the buffer. Yet it turns out that I was using this: memcpy(void*, VertexBufferObject, sizeof(Verts));

What this means, I really do not have a clue, but once I fixed the memcpy, life was good again, except for the mess I made in my editor code trying to debug... Oh well.

Wednesday, May 7, 2008

Switching To Direct X

I have finally decided to drop XNA. I do not feel there is the control and access, or support from the industry as a whole, that I am looking for in a game development API. Although I love C# as a language and I do hate so the naming conventions of objects in Direct X, I think that learning Direct 3D will be more applicable in all industries and be much more respected in the game industry when I plan on switching over.

This site as a result will shift its direction towards Direct X. I am still working on some minor stuff that I have already started in XNA: such as the IceJeweled game, which should be complete in the next month or so. Finding time to work on it has been difficult as of late so once it is finished I will post a link to the download here.

As for the rest of the stuff, I will be converting most of it over to Direct 3D, and adding additional toolsets, some of which may end up here. My plan is to start developing a 3D level editor. I have been working with .x file formats as of late and it seems like it might be easy to develop an editor based on loaded mesh models (more on this to come).

Monday, May 5, 2008

Something I Would Like To See In Visual Studios

So today I was informed as I was working in National Insturments Lab Windows, that there was this nifty little button at the bottom of each editing window. It kinda looks like a calendar, turns out however that it is designed to change your highlighting mode.

What does that mean, you ask???

Well, what it does is change how highlighting/selecting of text behaves in the editor. One option is your standard highlighting, word wrap around the lines. Another option allows you to highlight entire rows based on your vertical drag, useful for deleting whole lines of code quickly or for grabbing text lines to tab when formatting code.

The final, and I think is the coolest, is the box selection. This allows you to grab any box of code, no line wrapping, and do as you will with it, copy, paste, even pressing tab has the effect you think it would, tabbing the highlighted code over 4 spaces! Its genius, very useful for lining up comment blocks on the right side of code, moving comment blocks without having to disturb your code.

Microsoft "borrows" most of their ideas, I think they should borrow this one.

Saturday, May 3, 2008

Final Fantasy: Crisis Core - Definitely A Crisis

Crisis Core came out finally last month. I was really excited of course being the Square Enix fan boy that I am. 10 years of waiting for another Final Fantasy 7 game that would promise to live up to the original without being a remake. I mean Dirge of Cerberus was alright, but not what I was hoping for. Square has never made first person/third person shooters of note and it was no exception. The story was decent but it felt more a movie than a game. (Mostly a work of having a lot of movie assets that didn't want to go to waste from Advent Children)

I was very disappointed with the Crisis Core though, and it wasn't a lack of story (actually that was part of it), but the repetitiveness and overall lack of content that the game provided. I feel like I am doing the same thing for hours on end, and thats because I am. I feel the ability to avoid 90% of battles is a blessing instead of a cheap bug. Missions are highly predictable because they are all the same.

For the most part, the story of Crisis Core is already known to the player, if they have ever played FF7, and why you would pick up Crisis Core if you haven't played FF7 I don't know; as you would find the story choppy and full of missing information that is implied from the first game. Thus, you would think that mechanics and game play would be top priority to sell the game since you are not really selling a "New Story".

Now for the most part the game is not "Terrible", it does have some beautifully rendered movie sequences, but these are few and far between, and the DMV system I find very annoying when I have no control over its movement. I think I would rather have an experience system so I can know how much longer before I level up. The Materia system isn't, dare I say, Bad? It is quite customizable, but with limited options, I feel as if I am simply buying experience and ability. This is not to mention that you basically need the high end materia later on in the missions to even survive the many one hit deaths that the enemies do to make the game "challenging".

I think that if more time was put into the missions and more mechanics were added to give them a bit of individuality, it would have made the game much better. I hate to say it though, I think this is the first time I have been very disappointed in a Final Fantasy game... and sadly it might be another 10 years before we see any more light shed on this great story.
Overall rating 6/10

Monday, April 14, 2008

Book Review - 3D Math Primer for Graphics and Game Dev

In this edition of Book Review... ahem... sorry for the intro: For real though, "3D Math Primer for Graphics and Game Development" by Fletcher Dunn and Ian Parberry is quite a good buy. I have been working through the examples and as a Math Minor that hasn't done much Vector math in a few years, this is a great refresher course.

The first couple of chapters on coordinate systems is great for anyone who has never passed junior high algebra, it is a little light on the content but the examples are easy to understand. Don't expect any sort of Real analysis involved, purely discrete math here. Later chapters go into Vector based math (Dot product, cross product... etc) and actually gives some real world examples of when they might be handy to use in graphics programming.

Continuing from there, source code is provided for a basic vector class (not that you will really need this as most APIs provide an optimized version for your use automatically, but it never hurts to have an understanding of what the API is actually doing under the hood). Also there is quite a bit of information on Matrix math, linear algebra definitions for the math geeks out there as well as explanations for why you need to know how to do all of those complex transformations that your linear algebra teacher never had an explanation for (especially if you went to a non-tech school).

Finally, the last chapters include displacements in 3D, as well as good coverage on Geometric collision detection and algorithms for lighting and shading. Don't expect the book to cover advanced HLSL shaders or any sort of high end effects modeling, but this gives a great place to start for those looking to understand 3D graphics whom have only worked in 2D using Trig functions. Also, good reference for any 3D developers bookshelf. - 5 Stars

Thursday, March 27, 2008

Long Time... No Post

So its been a while since my last post. I've been busy with work and stuff.

Lately I have been planning on going back to grad school. Going for my MBA, and I am starting this summer. That means less time to work on my game engine. Oh well, I will do what I can when I can I suppose.

I have been working on a remake of BeJeweled with bombs and nifty other stuff, so I will post a link to the download of the game when I am done with it. I do not plan on charging for it, especially when it is super easy to program. Visiting the site should be enough for that, so come back often.

Thanks to those who have visited, Almost to 250 hits now, crazy... I don't even advertise the site.

Some of the source for the BeJeweled game may be blog worthy, so when I am done I will try to post some of it.

See you soon!