In Todays dev blog we will be showing off Enduring lifes inventory screen and system. The inventory system is built on a ”One page fits all” solution to make sure that all relative information can be viewed easily by the player at anytime. The inventory is built on four components, Backpack space, hand space, area inventory and player equipment. These components come together to create the full on player inventory. All these inventory components operate on the same mathematical system both under the hood in terms of systematic function as well as the limiting of what objects can and cannot be picked up due to weight and size.
The inventory system works on a grid system, meaning that different size objects occupy differing amounts of inventory slots, for example a loaf of bread occupies one hand slot or two backpack slots whilst a helmet occupies two hand slots or four backpack slots.
The only inventory area that does not work like this is the Area inventory where all objects occupy one slot each. The reason for this is that the area inventory is a non-interactive inventory that is simply a indicator for the player to see what is around him easily.
For the more tech savy among us the inventory system both server and client side together is about 6000 lines of code not including the .GUI file or other hook-in systems such as durability, database saves, crafting etc. As the inventory is a top tier system that others draw from it needs to be highly interoperable in many different ways, one way that signifies this is how objects are saved and read to and from the database in our system.
Our system allows all needed information to be retrieved by reading one string of data connected to the object in a correct formula to determine the objects state, type, durability etc. This gives us great flexibility in terms of read capability, on the fly adjustment, as well as a very low performance impact from the system as a whole due to the fact that we are not in need of a heavy object class for pick up objects.
Our main concern when building systems for our game is the performance effect on the server system in ”passive” scenarios as well as peak performance impact, or in other words how well does the overall system cope with large concurrent usage both actively and passively. The goal in mind when designing the system was to keep the maintained server load low allowing for high concurrent usage without putting additional strain on the server simply by more players being present, which in turn means that the server has a larger overhead to cope with peak usage. This has been achived largely by the fact that the inventory system does not require heavy object classes to handle in world objects thus reducing the drain on the server system due to player activity in the game world in relation to the inventory system.
The central issue then becomes how to lower the amount of calculations being done upon usage of the system reducing peak load. Our answer to this question is our ”one line all info” principal coupled with a standardised read formula lowering the amount of information needed to be gathered significantly for a objects inventory status to change.
The hand inventory, or hand space symbolises the player capacity to carry objects in his or her hands. The hand inventory consists of four inventory slots, two for each hand, and can be utilized in different ways, either by holding four small objects, two medium sized objects or even one large object occupying both hands at the same time.
The items held in the hands inventory are also the items used for the quick slot bar where you can assign keyboard shortcuts to quickly switch to these objects.
The backpack inventory space is the inventory space unlocked by equiping a backpack and can be used to carry most small to medium sized objects provided that they are not to large for the backpack or weigh to much for the backpack to handle. Different backpacks will provide you with differing amounts of space both in terms of inventory slots and the weight the backpack can handle. The better the backpack the more you can put into it essentially, with 20 inventory slots being the maximum number of slots for the top of the line backpack.
Player Equipment Inventory:
The player equipment inventory is the graphical interface for the players clothing. This part of the inventory is split into 6 different slots and are as follows: head, chest, vest, backpack, legs and feet. In each of these slots items can be equiped to make your character look the way you want as well as provide improved survivability and carrying space. All clothing within the game provides some sort of protection against climate and is a important part of surviving as hypothermia is ever present. In addition to providing protection against climate a lot of gear also provide protection in a fire fight with other players, a helmet for example will give you a better change of survivial in a fire fight.
The area inventory shows a graphical overview of what is around the player at the time of opening the inventory. This inventory is a non-interactive inventory meaning that it displays information to the player but it is not supposed to be used as a drag and drop hub for what is on the ground this interaction is done by simply pressing the button ”E” on your keyboard.
Limitation of movement principal and Division of labour:
The inventory system is one of the game system contributing to these two principals, the idea that long term roaming should be limited is signified by the fact that the inventory space is very limited forcing the player to sooner or later establish some type of base camp to operate from reducing the roaming range.
As well as the limitation of movement principal the inventory also contributes to the Division of labour principal. The idea that you as a player although powerful need to band together with other to truly thrive within the game world. One way the inventory contributes to this ideal is by limiting the amount of active equipment a player can have(Weapons and equiped gear) making a squad which can have many different specialised players a great option in any combat scenario or indeed within non-combat proffesions as well such as building or crafting.
Here we have a example of the inventory in action, note that in the picture below the player is standing next to a loaf of bread. Within the inventory screen this is correctly represented in the area inventory by showing the icon for bread. Now the player will pick up the bread...
As you can see in this screenshot the bread has been picked up thus removing it from the Area inventory and moved it in to the main hand inventory slot one.
Thank you for following us for this devblog join us next time when we showcase our building system.
Enduring life now has its own website visit us at: http://EnduringLifeGame.com
Feel free to reach out via social media.
Jonas Twitter: Zweshi – Lead programmer / 3D artist
Ilias Twitter: Badsik1k - Lead 3D artist / Lead 2D artist
Patrick Twitter: PatrickComan - 3D artist