Quick bit of news to say that the hotfix that was in alpha has been pushed to the live version.
It should fix some of the most annoying bugs from the latest update, including the Hunter Grenade/tick softlock and, yes, the pink Ninja skin is black again...
The full list is here:
1.7.1 - 2020-02-19 (df004900)
Important features
Prevented the doors to the Morass appearing if the DLC isn't owned or if you haven't been to the Arboretum at least once (DLC).
Balancing
The little mushies in the Arboretum can now be dodged with a roll when thrown by their adult counterparts (the bigger mushrooms of Arboretum) (DLC).
Graphics & UI
Removed the pop-up window when using a save on a newer version. It was confusing people more than anything else.
Bug fixes
Fixed the Gardener's corpse dropping infinite keys and blueprints (DLC).
Fixed blowgunners jump related crashes (DLC).
Fixed the Ninja skin going pink.
Fixed custom modes adding mobs crashing the game
Fixed some crashes when loading a save.
Fixed the lights not glowing in the transition level between Prison Depths and Morass (DLC).
Fixed Mushroom Boi not following you when teleporting (DLC).
Fixed 'ShareComboWeapon' related crashes.
Fixed grenades locking the beheaded when used on Mama Tick (DLC).
Fixed Smoke bomb's damages being considered melee instead of range (DLC).
Fixed Arboretum's Carnivorous plants bumping the player but not damaging him when standing at the very edge (DLC).
Blowgunner now keeps patrolling instead of freezing if you're standing just below him (DLC).
Fixed Fugitives (orange spear-wielding dudes of the Morass) hovering above the ground (DLC).
Fixed the softlock caused by using the Hunter's Grenade on Morass's ticks. Now, the tick will transform into an Elite Tick. Good luck to you all. (DLC)
Fixed the Royal Gardener's skin being locked forever if you didn't pick it when looting said gardener the first time. (DLC)
We know there are more and we're working hard to get them fixed too :)
This is a short techincal explanation of our system to blend between ragdoll physics and animation in unity 2019. It came from the need of adding more robots to the scene by dropping them from the sky, so after being ragdolled on the floor they had to get back to an animated state:
The ragdoll of the robots is fairly standard, they have an almost humanoid skeleton but not exactly. It can be achieved on humanoid models following this great Brackeys video: https://www.youtube.com/watch?v=DInV-jHm9rk
Once ragdolled on the floor, the first step is to figure out if the robot fell on its front or back. To do that we just compare the vector up of the root bone of our character and the default vector up.
Vector3.Dot(rootBone.up, Vector3.up) > 0
We're only focusing on two cases, up or down but that could be improve to have better animations to get up at different angles.
We can then choose between the two animations:
At that point, we want to blend between the positions of the ragdolled skeleton and the animation. That's done by calculating the position and rotation of each bone, using their current ragdolled position and their supposed animation position.
So on LateUpdate() after the animation position is calculated: To get the animated bone position, we have to look at the transform on LateUpdate, but for a real humanoid rig, it should be accessible using Animator.GetBoneTransform(https://docs.unity3d.com/ScriptReference/Animator.GetBoneTransform.html)
Interpolation of position and rotation for each bone, using a blendSpeed variable to be able to tweak the strenght of the blend:
foreach (Bones b in skeleton)
{
b.transform.position = Vector3.Lerp(b.transform.position, b.ragdolledBonePosition, blendSpeed);
b.transform.rotation = Quaternion.Slerp(b.transform.rotation, b.ragdolledBonePosition, blendSpeed);
}
I hope that short explanation helps some of you understand the logic, feel free to come and chat on twitter if you have questions!
I've spent the last week working on bulking out the resource systems in Hannon. I have nailed it down to Four Categories so far. Each one will be accessible to all players in game and is likely to grow over time as we add more systems.
Asteroids
Hannon has many 'Asteroid Fields' and these will grow as the game expands. But interspersed in these fields you will find specific 'Mineable Asteroids'. These are the first form of resource gathering.
I have created Sixteen base Asteroids for mining. These are from the lowly more common types through to the more rare and hard to locate ones. These can be currently mined using a variety of weapons but the most economical being the use of a Mining Laser! Ores are tractored in directly and stored in your Ships Hold.
Refined Resources
Next up is the Refined Resources. We now have Refining terminals dotted around the current Galaxy. These are A.R.K Refining Terminals. They are free to use but they will take a % of your refined resources.
I have so far created Eighteen refined resources. These come from the Asteroids and each asteroid can be broken down in to a 'possible' mixture of these refined resources. The how and what and why I will leave you to discover. ËsteamfacepalmË
Salvage Loot
Salvage Loot is different from 'normal loot' in that it can be 'Salvaged' in to basic crafting resources. The loot is commonly located when killing ships, robots, AI and the many creatures in Phoenix Galaxy. So far we have 28 types of this Salvage Loot.
Each player can process their own Salvage direct from the ships interface. Simply bring up the Salvage interface see what can be salvaged and the system will indicate what 'Might' be possible to salvage from it.
Crafting Resources
These are the base resources used for future crafting and will form the back bone of any crafting in game. These resources are from the Salvage process above. Expect this list to grow as we add more planets and systems.
All the Resources systems above will be tied in to the Faction based NPC missions and story line quests. Some will be simply 'required' others may need them crafting in to XYZ items and so on, but they will all have a use in the Phoenix Galaxy.
Hello, my friends! This is Moah, Tech Lead of Stellaris typing. I can finally talk about what youâve all been waiting for: How many new platypi will there be in Federations? After weeks ofâŚ
Well, apparently, I should be "more technical." But before we jump into the mysteries of the Stellaris code, I want to take the time to talk a little about the balance between adding new features, improving performance and stability â especially in terms of multiplayer and the dreaded out-of-syncs (dreaded at least by me).
The Delicate Balance
Stellaris, like most decently sized code bases, is like a complex game of Mikado or Jenga: every part is connected in some way to every other part. When you add a feature, you add more connections. If youâre careful, you add only a few, if youâre in a rush you add a bit too many. This generally leads to Unplanned Features (aka bugs). In addition, once we see them perform in the actual game, we tend to expand features in new, unexpected ways, leading to more Unplanned Features(tm).
Once we realize what is happening, we start being more careful. Maybe too careful. Checking too many things, too often, ensuring that this interaction that is supposed to never actually happen is actually not happening. Not now, not later. Not ever.
So you have removed the unplanned features, but the game is a bit, ah⌠too careful. Some would say slow.
So you remove some of these checks. You realize that you donât need to loop around the galaxy, you can just loop around this one tiny planet. Then you go one step further, and think âwell I can maybe do that check only every three weeks, and this calculation needed by all these checks, I could store it in here and reuse it until the next time it changes.â
So now the game isnât so careful anymore, weâre back in unplanned feature territory. But if the caching (storing/reusing calculations) happens at different times on different machines, you get slightly different results (like asking a developer for something before and after they had coffee).
Slightly different results are what OOS thrives on! Clients and servers have 0.0001 cost difference, compounded over time, that corvette is bought on the server but not on the client.
So you remove your âsmartâ algorithm. You replace it with the correct algorithm. You lose half of what you gained in step 2 and reintroduce some bugs. Probably. Rinse and repeat.
But enough about my morning routine! Letâs talk aboutâŚ
Performance
Stellaris fans are like C++ programmers: performance is always on their mind. To be fair, it has also been on ours a lot lately. We know that itâs not all that it could be, especially in late game and with the bigger galaxies. With that in mind, weâve taken time to improve performance in a bit more depth than we usually can. We looked at what was taking the most time, and as everyone knows that isâŚ
Pops.
There are many reasons why pops consume a lot of time in Stellaris, but the main one is that by endgame we have SO MANY of them. SO So so so so many. And they do so much! Pops have to calculate how good theyâd be at every job (they do so every 7 days). Then they have to fight every other pop on the planet to get the job theyâre best at. They also have to check if they could have a specific ethic. If they could join a specific faction. How happy they are. How happy they could be. How happy they would be on that planet over there. All these things trigger modifiers calculations. If you remember my last dev diary, you know that modifiers are the only thing more numerous than Pops in Stellaris. And they all depend on each other. Calculating them is like pulling on a thread and getting the whole sweater.
OK, but what did we actually do about it?
Well first, Iâll admit I may have been a bit pigheaded on the whole âwe need to do the jobs distribution every day because we donât know when new jobs are added.â We reexamined this assumption, and jobs distribution is now only done on demand. It was also rewritten to iterate over a lot fewer things.
We also noticed a few triggers going through every pop of an empire to check if one or more are enslaved, decadent, or other things that can be tested at the species level. So we made new triggers to test these things at the species levels. In the same spirit, we had events going through every ship to find a fleet, so we added triggers at the fleet level.
Second, Weâve also reworked the approach to checking if pops can change ethics (and also made it work again), or if they can join factions.
Finally, weâve looked for (and found) opportunities to use more multi threading.
But enough talk! Whatâs the result? Well, if a picture is worth a thousand words, hereâs the answer at 30000 words a second:
The video compares the performance of 2.5.1 âShelleyâ to 2.6 âVerne'' when running a save game from the community, which can be found attached to this post, with over 20000 pops. It was recorded on my work computer (Intel Core7-7900X @ 3.30Ghz, 10 cores and 20 threads, and AMD R9 Fury). You wonât necessarily get the same results, the exact difference in performance will vary with your computer, and the exact situation in your own save games, of course. On average, weâve found something between 15% and 30% improvement in late game situations. This save is just ideal to showcase the impact of the pops improvement.
You wanna find out more about the performance improvements? Have a read here !
The âWitâ mechanic is gone, the game format is switching to a one-life roguelike experience, and one last thing â itâs hecking awesome!
The novel âwitâ mechanic, where the character with the highest wit in the trade wins the insult (Ă la Top Trumps), was interesting enough but still somewhat in its infancy. There is always a risk when creating new mechanics that the player wonât immediately understand them, and this particular set up left players feeling dejected if they couldnât work out how to raise their wit efficiently. While I still have faith in the original mechanics, I think they are better suited to casual gaming rather than the more hardcore experience Iâm intending to create.
So what is replacing wit? Instead of dealing damage if your wit is higher, attacks now have specific damage values that work without fail (in most cases). It was very limiting having around 5 health points to work with, so health totals have been upped significantly to make ability balancing an easier task. This makes the game more accessible, enjoyable, and recognizable to fans of the genre. Classes will no longer have one special move and three generic abilities (attack, defend and pass) - instead, they will be themed around mechanics suited to their aesthetic, such as a Character Assassin who has devastating insults, or a People Pleaser fitting the role of team healer.
Instead of pre-assigned levels that are posed as sorts of puzzles, the new gameplay can be better described as a roguelike, requiring you to think on the fly and come up with strategies as you go, reactively adapting to the enemies you face. This gives the game a lot more longevity and replayability and empowers players, giving them free reign to choose their own strategies, discovering the best combinations of abilities and characters, rather than shoehorning them into one solution that they have to find in order to complete a level. Much better!
The game aesthetic remains largely the same â slanging matches, roast fests, flame wars. Rather than taking place in the stuffy Regent Era, the game is now set in modern day and the insults wonât be quite as flowery (though still nothing explicit). Donât worry â youâll still be able to disrespect the hell out of your foes whilst applying other manipulation tactics â intimidate, horrify, doubt, charm and guilt your opponents to victory!
Thanks for all your feedback. Iâm always looking to hear from players so if you have any comments or suggestions, please let us know in the Discord.
Our Kickstarter campaign for the spiritual sequel live and will be up for a month. It's critical to get some early backers so please help us, even if you can only spare one (1) dollar that helps us. We're already 10% funded under 2 days and with your help we'll get to 100% soon enough. :)