Mechanics

I got the chance to peek at an excerpt from a game development book. This chapter covered the essential game mechanics of successful games. I thought I would rate Angband in terms of the necessary mechanics listed. The categories were points, collecting, feedback, exchanges, and customization.

Well Angband is definitely point driven. You see your score each time you save your game. Angband is also not just a game of collecting gold. It is a game where you must figure out which items to keep, and which to sell. So it goes beyond just simple collections.

There is a turn based feedback system in Angband. You constantly know what the effects are on your health, mana, location, etc. This makes Angband very interactive. You may need to play a multiplayer version of Angband to get into any meaningful exchanges. Otherwise vanilla Angband scores low in this category.

I know Angband has numerous settings that you can customize. I usually play with the same settings applied. However there are many other options available should I want to change them. Angband seems to fare well in all the game mechanic categories. That is probably part of the reason why this is a timeless great game.

Armor Up

My latest Angband character is Cloud. He is a character level 27 Mage. And he has a new problem. The light hounds are blinding him all the time. That prevents spell casting ability, which may lead to death.

The solution was to get a helm of Seeing, which would prevent blindness. However that is easier said than done. I kept visiting the armory. But I had no luck. I started worrying that the old version of Vanilla Angband I was playing did not support helms of Seeing.

While visiting the armory about 100 times, I did purchase some other nice items. I got some gauntlets of Agility that do not inhibit spell casting. I also picked up some boots of Free Action. But there was never any helms of Seeing.

Finally I almost gave up. However I found the prize at the Black Market. There I found a crown of Seeing. Yes. I also got a cloak of Protection. Sure the black market charges a high overhead for items. When you are desperate, it is well worth it. Charge on Cloud.

Going Retro

I was playing a high level mage in Angband. Then my computer operating system got corrupt. Had to reload my machine from scratch. I lost my game character. Note to self: backup my save files.

When it came to install Angband on my machine again, I decided to try an old version. This was just for memories sake. In fact I tried to start out with Moria. However that did not seem to run on Windows XP.

Instead I chose something like Angband Version 2.5. You might think that is not too ancient as we are only around version 3.1 currently. However it really has been a long time. My version might be 15 or more years old. The thing that impress me is that, although some things are different, even the old Angband is a very mature game.

For now I am playing a Half-Troll Warrior. That's an easy one to not get killed with. Lots of strength and constitution. Thus I have high HP. We shall see how this goes.

Hack and Slash

Previously I had been using my magic spells to combat the enemy in Angband. However I found the Beaked Axe of Hurin. Initially I wielded this weapon for the CON +2 advantage. But I found that once I wielded this axe, and got up to 2 hits per turn, it was time to use the weapon for combat.

I kept finding treasure and selling it in town. That allowed me to buy strength and dexterity potions. I am strong and agile enough to get 2 hits per turn with Hurin. One long awaited item I was able to buy in town was some gauntlets of Free Action.

My only disappointment was finding the Cloak of Thingol. It has a nice +3 to both DEX and CHR. However that cannot compare to my current Cloak Colluin which provides resist poison. So for now, Thingol stays in the closet. I have not sold the cloak though. If I can find another source for resist poison, I shall be putting it back on.

Equipment Choices

Right now I'm playing Angband 3.0.6. This character is Puff the Mage. I had prepared for paralysis by wielding some Boots of Free Action. Then I put Rings of Intelligence (+5) on both hands to up my MP over 200. Things were looking good.

Then I came upon the Boots of Speed (+6). You know I was going to wear them for the speed bonus. However I was now concerned. I no longer had a defense against paralysis. Former characters have discovered the hard way that you normally die when you get paralyzed.

It would have been optimal to have some Gloves of Free Action. Currently I wield no gloves to avoid an MP penalty. I ended up wearing a Ring of Free Action. The tough part of that decision was that my MP dropped about 100 points after removing on Ring of Intelligence. Ouch. I will keep you posted on the further adventures of Puff.

The Gaming Industry

I attended Anthrocon 2009 this week. One session at the conference was a question and answer period with some game developers. It was a good time. I learned a lot of details there which I want to share here.

Many game developers code in the C++ programming language. But there is some Java and C# development going on as well. Although there is still custom coding to solve game problems, there is also a heavy use of game specific middleware.

There is still crunch time in the game development industry. You should beware companies that court fresh college grads and provide free Coke to programmers. Some game shops have instituted policies where you cannot work more than 55 hours a week. It is criminal that there even has to be such rules in place.

Software process is often lacking in the game development arena. However some shops are trying to go agile and/or use Scrum. That being said, there continues to be sloppy or non-existent processes at some companies. This probably mimics the state of software development across other domains as well. Thanks to the panel of guests at Anthrocon for sharing their experiences.

The Power of Java

This week I finish up a college class on the Java programming language. That is going to do two things: (1) give me some more free time for programming, and (2) provide me with the the basic skills to code some wicked rogue-like features in a game.

Earlier this year I wrote Dungeon Level 1 (dL1), a seven day rogue-like creation. It was pretty weak compared to polished Rogue-like games. However I coded it up in seven days. And I was a real newbie Java programmer.

Now I plan to release a new version that improve playability. I also want to use the game and my new programming knowledge to experiment with some common rogue operations. You know? I want to put some speed in the game. And I want to add cool weapons. But I will start with baby steps. I need to put more than one dungeon level in the game. I wonder whether I will still call it Dungeon Level 1.

In Memory Of

This weekend Dave Arnesson, co creator of Dungeons and Dragons, passed away. The other creator Gary Gygax died last year. They created D and D back in the 1970's. It spawned a generation of games.

Much of the rules and mechanics of Angband trace back to the D and D board games. I purchased an original D and D game back in the 1980s. However I never learned how to truly play the game.

I knew a few people who were in to D and D back in the day. Sadly I never joined them for their adventures. I think I caught up to them through my many exploits with Roguelike games over the years on the computer.

This post is for you Dave. Thank you for your great creation which lives on today in many computer and console games.

cLevel 50 Ranger

After my last character in Angband died, I was a bit depressed. It had taken a long time to build up that character. I can no longer remember how he died. It was probably some double poison breath from some monster. Whatever the case, I was not in the mood to play Angband for a while.

Then I got a good idea. What not let the Borg build up the next character for me? Then I could choose a race and class which cause a high experience penalty. That's no problem for the Borg. It has unlimited time to knock out experience points galore.

Now the Borg is not perfect. There are times when it causes my characters to die. I have found that the deaths happen quickly. But once a character is a bit established, the Borg is more conservative in the long run. So I let the Borg run for a few times each night. Before long, I had myself a character level 50 High-Elf Ranger with a bunch of goodies to show.

Here is the equipment my character is wearing:

The Lance of Eorlingas (3d8) (+14,+21) (+2)
The Long Bow of Bard (x3) (+17,+19) (+2)
a Malachite Ring of Speed (+5)
a Malachite Ring of Speed (+6)
a Ruby Amulet of Wisdom (+2)
The Star of Elendil
The Full Plate Armour of Isildur [25,+25] (+1)
The Cloak 'Holcolleth' [1,+8] (+2)
The Small Metal Shield of Thorin [3,+25] (+4)
The Hard Leather Cap of Thranduil [2,+15] (+2) {BlndESP}
The Set of Cesti of Fingolfin (+10,+10) [5,+20] (+4)
The Pair of Soft Leather Boots 'Dal-i-thalion' [2,+15] (+5)

A Review of dL1

I was reading the development USENET newsgroup for the 7 day roguelike competition. There was a link to a review site for the games entered. I was curious as to what would be said about my game. So I read the review on dL1.

Here are the things listed that I need to improve:

1. Provide batch file to launch game
2. Prevent inaccessible locations on map
3. Have monsters attack you if you go near
4. Give some progression if you clear the map
5. Make the game winnable

In essence, the reviewer wanted the game improved from the viewpoint of a player. That sounds like a reasonable request. The goal of my entry was to get something that worked. On that I succeeded.

So let's call the version I entered v1. Now it is time to produce some incremental releases that address the concerns of the reviewer that I want to correct.

7DRL Winner's Circle

The results of the Seven Day Roguelike Challenge for this year have been announced. There were a total of 45 challengers (myself included). Of those, 25 were winners. My entry dL1 was listed in the winner's circle. To the left is the challenge medal for this years winners.

It is not impossible to win the 7DRL challenge. You only have one week to code up a game. That part is difficult. But to win you just need to produce a rogue-like game that works and is playable within the week long time period. Don't get me wrong. That is no trivial task. However if you set realistic goals, you can achieve success.

I wonder if I will be around next year to enter again. It is my hope that I would have gained more Java programming skills. Perhaps it is time to study up on different things like level generators, lighting, and monster AI to be prepared. It is all good fun.

Roguelike Challenge Completed

I figured out how to distribute my game including the libraries and run time files it requires. Since I was in the 7 Day Roguelike Challenge, I posted the following declaration on Usenet group rec.games.roguelike.announce:

I completed my 7DRL entry dL1. It was written in Java and made use of libjcsi for input/output. It requires Java 1.6. You can get it at http://h1.ripway.com/gifcom/dL1/dL1.zip

Launch the game by typing "java dL1". Move around with the keypad. Numlock must be on to move diagonally. Press "q" to quit. Grab some gold. Attack young dragons. That's about it.

This is only my second real Java program. I am in a Java programming class at college. Read all about my 7DRL week on my blog http://legend-angband.blogspot.com/

- Legend of Angband

Adding the Credits

I just finished adding the credits to my 7 Day Roguelike "dL1". There was so much more I wanted to implement. But there comes a time you need to turn in your work.

Now I need to figure out how to distribute this application. Being a Java novice, I am not so sure about what you send out. It is not like the Windows world where you ship an EXE and maybe some DLLs.

I will figure this out, post it out there for the world to see, and declare it a success. If nothing else, I learned a lot of Java programming skills. And I think I learned a little of the basic game mechanics at a coding level.

Multi Hued Dragons

I got a little bored always fighting young red dragons. So I decided to add a little color to the mix. It was not hard of a change. Now every monster has a different color. They are all still young dragons. Perhaps I will also try to sneak in some other monster types. Dragons are a bit hard for a first level player.

Another change I recently added was one where the monsters (in my case the dragons) pick up gold. Before they would refuse to even touch the gold. They treated all gold locations as wall. But that is no more. After a dragon moves over some gold, the gold goes away. And unlike other Roguelikes, my monsters do not drop treasures yet. So much to do. So little time.

Monster Movement

Previously my game dL1 had some problems. You could hit monsters and they would hit back. But if you ran away, the monsters would just sit there. That's not too realistic. Now I implemented monster behavior where the hunt you down if you start up a battle with them. I still need to put in some checks to randomly wake up monsters so they engage you.

It is getting about time to wrap up my development. The week long Seven Day Roguelike Challenge is almost over. I really should stop development of the game mechanics, put on a little polish, and package my game for release. But you always want to add a little more. My worry is that if I add something, I might break the working game have have nothing to show.

Here Come the Monsters

I stared implementing monster opponents in my game dL1. They are all young red dragons. When you attack them, the take damage and attack you back. However they do nothing if you leave them alone (even after engaging them in a battle).

The next logical step is to get these monsters to fight back once they are disturbed. They should also follow you if you flee from them. If I were to really get cocky, I guess I could let them breath fire on you. However I need to take it one step at a time.

I figure I will need to start wrapping up my week long 7 Day Roguelike development. I need to ensure I know how to deploy this application so others can enjoy it. There needs to be a little more fluff like a splash screen on startup. Maybe I could put an easter egg in there before I release it as well.

Subtle Tweaks

Sometimes a couple small changes can make a big difference. The dungeon maze in my game dL1 shows a lot of walls. That was a little hard on the eyes. I softened that by changing the wall color to gray.

The maze is randomly generated each time. That is normally a good thing. However sometimes that meant the character started out stuck in a wall. This seemed uncivilized. So I made sure to choose a random starting position for the user that was not in a wall.

Finally I had quickly coded up a gold counter on the right of the screen. However it only displayed an amount as soon as you first grabbed some gold. Now at game start I show you have 0 zero pieces. It was not a big deal. But I like to add polish. Time to stop with these baby steps, and figure out how to add monsters that are "smart".

Maze Technology

My new game dL1 is progressing slowly but surely. I was stumped for a while about how to make a maze. Even a simple one seemed difficult to implement. I think my problem was that I was trying to do too much all at once.

So I retreated to a room with just a pad of paper and a pencil. I went through the steps of an algorithm to draw a maze. Then I started implementing the algorithm. I did it one step at a time. And before I even finished, the maze looked good enough to declare that some progress was made.

If I had unlimited time, I would fully implement the complicated maze algorithm that I envisioned. However there are only a couple more days to get this program completed. So I think I had better move on to creating some monster opponents for you to do battle with. That also seems very complicated. Now it is time to start breaking that task down to smaller pieces.

There's Gold in This Dungeon

Now that I am no longer struggling with the user interface, I am adding basic features to my dL1 game. Here is a big one. When you press the directional keys, your guy moves on the screen. And he does not walk through walls. That's a good thing.

I decided to add some gold in the dungeon. It needed something. There really isn't a maze set up yet. Guess what? I colored the gold yellow. Yeah I know. That is just plain crazy. There is even a counter that shows how much gold you have amassed.

The next decision is pretty simple. Do I add some monster enemies first? Or do I try to draw a better maze for the dungeon. The sky is the limit now. There are about 5 days left in the 7 Day Roguelike Challenge. Things are lining up for me to get a game that at least runs.

User Interface Progress

There is some good news. I read a comment or two from my previous blog. The poster recommended I not use an applet to display my dungeon. A recommendation was made to use libjcsi to do my output. In 10 minutes I got a sample demo running.

An hour later, I have my Angband town like perimeter. I also have the user symbol (@) displayed in the middle. It might not look like much progress. However my previous user interface had some subtle problems. There were spacing issues when drawing the user symbol. Now everything is lining up.

The next step is to figure out how to capture input from the keyboard. If I can do that, perhaps I can get the user to actually move. Yeah I know that does not seem impressive. But it is a giant step forward for us beginning Java programmers. Props to "SZDev - Slash" for the helpful hints. Some day I will return the favor.

dL1 Screen Shot

I have started writing some code for my 7 Day Roguelike entry dL1. The outline of the first level of the dungeon is visible. I might have a slight vertical spacing issue to deal with. And I tried making the user appear in the dungeon as an "@", but I had trouble erasing the character. There was also some trouble aligning the symbol at the correct location.

But this is at least a start. Now if I can just solve my spacing issues, and figure out how to erase a character on the screen, we might have a character moving around a little bit. For now I am think I am going to call it a day. I have about 5 days left before the contest is over. That seems a long way to go. At this rate, I will be happy if I get a character running around the dungeon and picking up things.

Challenge Accepted

Good news. I have decided to enter a 7 Day Roguelike game development contest. That means I have 7 days to program a game like Rogue. To make matters more difficult, I am going to write it in the Java programming language, which I am just starting to learn.

This should be good fun. My game is going to be called "dL1". It will be a 1 level dungeon. If I get the basics working, I shall try to get a dungeon level which extends indefinitely in each direction. I also plan to give the player a lot of great artifacts early.

I posted my intention to compete in this contest. You just need to add a post in Usenet group rec.games.roguelike.development. My post is there. The journey now begins. I will post screen shots of my progress here on my blog. Good luck to me. I will need it.

RogueLike Challenge

This Saturday marks the beginning of the 2009 seven day roguelike challenge. This is a contest for programmers to develop a usable Rogue like game in a total of seven days.

That sounds like quite a challenge. It might take junior programmers more than sever days to get the town level working. Forget about a complete game.

Here is the real crazy part. I am thinking about entering this challenge. I love Angband. And I have often thought about writing a version myself. This might be just the spur I need to get things going.

This is a busy week coming up for me. However every week is busy. To add to the insanity, I thought I might try coding the program in Java. I am in the middle of learning the Java programming language through a college class. Good luck to me. I will know whether I will enter this contest by the weekend.