Demo Release: Small updates

With this update we are adding the following features:

  • Roll chat command, the syntax is "/roll "
  • Weapon damage and armor attributes added to items
  • Bound and lore item support (although we haven't added new items yet)

Not a whole lot has changed yet since the main roadblock with Pikia right now is the lack of content which we are working on. Some of the items do have weapon damage and armor now, so let us know if you notice problems with the combat due to changing these values.

Server memory leaking

The other reason we are releasing now is to fix an issue with the Pikia server involving unbounded memory growth. The short explaination is that the Lua scripts were not freeing memory and now they are, and we don't have to restart the server every few weeks. :)

Here is a screenshot of the problem for your viewing pleasure:

Memory leaking

The longer explaination if you are interested is that Lua uses garbage collection to free unused memory, while C++ does not and requires the programmer to free memory when they are no longer using it. When passing C++ objects into Lua, the Lua scripts were hanging onto this memory which meant even when the C++ code was no longer using the object, it was still allocated in memory. Lua decides when to free memory based on a rather complex garbage collection algorithm, and in this case it was not releasing the memory quickly enough.

The quick solution to this memory issue is to manually trigger Lua garbage collection more frequently, so that is what we are doing for now, however it is not the most reliable solution because you cannot guarentee that Lua will free memory or not. The correct way to fix this is to only give Lua references to the memory, instead of ownership, and that is the solution we will implement when we have more time.

Continuing work

The last large feature to complete is quests, and the team has started work on the quest system already.

We have a few small item related features to add as well:

  • Two-handed items
  • Item stack splitting
  • Deleting items

Once these are complete we will turn all our focus towards creating tools for content creation. We can add content and balance stats and skills through trial and error, but if we have tools to quickly simulate combat, then the content and balancing will progress much more quickly. :)

More updates to come soon! If you have comments/questions leave them below, on our forums or on Facebook. Thanks!

Comments (0)