Showing posts with label client. Show all posts
Showing posts with label client. Show all posts

Sunday, August 31, 2014

Various bugfixes

  • Vampiric spells no longer freeze the client
  • Characters which somehow manage to get stuck in walls on mapchange or login will get moved to a nearby open position
  • Multi-hit spells now retain their multi-hit property on logout
  • Tailored items now have icons

Sunday, August 24, 2014

Walk animation, cast animation and ice particle effect


I did some long-needed pixel artwork. A walk animation for the player-character, a casting pose and the missing particle effect for cold attacks.

Tuesday, July 29, 2014

Mining System implemented

I implemented the mining system. I also made the first mining map, an NPC which sells the mining spells, and two Foni's, one giving mining hints and one telling a bit more about herself. I am not that happy with the iron ore item sprite, though. It looks like shit. No, it literally does. Just look at it:


But otherwise, I am quite happy with this feature. It works just like I designed it. Sensing and prospecting isn't implemented yet, but probing and mining works just as intended and I think hunting for ore is really fun... at least compared to the "click on ore, watch progress bar" resource gathering systems of most MMORPGs. Now I just need something which can actually be done with the ore. Currently it's just vendor trash, and not even a particularly lucrative kind.






Monday, June 30, 2014

AoE overhaul

I spent the whole Sunday with overhauling the code for AoE attacks. It is now much more extensible for different attack patterns than just points and circles. I also implemented attacks which target a ground location instead of a specific opponent, which works both for mobs and for players.

However, the procedural spell generation system doesn't create any spells with that feature yet. Both kinds of AoE attacks are now visualized by the client during their preparation-time, so players can dodge attacks more intuitively.

Sunday, June 1, 2014

Minimap

I've added a minimap. An easy to do but crucial feature.




Wednesday, May 21, 2014

Attack particle effects

My buglist is shrinking down to the "that code will be replaced anyway" and "freak accident which happened once during development" categories, so I started something new. Attacks now create projectiles which fly from the caster to the target. That makes combat a lot more immersive:


Sunday, April 6, 2014

Password changing


I replaced the "Logout" button in the control bar with a new button "Menu". This button opens a popup menu with lots of links. "Logout" does the same thing the old logout button did. "Settings" opens a new window which allows the user to change their password.

The other options are links which will lead to various web-applications I still need to set up.

Thursday, March 27, 2014

Crafting interface implemented

I added support for crafting. NPCs can now display a crafting window. They can freely define how many slots to display and where to display them. The item script can also define a handler-function which receives the items the player dragged into the window. Each slot can define a "tag" which says which items can go there. Items can now have one or more such tags which define the crafting use they have.

The Java part of the engine does the ground-work of validating that the users input is legal (tags match the slots, user actually has the items).

The scripted function is then responsible for checking if the combination is a valid recipe, remove the items and give the player a new item. This function could also be implemented as a Java class. When I develop a more complex crafting system, I might opt to do so.

Monday, March 3, 2014

Visible equipment

I made it possible for an object to consist of multiple sprites and to set these from the server. This in turn enabled me to implement visible equipment. When a player puts on and takes off equipment, this is now visible on their sprite.

Currently this only works with hats and staffs because I only have sprites for these yet. But that's just a matter of creating the content. The next step will be to allow differently colored equipment.

Wednesday, February 12, 2014

Some new tiles and height levels

I created some new tiles. The rocks look OK, but the bushes need more work.

I also experimented with adding height levels. Those you see on this screenshot are entirely client-sided and randomly generated. I am unsure if I will keep it.

First, I am not sure if it is even going to add so much gameplay-wise for the amount of work it would mean (routefinding etc.). Then there is the problem that Tiled can't do isometric maps with height levels. So I would either have to patch Tiled, find another editor or write my own map editor after all.

Thursday, December 26, 2013

Effect areas

I added a new feature: Status Effect areas.

These provide buffs (or debuffs) to anyone standing in them. This feature will make positioning in combat even more important and diversify the game experiences on different maps.


Thursday, November 28, 2013

Got rid of multiple characters per account

I got rid of accounts. Each character now has its own password.

Why did I do this?

1. this simplifies lots of things in the code like banning, permission handling etc.
2. It makes it easier to do registration during the tutorial, because now there is only one name the player needs to make up.
3. I don't expect that many players will create more than one character, because there isn't much reason to do so in my game system.
4. There is no way to stop people from making more than one account anyway, so they are no appropriate method to tell natural persons apart.


The next thing will be to allow players to start the tutorial with an unregistred character. The player will choose a password when the tutorial is over.

Friday, November 1, 2013

Status indicators

During playtesting I realized that when I died it was often because I wasn't aware of how low my HP were and that my barrier was already depleted.

The reason is that the players eyes need to focus on what is happening at the center of the screen during combat, but also to the status bars at the upper right edge of the screen. It's really hard to pay attention to both at the same time.

To solve this problem I decided that these markers need to get closer to the player-character. So I added some HUD elements right below it:





The arcs are, from inner to outer, the current percent-status of MP, HP and barriers. When the character would have multiple barriers, they would appear as additional concentric arcs around it. When the player wants to know the exact numbers, they can still look at the upper-right corner. But these arcs gives the player a constant awareness of the status of their player-character.

Sunday, August 25, 2013

Target indicators

The players now see which combatants are currently targeted by spells of which element. This should make barrier-management more easy.


Speaking of barriers: These can now be cast by players and are now scroll-based like all other spells. Just as I planned, each player-character can have only one barrier active at a time, but this barrier doesn't need to be on itself. So a party can decide to stack all their barriers on one designated tank while leaving all other members unprotected.

Still missing on the barrier front: A tutorial, scroll icons and an NPC to sell them.

Thursday, August 15, 2013

Barriers

This is a feature I first decided to take off my roadmap to alpha, but I realized that it's a too important part of my game concept, so I started implementing it.

A barrier is a buff which works like a HP buffer for a special element. When it is cast on another player, all damage with that element will eat away the HP value of the barrier before reducing the actual HP of the players. The HP buffer of the barrier decays naturally during the lifetime of the shield.

Currently there is only a provisorical implementation - every player starts out with a 100HP fire shield which loses 1 HP per second. But I am going to make barriers spells. Each player-character can have one barrier active at a time, but it doesn't need to be on oneself, so a player can make the tactical decision to protect another partymember instead of oneself.

There will be two kinds of barriers. Long-time wards which decay slowly but need a long time to cast, and quick counterspells which are cast very quickly but also decays rapidly. The first kind is used as a precaution when wandering dangerous areas, while the latter is cast when you notice someone attacks you to prevent the damage.

Wednesday, August 7, 2013

Private chatting

Yesterday I added private chatting. The "whisper" option on the character context menu is now functional. There are still two problems, though:

1. Although the protocol allows it, there is no way to open a chat with someone not on the screen
2. There is no way to close chat tabs, except for reloading the website

Wednesday, July 24, 2013

Implemented parties



I implemented parties today.

This was quite a lot more work than I expected, because of all the edge cases which needed to be taken care of. Handling party requests of people who log out, handling parties disbanding while taking on new members, removing members who are online, offline or in char select... all sources of annoying bugs. The good news is that I will likely be able to re-use most of the code when it will come to guilds later.

Parties don't affect exp sharing because that's not needed in my current system - every attacker gets his full exp share anyway.

What parties do instead:
  • Party members share private instances
  • Party members can chat with each other
  • Party members can see each others location

Sunday, July 21, 2013

Base and real stats

Stat increases by equipment and temporary effects are now reported to the client and show up in the GUI:

In other news: I finally fixed the "shortcut over unwalkable tiles" bug.

Sunday, June 23, 2013

Particle Engine

I didn't find much time for programming lately, because I have too many other hobbies right now. First I joined a political party and the election in Germany isn't far away, so I spend much time on supporting our campaign. And then I decided to get a sailing license this summer. So I haven't got much time left.

Nevertheless I had nothing to do this Sunday afternoon and got around implementing a particle engine.

I like programming particle engines. A particle engine was my first and most major contribution to The Mana World. My first thought was porting the TMW particle engine to Javascript as-is (just using JSON instead of XML for particle definitions), but then I decided that a different architecture is much more suitable for JS. Instead of defining the physical properties of each particle type in an XML file (or rather JSON), I decided to implement the physical behavior of each type with a function.

Friday, February 8, 2013

Healing works again

Today I fixed lot of minor problems on both client and server. But I also did something major: I re-implemented healing as procedurally generated spells.