Select a blog chapter:
Quick jump:
Your accented quote and dictionary feed
RICO: Racketeer Influenced and Corrupt Organizations Act. Passed in 1970 to aid the government in clamping down on organized crime activities, its scope has since been broadened to prosecute insider traders and anti-abortion protesters.
The Sopranos: Mobspeak

Safehouse

Patterns: Path to a solution or a path to over-engineering? 06/25/2009 11:19 GMT+8
Mood: Anxious
BGM: Akon - Right Now (Na na na na)
I guess every programmer needs some guidelines in designing Object-oriented (OO) software. Especially when you're dealing with programming languages such as C , which isn't very syntactically friendly as compared with your high-level object-oriented programming languages such as Java or C#. If you want your code to be readable and flexible, and perhaps solve real world problems a good start would be reading about Design Patterns. In my own experience in reading about design patterns, design patterns will aid you in realizing the following items:
  • See how you can make objects out of everything -- even your own code!
  • Gain insight of what available design strategies in coding are already available.
  • Turn your code into something both elegant and efficient.

With that said, many programmers are often misguided by reading about design patterns as well. Quite contradictory ain't it? It's primarily because of the programmers who read about it are trying too hard to put their problems into patterns, whereas they should be trying their best in solving their problems in the first place. Programmers are often engrossed with design patterns after knowing about it, and would like to apply them in their arsenal forcefully. This is wrong and should be avoided. If you haven't noticed how many times I've placed the word "guidelines" in describing design patterns. That's because that's what they really are -- guidelines. They are not rules that you strictly follow. You shouldn't even implement the patterns 1:1 as how they are in literature. You must first check your problem first and see if some techniques in existing patterns would work out.

For instance I've been wondering if I should really apply Singleton and Abstract Factory to handle the creation of my classes of the same kind but with different implementations like so:

class ObjectFactory : public Singleton< ObjectFactory >
{
public:
   Object * Create( eObjectTypes p_type )
   {
      switch( p_type )
      ... // cut for brevity
   }
};

True, I need a factory to simplify object creation of classes of the same kind but with different implementations. However, I need it such that I can accessibly call it in most areas of my code, and I just needed one instance of it. Herein comes the Singleton pattern.

After a few minutes of thinking. I realized that the Singleton is unnecessary because it acts just like a namespace! Another problem to using Singleton is you have to bother yourself with handling the instance of the singleton (creating and destroying). Namespace can make it differentiate from other possible implementations with the same name. Namespaces also provide the bounds provided by class but with lesser memory footprint. No need for instatiation and destruction of the factory. So, in the end I have this much simpler implementation:

namespace ObjectFactory
{
   Object * Create( eObjectTypes p_type )
   {
      switch( p_type )
      ... // cut for brevity
   }
}

Same purpose, same functionality, and same accessibility but easier and shorter to write, and less memory consumed. A fine example wherein you just have to see Design Patterns as a guide and not as a rule.



Engines: PGE and PGEX 06/16/2009 14:15 GMT+8
Mood: I don't know.
BGM: Silence.
If you were eyeing this website for some time already, you might remember Precureon Game Engine (PGE). Well, it's a long time ago and I actually stopped doing it when I realized the API on it is beginning to look like it's hard to use even for me. After that, I just decided to go towards in creating an engine in DirectX 9.0 and just that. It was called PGEX, where X stands for the X in DirectX.

In creating PGEX, I've fairly managed to keep the code well organized, trying to be truly OO. Let's just say, I'm satisfied on how it is coded so far, but I am aware I might still be missing tons of design issues ahead that I still can't picture for now. However, there is this time I encountered a stumbling block on development. I was having a hard time making my InputManager and Engine class communicate each other. That's when I saw that I need a lot of refactoring and clarity of what are the primarily responsibilities of the classes. I did not throw away PGEX as I think it's just a matter of refactoring and not restructuring. In the end, I realized it would be best to just make the engine cross-platform, as it enforces good unified abstracted interfaces to make the Engine easy to use and less coupled.

I actually just merged the good stuff from PGE into PGEX. It took a while to make it done but it was a soothing and logical path to take. Now, technically it's not PGE and not PGEX. But, I retained the named to PGEX as it could be cleverly read as PGE, and X for "Cross". PGEX is now on the cross-platform route again but only the Windows versions of the classes are implemented.

The takeaway from this experience is to realize when to back off early and look at the big picture of what you are doing. Find out if anything you have done so far still makes sense in the perspective of each class' responsibility. Gauge whether it is much better to rewrite or to just refactor. Don't ever be afraid to use the delete key on your code if you think it really needs a rewrite, but you just have to make sure that it can not be solved just by refactoring, as refactoring saves more time and normally fix design issues.



When In Doubt, I Sonic Boom! 06/15/2009 15:03 GMT+8
Mood: A bit of freezing.
BGM: Exile - The Next Door
Street Fighter IV
Let me tell you a secret. A secret that I've been wanting to tell for so long. No, not that. I actually have a 5.1 Full HD XBox 360 set up in my room! Since when? Well, I got the LCD TV and 5.1 sound system in December 2008 and the XBox somewhere late January 2009. All for what? STREET FIGHTER IV! I didn't care if it made me lose almost all my savings. That's how I really anticipated STREET FIGHTER IV. See, I even keep on spelling it in all caps.

Ever since I got the game, I never stopped playing it. Even more when I do online battles through XBox Live! It's like an arcade right in your own home. On arcade mode when connected to XBox Live, anytime an online challenger can interrupt your game and challenge you. People are ranked according to BP, which I can guess stands for Battle Points.

Surprisingly, I am finding a hard time going over the 2000 BP. I just realized how I need more skill in playing the game. As some of you may know from before, I'm primarily a Guile player. But I do have alternate characters that I use such as Zangief, Cammy, and Gouki. It's a very exciting experience. Fighting Games in general are the only games that I can keep on playing over and over again for years.

Guile
Before I forget, Street Fighter IV has a system similar to the original Street Fighter II, with a few modern features integrated. Yes, stunningly beautiful super combos and ultra combos are there, along with a simple parry system, which is now called Focus. Focus can either be a parry or a focus attack -- a stunning/cancel move.

There are lots of information already about STREET FIGHTER IV on the Internet, so it would be redundant to elaborate on things here. Just google it, I'm sure you'll see lots of info. Though, I prefer taking a look at the YouTube videos. And this coming July 2009, PC gamers will enjoy the action as STREET FIGHTER IV will be released on the PC. More players to come yey!

Catch me online in XBox Live with gamertag "Death4HirePH". See you and hope we spar!



United We Stand 06/14/2009 22:23 GMT+8
Mood: Impressed
BGM: Just TV Noise
Unity Game Engine
A few months ago, I was introduced by a friend of mine from Norway about another game Engine called Unity. Unity is originally a 3D engine made for Macintosh platforms. As of the time it was introduced to me, it's still purely for the Mac and iPhone with a promise of releasing a PC version in the future.

All I can do at that time is to browse through its website and see if it is well documented and supported. I discovered that it's a sleek nice engine with powerful 3D rendering. And the thing that surprised me most is its capability of publishing the game on a web-browser! All you need to do is download and install their Unity plug-in and the next time you visit that site page, you will be able to play the game in full 3D! The documentation is indeed well written or should I say completely suffice to what reference you might be needing in using the engine. The scripting language used is JavaScript, C#, and Boo -- languages that are more established rather than a lackluster proprietary language that some engines enforce.

I am just too excited about that engine that I thought I should just try it and prepare for projects for that engine. But how? I don't have a Mac! Well, my only option is to turn my MSI Wind Netbook to a Hackintosh. Ridding out of all the details on how I did it, I was able to prepare a Hackintosh thanks to MSIWind.net. I quickly downloaded the Unity Mac demo and tried it out.

Unity is amazing! It's one minimalist-looking editor packed with fully organized features and power you need on a game engine. It's a world editor, script editor, and an asset manager/repository in one! A neat and soothing feature of Unity is the one-click publishing feature. With just a click, you can build and run (deploy) your current project to any supported platform. Also on editing and creation of a scene, you can live edit the gameobjects on run-time. This certainly speeds up debugging and testing.

Unity Editor
A few weeks later, GDC came. On that time, Unity released its Windows version! This version is no different from the Mac in terms of look and feel. It's a good time for them to launch the Windows version because I don't have the money to buy a Mac yet. But, I do have the money to pay for an Indie license, which I acquired. Insane? No. For me, it's good investment. Despite to what most people perceive of me, I am a games programmer first, and an engine programmer second. I want to make games fast! Aside from the cool things I mentioned about Unity before, a personal reason I like about Unity is that it's a model for my end goal of my engine. Unity did what I thought is a good engine, specifically, making objects act like a modified composite pattern, wherein the game object act as a container of components which define the behavior that game object has.

So, if you want to make games quick with less the deep intricacies of programming them but still yield a customized original game from "scratch", try Unity!



Faux Hawk in the World of Suits 06/12/2009 18:49 GMT+8
Mood: Relaxed
BGM: None
Andrei refreshed.
This past February, I was going to a convention locally. It's actually a first game development related convention that I would be attending in the Philippines. And on that time, I thought I should change a bit. That's when I decided to do a small makeover on myself. The goal was to try out a new hairstyle through a stylist rather than a barber to do my hair.

I've been wondering what hairstyle would fit me. I really wanted one to be funky, modern, and emits a ready-to-party attitude. But, I must consider that it could be appropriate for business matters. Also, I am strict about looking clean and well-groomed and the one that looks masculine. After careful research, I've come across a soccer player that I like -- Mr. David Beckham. His Faux Hawk (Fohawk) hairstyle really fits my preference and it really looks great. The only last true test is to try it and hope it works out well on me.

Having decided what hairstyle to take, I now looked for a place where I can get my hair done. I definitely can't go to where I used to had my hair done because it's a standard barber shop. I need this to be done by a professional stylist. Knowing stylists, it is guaranteed that I have to spend more on the service than what I am used to pay in a barber shop. But, I have limited funds so I looked for a place that's within my budget. My search ended on discovering Bench Fix. That's where I had my hair done. And I'm happy about it. See for yourself.

Oh, right after that I thought I might need a good new suit to go to the conference. That's when I dropped by some stores looking for the long-sleeve polo I've always wanted. Again, same with the hair, it should look both professional and party-able. My model for this overall look was a European male friend when he visited in the Philippines, which fits my expectations on how I wanted to be and how it reflects my personality. And yes, I guess that's my lucky day -- I found that polo that suits me well altogether with my new hair. Pricey than my usual expenditures but the experience is something I learned that I generally get what I pay for. I'm glad I saw how my money was well spent in the process.

The panel.
The next day came and it was time for the convention, which was held in SMX Convention Centre in Mall of Asia. It's called E-Services 2009 and primarily geared towards BPO companies, but for some reason Game Development was included in the tracks. In those sessions, I've finally met people from Collision Studios that are situated (but hidden) here in Manila. Mr. Philippe Erwin and Mr. Darrell Benvenuto represented Collision Studios and presented facts about Games Development as a business. Also, Chris Avellone, a well-known games designer from Obsidian Entertainment, also shared his thoughts on how to start a games studio and reach to the success similar to where his company is right now. For those who didn't know, Obsidian Entertainment is a company that made famous games such as Neverwinter Nights 2, and Star Wars Knights of the Old Republic 2.

The whole event was OK and it felt good that it is comfortably located near home. Business-wise I learned about game biz more and how to grow a studio from it's small beginnings to a bigger one. According to the session, the key was to iterate on a small part of want you want to achieve in the end. You start iterating over and over a single feature you wanted on your first game, then another feature you wanted on the next game until you have all features on that game. This way, you gain specialization as a studio, which comforts most publishers on whether to take your projects seriously or not.

I took some photos during the event. Click here to see them.



I Have TMI 01/30/2009 09:51 GMT+8
Mood: Shocked
BGM: None
Here's something my buddy shared to me which is shockingly true personally and I feel everybody should know about it. It is one helpful guide for you to survive. We've heard from a number of people or from the media that "Information is Key" but that's not entirely true. As you can see, TMI is "Too Much Information", a serious problem in the workplace. So, I recommend you reading this article:

Workplace Issues - 13 Things To Keep Yourself at Work



  And you are?
  Gimme the code.
 Don't forget.
Still a nobody? Sign up.  |  Why join?
Lost password  |  Reverify email

Message through the Mouth
  Who are ya? (Blank = Your IP)
  What is it? (English only)
   

Notable Associates of the Family

John Gotti took only -0.838 seconds to extort this page.