GSOC 2020 Final Report

Summary

At the end of 12 weeks of development, my GSOC 2020 project Metal Renegades: Refining Gameplay is finally complete. Over the course of this summer, over 40 pull requests have been made against 13 different modules in Terasology. These merged pull requests together contain more than 5000 line changes.

The original goal of this project was to improve the gameplay of the Metal Renegades module based on top of the technical backbone work done last year. This goal was achieved over the summer by adding new gameplay features to the module, refining already existing features, and fixing bugs that negatively impact the core experience.

Major Project Achievements

City Water Wells

Last year, thirst was added to the module. If the player doesn't keep their thirst bar above zero, they will slowly lose health and eventually die. This thirst was previously fulfilled by using wells inside the city, which would instantly give a full water cup to the player if interacted with. This resulted in thirst not being particularly difficult to fulfill, since the player could take an infinite amount of cups from these wells with no real challenge.

This has been changed by modifying the well water system. Now, when a player walks up to a well, this label can be seen on top of it:

A full-capacity well inside of a city.

This label shows the current capacity of the well, where the well can only give the The indicated number of drinks at a time. When the number of drinks left goes to zero, it will take a bit of time until it can be used once again. The player can drink directly from the well, or they can also buy empty cups from city marketplaces, where the water can be taken on the go.

The icon of an empty water cup item bought at a market.

City Farms

In last year's project, hunger was added alongside thirst. This need can be fulfilled by the player eating food that can be collected in the game world. Previously, the only way that food could be collected is by killing deer that spawn outside cities and eating their meat. However, this food source was too difficult to collect since deer often spawn in small quantities, and wouldn’t respawn unless new chunks were loaded. To remedy this, more food items were added in the form of more fruits and vegetables.

To obtain these new foods, farm buildings generate inside each city that spawns a crop native to that city on top:

A city farm, growing delicious strawberries.

These crops can be harvested by the player to be eaten, or to be sold in the marketplace for money. This gives many more options for the player to relieve hunger.

Character Personalities

Every city contains gooey NPC characters that the player can interact with. These were a major part of 2019’s Metal Renegades GSOC project; creating the NPC behavior that drives these characters to move around the world. To improve on the NPCs this year, various visual and behavior traits are randomized for each character, to give each character a distinct personality. These features include their name, sizes, and rates of hunger/thirst reduction.

An NPC character with a nametag.

Multiplayer Fixes

As the project went on, it was very apparent that the multiplayer compatibility of the game needed some work. Many core gameplay features from last year (Marketplaces, trading, etc.) were not functional or didn’t even appear to clients in the first place in multiplayer mode. These features were fixed for multiplayer by changing the architecture of these gameplay systems to work within the client-server model (for example, using server events in place of directly accessing information from the client side).

The NPC trade screen, one example of a system that was converted to work in multiplayer.

Market Adjustments

The marketplace was a gameplay system that was brought into Metal Renegades last year, but in this project the market was used as a main gameplay feature, integrated into hunger/thirst systems, mining, exploration, etc. Along with requiring fixes to work in multiplayer mode, the market system had to be modified to make it easily expandable with multiple item listings, along with display names and prices. The system was changed to use prefab definitions, so any new items in the game can easily be added to the marketplace.

A picture of the market screen in action.

Discoverable Places

Outside of cities and mountains, the terrain of the Metal Renegades world was rather dull. This landscape was made more interesting with the addition of discoverable places. These places are structures where hidden items can be found inside chests that can be helpful to the player. The chests can contain food, tools, valuable jewels, etc, so the player should always keep their eye out!

A discoverable house with a chest inside!

The chest has a pickaxe that the player can use.

Nighttime Enemies

The Metal Renegades world has many gameplay features. But other than hunger/thirst, none of these features cause danger to the player. This has changed with the addition of nighttime enemies. When nighttime falls, these monster gooeys will spawn in areas outside of cities:

A monster that spawns at night!

These characters will chase you and cause you damage if you get too close, so stay away! The only way to avoid them completely is to stay inside a city, since they will not spawn or follow you inside of one. With this feature, players are now encouraged to explore and adventure outside of cities during the daytime, and do the opposite at nighttime.

The monster gooeys lurk in the dark...

Performance Improvements

One issue with the Metal Renegades module at the beginning of the summer was the module’s performance overhead. Framerates would often be slow and inconsistent while playing, and these issues seemed to only compound as the game was open for longer.

These issues were investigated, and fixes were applied when available. Many performance issues were tied to city growth, causing the game to stutter whenever a growth cycle would take place. These stutters were improved by changing how rapidly blocks are placed in the world after growth, and lowering how fast cities grow overall. It was also discovered that large groups of wild deer would slow down the game due to model rendering being an expensive operation. These slowdowns were improved by reducing the number of deer that spawn in the world.


In Conclusion

At the end of these 12 weeks, the Metal Renegades gameplay has been greatly improved with many gameplay and stability features. There now exists a greater selection of gameplay features to use, and as well to improve on in the future. Thank you to all the Terasology mentors for making this GSOC program great!

Pull Requests and Issues

https://github.com/Terasology/DynamicCities/pull/62
https://github.com/Terasology/MetalRenegades/pull/67
https://github.com/Terasology/DynamicCities/pull/63
https://github.com/Terasology/DynamicCities/pull/64
https://github.com/Terasology/MetalRenegades/pull/68
https://github.com/Terasology/CoreAdvancedAssets/pull/1
https://github.com/Terasology/CoreAssets/pull/6
https://github.com/Terasology/Fences/pull/11
https://github.com/Terasology/StructuralResources/pull/9
https://github.com/Terasology/MetalRenegades/pull/69 
https://github.com/Terasology/AdditionalFruits/pull/12
https://github.com/Terasology/AdditionalVegetables/pull/5
https://github.com/Terasology/MetalRenegades/pull/71
https://github.com/Terasology/MetalRenegades/pull/72
https://github.com/Terasology/MetalRenegades/pull/73
https://github.com/Terasology/MetalRenegades/pull/74
https://github.com/Terasology/Behaviors/pull/34
https://github.com/Terasology/MetalRenegades/pull/75
https://github.com/Terasology/TutorialBehaviors/pull/7
https://github.com/Terasology/Behaviors/pull/36
https://github.com/Terasology/MetalRenegades/issues/41
https://github.com/Terasology/MetalRenegades/issues/57
https://github.com/Terasology/NameGenerator/issues/25
https://github.com/MovingBlocks/Terasology/pull/4080
https://github.com/Terasology/Economy/pull/14
https://github.com/Terasology/DynamicCities/pull/65
https://github.com/Terasology/MetalRenegades/pull/78
https://github.com/Terasology/Dialogs/pull/14
https://github.com/Terasology/MetalRenegades/pull/79
https://github.com/Terasology/MetalRenegades/pull/80
https://github.com/Terasology/MetalRenegades/pull/81
https://github.com/Terasology/MetalRenegades/pull/82
https://github.com/Terasology/MetalRenegades/pull/83
https://github.com/Terasology/MetalRenegades/pull/84
https://github.com/Terasology/Behaviors/pull/40
https://github.com/Terasology/MetalRenegades/pull/85
https://github.com/Terasology/Behaviors/pull/41/
https://github.com/Terasology/MetalRenegades/pull/86
https://github.com/Terasology/DynamicCities/issues/66
https://github.com/Terasology/MetalRenegades/pull/87
https://github.com/Terasology/MetalRenegades/issues/90
https://github.com/Terasology/DynamicCities/issues/67
https://github.com/Terasology/MetalRenegades/pull/91
https://github.com/Terasology/MetalRenegades/pull/92
https://github.com/Terasology/MetalRenegades/pull/93
https://github.com/Terasology/MetalRenegades/pull/94
https://github.com/Terasology/WildAnimals/pull/58

Comments

Popular posts from this blog

GSOC 2019 Final Report

Week 11 - Engine Changes & City Timesteps