Wednesday, June 27, 2012

Tuesday, June 26, 2012

Splash Attack






I added splash attacks. Because those groups of angels annoyed me.

Saturday, June 23, 2012

How to pick up loot

Putting items directly into the inventory.

Pro:
  • Very easy to implement
Contra:
  • No choice not to pick up items
  • Players might find ultra-rare items and not even notice it before checking their inventory
  • No way for the players to directly control who gets loot in a party

Picking them up from the ground.

Pro:
  • Enables drop-trading
  • you can see what other players around you find
  • Adrenalin rushes when you see something valuable drop
  • Enables mob/item interaction
Contra:
  • Either Inventory icons must be designed in a way that they look OK both in the inventory and on the ground, or every item needs an additional floor sprite
  • Enables drop-stealing
  • Items on ground can be unreachable or overlooked
  • A lot of netcode traffic is used for communicating drop position

Open a window to pick from when clicking on a carcass


Pro:
  • Convenient to decide what to pick up, especially for parties
Contra:
  • When killing a lot of enemies at once, checking them all for loot can be a chore
  • Additional click required to pick up items


I think I will first implement the "put directly into inventory" method, because everything I need to code for that also needs to be coded for the other methods.

Thursday, June 21, 2012

About items

Items are what makes MMORPGs worth playing.

They appeal to the basic human instinct to gather and to hoard. 

They are a much greater token of achievement than levels and stats alone.

They are a great source of reward. I still fondly remember the dopamine rushes I experienced in Ragnarok Online every time one of the many ultra-rare 0.01% drops appeared on my screen.

They enable an economy. An exciting game inside the game which drives itself without any actual work by the developer.


Milestone 7 turned my program into a game. But Milestone 8 will make it worth playing.

Milestone 7 finished

I hereby declare Milestone 7 finished. I finished this milestone much quicker than I thought, but that was rather because I was quite active lately, not because it wasn't much work.  The planning decision to make a whole milestone out of the mob AI was definitely justified.

I didn't implement all the planned monster strategies, but I didn't plan to do so anyway. I created a solid framework which allows me to create new strategies with minimal effort. This will surely come in handy in the future. Even now the AI is already passable, and without much effort I can make some awesome things.

The next big chunk will be items.

Monday, June 18, 2012

Respawning client-side


I added a respawn window to the client as well as the logic to use it.

Respawning server-side

I implemented respawning on the server-side. The client still needs a button to do this.

Currently respawning fills your HP and sends you back to the starting location. A mechanic for saving a different spawn location will be needed, but this will be postponed to Milestone 9.

I also implemented the /death and /revive chat commands.

Something which is also a bit annoying is that there is no way to tell if a player is alive or dead just by looking at them. I need to use a different sprite for dead players.

Saturday, June 16, 2012

Monster attacking



Monsters can now attack player characters (and - theoretically - each other when I would implement a target strategy for that). They only do one damage with every attack for now, but it's a start. I still need to handle player death. When that's done, I practically have a playable game.

Sunday, June 10, 2012

Angel and Imp


I brushed up my rusty pixel art skills and created two placeholder monster sprites. The angel looks pretty cute already, but the imp needs some work.

Angel


Magical creatures of pure good. They strictly adhere to the moral rules written in their "Holy Codex" which encompass pureness, chastity, humility, abstinence, kindness and peacefulness. The last one with one notable exception: Anyone who does not adhere to the rules of the Codex is considered a sinner, and sinners must be opposed with all means necessary. Destroying the sin is a cause which justifies all means necessary. The angels prefer to make a sinner repent and abandon their sinful ways, but when this turns out to be a futile attempt, they often decide to destroy the sin by destroying the sinner.

At first, other creatures usually consider the berating of the angels about their "sinful ways" amusing at best and annoying at worst. But it is foolish to not take them seriously. Angels are not allowed to bluff or lie. When they say that your adherence to a sinful life will have "dread consequences", they mean it.

Angels are also intelligent, educated, organized, polite and well-spoken. As the self-proclaimed moral guardians of the kingdom, they are very interested in politics. The angels openly trusting someone has a very positive influence on the public opinion.  That's why many politicians employ some angels as officials for image reasons. Besides, they are smart, diligent, hard-working and frequently even work for free. Unfortunately, closeness to the angels has the disadvantage that any "dirty business" must be hidden from them at all cost, because they will not hesitate to make it public, abandon you, or even outright attack you when they doubt your moral integrity.

Fallen Angel

An angel which willingly commits a sin, or which enjoys performing a sinful act when forced to do it, immediately transforms into a fallen angel. In contrast to angels, they are hedonist creatures whose only concern is their own well-being. They only cooperate with others as long as it gives them direct gain or pleasure, and they will abandon any ties to others as soon as they become a burden. That's why most fallen angels are solitary creatures.

Ironically, they are often less dangerous than their good counterparts. They don't care much about the business of others, unless it directly interferes with them. Although fallen angels do not hesitate to use violence to get what they want, they will usually back off when the resistance they have to bother with outweighs the potential gain.

But still, when there is something they really want, they will not have any moral qualms about using any means necessary to get it. There is also a faction of fallen angels which can indeed be very dangerous: Those who discovered the pleasures of sadism and domination. A fallen angel who enjoys to cause suffering is someone you don't want to meet.

Imp

These evil creatures strive on the hate and anger of other creatures. They need hate of others to survive. When nobody hates an imp, they starve to death. To get people to be angry on them they will use insults, practical jokes or even violence. They can be considered the "bullies" of the kingdom. Fortunately, they are small and not very powerful, so they are more of a nuisance than a real threat. But being a nuisance is a skill they trained to perfection.

The best way to deal with them is either by ignoring them, or by trying to have a positive attitude towards them. While hate of others is food for them, affection is pure poison and will drive them away. Considering them cute, feeling sorry for them that they must be mean to survive or believing that they are really nice beneath their outer shell is a sure way to drive them away.

Saturday, June 9, 2012

Monster database, spawn areas and roaming strategy



I just implemented:
  • Spawn areas defined in map files
  • Reading monster properties from a JSON database file
  • The roaming strategies RoamMap and RoamArea
  • The spawn strategies ReplaceSingle and ReplaceAll
I still need to implement the reading of game system specific monster properties. Next stop is attacking.

Oh, and the JSON parser need to be made more stable. When they miss some value, they spit out a stack trace. They should use a reasonable default and output a warning instead.