We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Every programmer knows this in their head, but getting that through to their heart can be surprisingly difficult. When it comes to applying lessons like the one above, it’s easy to find yourself in the middle of a conflict between doing what you know you should do and doing what you want to do. Continue reading →
It seems I’m not the only one who suggests designing games enemy-first.
Recently, while reading some game dev books, I ran across a bit of advice with sentiments similar to one of my previous blog posts. The text in question is from “Shooting Game Algorithm Maniacs”, a Japanese game dev book focussing on SHMUPS (shoot-em-ups).
For folks who may not be able to read Japanese, here is my translation of the advice from the conclusion of Chapter 2 (called “Stage 2″ in the book.): Continue reading →
Normally, when you copy-paste data between objects in the UDK Editor, the source and destination objects must be the same type in order for the data transfer to succeed. There is, however, a useful trick you can use if you ever find yourself needing to copy large amounts of data between objects of different types. Continue reading →
Here’s something fun to do if you’re ever feeling REALLY bored. Try searching for something on Google. Then, on the result page, use Chrome (or some other browser if you must) and inspect the images used on the page. You may be surprised to find that most of the images on the Google results page are contained in a single png like the one above.
Note: This a re-post from my old blog, originally posted June 2010
On June 11, 2010, I released my first indie game, Legend of the Rune Lords, on Xbox Live Indie Games. LotRL is a short role-playing game featuring many of the trappings of full RPGs: stat-driven combat, leveling, multiple characters, and a cutscene-driven story. While hardly a great game, I think that it stands as a good example of what a determined (or at least stubborn) individual can accomplish in their spare time even while crunching at their day job. Continue reading →
Or, more specifically, singletons are global variables. Really, that statement shouldn’t surprise anyone. But, every once in a while, usually in the middle of designing or researching code templates for creating singletons, people can forget what the singleton pattern was actually designed to accomplish. Continue reading →
Almost every detail in a game has a development story behind it. Even those company logo movies that play before the title screen. People who’ve played Gears of War 3 may have noticed that Epic Games and Microsoft Game Studios deferred their usual logo movies for custom movies themed to match the game. Using custom logos is certainly a nice creative touch, but there may be other, more technical, reasons why Gears of War 3’s startup movies ended up looking the way the do. Now, bear in mind that I don’t any particular first-hand knowledge of Gear of War 3’s development so this is just me theorizing as an outside observer. Continue reading →
They might not realize it due to my surly programmer attitude, but I love my testers. I especially love a good bug report. If a bug report is good, it can direct me almost exactly to the code I need to fix. Some of the best reports allow me to diagnose a problem before I even look at the code. With the right information about when, and under what conditions, a bug occurs, I can figure out solutions without so much as turning on my PC. Even when I don’t know why a bug is happening, I can, at the very least, direct the bug report to the person most likely to know what’s going on. Good bug reports can save incredible amounts of development time and, ultimately, lead to a better game. Continue reading →