This project is read-only.
 Heroic Adventure! News Feed 
Monday, June 30, 2008  |  From Heroic Adventure!

The following is an excerpt from a story I'm working on. Writing fiction is a lot harder than blogging. Writing interesting fiction even harder still... so take this for what it is.  A rough, first attempt.  enjoy (or avoid... your choice.)

Lathan swung his axe for what felt like the thousandth time that day, turning, ducking and swinging as blood and gore flew past his head. For every orc the warrior took down, it seemed as though another stepped in to continue the fight.

“Where the hell is Shawna?” he cursed to himself, more worried than angry. She wasn’t much good in a fight and the tenets of her faith prevented her from wearing armor. If she had fallen… well, best not to think about that now. Without the halfling’s divine healing on their side, mending wound and spirit, Lathan wasn’t sure how much longer they would last.

Shaking off thoughts of his own mortality, Lathan threw himself back into the fight. He had felt it was hopeless before the first swing, but they had been caught completely off guard by the ambush and he didn’t have time to think about that now. Ducking under a wild swing, spinning around and slicing the orc in half from behind, he stole a glance across the battlefield, where he could see Durok’s dwarven helm shining in the moonlight, the dwarf fighting from atop a steadily growing pile of dead orcs.

Behind him, he heard the reassuring song of the elf Azura, getting closer and closer. Every note served to bolster his confidence and renew his strength. How she could sing like that and fight at the same time, he would never understand. Before long he was taking orcs down two at a time and the gaps weren’t being filled quite so fast.

“Just maybe, gods willing, we’ll make it through this day after all.” Lathan barely had time to finish his thought as he felt the searing heat of a firebolt spell flying past his head. “Damn that wizard if he doesn’t kill us all before the orcs do.”

Monday, June 16, 2008  |  From Heroic Adventure!

I've been playing with ClickOnce at work lately, and I like it, so I decided to publish HA! with it.

HA! really is the perfect application for it, since there are no external dependancies (other than .NET 2.0) and it doesn't care where you put it. I'll also be able to tap into the ClickOnce On-Demand API (which you can't do unless its running under ClickOnce) and pull down updates automatically in the background.

The project along with all the sourcecode, bug tracking, etc is all still hosted on Codeplex at but the publish site (since Codeplex still doesnt offer ClickOnce support) is

Once you visit the publish page and install HA! you can just run it from your start menu and it will automatically check for updates when you run it and you'll always have the latest version (unless you choose not to update.)

Of course, automatic updates does kind of imply that I'll actually be updating HA! once in a while... no?

Friday, March 07, 2008  |  From Heroic Adventure!

I've been struggling with how to properly pay my respects to someone I never met in person, but that had such a tremendous impact on my life.

I've looked at all the various tributes and cartoons, and I've heard the stories about people getting together in WoW and City of Heroes (and even City of Villains), setting aside their weapons and talking about what a huge effect Gary Gygax and D&D had on their lives.

3 days later, I'm still at a loss for words. You know, how to really express how unbelievably sad this makes me.

But I have figured out a fitting tribute... in three parts.

The first one is fairly obvious. Selling the D&D collection is pretty much out of the question now.

The second one makes perfect sense to me.  Heroic Adventure! would have never existed if not for Gary Gygax. So, from this point forward I am dedicating it to Gary Gygax.  The next build you see (um... eventually) will feature his name on the title screen.  (edit: This one is done, although not checked in to source control yet. Check out the screenshot. The stalactites and stalagmites are new too, and... wait for it... randomly generated.  I love it.)

The third part might take a little while to work out the details, but I'm adding a new creature "The Gygax" to HA! in the form of a wise old man, later in the game. He'll be a pretty key part of the unfolding storyline. I thought about making him a monster, because honestly I think he'd appreciate the untold thousands of horrific ends that would await him, but I'm pretty happy with my decision.

So thank you again Gary, for D&D and the D&D Cartoon and for (decades later) Heroic Adventure!  It sucks that you're gone, but your work and the effect it had lives on through millions of people.

Wednesday, February 27, 2008  |  From Heroic Adventure!

From the DF wiki:

Dwarf Fortress is an ASCII game which includes both a roguelike adventure mode, and the more popular Dwarf Fortress Mode, which focuses on the creation and survival of a small dwarven settlement. It has a very steep learning curve, partly due to its ASCII graphics, but also due to the fact that it is one of the most complex games ever released. Dwarf Fortress is completely free.

Before you play, you must generate a world to play in, which persists until you create a new one. World generation can be time consuming, even on modern computers, but be patient. It's worth it.

Dwarf Fortress has three major game modes and a fourth non-game mode:

An important part of Dwarf Fortress is that it creates a randomly generated, persistent world for you to play in. (The world is only "on" when you are actually playing in it, however.) When you die in either the adventure or fortress modes, your next game will be in the same world, albeit a few days later. You can visit your old fortress, or get revenge on the monster that killed your adventurer. If your fortress or your adventurer had done anything of particular note, there's a chance that the game will generate a legend for them, which you can read about in the legends section. (Provided you've discovered enough information about the legend)

For more info:

For even MORE info, read this cool Gamasutra article.

Wednesday, February 20, 2008  |  From Heroic Adventure!

This just might be the best week ever, or at least the best one in a long time...

Sunday I watched the new Knight Rider which was a lot of fun.  I hope they make it a series.

My tablet finally showed up yesterday and its working GREAT.

My XBOX 360 has been repaired and is on it's way. (edit:  FedEx says it will be here tomorrow.)

I just finished tech editing a (IMO) terrific VB 2008 book for O'Reilly.

Yesterday I got a nice letter from Microsoft, not just informing me about my MVP status & benefits but also welcoming me to the North Central district. Slightly more personal than your usual form letter. Pretty cool.

Yesterday was Boy #1's Birthday, and we had a great time. His actual party is this weekend, and there will be rock. (Apparently some of his buddies are bringing musical instruments.)  I'm really looking forward to this.

Today I lined up another tech editing gig, this time for Deitel (Pearson Ed) for another VB 2008 book!

Today, I found out that there will be XNA support for the ZUNE (omfglol) by the end of the year AND that there will be XNA Community Games on XBOX Live, starting today (with DBP winner The Dishwasher)

The Dream Build Play Silicon Minds Warmup Challenge winners are posted. Go there now. I'll wait.

Tomorrow night is my XNA User Group, and we're talking about one of my FAVORITE topics (other than yours truly):  Game AI

I spent several hours last night working on HA! again... that was awesome.

This weekend I'm hosting 20 complete strangers in my home for a Boardgames Meetup. Should be fun.

Man, this week has just flown by...

Tuesday, February 19, 2008  |  From Heroic Adventure!

I recently posted the VB.NET Mersenne Twister code (rewritten from C# courtesy of Paul Vick) over at ILoveVB.NET.  If you haven't looked at it before, it's pretty neat stuff. It wasn't even possible in VB.NET 1.1 because of a lack of support for unsigned integers, with VB.NET 2.0 that problem went away.

If you don't know what a Mersenne Twister is, or why I would want one over, say, System.Random or System.Security.Cryptography.RNGCryptoServiceProvider then you may want to read this fine piece of writing first.

So there ya have it, if you're looking for some "true" random, and speed & security aren't big factors, go with the twister.

Posted here at: www.ILoveVB.NET

Tuesday, February 19, 2008  |  From Heroic Adventure!

HA! 0.1.6f hit CodePlex tonight after a very long period of no activity on my part. The main purpose of this update is to provide a couple minor bugfixes and most importantly a working build again.

I'm not sure how it happened, but HA! sat in a broken state for a long time. I would occasionally try to fix it, but there was a good bit of code "missing."  I eventually found it all again, and got it working.

Once that was taken care of, I actually found myself in the mood to work on HA! again and spent a couple hours tonight making minor enhancements and improvements towards v0.1.7.

Monday, December 17, 2007  |  From Heroic Adventure!

Recently HA! got mentioned on DotNetRocks.  (If you're interested, it's here at around the 30 minute mark.)

The whole show, about Open Source, is actually quite good. So even if you don't care about HA!, give the show a listen.


<!-- Start Quantcast tag -->

<!-- End Quantcast tag -->

Saturday, May 12, 2007  |  From Heroic Adventure!

One of the fun things about working on HA! is all the neat ideas I come up with while coding.

Annnnd, one of the downsides of having ADD (not AD&D) is all the neat ideas I come up with while coding.
Today was a good example of both. I was working on the overland encounters code for HA! and was getting pretty deep into the factors that determine whether you...

{Edit: ADD in action, I just stepped away to grab a drink of water and then I watched about half a game of "Ticket to Ride, sold a guy some magic cards, picked out some new dice, decided on watching 300 again tonight and then remembered I wanted something to drink. 43 minutes later...}

...have an encounter with a wandering creature or NPCs....

{Edit: ok, this one is not my fault exactly. This lady and her kids came in the shop and we started talking about the "My Pet Monster" on our shelf, and then about the fact they live on Paris Mountain. Then I realized I never actually got my drink from earlier, so I had to fix that... I'm back now.}

What was I talking about? *sigh*

Right... overland wandering monsters. So I spent a while working on the various criteria that affect whether you actually have an encounter overland. One of the factors that affects this is whether or not you are invisible.

So I add the check for Hero invisibility, and then I have to go add the boolean flag to the Hero to indicate whether he/she is invisible. Then I think, well ya know monsters could be invisible too, so I move the flag out of the Hero class and into the avatar class that heros and all monsters inherit from.

So then I think about the fact that there's no way currently for a hero to actually become invisible. So I decide to add an invisibility ring to HA! so characters (heros or monsters alike) can can actually become invisible.

In order to add this ring, I inherit from the ring class and then decide I need to create an interface for effects of rings. since invisibility would (in theory) only be affected when the ring was put on or taken off, I create a iRingActivation interface that all rings implement, so I can just call a single method whenever any ring is put on and the appropriate code would fire.

After I implement this, I think to myself, hey I could use this with any item that gets equipped... like a sword or whatever.  So I rename the interface to iActivatedItem and start thinking of ways that I could add special powers.

So then i decide I'm a little hungry, so I go in the office/kitchen... and see my drink on the counter. I grab it and head back to start working on the ring of invisibility class. At some point I realize that my ADD has caused me to stop what I'm doing about a dozen or so times, so I decide to take a break from working on the class to write a blog entry about how my ADD proves to be such a distraction.

So anyway, I think I'm going to watch 300 tonight. Eventually I'll get back to the code, because I just thought about how I need to add a method for when items are unequipped, otherwise our hero won't be able to become visible again.

And while I was writing that, I just thought about how the iActivatedItem would be a good way to implement cursed items as well.

And thinking that made me think of adding a new trap (invisibility) of course, as a permanent intrinsic, which would make it harder to detect when overland (see, it goes full circle) but it could also be a penalty that would affect the Hero's ability to receive quests and interact with villagers.

{Edit: while typing this, the Immigrant Song by led Zeppelin came on the radio and it reminded me of the Viking Kittens, so I had to pull that up and watch it. if you're interested.}

But first... first... I have to finish the overland encounter code, right after I finish the iActivatedItem code, and the invisibility ring... and watch 300. 

Now where the hell did I put my food?

Sunday, March 18, 2007  |  From Heroic Adventure!

If you're too lazy to type in a name when creating a character in HA! I give you one randomly chosen from a list. Sometimes it's the name of a friend, like Robin, or it's androgynous, like Pat. Sometimes it's just silly, like TinkyWinky or IneedaName.

So lately, in an effort to test and refine the autowalk feature, I've been creating a lot of characters that I didn't care much about. As with most manual testing, you often discover stuff along the way, while focusing on something else entirely. I've discovered a number of things while banging on the autowalk code.

  1. I need a longer list of lazy names.
  2. the game is too damn hard for 78% of the character classes available. Technically I knew this, but dying 3 times out of 4, before even getting a chance to TRY autowalking really drove the point home.
  3. I had started implementing "corner" tiletypes, but hadn't finished it. I found this by occasionally seeing a message that said "Thud! You run into the " instead of "Thud! You run into the wall." That's been corrected.
  4. The action order (initiative) doesn't make good sense, and won't scale well. Like most turn-based games, nothing happens unless the player provides input (by pressing a key.) We have a basic initiative system where the character takes turns with the monsters, some faster than others. Currently the moster initiative is recalculated POST player move, every turn. As the game matures, it is inevitable that some creatures will be significantly faster (or slower) than the hero, and this method will no longer work as intended. I need to refactor this so the hero is presented a turn at the appropriate point or points DURING the initiative cycle, not before it.
  5. coming up with the autowalking code is frickin hard!! There's a lot going on. More on this below.

The first challenge was injecting autowalk commands into the loop without requiring additional input from the player. Since nothing happens without input from the player, I have to simulate that input. The easiest way to do this was to provide a keybound command ('w') that prompts the player for a direction. (This is based on the standard numeric keypad with 123 at the bottom.)

Once a general direction is determined, the fun part starts. Since we want the auto actions to behave the same way as if a player had actually pressed the key, we need to trick the loop into thinking that's what happened. The easiest way I could think of to do this was to set a flag, wrap the player input code with a conditional statement that checks that flag and then bypass the player input, assigning my own values (more on that in a moment) to the variable that would normally hold the player input... then the game processes that input as normal... in theory.

Actually that's almost all there is to it, if you just want the hero to walk infinitely in the direction indicated. In my case, I expected a bit more of my surrogate player. Some of the behaviors I require are below. The hero should:

  1. stop just short (adjacent) of colliding with an obstacle (like a wall or closed door)
  2. stop one step back from an intersection or open door (anywhere a choice should be made)
  3. stop two steps back from any hostile encounter (this means monsters, NPCs, etc)
  4. stop just short (adjacent) of any nonhostile encounter (townspeople, nonhostile creatures)

  5. if in a room, continue in direction indicated until any of the above occur
  6. if in a passage, follow passage regardless of direction until any of above occur (requires changing direction as needed)
  7. if autosearch or autoget are enabled, those behaviors will be observed too
  8. if a key is pressed during an autowalk sequence, control is returned to the player.

This involves a lot more than you would think from such a short list. There already exists logic to handle collisions with inanimate objects such as walls and closed doors, and of course running into a monster initiates combat. What I didn't have, was logic to detect things like corners, turns, intersections, etc. I didn't NEED to detect these, since the player could plainly see them onscreen and choose how to interact with them.

The first thing I tackled was detecting pending collisions. I say pending, because I didn't want the hero to actually walk into a wall and then stop. That would be silly, and it would also generate a "Thud!" message and take up a turn. None of these are desirable. Instead, I used the same routine to detect if a hero actually walked into an obstacle, only I called it before the pending automove instead of after. If the next step would cause an impact, I simply stop the autowalk loop. No "Thud!" message or extra turn. At this point, control returns to the player.

Now that the hero can stroll across an empty room, or down the straight section of a hallway, we can check off the first one. The next thing I worked on was a little trickier. Basically I needed to detect an opening near me, based on a specific configuration of walls. For example, walking down a hallway that ends in an open door was easy. I simply checked to see if the tile directly ahead of me was open (passable), and the tiles on either side of it, and me, were not. If this was the case, it indicated the end of a hallway and I stopped moving the hero, returning control to the player. This gets a lot more complicated when the wall configuration is less predictable. For example, if the hero is moving through a room, alongside a wall, and comes to an opening, the same rules no longer apply. By the same example, if the hero is crossing an L-shaped room, there is yet another set of criteria.

I've found, at times like this, you need two things: 1. a LOT of patience for debugging the various configurations and 2. a spiral-bound graph paper notebook to quickly illustrate each configuration as you discover it and code it in the detection routine. You would be amazed how much the second one helps.

Ok ok, so I'm still working on the second one, and will be for some time. It's an ongoing process of refinement. Skipping down to the third item on the list, this one was fairly easy. Using a similar concept to detecting walls, I look at a different property of the maptile and see if there is a monster in a given location. Using the hero's current X,Y location on the map array, I can look two cells in every direction to se if there is a monster. If I find one in ANY direction, I stop the autowalk loop. There are a couple noteworthy things here: 1. I look two squares out, checking BOTH squares, not just the outer one, in case a monster somehow slips past it for whatever reason (the monsters move too, ya know) and 2. I also look "behind" me and to the sides, in case something faster than me comes up behind me, or an incorporeal creature steps out of a wall somewhere. Stopping the autowalk before combat ensues give the player a chance to make a choice about how to (or not) approach what might be a significantly stronger creature.

I haven't started the fourth item in the list yet, because there aren't any nonhostile creatures or townspeople yet. So we'll revisit this one later.

and that's enough for this time... I'll have more of a progress report (and maybe even a build) next time around.

Sunday, March 04, 2007  |  From Heroic Adventure!

In roguelike games, like HA!, there is a feature called "autowalk" that is part timesaver and part AI.

When your hero is walking down a long (and possibly curvy) hallway, instead of hitting the arrow keys 40-50 times to get where you are going, most Roguelikes let you hit "w" and a directional key. The intent is that your character will walk in the direction (including making corridor turns) until it reaches an obstacle. These obstacles can be anything from a door, an intersection, or an encounter.

The down side to taking an autowalk is that you (typically) aren't taking the time to search for traps or secret doors, or to observe monster movement patterns. You simply indicate a direction to start walking and the game handles the rest. It's still turn based, and monsters move each turn, so interesting things can result.

Standard behavior is to walk all the way up to a door or intersection, but to stop a few spaces away from a potentially hazardous encounter. This might be a monster (or trap or secret door.) While you aren't doing a thorough search for the latter, some races are just better at detecting that sort of thing in passing. On the other hand, not detecting a trap isnt the same as avoidance... ouch.

From a developer perspective, autowalk presents some interesting challenges. It's easy enough to ask the player for a starting direction, but unless all your halls are perfectly straight and end at a door, you're going to have to help your hero make some decisions along the way. You'll also have to take monster turns and various effect durations into account. Every step the hero takes is a turn, whether it's at your direction or by automatic pilot, so normal gameplay rules apply.

There is some basic AI involved, such as checking each upcoming square to see what it contains.
- Is it another floor space? If so, is there anything in it? Should you ignore items on the floor or autograb them? (Given the risk factor, this is a good toggle setting for the player.)
- Is there a door in front of you or beside you? May want to stop.
- Is the space in front of you a wall? If so, don't walk into it. Instead look to see which direction contains an open floor square and head that way. Is there more than one empty floor square (not counting the one you just left) adjacent to your position? If so, you should stop since you're likely at an intersection or room entrance.
- Are you within 2 squares of a creature or NPC? Better stop.
- If your hero detects something hidden, such as a door or trap, you may want to stop instead of setting it off. Of course if you hero doesn't detect it, well...

This doesn't really fall into the same category as pathfinding, since that typically involces getting from point A to point B without input from the player. This is usually accomplished by determining path costs based on the nature of terrain the character must traverse. If something is impassable or difficult, it has a higher "cost" than open terrain, and simple pathfinding algorithms use the lowest cost path. In the same manner, straight lines (where possible) are "cheaper" than long circuitous routes.

So why am I writing about this? Well, I spent a few hours on HA! this weekend (I gave up sleep for lent) and the main thing I worked on was autowalk. As I mentioned before, it's a staple feature of most roguelike games, and HA! needed it. It's not quite done yet, but should be soon.

I also added some extra information to the character generation screen. You can now see the individual attribute bonuses (post race-mod) as calculated for the various skill checks, combat, etc.

Thursday, December 28, 2006  |  From Heroic Adventure!

New HA! prerelease build. This one includes the updated character generation UI.

Get it here

Wednesday, December 27, 2006  |  From Heroic Adventure!

Yes, it's another HA! update. I spent about 5 hours late Christmas night (midnight - 5:00am) rewriting the character generation UI.*

It's not quite where I want it to be yet, though it DOES work. I plan on finishing it by tonight.

*This should also fix one the bugs in the former UI, which is a nice bonus. Hopefully it won't introduce more.

Wednesday, December 20, 2006  |  From Heroic Adventure!

I spent some time (admittedly, not much) last night looking at the HA! code. Starting to feel that itch again. It's been neglected too long. Reviewed and responded to some of the comments I received at CodePlex (most were helpful, others were "misguided" and needed some explaining on my part.)

Took a look at the Dungeon Generation code yet again. Man I hate how kludgy that stuff is. I just don't have the time or motivation (mostly the time) to rewrite something that works well 95% of the time. As I spot generation errors, I do try to patch the code to fix them, but rewriting it from scratch isn't likely to happen any time soon.

Also looked at the code in the Gender/Race/Class selection menus. There's a bug there, pointed out to me via a nicely detailed bug ticket on my Codeplex site. I've been thinking about redoing that whole section any way... so that will be the first thing I hit. Maybe tonight, after dinner. Is there anything good on TV wednesday nights anymore?

One of the good things about travelling so much is that you find time in the evenings for stuff you usually can't justify.

Occasionally, someone asks me if I'll be porting HA! to use XNA. I really can't imagine ever doing that. I already catch hell on the roguelike newsgroups because HA! has about 100k of code and a 20+ meg framework. Adding yet another download and consuming more drive space doesn't seem the way to go (IN THIS CASE.)

Don't misunderstand, I love XNA and TorqueX, but who the hell wants to see an ASCII console app written with XNA? My intent is to take what I've learned from making HA! (and I've learned plenty) and apply it to the next game I make (which will be with XNA and TorqueX), but leave the old code in the past. Sounds good to me.

Keep the knowledge, not the code.
and no, that doesn't mean I'm abandoning HA!

Saturday, September 30, 2006  |  From Heroic Adventure!

As I mentioned previously, I'm working on the overland encounters code for HA!

Basically, if you end up having an encounter on the overland map, you are brought into a tactical map that is representative of the terrain type you are standing on at the time of the encounter. If you're on a road tile, for example, the zoomed in map will feature a road, grass and trees.

Combat occurs just like in the dungeon, except there are no walls, just a big open terrain map. Getting to the edge of the tactical map will return you to the main overlap map, if all monsters are slain. If monsters still exist on the tactical map, you will be given the option to attempt fleeing, but may or may not be successful.

None of this is exceptionally difficult to implement. What I'm struggling with at the moment is how to actually trigger the random encounters. I could take the easy way out and just do a random check each turn (with various racial, class, skill and magic modifiers) or I can actually have encounters moving around the map (unseen by player) and triggering an encounter whenever the hero steps into the same space as an encounter.

I like the concept behind option 2, because having entities travelling around the map makes it feel like more of a world to me as a developer. The problem is, it's a lot more work than option 1 and I really doubt the player will notice the difference. If I just have occasional random encounters, based on an arbitrary (but modified) number, it's probably good enough.

It seems silly to write extra code just to make it more interesting for me as a developer. On the other hand, why would I do it if I didn't find it interesting?

I'm curious how other games (and developers) implement this sort of thing...  Comments encouraged.

Saturday, September 30, 2006  |  From Heroic Adventure!

Worked on HA! some last night and today.

In case they weren't hard enough, Trolls now regenerate and display the appropriate messages (if you are close enough to see the regeneration occurring.) Currently there is no distinction made between regular damage and fire/acid/magic damage. I have created a tracker ticket to remind me to address this.

Also noteworthy, VB.NET guru extraordinaire, Paul Vick has rewritten the Random Number Generator for HA! in VB.NET. For those of you just tuning in, it was originally in C# due to the lack of unsigned integers in VB.NET 2003. Now that VB2005 supports them, there was no reason not to have it ALL in VB.NET. Thanks Paul!! Now I just need to add it into the main source. Yay!!

I'm currently working on Overland Map encounters. :) Hopefully, those will be ready by the end of the weekend.

Monday, August 21, 2006  |  From Heroic Adventure!

Since adding HA! to CodePlex, I have been averaging roughly 1000 hits and 20 downloads per week. That might not sound high to most of you, but for HA! it's a big leap. The original site probably averaged about 1/20th of that with the occasional bump now and then.

Currently I've got one other guy on the team and 1 contributor that will most likely end up on the team fairly soon.

Wednesday, August 16, 2006  |  From Heroic Adventure!

The HA! code is uploaded and the CodePlex project has started. Feel free to visit the project at

Just to clarify, you don't have to be "on the team" to download the source. Anyone can do that. I've already had a few people ask to be put on the team right off the bat, and I want to talk about that for a moment.

Being "on the team" actually confers a lot more rights than I am willing to give a complete stranger. Please feel free to download the code, check it out and make suggestions or even make changes and send them to me. I'm really not inclined to add anyone I don't know to the project until I see some level of effort from them (like actually looking at the code and making suggestions, bug reports, etc... or sending me fixes.)

On the other hand, if I actually know you, things work a little differently. If I have seen your work, or feel like I have a good idea about you and your potential contributions to the team, then obviously I'll take that into account and probably add you right away.

Also, be sure to take advantage of the message boards and the issue tracker. I look at both of those on a regular basis.

Friday, August 11, 2006  |  From Heroic Adventure!

New release (0.1.6d) of HA! available here:

Also, as you may have noticed above, my CodePlex project has finally been created. You can visit (and join?) that here:  I haven't updated the wiki yet, but I will.

So what does all of this mean? Basically, as I stated before, I'm taking HA! the shared source route. The source isn't up there yet because I'm still downloading the huge Team Explorer Client. I hope to add the source code over the weekend.

Please forgive me while I figure out how all this stuff works.

A few comments about the latest build:

1. not everything works (shocking, I know)
2. some things have changed (most notably, the game starts with an overland map instead of a dungeon)
3. entering villages and dungeons works the same way as going down stairs (use the '>' key)
4. try using the '>' when you're on the road or in the forest (not all terrain types are implemented)
5. umm... other stuff I don't recall at the moment.

Ranged combat and revised line of sight code is still slated for release 0.1.7

Friday, July 21, 2006  |  From Heroic Adventure!

Yesterday, when I mentioned the possibility of taking HA! open source, I got some terrific feedback (more than expected, in fact) in my comments section and also some private emails. One of the emails suggested I look into the Microsoft Shared Source Initiative instead of some of the more restrictive Open Source licensing options I had mentioned previously. (FYI: The licenses published on this site are intended for people using MS source code, but it wouldn't take much tweaking to adapt one of them to my needs here. The Community License is a good example.)

Along with this licensing model, a potential new home for HA! was recommended, in the form of CodePlex. I haven't spent much time there yet, but if I do end up cracking open the source code for HA! this seems like a good place to be.

As always, your thoughts and (likeminded or dissenting) opinions are welcome on this subject. Just keep it friendly.

 Heroic Adventure! News Feed 

Last edited Dec 7, 2006 at 11:16 PM by codeplexadmin, version 1


No comments yet.