Weekly Update - Server Login Changes, Decorative Weapons

More work on the network code with a focus on the login system, and I've added some temporary decorative weapons to the game.

Networking Refactor

Login Improvements

Last week I continued refactoring the networking code, with some extra attention given to the initial handshake and login process. Here are some security related improvements I have made (please excuse the technical security jargon):

  • Multiplayer servers can now require a "server password" that must be provided first before any other packets will be processed.
  • Passwords are now stored on multiplayer servers as a salted hash (not "plain-text"). In cases where the account is set up on the server via an invitation code the server never receives the player's plain-text password.
  • Passwords are re-hashed before network transmission with per-session salt. This makes it more difficult to reuse a hashed password sniffed on a local network in a previous login.
  • Designed a server invite code to make it a little easier for both the players and those running servers to coordinate joining a game server.

I made these changes to address a few of the most worrying scenarios - such as someone foolishly entering their antilia-game.com login and password on a privately run multiplayer server, giving the person running that server the keys to their account. With this change the user's plain-text password never reaches a multiplayer server. These changes are by no means fool-proof (keyloggers and dictionary attacks immediately come to mind), but try to address some obvious concerns.

Network Packet Conversion

Beyond the handshaking and security improvements I am also still progressing through the list of packets converting them to a more compact binary form. There are about 150 packet types, so it's going to take some time to work my way through all of them. This week I focused on the login and character management packets, and each week I'll select another subset of packets to refactor (movement, inventory, fishing, etc.).

Reducing Frame Stuttering

Another high-priority item which I turned my attention to this week is some frame stuttering that happens when changing terrain pages. I've brought attention to this problem a few times recently at our monthly developers meetings.

I'm in an "gathering data" phase of this task, and have implemented a new system to log resource load times and identify where the hang-ups are. This log has provided insight into which resource types (meshes, textures, shaders, etc.) load slowly and deeper insight into each as to what portion of the loading process (disc access, decompression, parsing, uploading to GPU) are causing the frame stutters. I plan to move more of these loading steps into background threads this upcoming week.

World Building

The heavy programming tasks this week left me more exhausted in the evenings compared to weeks past, so I found myself looking for world building tasks that were less demanding of raw creativity. I spent some of that time re-working areas like the Bamboo Pools area after the World Scale Change so that the scene objects fit together better.

Decorative Weapons

While testing I had the idea that I'd really like to see more Taipii walking about on the roads. There is an active group of Taipii fishing near the docks, and a few more that grill food or run around moving items between crates - but most of  Tasii Garden and the newer  Wei Garden are still a ghost town. Working on the  Taipii Guilds last week had me thinking about what NPCs I could add next, which led me to thinking about members of the  Taipii Defenders Guild walking about on patrol.

To make these new NPCs recognizable as such I decided that I'd like them to carry a weapon. I don't have the weapons crafting or combat systems back in the game, so for now I decided to add in some placeholders. Later on these temporary "decorative" weapons might be broken up into crafting parts or serve as inspiration.

A variety of decorative temporary weapons added to Antilia.

So far I've added 18 bows (including the Miiraun bow carried by an NPC in the Antilia MMO), 40 swords, 17 axes, and some arrows. I have a variety of hammers and maces, polearms, shields, daggers, and staves currently in the works.

I've also been adding these weapons to the "drop list" of higher tier treasure chests. When NPC shops are added I'll likely move most of these into shops instead, but for now it provides a way to find the weapons to trade among characters. Most of the weapons currently do nothing (they are just decorative items to equip) except for the axes, which can be used to fell trees.

Some of the temporary axes, which can be used to fell trees.

Sorry there weren't more screenshots to share, it was a "programming heavy" week. Thanks for reading!