Jump to content

Devnote Tuesday: We couldn't think of a title this week


SQUAD

Recommended Posts

tumblr_inline_oal532ewA91rr2wit_540.jpg

Hello everyone!

Last week was all hands on deck with the release of Kerbal Space Program on consoles! We’ve released on XBox One in many places around the world, and on PlayStation 4 in America. We’re happy with the first reviews and player response, which is giving us a boost as we’re working on the European PS4 release. No release date yet, but solid progress is being made every day. Managing such a large release is quite a task for us, although our team has grown over the years we very much consider ourselves a small studio still.

The development team has been diversifying their tasks. Mike (Mu), Bob (RoverDude) and Nathanael (NathanKell) are still very much pre-occupied with rewriting a lot of the game’s code to optimise and cache parts of the game and removing deprecated code, but now that the game is feeling a lot slicker already the rest of the team has started to look at other work that we want done for update 1.2.

The main focus of rewriting and refactoring the game this week has been all the various PartModules and also the CrewManifest system. PartModules take advantage of caching where possible and have lower garbage hits, and CrewManifest was completely rewritten to lower garbage creation and avoid loops. These changes will aid performance both in flight and in the editors. Nathanael also took a good look at the PartResource definitions, which he rewrote into a dictionary. Each PartResource is no longer a monobehaviour, considerably reducing overhead. Two simple combined-collection classes were also written. DictionaryValueList is a dictionary where the values are also kept in a list; it has O(1) lookup and add but O(n) removal. It’s used in cases where one needs both fast lookups and to iterate over the set. ListDictionary is the other: instead of a simple key->value mapping it maps a key to a list of values. After about the fourth time of writing that by hand we made a generic class for it.

Jim (Romfarer) has started investigating ways to refactor the code that handles fuel flow. Rewriting hasn’t started yet because there is a large amount of components affected by this code and it is uncertain which solution we will put into the game. Overall the goal is to speed up the fuel flow calculations in the backend and create a framework where it is possible to draw visuals showing where the fuel flows.

On almost exactly the other side of the world Bill (taniwha) has been plugging away at the algorithm  intended to use in replacement of KSP’s current intercept code. The basic idea relies on the fact that the tangents at the two points where the curves are locally closest or furthest are both perpendicular to the line connecting the two points, otherwise  the angle between the tangent and the line connecting the two points gives the direction of where the curves are at their closest or furthest (locally). Having someone on the team with a deep understanding of Math like Bill has definitely helps us out here!

Crossing yet another ocean we find Brian (Arsonide) working on the wheels. The version of Vehicle Physics Pro we were using was out of date, and was designed around Unity as it was many versions ago, back in May of last year. Upgrading that will help make wheels much more stable than they have been. This week we managed to get the new version of VPP compiled and in-game in Unity 5.4, and Brian also took the opportunity to rip out most of the workarounds we had in place for wheel issues present in earlier versions of Unity. Basically that means that wheel “blocking” no longer exists, among other things, which should bring joy to many players no doubt. There is still a good deal of work to be done with the upgrade, but things are looking good with wheels.

Those of you who follow our forums (or bug tracker) closely will have also noticed that we’ve started our big bug clean-up there this week: the goal is to blow away some of the dust bunnies hiding in there and gather up the important stuff so it can be front and centre for the developers planning on what to tackle in each development cycle. Dave (TriggerAu), Steve (Squelch) and Mathew (sal_vager) have received backup in the person of Nathan (Claw). Together they’ve started the truly gargantuan tasks of going through all of our bug tracker projects. They are not alone though, as we’ve enlisted the help of our community to make this project manageable. The first results are very good, a few bugs were fixed already, and on behalf of everyone working on this project we need to give a huge thank you (with a cherry on top) to our community. If you want to learn how you can help out, read the topic on our forums!


On the community and PR fronts Pablo (Paul Amsterdam) and Rodrigo (Roy) are working on assets for the console releases, as well as getting our build servers ready. Kasper (KasperVld) will be flying to Mexico at the end of the week to meet the new people on our team, as well as help organise a few things. Expect the devnotes to come from Mexico rather than the Netherlands next week and the week after!

As is almost tradition, we close with a poem written by Mathew.

Gearing up

For clearing up

The tracker’s such a mess

Checking stuff

And ticking off

Too many I confess

We gave the shout

Players helped out

You lot are just the best

That’s it for this week! Don’t forget to check out our official forums, and follow us on social media!

Link to comment
Share on other sites

12 minutes ago, WildLynx said:

Fitting "Devnotes Title" cannot be activated while stowed.

Ehhh..... 

1 hour ago, SQUAD said:

Crossing yet another ocean we find Brian (Arsonide) working on the wheels. The version of Vehicle Physics Pro we were using was out of date, and was designed around Unity as it was many versions ago, back in May of last year. Upgrading that will help make wheels much more stable than they have been. This week we managed to get the new version of VPP compiled and in-game in Unity 5.4, and Brian also took the opportunity to rip out most of the workarounds we had in place for wheel issues present in earlier versions of Unity. Basically that means that wheel “blocking” no longer exists, among other things, which should bring joy to many players no doubt. There is still a good deal of work to be done with the upgrade, but things are looking good with wheels.

Wait, please tell me I misunderstand, the third-party plugin being used for wheels was out of date? :0.0:

Link to comment
Share on other sites

I really enjoy reading the dev notes. Every week I feel like I learn about game development and programming and learning makes my life a little better. I have a huge amount of respect and admiration for the team at SQUAD. I was especially impressed by @taniwha in the discussion of the math behind close approaches. Sometimes I feel like high-level math is missing from my life but this place slakes my thirst.

Link to comment
Share on other sites

Nice! Glad to see it coming along. Crossing my fingers for having communication relays in this patch!

I know the team has to juggle a million priorities, but are there any plans to look at career mode and the tech tree? KSP has shaped up to have amazing game mechanics. It just needs a push in the right direction to make its gameplay progression and narrative great. There's so much potential that hasn't been unlocked yet!

Link to comment
Share on other sites

2 hours ago, SQUAD said:

Basically that means that wheel “blocking” no longer exists, among other things, which should bring joy to many players no doubt.

I should name myself Many Players. :wink: 

Link to comment
Share on other sites

2 hours ago, SQUAD said:

Basically that means that wheel “blocking” no longer exists, among other things, which should bring joy to many

Hi, regarding the above quote, will this mean that it will now be possible once again. as with the pre 1.1 wheel modules. for mod makers  to combine multiple wheels on one game object? 

As i understand it now , it should be possible as I am able to nominate in the cfg the  baseModuleIndex = !!! of each slave module        At present it fails to function as expected, despite many attempts,  either 1 wheel ( of two when sharing an axle) is either permanently blocked, even if there is no collider interaction, or totally ignored by the game, without once producing an error directly related to the part or wheel modules.

Cheers

Link to comment
Share on other sites

1 hour ago, nightingale said:

Nice stuff, @NathanKell!  I get the DictionaryValueList, and will most likely make use of it in my mods come 1.2, but what differentiates the ListDictionary from a Dictionary<M, List<N>> ? 

Nothing other than saving having to write the same logic to handle adding to and removing from the lists and handling when the key isn't there. If I never have to write another trygetvalue() -> list.add/remove or new list / add / add(key, list) block, it'll be great.

Link to comment
Share on other sites

23 minutes ago, NathanKell said:

Nothing other than saving having to write the same logic to handle adding to and removing from the lists and handling when the key isn't there. If I never have to write another trygetvalue() -> list.add/remove or new list / add / add(key, list) block, it'll be great.

Good enough for me! :)

Link to comment
Share on other sites

3 hours ago, Andem said:

Ehhh..... 

Wait, please tell me I misunderstand, the third-party plugin being used for wheels was out of date? :0.0:

If I understand it right, the version of VPP in 1.1 was current when 1.1 first adopted it. But because of the particular way the wheel code is built out of a combination of VPP code and Squad-developed pieces, it wasn't feasible to incorporate the updates to VPP that came out during the 1.1 development process without further delaying 1.1. 

Link to comment
Share on other sites

4 hours ago, Andem said:

Ehhh..... 

Wait, please tell me I misunderstand, the third-party plugin being used for wheels was out of date? :0.0:

  lol... Yeah.. same thing I said.. I figured it wasn't unity... Think about it.. Other games using the Unity engine, that have wheels, work perfectly fine. Plugins are time-savers. Albeit a crappy one in this case...

Edited by Talavar
Link to comment
Share on other sites

5 hours ago, SQUAD said:

Upgrading that will help make wheels much more stable than they have been. [...] Basically that means that wheel “blocking” no longer exists, among other things, which should bring joy to many players no doubt.

There was much rejoicing.

22 minutes ago, Talavar said:

Other games using the Unity engine, that have wheels, work perfectly fine.

The difference: Most other games don't need to support arbitrary arrangements of arbitrary numbers of wheels under arbitrary and highly dynamic forces. This is the big problem SQUAD has to solve, the problem VPP seemed to solve, and the problem lo-fi and shadowmage are trying to solve.

Link to comment
Share on other sites

3 hours ago, Talavar said:

  lol... Yeah.. same thing I said.. I figured it wasn't unity... Think about it.. Other games using the Unity engine, that have wheels, work perfectly fine. Plugins are time-savers. Albeit a crappy one in this case...

No, most of our issues were indeed issues with Unity 5.2, which many other games were also experiencing at that time. We are pulling out the workarounds that 1.1 needed to use to bypass those issues now that we are no longer using that version.

Updating VPP is more of a tangentially related maintenance task.

Edited by Arsonide
Link to comment
Share on other sites

It is good news, and I can have hope to the future.
However, can you release even the adequacy of wheels earlier?
PC players and console players (if they use this wheels) will welcome it very much.

Link to comment
Share on other sites

6 hours ago, NathanKell said:

Nothing other than saving having to write the same logic to handle adding to and removing from the lists and handling when the key isn't there. If I never have to write another trygetvalue() -> list.add/remove or new list / add / add(key, list) block, it'll be great.

Cool. More code I can rip out of MJ. Can you add more:wink:

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...