AlgorithmsNovember 28, 2005 1:52 am

I have started working on Sound, as Kostatus has gracefully taken over the work of melee code. In the process of doing so, I simplified the Node class originally used by A* and derived an AStarNode subclass from it. This makes the Node class useful as a base for building other more creature senses, should they become necessary.

I have revisited my originally flawed implementation of A* and made some changes to it to reduce memory footprint. The original design was a lazy quick hack. Now I am happy to say that the memory usage has been reduced by a factor of 2/3. The reason why I favor memory footprint over speed is because the in-dev WoT as it is (with my configuration) requires 35MB to run, including all the overhead of the Java VM. I don’t want to add any extra fat to that. Normal creature movement uses ~3% of my (1.4 GHz) CPU cycle. So that should be as good as it can get. Besides, the memory saving will become even more significant when the pathfinding algorithms (A*, Dijkstra) are used on bigger maps; so the little loss on CPU cycles is not too bad.

The basic framework for sound has been implemented. I’m a bit too tired to test it out now, so I will probably do it tomorrow or later in the week.

by Atholas

UncategorizedNovember 26, 2005 1:13 am

A roguelike trailer: http://fin.broodwar.com/dbd-alpha.avi :-D

By Kostatus

UncategorizedNovember 24, 2005 6:30 pm

Some draft goals that we need to complete before the next release:

  1. Melee and Ranged fighting fully implemented.
  2. Save games and persistent levels.
  3. Fully implemented inventory handling system.
  4. A town map, and maybe even a world map.
  5. Support for “simple graphics” which includes the ASCII tiles.
  6. Food and hunger (at least for the PC)
  7. Character selection (”birth”)
  8. Some way to win the game.
  9. At least a demo-level body part damage system.
  10. At least a demo-level shop system (shop assistant goes to back of store-room)

More to be added later!

By Kostatus

AlgorithmsNovember 23, 2005 10:47 am

I wasn’t so happy with the original AI movement that the nomial creature does; it was implemented quickly to check for the correctness of our A* implementation. So, I started adding in features that make the AI movement more “realistic”. Having implemented all that, I wasn’t too happy with the way A* break ties — it doesn’t do it at all. I have experitmented with different method of tie-breaking and other people’s idea, and eventually the tie-breaking problem is partially solved, but I am left with some odd cases where the tie-breaking method doesn’t work. In the end, I have to tweak the A* algorithm even more to deal with these cases. Contrasting the current pathfinding algorithm with the one in the old C++ WoT 0.0.2 gamma 1 release (we also had a 0.0.3, but that was an internal release), the current A* implementation is definitely much more mature and also more fun to play around with.

As far as pathfinding goes, there is very little left to do. Most of the AI basic movement features I have wanted are implemented, and the ones that I have in mind are gonig to get implemented soon. Thanks to Kostatus and our new co-developer, there isn’t so much tension in rolling out releases. So, I am left with a lot of time to pursue new ideas and polish the existing ones.

AI movement is affected by a lot of factors, and (shrotest-)pathfinding is only one of them. So just movement AI alone, there is much left to do. I am going to start implementing AI features that Kostatus and I wish to see in the mid-Feb release (I will temporarily codename it Rockie), in particular the next feature I will implement is sound-driven movement. We don’t have enough infrastructure as yet to implement the other AI I have planned, so I will leave them out for now. I will most likely have to reassign some of the basic attack codes to Kostatus ot implement myself a bit later.

by Atholas

UncategorizedNovember 20, 2005 1:37 pm

Latest Java docs are now available for browsing at http://wot.00pro.com/docs/.

By Kostatus

UncategorizedNovember 19, 2005 8:13 am

Before I post anything further, I fixed the bug mentioned in the last post. I for some reason started writing some pretty crazy debugging messages. Here is one:

DEBUG: Summer rain. Summer pain. Summer rains when Summer faints.
When Summer ends and life gets tough, drink some vodka, take some puff.

This was inspired by the previous one:

How I love thee when thee crash, oh summer love

One of the WoT developer is a Russian, hence the reference to vodka :-p Just to poke some fun at him.

by Atholas

Uncategorized 7:34 am

The A* as it stands is rather bug-free and is working pretty well on all the tests I have done on it. I ended up using a TreeMap, and 2 HashMap for A* for the fastest operation. The testing revealed some pitfalls in the creature generation code, so it was quality time spent. I have notified Kostatus about this bug, and might fix it myself. This turned out to be a pretty small bug, so no big deal there.

When I am confident enough to commit the code, I will start on working on Melee. Kostatus has been working on status display, items and some other stuff. I might redirect the Melee part to Kostatus and work on some new features for the creatures (which I won’t make any further announcement about — a surprise for those who will play the release due to debut soon), depending on how fast Kostatus can get some basic item working.

I am a little unhappy about our new developer not making any commits yet. I hope that it is only laziness rather than crisis that is dragging him behind… but since Kostatus and I have picked up the speed on development (so much that the documentation for my part of the code constantly get outdated), this shouldn’t cause any trouble for the mid-Feb release. I must go update the documentation soon.

Watch this space.

By Atholas

UncategorizedNovember 17, 2005 1:46 pm
  • All the features of the (unreleased) 0.0.3
  • Random World Map
  • Random town maps
  • Basic conversations with NPCs
  • Sound-driven AI for some creatures
  • Highscores

By Kostatus

Algorithms 2:23 am

I really should be sleeping now, but instead I am working on the A* algorithm. I have created a new package for files related to pathfinding, and I am just about finished with a preliminary design. Thankfully the Java standard library/package has a very good Collection framework, so some of the components of the implementation are done. For efficiency and naturality, I have decided to use a priority queue to implement the open list for the obvious reason (O(1)). As for the closed list of the algorithm, I am going to use a red-black tree as the underlying data structure. As it is O(log_2(n)) for adding and retrieving, it should be the best for us in this case. Thankfully Java has implemented red-black trees in the standard package, so less code writing there.

I still need to do a little bit of research on heuristic methods other than the diagonal distance method that I now have in mind to start off the class with. But since the underlying data structures are provided, I only need to implement the nodes for the algorithm and the actual algorithm itself. Looks like the Astar class might be pretty small after all. Hopefully I can get this done by tomorrow.

Time for bed before my liver breaks down.

EDIT @ Nov 17, 7:35am: updated the part regarding closed list.

by Atholas

UncategorizedNovember 8, 2005 12:47 am

All the basic behaviors of the Creature class we have planned are now in place. The class should be virtually bug-free as it stands, but I will need to check some of the areas where equipping and removing an item is involved, as I recall some miscommunicating between Kostatus and I. But whether or not this is bug-free, we have the basis for building the other features for WoT. In the process of completing Creature class, I have made some major changes to the BodyParts class. In fact, I had made numerous changes to the layout of the packages because of the Creature class. I hope that no more big changes is necessary, so that we can start to concentrate on implementing features rather than infrastructures.

With the exams coming to an end (Kostatus is still having his) the pace of development should start to pick up very quickly. Although it has not been officially announced, we do have a third developer on the team to take care of some of the GUI stuff. While he has not not committed any codes yet, I look forward to him relieving Kostatus of his GUI work, so that both Kostatus and I can take care of other stuff and pushes the development along.

I began to develop some visions for what I want to see in the future of WoT, but right now, what is important is to restore WoT back to its old “glory”. The current in-house demo of WoT looks much nicer than the old WoT, and the dungeon/room generated is more varied. What we really need to do next is to tidy up the codes (my portion of the code base is quite messy because of the big changes), and get the other small details ironed out. Hopefully our new developer will be able to create items for us, so that we don’t have to work on the tedious job. Before the summer ends, we should be able to get WoT up to, or even surppress, the last 0.0.3 code bsae.

My current goal for the project is to get WoT back to and beyond its 0.0.3 predecessor before mid February in 2006.

As for now, I am going to take care of the melee attack code once Kostatus and I start discussing the future plans for features. Looks like it is going to be a really busy summer.

by Atholas