Devblog:


6th August 2008:
Fixed all of the bugs with the pick up and put down system. After thorough testing, items never went missing and volumes are taken into account. When trying to put something you can't carry into your backpack, the error noise is played and the item remains in your hand. I removed the whole corpse locking thing which was previously being used to ensure two people weren't looting the same corpse at the same time. Instead, the game will let any number of people loot the same corpse and in cases where two people go after the same item, only one will get it and the other will pick up a different item or nothing at all.

I've reassigned the "close all windows" function to the escape key and implemented the "loot all" button as previously described. In the process, I developed a client-side command queue system to replace the previous single command. The client will still be limited to sending only one command per frame but this way issuing a second command within the same frame as another doesn't cause the previous command to be lost. This also corrected an occasional issue where the player would be stuck in run mode due to the stop run command being overridden within the same frame it was issued.

Further development goals:
- Add close window buttons to inventory and corpse loot screen to replace keyboard shortcut.
- Add loot all button to click rather than using 'g' as a keyboard shortcut.
- Create a class for sound events which contains the type (start loop, stop loop or play once), sound number and grid coordinates. Make a vector of these events on each local server. Each time a sound is played, add the sound event object to the vector for each player on the same grid. When sending the serverframe, have each event in the vector checked for distance from the player and if close enough, add to the sound vectors which are currently sent to the client.
- See if I can figure out how to alter the volume of sounds when played. If so, make sounds quieter if they are further away.
- Put a variable in each grid indicating how close people can get. Rather than using the same value everywhere as is the case currently, it could be set higher in dungeons or to 0 in towns to let people walk through each other.
Screenshots



5th August 2008:
Just realised I hadn't uploaded the devblog page in the past month or so but have kept my own version updated. I'm sure nobody is following the project but I've uploaded the latest version anyway.

Development goals completed today include creating a new system for tracking players on a given grid. I've tested it and it works as expected. I've also implemented looting sanity checking. Opening a corpse to loot it requires a server request now and the server only accepts the request if the player is nearby the corpse. This check is done when attempting to actually take an item from the corpse too. I scrapped the idea of only letting one person loot a corpse at a time because it was a bit of a headache and the more I thought about it, the worse an idea it seemed to be. I've also made it so people can't move when looting and dead people can't loot corpses.

Further development goals:
- Fix bugs with the pick up and put down system when looting. Test system thoroughly when done, making sure no items can go missing and volume limits are correctly enforced.
- Add "Loot all" button that issues a new loot all command. This will rapidly issue a corpse pick up and inventory put down command for each item in turn. Make sure volume limits are enforced correctly for this command.
- Add close window buttons to inventory and corpse loot screen to replace keyboard shortcut.
- See if I can assign the keyboard shortcut on Q currently to the Esc key.
- remove corpse locking. I can always reiplement it later if I need it.
- Alter the sound system so that they are delivered with grid co-ordinates and delivered to all people on the grid.
- See if I can figure out how to alter the volume of sounds when played.



23rd July 2008:
Completed work on the corpse system. Players now drop all their items in their corpse on death and the corpse can be looted item by item. Items are picked up from the corpse into a temporary "free hand" slot and can then be dropped into the inventory or thrown away. Likewise, items in the normal inventory screen can be picked up and thrown away.

Still to do:
- Change the system by which players on the grid are found.
- Doublecheck that moving to another grid actually makes you leave the grid.

- Alter the sound system so that they are delivered with grid co-ordinates and delivered to all people on the grid.
- See if I can figure out how to alter the volume of sounds when played.
- Implement looting sanity checking. Make it so people can't move while looting a corpse and can't loot a corpse over 2 squares away. Make it so two people can't loot the same corpse.





16th July 2008:
Since Diablo 3 was announced, I've been very distracted with playing Diablo 2. Just made a quick update to the game which changes the way dead players are handled. Dead players now drop their weapons and become ghosts, incapable of interacting with anything. They can still see their environment, including changes that live players make such as smashing furniture. Dead players cannot see live ones and vice versa by default but there's a flag which allows players to see ghosts. This could be useful for players with resurrection abilities.

Still to do everything from the last goal list:
- Implement a corpse system allowing a corpse to be looted.
- Alter the sound system so that they are delivered with grid co-ordinates and delivered to all people on the grid.
- See if I can figure out how to alter the volume of sounds when played.
- Change the system by which players on the grid are found.
- Doublecheck that moving to another grid actually makes you leave the grid.

Screenshots





24th June 2008:
Completed a few of the development goals today.

Immediate goals for further development are:
- Implement a corpse system allowing a corpse to be looted.
- Alter the sound system so that they are delivered with grid co-ordinates and delivered to all people on the grid.
- See if I can figure out how to alter the volume of sounds when played.
- Change the system by which players on the grid are found.
- Doublecheck that moving to another grid actually makes you leave the grid.






21st June 2008:
Have been working on the game for about a week now and it has taken over my interest from the MOO2.5 project, which is being put on the backburner. I decided to put the knights project up on the website. So far, I have implemented a 2D grid system of 100*100 squares, each 32*32 pixels. Each square contains a floor/wall tile, can have a piece of furniture on it and can have an item on it. I have also created a map editor mode which allows me to create a map quickly and save it.

The player walks around the map and interacts with it but opening doors, pulling switches and smashing doors/furniture. He picks up items, including the alternate weapons such as the hatchet, the wand of destruction, the hammer etc. There's an inventory system for large items which allows a certain "volume" of goods to be carried (currently the only item is some logs). I've implemented a few spells for fun such as one which blows up furniture and one that cuts down trees but will have to revisit them later and see how they can be balanced into normal gameplay.

I have completed a threaded server which has authority over the map and player and a non-threaded client but the model isn't perfect. If the client skips a frame, theoretically the server and client would be stuck in a loop waiting for each other to respond. I'll fix this later by implementing a networking thread in the client.

Immediate goals for further development are:
- Make it so that dead players are invisible to live ones
- Make it so that dead players appear discoloured to themselves
- Make it so that players drop their weapon on death
- Implement a corpse system allowing a corpse to be looted. Weapon would be picked up normally, backpack could take a few seconds maybe?
- Alter the sound system so that they are delivered with grid co-ordinates and delivered to all people on the grid.
- See if I can figure out how to alter the volume of sounds when played.
- Change the system by which players on the grid are found. Register players with each grid as they enter it and unregister them when they leave, basically.
- Doublecheck that moving to another grid actually makes you leave the grid.

Screenshots