Over these last many years, I’ve spent a lot of my time working on military contracts. I find it interesting to see how different they are from video games on a strategic level but how similar they are on the tactical level.
Archive for programming
Part of my inspiration for all of this was mostly the fact that a new Wolfenstein is coming out, and I had a spare night to code something random. I chose to crack open some of the file formats to 2009′s release of Wolfenstein to hold me over while I wait for the next id Software game to make it’s debut.
I don’t know why I am so interested in these types of off-the-path rendering techniques. Perhaps it has something to do with the fact that they are so different from the classic “push more polygons” pipeline. Or maybe that they serve a singular purpose of trying to make the experience better through a non-traditional use of traditional content like triangles and textures. Still, now that the dust has settled and everyone has chosen their sides in the fight I wanted to go back and analyze Megatextures more. I wanted to question if it was the right choice for id Software and what can be done with it in the future.
I’ve been following this technique for far too long. A likely side effect of my addictions, I find myself combing the whitepapers and lectures of companies like Crytek, id Software, Dice, Valve, Epic, Ubisoft, and many more. I guess it’s not the worst thing for an engineer to do with his spare time but, as I’ve mentioned in previous posts, wanting to follow in the steps of giants often leaves me standing in a dark place from the large shadows they cast. And fully knowing my flaws, I still venture into this technology to ask myself if it is something worth investigating for my own indie-scaled games. » Read more..
For some people the early stages of development are the best. This is when the pie-in-the-sky ideas get put down on paper and everyone has smiles on their faces. This is the time when you almost never hear the word, “no” because every idea that spews from someone’s mouth sounds like sweet sweet music. The early stages of game development is always the greatest time for the creative side of your brain, but it’s also the time that makes your logical side shed a tear whenever you start to hear buzz words like “bleeding edge”, “innovative”, and “multi-platform”. It is especially painful when they are coupled into the same collective pitch.
More recently I have found myself questioning what my next project will be. It feels like a daily activity to bounce back and forth between, a dedicated PC game, or a multi-platform game that may have some sacrifices. It sounds like a no-brainer doesn’t it. The “smart” bet is to aim for multi-platform but what does this mean for an indie developer? » Read more..
I have a dream, a dream of a one-console future. My dream is not as literal as it sounds however. I want there to be variety, competition, the ingredients that drive prices down and raise the bar for consumer hardware. What I also want is the ability to start gluing these devices together.
The technology is available today if the major players would just stop the pissing contest for one second and realize that collaboration is the key to progress. Everyone in this business is trying to be the next hot thing and they do that by introducing something that is kind of like the other guy. Microsoft and Sony have been playing copycat on each other and on Nintendo for a while now. Apple is doing what they always do, take an idea from someone else and make it consumable by a larger audience. Nintendo continues to introduce new hardware devices into the market to maintain their sales, but ultimately they’ve been selling the dual screen idea for a very long time. Everyone is hellbent on their on twist of the same wheel.
What if there was a truths between these companies to start setting some standards? Just like UDP/TCP or HTML or wireless technologies, standards allow a common language to be spoken between devices that might otherwise never know the existence of the other.
The latest craze right now seems to be this idea of dual screens in your home. Microsoft Glass is a small step in the right direction, but I’d like to see this technology go both ways. I’d like to see a standard that allows handheld devices (iPad, DS Next, VITA, Mobile, etc) to stream their content directly to smart TV’s. Why not project the top screen of a DS Next onto the biggest screen in my house? I’d like to see this dual screen future be a (technical) unified experience. There’s no reason, other than selfish intent, to force proprietary API’s and non-standard communication protocols for something as simple as terminal communication with a display device. Why should anyone have to purchase an Apple TV box, XBox, PS3, and other superfluous devices when most modern televisions are already playing games and downloading apps. Many televisions today are shipping with built-in WiFi or Bluetooth technologies.
As I said before, the technology is available today. Manufacturers just need to put their differences aside and accept that standards help to evolve technology through a hive mind approach rather than corporate dictatorship. Homebrew Kinect is proof enough that the masses probably know the product better than the people making it. So let’s see some communication standards for this generation of electronics and maybe, just maybe, we can all get along.
As some of you might know, I recently published my latest Xbox LIVE game called Ashlands: Retribution. In Retribution, I used a lot of sneaky tricks to keep C# running at respectable rates. This article will cover just one of those tricks.
The original incarnation of Retribution was called Seizonrenda and, in addition to the impossible name, the game had some considerable performance issues. Resolving the performance issues was a top priority moving into Retribution, a game that turned out so much better than this lone coder could have hoped for.
One of the performance issues that the game had was a result of starving the CPU whenever more than 10 – 20 enemies was on the Orbital Grid (OG: the visible grid around the planet that represented the field that was in play). Many asteroids could be put into play; ~500 was enough to blanket the Orbital Grid. Enemies however had a particularly expensive series of behaviors. The AI would not only chase the player, they would avoid each other and maintain spacing between them and the hundreds of asteroids on the planet.
The AI and projectiles on the OG all had the same issue, they needed to be aware of game objects with a full 360 degrees of freedom since enemies were dropping into orbit and flying around the planet at varying speeds. The original technique involved a greedy search where each AI and every projectile performed a linear search of the entire registry of game objects. This quickly devolved into an O(N^2)+ solution. To avoid some redundancy the projectiles were managed in a separate list, meaning projectiles always checked if they hit something but the AI never bothered to check the reverse of that case. This didn’t help as much as I had hoped since (in Seizonrenda) the player was the only ship who could shoot. This would not do in Retribution, where enemy projectiles could blanket the planet as much as asteroids. » Read more..
I am about to do a little bit of free-form game conception here. This is less an exercise in brainstorming and more about thinking big inside of a little box. I’ve blogged in the past about my interest in atmospheric games and this is the first step in that direction. If the stream of consciousness below makes no sense, don’t worry, that’s just how my brain jumps through time and space.
I’ve always been a big fan of Metroidvania games and I’ve always liked how the game was less about dialog and more about exploration. I don’t think that shying away from dialog was any kind of intentional design on the part of creators such as Gunpei Yokoi but it certainly lent itself to a subtle kind of story-telling. It allowed people to see more than what the creators intended, allowing the imaginations of young gamers to craft a much larger world. » Read more..
Inland Studios is pretty deep in the hole, and making any kind of profit on anything I’ve done thus far is pretty slim. I still plan to release Retribution on the PC with a number of tweaks and upgrades (HD PC resolutions, Mouse & Keyboard support, UI tweaks, bug fixes, no need for QRCodes on PC, and more), but I don’t expect it to move the needle much. I would love to be wrong though. I just haven’t seen much buzz around the game.
Most critics who contacted me during the development of Retribution have disappeared. They seemed to have just taken the download codes and run with them. The sites are still up but there is no mention of Retribution and there isn’t much of a response to my requests. It’s a pretty sad situation but I’m not going to pry any longer. The game is gone from the “New Releases” list which means that it’s lost in the obscurity of Xbox LIVE now. » Read more..
Most sane developers will tell you that making a game on your own is frankly a terrible idea. They will tell you that it is likely to fail, it will play like crap, it will look like it plays. The first advice that most sane developers will tell you is to form a team if you want to finish anything. This (quite possibly insane) developer is telling you that it doesn’t have to be that way and, in many cases, teams are a sure way to fail.
Let me first preface this argument by saying that if you are looking to make the next World of Warcraft or Call of Duty on your own, reference the first sentence then promptly close this window. I am about to tell you a few truths about working alone and working in teams, all of it under the prospective title of “indie” development. » Read more..
I recently read an article that went into great detail about why frame rate is the wrong metric to determine the fluidity of a game experience. Though I may agree with the general concept, I can’t completely agree with the sentiment that Frames Per Second (FPS) is a worthless metric that needs to be replaced.
If we remove some obvious conditions from the equation, you’ll find that FPS is a brute but useful method to improving responsiveness. The most obvious condition is large stutters caused by resource loading or video drivers suffering from bandwidth issues. Assuming that the game has properly balanced their resources for the machine that is being used, we can get down to the root of the issue. » Read more..