Archive for the ‘Gaming’ Category.

Upcoming changes for dAST

I’m planning to add these changes to a final alpha release, scheduled for end of January:

  • Animate bonus cooldown/timeout (for triple gun and shield) – done 2010-12-19
  • An instruction interstitial between the main menu and the game. It’ll have a few “frames” showing various game actions, without words (where possible). (Formerly demo mode, which is hard and people probably wouldn’t enjoy it, anyway. MTTW) – done 2010-12-26 (albeit ugly)
  • Achievements. Every game would track various stats in order to award achievements. They could be earned multiple times, making them a bit different than those on other systems. They’ll be basic things (was going to do like, 80% for X minutes, but it’s more trouble than it is worth) – done 2011-01-03
  • Better “game over” screen that shows more stats – done 2011-01-03
  • Rudimentary sound – done 2010-12-24
  • A serious round of profiling and optimization. I’ve been profiling the game throughout but it could probably use a more concerted effort. There’s still too many places where memory is allocated mid-game, for instance. – “done” 2010-12-26, however it is one of those things that needs to be reexamined from time to time

All in all it will be an interesting bunch of additions that should make the game more polished. Past updates have been minor by comparison. This list will round out the entire set of features I have planned for the game, so once it is done and released, I’ll push it beta, do a few rounds of bug fixes (probably), and then, finally, glorious version 1.0. Ooh and ahh.

dAST 0.3alpha released

Quoting myself from my Android page:

Version 0.3alpha has been released to the market. I am really excited about this release. The game now has collectible powerups: the Mega Bomb which, when activated, will wipe out all enemies (and bonuses!) within visual range; the Shield which protects your ship from enemy fire; and the Triple Gun which triples your gun power (clever name, huh?) by firing bullets in a spread. [...]
210 total installs, 72 active. Heading in the wrong direction! Heh.

This update did not take me as much time as the last, a fact that leads me to believe that I’m getting better at this Android nonsense. I still run in to snags from time to time but they are on the order of using R.layout.* in a findViewById call (when I need R.id.*) or not being careful enough about recycling bitmaps proactively.

I’m still thinking about what to do for Game 2. I have a couple of ideas that are quite doable. Some of the behind-the-scenes changes I made to dAST are in support of making the components more extensible, which should (hopefully) help speed the development of Game 2. dAST will likely be updated pretty regularly for months as I try out new features destined for Game 2 and beyond. For example, I’m looking at adding a generalized global high score + achievement system. I know that some already exist, such as Scoreloop and I may end up going that route ultimately. However, I strongly feel that this is the sort of thing I should be able to write, so I’m making it a challenge to myself to do so. If that makes sense.

Anyway, I’ve strayed off topic here. If you have an Android phone, please try dAST out and let me know what you think of it, good or bad.

dAST: A simple 2D space shooter

As hinted in my last post I’ve been dipping my toes in game development and Android development simultaneously. The first result: dAST. It’s a very simple game but it exposed me to several new or at least rusty-to-me topics: multithreading, MVC coding style, Entity Systems, Android-specific concepts. It will likely remain my “new feature” test platform for games to come.

The game is at a pretty good state now. There is one bug I am aware of, involving the new control scheme. You’ll see it if you steer and fire at the same time and then let go of either the steer or fire controls. There’s an easy solution, and that solution will be rolled out in the next release (this weekend, most likely). There are more features on the horizon (temporary gun powerups, warp, radar, sound, …) but as it stands now it is a wholly playable game.

I’m beginning the design phase of the next game; it’s probably going to be a puzzle game. I don’t have a timeline on that one yet, though.

Entity Systems

Entity Systems are the future of MMOG development – Part 1

I found this series on /r/gamedev. It describes a way to organize game “things” (I’m avoiding the term object here) into lists of characteristics about the thing, rendering the thing nothing more than a unique id (think GUID). As the author says it naturally leads to easier multithreading, which is awesome. My only concern after reading this is that the programmer would need to be careful about ensuring that the component lists don’t end up referring to defunct game things. Off the top of my head I’d say that could be taken care of with a periodic GC thread that goes through the component lists to see what is no longer referenced in some “mandatory” lists. For example, a thing without a coordinate component may be eligible for being entirely wiped from the system. I think that could be accomplished by maintaining a list of “Remove” components that are only read in GC.

I recently wrote a game for Android (I’ll announce it for real this weekend or next weekend) that uses traditional OOP game objects and, well, I made some early design decisions that I now regret. The game’s visual objects are all represented by a subclasses of a common class with several common attributes and methods. That’s mostly fine, but then I also stuffed the animation rules in as a member class that hangs off the common class. (I’m sure there’s a pattern or anti-pattern name for this concept, but I’m lousy with names.) The thinking behind that is that I wanted to be sure that the object was able to easily access its own shape for things like hit detection. Anyway, tossing the graphics in with the data attributes has made the objects heavier than they ought to be. This article has inspired me to redesign the objects so that things like the coordinates are kept in one components, hit points in another, etc, and then redesign the game so that it makes use of more threads (beyond the natural Android UI and “master game logic” threads). That probably won’t be complete by the next alpha release but maybe a few releases down the line.

My new obsession: Dwarf Fortress

There are so many great, bizarre, fun things in it. Like when a crocodile shows up, kills a few dwarves (one by lopping off his head). And then when you order a squad of dwarves to kill the crocodile you end up with:

One of the dwarves that was killed had a pet cat, and it reverted back to a stray (but apparently it kept its name). Unfortunately, the dwarves that were killed were the only trained masons in the fortress, so someone else will have to make their coffins. In retrospect, I should have created coffins earlier, just in case.

This game exposes so much detail for each dwarf and creature. It’s crazy. It tracks injuries down to the specific finger that was scratched. It’s definitely for nerds.

If you’re interested in Dwarf Fortress, I recommend checking out this tutorial rather than simply diving in. This tutorial was the first result for “dwarf fortress tutorial” but it also happens to be a good one. Don’t worry about it being for a previous version. I believe it’s all still applicable, and it will, at least, get you through the interface.

Fantastic Contraption

This game is damn neat. It’s fun to build up a giant tank, total overkill, and then watch it fail because you missed a strut or something. It’s equally fun to build something small and basic: I thought for sure that this contraption would fail. (It certainly didn’t work the way I had planned.)

Spore

I’ve been playing Spore most nights since it arrived. I’ve played from the Cellular stage all the way through the Space stage. I think it is fair to say that I’ve seen everything that the game offers, and I find it very limited. I’m in full agreement with Yahtzee’s review of Spore and I will try not to duplicate too much of what he’s said.

I think what I was hoping for was deeper gameplay. At the Space stage, I was imagining a near full implementation of SimCity wrapped in Civilization wrapped in Masters of Orion. I wanted to be able to “get lost” in building cities or waging war. Instead, the city building is incredibly simplified (make sure you don’t put factories next to entertainment buildings and you’ll do fine). Waging war is as simple as flying to the enemy planet and zapping each colony’s city hall — on a planet with 3 colonies, you could take the whole planet over in under a minute.

Somehow your race evolved to the point that one and only one creature (you, of course) is capable of flying a space ship and protecting the entire species. They’ve apparently developed incredible cloning technology that allows them to transfer all of your thoughts to a new body, meaning you can never truly die. When your ship is blasted out of the sky, they build you a brand new one. However, for some reason, only one of these ships can exist in the universe at a time. The only way to have a fleet of ships is to ally with other species. (They are, unfortunately, also limited by the one-ship-per-universe rule.)

Not only are you the only hope for interstellar defense, but you are the sole creature capable of trading “spice”, a commodity that is harvested on each planet. To make money, you have to fly to a star system, zoom in so you can make contact with the planet, pick up some spice automatically (if it is one of your planets), make contact, ask them to trade, buy whatever spice they have for sale, and then decide whether or not the prices they’re willing to pay are good enough. Exit out of the trade screen, zoom out to space, travel to the next system, and repeat the whole cycle. It’s tedious. You can’t simply set up a trade route that actually trades Spice and makes you money. You can set up trade routes, but they’re for entirely different purposes: Once the trade route has existed long enough, you’re able to purchase the foreign planet for an additional price.

You’re also the only one capable of dealing with eco-disasters. Occasionally, a virus will break out and infect 5 animals on a planet. You must travel to the planet and zap those 5 animals with a laser — there’s no way for the people in the cities to do this themselves, apparently.

Ultimately, the level of micromanagement required by the game is not nearly deep enough to be interesting. As your dominion grows you are asked to come to the defense of colonies more frequently, to the point that every couple of minutes there is some disaster you have to deal with. Even if there were more compelling micromanagement, you would only get a one or two minutes with it before you were pulled away to deal with some other nonsense.

There is a patch for the Windows version of Spore that claims to address some of the concerns. It reduces the frequency of attacks by enemy species, as well as the frequency of eco-disasters. Even though the Mac version is the Windows version under emulation, the patch is not yet available for the Mac, so I can’t say first hand if it makes the game any more or less fun. However, without more fundamental changes in gameplay, I don’t have high hopes.

Spore: Initial Impressions

Gameplay: I have only just reached the Civilization Stage, so I can only comment about the Cellular through Tribal. The Cellular stage is pretty straightforward with some surprises. I expected that my creature would use asexual reproduction while in the primordial soup. Instead, you have to find a mate and modify the offspring prior to hatching. Another surprise was that where you place the cell parts counts. For example, if you put spikes along the side of your cell, your overall “attack” rating goes up, but in order to actually use them in battle, you’ll have to rub up along side another cell.

The Creature stage is similar, except you’re on land, and you pick parts with different types of attacks and dances. I don’t think it is necessary to consider the exact placement of each part any more. You’re still fighting (or wooing) the other creatures in the realm, and you can bring in allied creatures to your “pack” to be more effective. This stage plays a lot like battles in World of Warcraft without being so tedious. The Tribal stage reminded me of every RTS I have ever played, but vastly simplified. There was nothing really notable about it.

The game plays pretty smoothly on my Macbook Pro. It’s much smoother in a window than it is full screen, but I have not tried it at a native resolution.

The install process: The installer did claim to require root access, even when I attempted to install the game in my home directory. I performed a Time Machine backup before and after the installation to see what it was changing. Aside from /Applications/SPORE, only one file was created: /Users/dpk/Library/Preferences/com.transgaming.tginstall.plist, presumably for Cider. I’m no super Mac genius, but I don’t see anything indicating that an alternative DVD driver was installed, or anything else harmful. If it’s using SecuROM, it doesn’t appear that it exists while the game is not running. FWIW: The disc does not have to be in the drive in order to play the game.

Finally: It’s definitely kind of fun so far. Once I do a complete run through to the Space Stage, I will probably go back and tinker with the creature designs a lot more, and I’ll play at a higher difficulty level to see if the challenge makes the game more fun.