Sunday, August 1, 2010

Adventurer 0.0.0.5, End of Month 1 - July

I bet you're wondering what that huge image up there is. I'll tell you - it's a healing potion mapped down to an atomic level. And it's in the most recent update, which I just posted at my Google Code page. Maximize the image if you want to see just how detailed it's mapping down that potion.

Now, I'm not saying that I track every single atom or anything like that. Or even that at the moment that all of the data held within is correct. But the system is up and in place, and I can now start working with it.

Adventurer 0.0.0.5 (I'm being conservative with the version numbers: I see 0.0.1 as being something I can reasonably call a game, and 0.1 as something I can be proud of. 1.0 Will be a stable 'finished' product, though I'll likely keep working on it pretty much forever. The big thing it does above the previous is that now I'm importing all the libraries of creatures, items, materials, and what-have-you all from text files in a folder labeled "Encyclopaedia Adventura". These text files simply hold information about creatures or whatever, using a system of "[TAG] variable". So "[CREATURE] human" says that a creature type named "human" exists. [/CREATURE] closes it. Everything in the middle is information about the human creature type.

The big advantage of this is that people will be able to mod the game easily just by adding, removing, or changing stuff in the encyclopedia file for it. The game file later opens it, searches for tags and data, and compiles it all into internal lists of Creatures and Items and stuff. So all I have to do to add a feature is to tell the code to look for another tag, add a variable to a creature, and update the library. So right now, theoretically, you can create any creature of any power that you want.

But right now it's pretty generic. I only have two creature images ready, @ and r. There's only health potions. And the rats drink the potions just as readily as the goblins. So the next update is going to fix that some. I'm putting in a Body Part system. In fact, if you look at the code, you can see that I've partway implemented it already. Basically, instead of saying "You're a rat, you can't drink potions", I can say "You can't drink potions because 1 - you're too dumb to figure it out and 2 - you need a body part capable of using items." This will be much more realistic. And it leads right into the second major thing I'm doing, an AI update. Right now, all creatures act the same because the AI code is in the Update code. But that's silly, it should be somewhere in the Creature code. So I'm getting around to implementing that Sentience object I set up earlier. Every creature will have one (possibly more in the future), called 'mind'. The mind will have a function for figuring out what the creature wants to do next. So then, all I have to do is say something like "action = thisCreature.mind.thinkOfAction();". It will then figure out what it can do, and what it should do. All this is planned for 0.0.0.6, which shouldn't take as long as this update to get around.


And finally, a retrospective on Month 1 - July. I have taken the game from a rough, weak concept to something that is starting to take shape. I've got some rather impressive systems in already, though sparsely populated. And I'm just bringing in more, now that the hard stuff is going by. Overall, I would say the work on this project is a huge success so far.

On the other hand, the project has almost no one watching it or downloading it. I have a whopping total of 16 downloads, most of those from people I already know. I have zero comments, except for a brief bit of interest on the Dwarf Fortress forums. I've only had one person contact me directly. I have 133 page views, most of those I bet come from myself.

Ah well, I'm doing it for the Fun and XP, not the Fame.

Adventurer gains +1 Months of Maturity Points.
Adventurer gains +1 Level of Awesome.
Kala gains +5 Update points.
Kala gains +4 Weeks of College.
Kala gains +1 Level of Game Programmer.

3 comments:

  1. It's reasonable to assume you'll get absolutely no interest in the project until it's something that has some appeal as a game, instead of as a code exercise.

    I mean, all this is interesting, but probably only to a fellow programmer or game designer, not really to someone who wants a new roguelike to try out, since it's so minimal. But hey, if you keep at it you'll end up with something of more and more interest.

    Also, um, hi! I, uh, actually found this from your FA page after you commented on one of my submissions.

    (I do like how the healing potion is water, though. I gotta ask-- since you seem to be going the atomics route, do you have any plans to store chemical bonds and related data? And what's the plan, if any, for things like ~magic~?)

    ReplyDelete
  2. Hi Kala,

    I must applaud your effort to put together a white box implementation of the game world and AI, but beware that the high level of detail you have at such an early stage represents a huge investment in the future for very little payoff now.

    From following other projects' development and from my own vaporware, I have found that in order to keep programming momentum strong, the largest percentage of your code at any given point must result in an immediate payoff. I like to keep roughly an 80%/20% ratio to code that provides an immediate payoff vs. code put in place to make future development easier.

    If you are committed to putting out a playable game, you may also want to prioritize the order in which systems get built, and identify the cases where "good enough for now" solutions do the trick. For example, in my current project, I have not yet implemented pathfinding for monsters, instead using a simple move-in-a-straight-line-towards-the-player approach if the player is within FOV radius, since it yields a good enough immediate result for a cheap development cost.

    Regarding visibility, you may want to post your releases on RogueBasin (http://roguebasin.roguelikedevelopment.org/),
    Temple of the Roguelike Forums (http://www.roguetemple.com/forums/),
    and R.G.R.D.: (news:rec.games.roguelike.development), and get your blog syndicated on Planet Roguelike (http://www.elderlore.com/en/category/planet-roguelike).

    Looking forward to seeing how your project develops!

    Ebyan "Nolithius" Alvarez-Buylla
    http://www.nolithius.com

    ReplyDelete
  3. Oh hey, comments!

    Xax - Yeah, I don't expect any real enthusiasm until I can honestly call it a game. As it is, it's just a foundation. I'm going to keep building on it. And right now I'm moving more into the phase where I'm adding the stuff that will make it a true game. When I feel it's moved from 'experiment' into 'game', then I'll give it the 0.0.1 label. I'm just about to update with the next version, which has a combat and health system. Next, I'm going to see about armor and weapons.

    I do have plans for functioning magic, and I'll look more closely at atomic bonds and actual chemistry when I get quite a bit further along, and start doing stuff with temperature and item crafting. As for how magic works, I actually think it could be even more interesting with this system. Instead of just calling it a fireball, you would have a 'heat' spell you could apply to a tile, area, or item. Or even have it act as a blast of intense heat. The power of it would vary with skill, and it'd act as an exception to normal physics; it would raise the temperature of whatever the spell is applied to, and all the consequences can naturally follow from there. Like melting ice, or injuries due to burns.

    Potions and enchantments are again going to be an 'exception to the rule' kind of thing with normal consequences; potions explicitly declare what happens when they're drunk, what effects happen. I like how that's working out, so far. If it keeps working, I'll stick with it.

    Nolithius - Yeah, I know it's a huge investment, and I probably could have spent that time throwing up a quick and dirty system that would get stuff done quicker. But I really am looking at that whole payoff thing. I probably did go overkill with the detail level of making a potion. I could have defined a potion, and left it at that. But I was already at it, so I basically copy-pasted what I'd already done a level lower, and tweaked it a little. Before you know it, I had a potion defined to its bottle defined to its glass defined to its... you get the picture.

    The way I develop has a kind of anarchic organization. On the one hand, I do have the big picture stuff, like how I eventually want a chemical reaction system. On the other hand, I just look at what I need to do next. Deciding what to do next comes down to a simple little ratio: how much better this will make it / how much time it will take to do. I refer to it as the awesomeness to time ratio. First, I look at what I can reasonably do next, like add armor, compared to other things, like making line of sight better.

    Armor will be pretty good to have in, and all it'll need is a little touch-up to the item library, the combat code, and... that's pretty much it. Tada, armor. A good awesomeness to time ratio. Then there's line of sight. It'll look prettier, but it won't do much. And it'd involve delving back into the Bresenham line algorithm, and working with 'halves' of tile. A lot of work, not much payoff.

    I see the next steps being more items, and more feedback. I need to get that inventory menu working, and a way to check on your character's health in detail.

    But I really do have my heart set on making this the best it can be, and I've really move on to the stage where I can't imagine ^not^ working on Adventurer. It isn't a chore, it's fun.

    Also, thanks for the information on raising the visibility of Adventurer. I'll take a look around those sites. I've had a look at them before, but I really should see about posting some information there.

    ReplyDelete