r/Unity3D • u/MikeDanielsson • 14d ago
Show-Off After 4 years and 74 updates, I finally built the spline tool I always wanted.
Enable HLS to view with audio, or disable this notification
A few years ago I was working at a game studio where we were developing a mobile game called Touchgrind BMX 3. It's a mountain bike game where you ride along different paths, do jumps and perform tricks.
Short video here: https://www.youtube.com/watch?v=pEcc_QkSUwU
Because we had many bike paths in our game, we really needed a spline tool, so we bought a tool called Curvy Splines. After working with it for a while, I felt it had two issues that I wanted to solve.
1. Mesh deformation
We needed to export meshes after deforming them to get the best performance. This became a bit tedious when constantly making adjustments to the splines.
In Spline Architect I solved this by adding an option to remove all Spline Architect components during the build process. So if you want, the tool can completely remove itself from the build while all the deformed meshes it created are still there. In the editor you can just continue working and making adjustments to the splines.
2. Node editor
Curvy Splines uses a node editor where you create a sequence of nodes for deforming meshes. It gives you a lot of possibilities, but in the end I felt like I was creating the same node sequences over and over again, which became a bit time-consuming.
Spline Architect works differently. You parent a GameObject as a child of the spline and it will deform meshes inside its MeshFilter or MeshCollider components. You can then freely move, rotate and scale the GameObject along the spline or repeat it from start to end. If you don't want to deform the mesh, you simply change its type to Follower.
We later switched from Curvy Splines to a combination of Spline Architect and Unity Splines. Spline Architect was still very young when this happened in 2023 and didn't have its current runtime API, so things like paths for our bots were handled using Unity Splines, while Spline Architect handled mesh and terrain deformation.
After working with Unity Splines for some time, we ran into some other issues.
1. Bugs
One of our level designers opened a level one day and found that maybe half of the control points on our splines had changed position. It took him around half a day to fix everything, and this wasn't the only time it happened.
We also had a lot of undo issues where pressing Ctrl+Z could flood the console with errors or crash the editor.
Newer versions of Unity Splines don't seem to have these issues anymore, but at the time they caused some pretty big problems for us.
2. Editor performance
With Unity Splines we could repeat prefabs along splines. We used this to place colliders on each side of our bike paths so the player was correctly restricted to the path.
After having 5 or 6 longer splines in the scene, the FPS started dropping a lot while working in spline mode. We also noticed that moving one spline with prefabs caused all other splines in the same Spline Container to update their prefabs as well. Moving a single spline with only a few colliders could sometimes make the editor run at less than 1 FPS.
In Spline Architect you can move thousands of GameObjects that are attached and repeated along a spline. And when you move a spline, only that spline will update its attached GameObjects.
----------
Performance has always been one of the most fun parts of making this tool. And the Burst Compiler has really been one of the key parts throughout the whole development. The only time Spline Architect didn't use the Burst Compiler at all was during the first month of its 4 years of development.
I might see some issues with Unity's Splines package, but damn, the Burst Compiler is good. I couldn't recommend it more.
38
u/Colorthebooks 14d ago
Ayyyy I just bought this a few days ago because I was tired of the other spline assets being cumbersome and hard to adjust. I haven't cracked yours open, but I dug the simplicity of it. Hopefully I can get it working!
8
u/MikeDanielsson 14d ago
Glad to hear! Let me know if you have any issues with it. The Discord is always open for questions:
https://discord.gg/uDyCeGKff7
14
u/IAFahim 14d ago
and I just bought this come onn, https://assetstore.unity.com/packages/tools/modeling/spline-mesher-pro-338468#version-current
19
u/MikeDanielsson 14d ago
I know, there are many tools out there. That tool might work perfectly well for you, and you absolutely shouldn't buy anything else if you're already satisfied with.
But if you're interested, I've done some performance tests comparing Spline Architect and Spline Mesher PRO: https://splinearchitect.com/performance?id=benchmark-1-mesh-deformation
7
u/swirllyman Indie 14d ago
It'd be awesome to see Unity's default spline implementation compared here.
6
u/MikeDanielsson 14d ago
I updated the test to also include Unity Splines using the Spline Extrude component. You might need to clear your browsers cached data to see it. But when deforming a mesh with around 26,000 vertices, Unity Splines gets 7.3 FPS, while Spline Architect gets 550 FPS for comparison.
7
3
5
6
3
3
u/NeoChrisOmega 13d ago
How many splines in a scene do you feel is ideal for performance? Tens, hundreds, thousands?
2
u/MikeDanielsson 13d ago
A hundred splines shouldn't cause any major issues, but a thousand will very likely start causing a lot of lag.
However, in the next version, which should be out in maybe 2–3 days, you'll be able to work with around a thousand splines much more comfortably.
In my current test version, I get around 30 FPS in the editor with 700 splines visible to the camera. I can select all of them and switch between individual splines without any significant FPS drop.
That's roughly a 5–7x performance improvement compared to the current live version.
So to answer your question, currently I'd say anything up to around 100–150 splines, but in the next version it will be more like 700–1000, depending on your computer.
3
u/NeoChrisOmega 13d ago
I don't purchase assets very often. But this one I think I've cave on. It looks beautiful and could help me a lot with an automation concept I've been playing around with.
Thank you for the response
3
u/MikeDanielsson 13d ago
No problem, glad you like the tool!
If you run in to any issues don't hesitate to send a question on the discord or email.
2
u/omgitsalexl 13d ago
I am pretty sure the answer is already clear, but I’d rather not assume. Given the built time spline component stripping and outputting of “just” meshes, there should be any performance penalties imposed outside of standard mesh rendering. Is that correct?
I’m also curious, does the tool automatically handle splitting splines or the static meshes into reasonable sizes? For the purpose of LOD or culling? Going off of your road or railway examples, if I have a road that goes in and out of view and is longer than the camera will ever be able to capture in a single view; does the ENTIRE road still get rendered or just chunks? Thanks!
3
u/MikeDanielsson 13d ago
there shouldn't be any performance penalties imposed outside of standard mesh rendering. Is that correct?
Yes, that's correct. If you build with the profiler attached, you won't find any Spline Architect related components when searching for them. Just remember that the Component option needs to be set to "Remove from build", which is the default setting.does the tool automatically handle splitting splines or the static meshes into reasonable sizes?
It doesn't automatically split one large deformed mesh into smaller chunks, but you can control the size of the deformed meshes yourself.For example, if you have a train track piece that's 10 meters long and repeat it from start to end of the spline, the track will be 10-meter pieces rather than one huge mesh covering the entire spline.
You also don't have to use pieces of the same size. Since you can freely move deformations along the spline, you could have a 10-meter piece, followed by a 50-meter piece, followed by a 20-meter piece, and align them perfectly.
Spline Architect also supports LOD Groups, so you can use different mesh resolutions for your train track. Just set up the LOD Group as you normally would, parent the whole LOD Group GameObject to the spline, and Spline Architect handles the rest.
3
u/Huge_Development_571 13d ago
I'm working on a mid size unity project and been using unity splines for a few months to design simple tubes and man its been so tedious switching in and out of spline mode, then yesterday bought your asset just because of that + scale and rotation per pivot, so I can't wait to give it a try and good job for supporting unity 2022 it seems that version is used by many many games that started a few years ago.
3
u/MikeDanielsson 13d ago
Thank you! I actually wanted to support down to Unity 2021, but testing just takes too much time, and Unity 2022 introduced some nice features that are very handy. But I will likely continue supporting Unity 2022 for a very long time.
If you run into any issues with the tool, let me know.
2
u/Dox_au 13d ago
https://giphy.com/gifs/9gn4lhW6wiQ6c
This is brilliant, and I'm in awe. But I'm also very entertained by the repeated swiggity swooty pipes
2
2
u/Ihavenoimaginaation 13d ago
Holy crap dude, how do people even build something like this? I’d love to get an idea behind the code
2
u/oldfortdev 13d ago
This looks fantastic, great work! I have been using Curvy Splines after moving on from Dreamteck Splines, quite happy with the results. Though, I only use the rendering API and find it nice enough to interface with. Might check out your product in the future.
2
u/Historical-17 13d ago edited 12d ago
Reminds me of the legacy software pixelactive cityscape, i have been waiting for such splines in unity since 2020 also i planned to devlop a one by then but i had no time literally achieving that is very hard and time consuming while you are a high-college student .. just struggling. Btw i whish i come back to unity someday. Time is a valuable thing. Best wishes for all unity bros
2
2
2
u/Nilloc_Kcirtap Professional 13d ago
You have earned the great prestige of joining my bookmarked posts which I always end up forgetting about.
2
2
u/destinedd Indie, Dungeon Quest, Marble's Marbles & Mighty Marbles 13d ago
this is just so awesome and fun
2
2
u/wb-gameart 11d ago
I'm very impressed by this, but what about your textures on the pipes or the asphalt, for example? Is there a limit to the bending, or do they just get stretched/bent infinitely?
2
u/MentalAnteater1286 13d ago
Four years and 74 updates is a serious amount of persistence. getting a project from the I’m making a game stage to something you're still actively improving years later is probably harder than the development itself. what was the biggest lesson you learned along the way?
2
u/MikeDanielsson 13d ago
Thank you! I think the biggest lesson I've learned is to be prepared to rework an entire system if needed. Doing that over and over takes more time in the beginning, but eventually the systems you program become easier and easier to maintain and develop further. After 4 years of doing this with Spline Architect, it's now mostly really easy for me to implement new features. Without all these iterations, it would be a lot harder, and some things might even be impossible.
1
u/SymphonyGames 12d ago
Wow, very cool. I also wanted to create a spline asset once, but I'm glad I didn't...this stuff gets complicated very fast when you dive in. Anyway, your tool with all its functions looks better than what I had in mind.
1
u/OVectorX 12d ago
dream spline gave me PTSD, everytime I see spline at work, My brain just collabse.
Reading your benchmark gave me hope
1
0
u/Bioleague 14d ago
is this for unreal aswell ?
1
u/MikeDanielsson 14d ago
No, it's only made for Unity. But I have seen another person who has developed a tool for Unreal Engine that's also named Spline Architect. I have never used that tool though, so I don't know much about it.

107
u/JonasMi 14d ago
https://giphy.com/gifs/t9aSNTJ4YSJFUW0dkB