Uncategorized

StackExchange == Mafia Wars

I had a discussion with a colleague quite some time back about the stackexchange concept.

I had recently joined, and while I had not answered anything or asked anything, I was commenting here or there.

Suddenly I had a badge for filling out my profile.

Oooh… a BADGE.

And I had a reputation, or “score”.

Oooh. A SCORE.

A short time ago, I discovered the game development one.

(This reminds me of the time when the first put LEGO and Star Wars together… it was a combination I simply could not resist!)

So now I compete for score and badges.

As a digital sharecropper.

But its OK.

Because I have almost 500 points and 10 badges!  TAKE THAT!!!!!

Uncategorized

Goals

While I like that I’m working on a new Dungeon Delver in Java, it has occurred to me that I don’t have a single clue about how to deploy a Java app.

I know how to CONSUME Java apps, and I’d like for DD to be able to be consumed in each of the following ways:

  1. In the browser
  2. Downloadable exe for windows
  3. Downloadable JAR for not-windows

More importantly, I want to be able to base my games on LWJGL and Slick2D.

LWJGL has native binaries, and those are particular for each of the three OSs I’m targeting: Windows, Mac, and Linux.

So, an interim step for me is to make a small proof of concept game that is distributed in the three ways desired.

The choice of prototype game is pretty simple.  Usually I would go for JetLag, but this time I’m going to go with Click the Yellow Rhombus.

My game has to do three things:

  1. Read from an XML resource.
  2. Load an image and display it.
  3. Load and play a sound effect.

But before anything happens at all, I’m just going to have an app that does those three things.

In the end, I hope to have them work on all of the machines in my office: the Win7 x64 box, the Mac Mini, and the old laptop running Ubuntu.

Wish me luck.

Uncategorized

New Quickie Game

Yesterday, my wife was playing a game at pogo.com called Poppit!

She was not satisfied with exploding pies.  She mentioned that I should make a game like is, so behold:

I unleash upon the world another hastily thrown together hopelessly derivative game!

It is called Turtle-Pop, and you can play it here.

The state at this time is “barely functional”.  It does not detect the “no more moves” condition. It does no collapsing animation in the slightest.  It represents all of about three hours worth of work, and more importantly it includes the use of Angband graphics.

At some point, I will re-theme it with the creatures of hamquest, or perhaps the items, depending on what images are most easily differentiated.

In fact, I think all of my games should be re-themed with hamquest graphics.

Uncategorized

Student Status, Windows Phone 7, and HamQuest Improvements

Over the last couple of days, I learned a few things.

One, that my status of “student” is far more valuable that I first realized:

  1. I was able to verify my status for DreamSpark, and there are a number of tools I now get to make use of for free, namely Visual Studio NON-Express.
  2. I was able to get a free developer account for the windows mobile marketplace.

Two, I improved my XAML skills, mostly as a result of using Visual Studio 2010 for Windows Phone. Considering that I’ve been making HamQuest in Silverlight, the fact that I can also use Silverlight for the phone appeals. Also the fact that the resolution of the phone screen is 480×800 means that my 480×480 map area actually fits, which means I don’t actually have to change the size of the map, I just have to rearrange the screen somewhat in order to get HQ onto it.

But before that, I decided to whip up a copy of “Feed the Fish” for the phone. Unlike the couple of times I attempted to get into iPhone development, I’m not going to do excessive Yak Shaving.  A game of feed the fish is fine. A game of click the yellow rhombus is also fine. A game of jetlag is fine. Pipes. Hammurabi. Hunt the Wumpus. Even a port of HamQuest, since it is for all intents and purposes a complete game that I’m simply adding features to.  I’m *NOT* going to start some big project specifically for the platform. Forget it.

Plus, I think I’ve made peace with my artistic aesthetic: ugly, cheesy games that are fun.

Uncategorized

iPhone OpenGL Developin’

I got a good session in last night, doing some plumbing code for OpenGL games. My need for OpenGL is modest here. Basically I just want to be able to use it as a 2D API to render rectangular areas with images.

So I came up with a few simple objects to help me: VertexSquare, ColorSquare, TextureSquare.  These encapsulate an array of values that need to be used in order to render a simple rectangle.  These give me, respectively, the vertices, colors, and texture coordinates of the rectangle.

I have already set up a matrix to pretend that the upper left of the screen is (0,0) and the lower right is (40,25).  This way I can use a grid of VertexSquares (actually, there is an object called VertexGrid for this purpose), and I can split up a texture into a bunch of TextureSquares (called a TextureGrid) in order to make a tileset.

I also encapsulate a VertexSquare, a ColorSquare, and a TextureSquare, in conjunction with a Texture object (that actually wraps a real texture) into something called a RenderSquare.

A lot of this exercise is to give myself those classes that I know will be useful in hammering out games.  Pretty much any language and platform I’m on needs a set of things like these in order to make work go faster. I don’t want to have to put together texture coordinates and vertices and color arrays. I want to have an object to point to and say: use this texture, this part of the texture, this color, and at these coordinates, and render.

I’m also getting re-used to the retain/release memory management stuff in Objective-C. I stuff a series of TextureSquares into an NSMutableArray in order to create a TextureGrid.  I always make mistakes initially until I’m reused to these things.

Uncategorized

New Items, Fiercer Monsters

New Update: http://www.playdeez.com/slhamquest.html

A small amount of code change, and a lot of configuration change.  All of the new items are in (Battleaxe, Amulet of Yendor, Thieves’ Tools, and Vial of Mysterious Green Liquid) but not all of them are functional yet except for the Battleaxe.

Also, monsters have been updated to be more aggressive, item drops have been configured, and item counts in the dungeon have been adjusted to compensate.

Some playtesting will be needed in order to determine if I have now made it too hard.

Uncategorized

Pathfinding At Last!

I probably mentioned before (or maybe I didn’t) that the monster AI in HamQuest was rather simplistic.  It was essentially the following:

1. Flip a coin

2. If it lands on heads, move the creature randomly

3. If it lands on tails:

3a. If creature y > player y, move north, and done

3b. If creature y < player y, move south, and done.

3c. If creature x < player x, move east, and done.

3d. If creature x > player x, move west, and done.

Naturally, while this gets the monsters generally towards the player over time, it mostly just made the monsters line up, and it was easy to manipulate their movement, especially because they could not move through items.

So, I implemented a very simply A* based system that allows the monsters to look at the “how far away am I ” value of its neighboring cells, and move to the one with the lowest value.

And I tried it out, and the monsters swarmed the player, quickly overwhelming and killing him.

So I put the random factor into the movement again, but made it a different chance of random movement for the various monsters. Goblins and thieves move more randomly, whereas the undead move dead on for the player.  The summoner and necromancer move the most randomly, as their job is to throw monsters at the player.

I also haven’t won a game in a really long time, and I have NEVER managed to kill a dragon.

Uncategorized

Triumphant Return

The standard turn of the year sabbatical has ended, and I am back.

Between school, turkey day, Christmas, and so on, pretty much the entirety of November and December are dedicated to Other Things that are not Game Development.

Usually, this extends quite a bit into January.  About the first half of this month, I was doing Nothing Game Development Related.

Part of the reason for this is that I am a new NetFlixian, and with my Mac hooked up to my TV, this means that I can stream a whole lot of things into my TV.  So I watched a couple of serial dramas, including Jericho and the first few seasons of Heroes.

However, this doesn’t mean that absolutely no game development has gone on since my last post, just not a whole lot, and definitely nothing releasable.

I have worked on three games: TextQuest Lite, Island Interloper, and Medieval Micromanager.

Now to temper this a bit, I am attempting in most cases to learn the lesson of HamQuest, which is to break out my game logic from my client display logic.

I still actually have to do this for TQLite, but it is early enough along to be able to do so without weeks of pain.  Likely, this is the next task for this game.

Here’s a breakdown of all of the games I am working on and where they are at:

HamQuest: I haven’t put an updated version up in ages, and that should probably be the next thing I do. While it is not in a perfect state, I don’t know how much energy I’ll be putting into it, and it is relatively stable at this point.

Assembla Space: http://www.assembla.com/wiki/show/hamquest

Island Interloper: I have the rudiments of a back end and console client going. I can navigate from one island to another, and the seeds of a commodity system are in place. Still can’t buy and sell commodities yet, but that’ll be next.

Assembla Space: http://www.assembla.com/wiki/show/d_-FIkM8ar3OV0eJe5afGb

Medieval Micromanager: Another rudimentary back end and console client. Currently, I can manage units and look at commodities. Next to put in in the land manager, at which point it’ll be close to functioning state.

Assembla Space: http://www.assembla.com/wiki/show/pdg-medievalmicromanager

Text Quest Lite: Not yet separated into back end/console client. I’ve gotten to the point of being able to perform a single action (Chewing Gum… takes 1 action point, and earns 1 experience point)

Assembla Space: http://www.assembla.com/wiki/show/tqlite