1. Pantropy
  2. News

Pantropy News

Androids are now live on the staging branch!

Hello,

it is finally ready – the androids are now live on our staging branch.
In this post I want to go into detail on how the system works and the thinking behind it.

The initial idea was it to have an AI controlled opposition that is a little smarter than the forest warden. We want to make the game gripping and fun even if the player is playing in singleplayer or on a low population server.

To acomplish this goal we introduced ‚player-like‘ robots which are part of the faction called ‚Androids‘.

These androids:
-claim territorys
-mine ores
-build bases
-and raid players with a bad reputation.


I differentiate the android system into two main categories: macro and micro.
The macro level of gameplay is controlled by the grand strategy sytem (GSS). The GSS is responisble for finding the next territory an android should claim (this search is performd every hour of gameplay).
Whenever the GSS has found a territory it sends out an aircraft with a few androids in it that lands in the territory and claims it on touch down. Initially i had an android run to the faction building, destroy the turret and go into the building to claim the territory but that cost way to much performance and was causing too many bugs. So i removed that detail and just claim the territory on touch down.
Once the aircraft has landed the builder-android gets to work and starts building an outpost or a fort. An outpost is placed when the territory was free and a fort is placed when the territory was claimed by another faction.
Every android has a primary and a secondary weapon so the builder might hold a C.M.T but he can pull out a pistol when you attack him or his base.
You can find encrypted data and some other tier-1 items in the outposts but forts have tons of encrypted data and high-tier loot but are very well protected.

The GSS will place an ‚Economy-Base‘ every 90 minutes in a friendly territroy. These economy bases hold mining or smelting equipment and accommodate mining- and builder-androids.
These economy bases hold a lot of useful loot and come in different sizes. Bigger bases hold more loot than smaller ones. You can find encrypted data, ores, ingots and miningtools in thses bases.

You will loose ‚Android-Reputation‘ when you raid any android base. This stat can be found under the faction tab beneath the player rank. Every 30 minutes the GSS finds the player with the worst reputation and raids him. The Reputaion is cut in half when a player is raided and you will gain one reputation point every minute.
Based on the value of your base the GSS determines how many androids to send to you.
Every raid party consists of one or more ‚Rocket-Raiders‘, one or more ‚Rifle-Raiders‘ and one or more ‚Android-Drones‘.
They will get shipped to you in an aircraft that lands near your base and they will try to destroy every active-basepart (generators, smelters, turrets, lights etc.) on it.
You will not be attacked if you are offline but when you go offline while your base is being raided you might not have a base anylonger when you get back on.
So you will be let alone by enemy androids as long as you are not attacking them or get to close to their bases.

Now, the micro level of gameplay is what happens when you raid an android base or get raided by androids.
If you start raiding an android base you will not only be attacked by the androids surrounding the base and the turrets that might be on the base but also by waves of android-drones that spawn over the base. The amount of waves of drones that you have to fend off is determined by the value of the android base.
These android-drones are a new mob and are equipped with a laser that fires for two seconds and can be outmanouvered if you are quick on your feet. Stand still and you will get roasted. These drones are difficult to hit and will drop no loot (this will probably be changed later). But you will find plenty of loot inside the base.

These drones are also part of every raid-party and will attack your base from above while the androids attack your base on the ground.

Android bases that have been damaged will repair themselves and restock their loot over time. The androids in the base will only respawn after a server restart or when loading the gamefile.

We will improve the android system over time and expand on it but we have to focus on polishing and bug fixes for now.
I hope you have fun testing the androids and if not, then please let us know your thoughts through our discord channel.


- Julian

Polishing our Creatures

Hello,

I have been reworking our pathfinding system in the past week.
The old system was quite slow and resulted in mobs freezing in place because they had to wait a long time for a path to be found.
Handeling pathfinding on large maps is generally quite difficult but i found a way to increase the performance massively.
We have 16 million pathfinding nodes on the map. Each node stores a position and whether it is occupied or not. Loading all of these nodes into memory on start would be very inefficient.
That is why i switched to serialization for my new pathfinding system.
Previously i solved this memory issue by storing these nodes in a texture map but that allowed for the system to only find one path at a time. So whenever a group of pigs got scared and wanted to find a path then each one of them had to wait for every other pig to have found a path. Sometimes pigs would wait up to ten sconds until they got their path.

My new system allows for multiple paths to be calculated at the same time. I have set the system to run six pathfinding processes at a time and i run them on seperate threads. Most of Unity‘s classes are not thread-safe but you can run an A* function in a seperate thread without big issues.
Running the calculations on seperate threads is also reducing lag on the main thread which was another limiting factor for the old pathfinding system.

The Results:

Finding a path with a distance of 80 meters took the old system 0.342 seconds or 17 frames (with 60fps).
The new system takes only 0.038 seconds or 2 frames for the same path. That is 10 times faster than the previous system(or an 800% increase in performance)! And since the new system can find six paths at a time it would end up to be more like a 4800% increase.

However when 100 creatures request paths at the same time we would still have some creatures that freeze in position because they need to wait until their path is calculated.
To hide this waiting period I added a neat loop that makes creatures run in a circle when they are waiting for a path. This is way better than having them freeze in place and you might find the same behaviour in mobs of other games.

This patch will come to the staging branch in a couple of days. I already started to work on the android systems but I want this patch out before i continue workin on it.

Pantropy Progress Update February 2021.

Issues with the Base System

We have been experiencing various issues with our base system ever since i re-coded it back in late 2018. We had serious performance issues before the re-code because a lot of our base parts used to have a component called „BoltEntity“ on them.
The BoltEntity is part of the Bolt Networking Engine and is responisble for synchronizing data among the server and clients. More BoltEntites on the map meant less frames so we reduced the amount of BolEntites by creating a sub-system that handles data on a micro level and reduced the need for BoltEntites by 1000%.

This sub-system has been a trouble maker ever since. We had invisible baseparts, visible base parts but without colliders, doors that could not be opened, crafting stations that put items into other people‘s bases, bases that switched owners mid-game, base parts that could not be removed and many other bugs.
All of these issues are finally fixed and we are now at a point where the base system is as solid as a rock or as one of our staging testers put it: „in all these years i have never seen it so stable“.
I know putting this quote in here is like patting myself on the back but i am very excited that my system is finally running smothly after putting so many hours of my life into it.


Mechs

We simplified the old mech health system where every part of the mech had it‘s own health by assigning each mech with just one health property. Now each mech has one health bar and armor slots. The armor plates absorb all damage until they break and then the mech itself takes damage.
The old system was prone to bugs and was flawed in it‘s design so a new system was long overdue.

The player is walking a lot in the initial stage of the game. He is walking from one ore to another or from one creature to another.
We added the Hover Bike in order to reduce this dead time between actions, which is a cheap and fast way to traverse the map.

We also introduced a system that limits the amount of vehicles a player can place. The server can only handle a limited amount of vehicles. This helps massivley with the performance of the game.

Mobs

The Alpha-Nest-Creature is now back in game. Every creature nest is guarded by one of these creatures. They have a range attack in form of spitting acid and a melee attack.
This makes the creature nest removal much more challenging.

Diagnosis

I wrote an extensive diagnosis tool while trying to debug some of the above mentioned base sytem related bugs. This tool helps us a lot in finding bufs as it can diagnose all base parts, mechs, mech weapons and the ore system. The desperation to fix our base system lead me to write this tool but honestly i should have written something like this earlier. It helps alot when tesing the game.

Next up

The highest priority at the moment lies in bug fixing so i will spend most of my time debugging and fixing bugs which our loveley testers are finding daily. I will also finalize the android system in the upcoming weeks so look out for that and we have some interesting game changes in mind that will improve the overall experience.

- Julian

One giant leap closer to a patch for the public branch: V.0.6.580

Hello,

two months have past since the last update and we fixed a ton of bugs, added some new content and improved the game overall. In fact we made so much progress that i can‘t possibly address it all here so i will just go over the most important changes.

Mining:

Our miningtools were really unbalanced so i set out to introduce a linear progression to the mining process. First i replaced the Scout Mech Mininglaser with three variants: T1, T2 & T3 each one has similar miningrate to the player miningtools but the T1 can mine only T1 ores while the T3 can mine T1-,T2- & T3-ores. I also replaced the T2 Mech Mininglaser with two variants: T2 & T3. Then i fixed the overall miningrates of each tool. Previously it was really frustrating when you upgraded your pickaxe with a T1 miningtool and found that it did not mine as many ores as the pickaxe. Now every new tool is producing more ores than the previous one.
We wanted to make the whole process of mining more satisfying since this is where the player spents a lot of time. We added new sounds and new breaking particles to all ores which make it much more appealing to mine ores.
Furthermore, we also added some rare mineals to the ores which have a 1% chance of dropping and can be researched in the Research Station to gain Research Credits.

Player Bases & Structures:

I made the entire base building system a lot more stable.
We had some major issues with our base systems where parts of the base would be invisible, have the wrong 3d model or not show up at all. It took me a lot of debugging but i found all issues and fixed them. Now you can be sure that when you remove a part that it actually gets removed or that the new part you placed is showing up.
I also made the walls rotateable which results in many new ways to build a base.
Additionally we added a base-marker that marks the location of your base on the map; you can enable/disable it under the „MY BASES“ tab.
We also simplified the process of refining ingots in the refinery by removing the ADDITIVE mode.
The refinery now produces one new ingot by combinbing the values of two ingots from the input.
All player turrets are now fully funtional again and are quite deadly. They use up the ammo and are no longer constantly shooting at a dead target.
The movement speed of doors was dependent on the framerate of the server which resulted in slow or fast moving doors. I fixed this issue and doors are now opening and closing at a constant speed.
Furthermore we removed all window panes from every window frame. These window frames can now be closed by putting a window pane into or by adding a shutter to the frame. The shutter can be opened and closed to make it possible for players to shoot at whatever is lurking outside.

Creatures:

For the longest time we had an issue where the drop of a creature would have the wrong 3d model. For example after killing a pig it would turn into a dead walker or forest warden. I was finally able to fix that issue once and for all. Sometimes the dead creatures would not even show up but i fixed that issue as well.
Then we introduced two new mobs to the game: the large desert worm and a nest guardian.
The worm lives in the desert and only comes up when a player is nearby. The worm has 450 health and can only move underground. It‘s limited meelee attack range make it voulnerable to ranged weapons. The worm drops T2 ores and research data.
The nest guardian is a grown up verison of the hatchling and guards the creature nests. It has a meelee and range attack. It is no easy feat to kill him since he has 200 health and can predict your movement to thrown acid at the perfect time at you. This makes the process of destroying creature nests much more challenging. I also fixed the issue where creature eggs would not get destroyed when shooting at them.

Weapons and gunplay:

We refined the gunplay a lot by adding feedback sounds and hit markers when hitting players, mechs or mobs. I also introduced a new bullet spray system that is predicabtle and can be counteracted by moving the mouse. The previous system just gave the bullet a random rotation when it left the barrel but now the whole camera moves slightly when shooting. The damage of a bullet is now no longer relative to the value of the weapon but the value of the weapon still has an effect on the bullet spray.

Mechs:

Fixing the issue where the camera points into a different direction when switching between first person and third person was something that i wanted to do for a long time and now i finally had the time to do it. I also fixed an issue where the game would break when the player got into the mech while holding the shotgun. We reduced the damage of the Scout Mech LMG from 12 dmg to 7 dmg to match the damage of the AR of the player because the LMG always felt a bit over powered.

Whats next?

We started a staging branch testing server that you can join to try this new version of pantropy before it goes live on the public branch.
Check out our #Information channel on our discord for more informationon how to join the staging branch: https://discord.gg/JjwxT9tE
We will keep a close eye on our discord server and note every bug report that comes our way and fix the most important bugs first. In the meantime we will finish the development of the android system, add a new system for collectables and add random events to the game like creature attacks or android raids.

I hope you had a pleasent christmas,
Julian

Pantropy Update October 2020

We have been quite busy during the past Month; we got our first implementation of the androids done, have launched the staging branch to our discord community and fixed some long time bugs like the shadow flickering.

Lets talk androids first. Our androids are still quite simple: They are flown into a territory that they claim and then build a little outpost in the landing area.
This is currently all that is active on our staging branch but we do already have the systems finished that are needed for more features like the mech transports, base defense or raiding.
I will be working on implementing these features this week.

As mentioned above the „claim territory & build oupost“ feature is currently the only active option.
For that feature to work i had to develop an algorithm that analyses the terrain and finds a spot where the GSS could place a base.

You can see here a quater of the map and a lot of squares which are the ouput of the algorithm. Every square represents a space whre a small 2x2 oupost base can be placed. This algorithm is fundamentally importent because it is always used when the GSS wants to place a new base on the map and it has already proven to be very reliable because i could not find any base that was part way inside a rock or a mountain.

Now that i had a reliable way of finding a spot for a base, all that was left to do is to fly the androids to that spot and let them build their base.
Then i moved on to implement a feature where the androids would raid bases in a foreign territory but i had to disable it before publishing our first patch to the staging branch because it caused the game to lag and i had no time to fix that.

Shortly before opening up the staging branch i had to create the UI for a main menu where you can choose between singleplayer and multiplayer.
At first I ran into a lot of issues with the singleplayer but fixed these one by one and now we have a working singleplayer solution.
On the 27th of september we opened up the staging branch and we quickly ran into a lot of old bugs.
Since then i have been on a bug-fixing-spree and i already got a ton of bugs fixed including:

- Mech armor would uninstall itself when the mech got hit – FIXED
- Android shops not working at all – FIXED
- Shadows flickering badly – FIXED
- Creatures sliding or teleporting when getting hit – FIXED

Now that some major issues are out of the way i can focus on finishing the implementation of our androids so look out for that in the next devlog or check it out for yourself on our staging branch:

https://discord.gg/6Dx9rwf


- Julian