1. Pantropy
  2. News

Pantropy News

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

Update September 2020

We made a lot of progress since the last update and we want to show you what we have been up to for the last couple of months:

The first thing I did was to test the androids on our development-server.I quickly found out that the way we handle these androids was not very efficient and used up a lot of resources. With only 20-30 androids on the map I was left with only 10 FPS on the server.

The main problem was that when we wanted an android to build a base - he had to be visibly on the map in order for this base to be build.

This is the result of trying to implement the android system onto our already existing creature system.

The data of each creature would only be alterd when a creature was on-screen. This meant that in order to build a base an android had to be on-screen because the system that builds this base is attached to the android‘s game object itself.

Back in 2018 when i developed the whole creature system i wanted to make it as efficient as possible and i did that by only changing the data of a creature when this creature was on-screen and near a player. Sadly this approach did not work well in combination with our androids because androids would need to build bases even when they are off-screen. So I set out to change the underlying creature system to work like this.

The new system is way more efficient and does not require an android to be on-screen to work. Our grand-strategy-system which is responsible for the actions of all androids can now build bases, mine ores, transport goods from one base to another withour needing any androids on the map.

We also switched from a role-based-action-system to a job-based-action-system which means that the grand-strategy-system creates jobs and assigns them to unemployed androids. Our androids are now capable of managing an entire base. This means that they gather resources, deposit resources into storage chests and then smelt these resources. They also repair any damaged part or replace baseparts that have been destroyed. They can resupply turrets with ammuniton and resupply mechs with charged energy cells and ammo.

The next thing I have worked on is an AI for our mechs. We want our androids to operate mechs in order to transport items from one base to another, guard monuments/bases or use them to raid player bases. So I developed a system that links our already existing mech-system with the above mentioned creature-system.

While working on the mechs I fixed bugs that existed since 2018. For example we had players who reported that their scout mech suddenly had a gun from a T2 mech attached to it.

This bug is finally fixed now.

Also we had issues where the dead bodies of creatures would not spawn when they were killed from within a mech. This is also fixed now.

Then there were a lot of cases where the 3d model of the bodies of creatures would not match the creature you killed. For example you just killed a pig and the dead body of the dead pig would turn into a forest warden or a storage chest.

This bug has been fixed aswell.

Lastly I have implemented an artillery installation for our androids.

This artillery will be used by androids to lay siege on your base. It requires energy to run and has a limited range of 750m.

You can stop this by killing the androids who are operating the artillery or destroying the base it is standing on.

We want to fix as many bugs as possible and improve the gameplay next.

I will keep posting updates on our discord, steam and here on kickstarter.

Feel free to checkout our latest devlog on Youtube too:

https://www.youtube.com/watch?v=rGEeyuX1WXQ&ab_channel=Pantropy