As discussed in the previous progress update, the Geometric Internals (V0.2) has since gone up for a closed beta test. I'm pleased to say that the beta turned out to be much more stable than anticipated, with only a few issues. Issues all primarily caused by the way parts were loaded.
Do keep in mind these all are all works in progress and will change a lot.
Part Loading Rewrite
To get slightly more technical: Previously, parts were loaded in asynchronously as complete packages whenever they were spawned. Fine for the use at the time, however V0.2 allows parts to spawn other parts. This gets complicates things when parts are trying to work with other parts which are being loaded. The elegant fix was to get parts loading instantly, without inventing a new form of memory. Parts have now had all of their code separated from their assets. Allowing the memory-cheap code to be loaded at the game start, then the heavy textures and models load in once the part is spawned. Since nothing depends on these textures and models to function, it lets the whole designer run synchronously without having to wait for big memory loads, resulting in very clean code. Unfortunately, this meant rewrites and restructures for all parts (100+ at this point).
An additional benefit of separating the code from the assets, is the ability to freely switch between assets:
Track Generation Rewrite
Tracks generation has been rewritten to split it up into smaller chunks utilizing the new V0.2 systems. Allowing individual track parts to be selected and manipulated using the placement tools. Individual part selection allows the relevant design options to be displayed, instead of having to find the desired option in the wall of options that track design had become. This will also allow track armour to finally be visible in armour view. This rewrite sets the ground work for control over individual roller wheel positions, suspension spacing as well as flipped suspension in the forward axis (useful for grouping up torsion bars. Though these wont be included in this update.
Cannon Generation Rewrite
Switching cannons over to V0.2 required a rewrite of cannon generation. Making sure to include visible cannon rifling this time: The more visualant of you may have noticed the handle bar on the cannon barrel. V0.2 improves support for attaching parts to other parts, such as cannon barrels.
Painting Sync
Painting of the vehicle is now done in a more efficient manner. One effect possible with this was continuous updating of paint mapping coordinates while moving a part, resulting in instant feedback.
Part Selection Overlays
Part hovering and selection is now much clearer, using an outline instead of a pip. Done in order to aid the more select-and-edit focus of the designer experience.
Powertrain Driveshaft Editing
Powertrain drive shafts can now be subdivided, allowing their junctions to be manipulated.
This helps you squeeze your powertrain into as small of a space as possible.
Damage Model Rewrite
The damage model has received its planned pass to get it working with V0.2 internals. It's been dramatically simplified from a code perspective, while becoming more accurate and future proofed against the planned freeform changes. Spalling is now created on subsequent penetrations, instead of only on the initial penetration.
Decal Depth Resizing
V0.2 adds control over decal depth:
Delay
A further delay will be required to get the closed beta issues fixed and remaining features reimplemented, as well as the heafty backwards compatability required.
The new ETA for V0.2 releasing on the experimental branch is October 18th 2023
Thank you all for the patience with the delays on this update, it'll hopefully be worth it!
- Hamish
Geometric Internals Progress #2
Hi all,
Afraid there's not many new visuals to show off since last progress update, as been mainly work behind-the-scenes.
Do keep in mind these all are all heavy works in progress and will change a lot.
Laying drives
Cannon rotation constraints are no longer automatically detected, which often led to odd and unpredictable behaviour. Instead, you now set the desired constraints manually. This creates a zone around the cannon which must be kept empty.
Crew role assignment
Crew roles are now assigned by assigning which parts each crew member operates. This new approach let's you explicitly assign gun sights to gunners and opens the door to further crew hatch and optics mechanics.
ETA
9th August 2023
A sizable delay from my original end of June ETA, made back in April. This was due to several rewrites planned for the refinement period on the roadmap being included in this update. Otherwise I'd be converting old systems, then immediately rewriting them come the refinement period. The new estimate includes a 2 week closed-beta, to iron out the major changes before an experimental branch release.
I've been taking my time on this one. It'll hopefully be the last rewrite of this scale, so it needs to be a rock solid base for the rest of the planned features and future modding.
So happy to see the patience of the community with these longer term updates, which generally move the game forward the most.
Done
Part management and installation rewrite
Part selection rewrite
Overlay system rewrite
Vehicle part rebuild process rewrite
Part obstruction detection rewrite
Part and vehicle save and load process rewrite
Overhauled and converted from volumetric to geometric:
Turret baskets, rings and traverse motors
Engines
Transmissions
Torsion bar suspension
Cannons
Crew
Ammo racks
Gun laying
Designer to gameplay transition rewrite
Crew multi-tasking overhaul
To do
Minor AI updates with new functionality
Damage model rewrite
Backwards compatibility for old designs
Graphics and polish
- Hamish
Geometric Internals Progress
Hi all,
Quick update on how geometric internals are coming along.
I started this update off with a major overhaul to the core of the designer, dramatically simplifying and solidifying all the features which have been layered on over the years of development. This will result in fewer bugs long-term, faster updates and easier modding (once support is in).
As of right now, the majority of this work is done and it's on to the exciting part, the internals themselves.
Do keep in mind these all are all heavy works in progress and will change a lot.
A three man tankette showing all current internals.
Powertrains are receiving lots of care, for maximum flexibility when you're threading driveshafts between the driver's feet. Positioning the engine and transmission.
A vehicle with the whole powertrain offset to one side. Note the drive shaft threading between the torsion bars and the turret basket.
Turret rings have recieved a full overhaul. Featuring a designable basket which counts as turret space but obstructs parts in the hull.
Cramming crew in remains a pain in the smaller vehicles. Continuous posing instead of preset poses helps with this: Crew efficiency based on allocated space will be replaced with comfort based on their posture.
Cannons are now placed independently of mantlets: They'll still need to be placed on mantlets to be aimable, only now you can place multiple cannons on one mantlet. The core changes allow parts to be placed on mantlets and cannon barrels, moving with them.
There's a new feeling at play now: You can look at a tank with fully functioning internals but a bland exterior and still be proud. Form following function now happens naturally, "it ain't pretty but it works" is a refreshing thought that pops up now and then.
Reworking/retrofitting a design requires more thought. For example, say you come across an enemy with armour you're having trouble getting through. The old approach of simply dragging the cannon's calibre slider up another 20 odd millimetres wont do. You'll likely need to make serious modifications to the containing turret or sacrifice a crewmember (figuratively) to fit the larger cannon in. Making designing a new design based solely around countering another design more frequent.
That's all for now!
- Hamish
Where we're going #3 (Roadmap Update)
Hi all,
Time for another roadmap update. Shaking things up this time due to some of your feedback from the last roadmap post.
After seeing players so keen to put 84 cylinder engines and 500mm plates on their tanks, I finally realized. This need to drag yourself across land with magical stuff like traction (what even is that?) is only slowing us down.
Instead, I'm scrapping most of the current plan for Sprocket and replacing it with the next iteration on tank design:
https://youtu.be/9e4XsZuwza8
This should (ideally) let you build your 1,000 tonne superweapons without needing to worry about "suspensions" or "32 gear transmissions", making the game much more simple and accessible.
This also acts as a fix to the tracks not being 100% realistic, as now, instead of the 90% accurate tracks we currently have, they simply don't have to do be done at all.
You'll be able to:
Design ships from all eras. From the lowly viking longship, all the way to an Iowa class battleship.
Full rework of all scenarios, to be more themed around the ocean.
Customize each one of your 2,000+ battleship crew.
840 cylinder engines with 5000mm plates on all sides.
Try and build a Zumwalt with 1940s tech.
Fight on massive scale 1000x1000m maps.
Find out what's wrong with your ships and why it's important to close your flashdoors.
City maps (though inaccessible because they're on land).
Lootboxes. Instead of having everything available to you at the start, feel a sense of pride and accomplishment when you finally maybe get the part you wanted after buying it.
Lots to look forward to.
- Hamish
V0.127 - Internal Overlay Overhaul
Hi all,
Small update to fix a major issue before I dive into geometric internals.
Up on the experimental branch, you'll have to opt-in to play it early:
Additions
Added a toggle to disable part repositioning in compartment design.
Pressing the refocus key ('numpad .' default) will now focus the camera on the average position of the selected parts. This is rebindable.
Changes
The internal overlay now has all walls inside the tank as opaque, while making the walls facing the player transparent. This should help placement of geometric internals.
Fixes
Overhauled how overlays are applied. This fixes cases of undo/redo not functioning correctly for part placement.
- Hamish
V0.1261 - Hotfixes
Hi all,
Some fixes and tweaks for Friday's patch to bring the experimental changes to stable:
Changes
Enabled the manual flip toggle for all fenders.
Lowered the minimum scale of the 8-slot cupola.
Added a curve to turret traverse torque (to fix the audio issue). Torque will gradually lower below 0.5 degrees from the target. This can reduce jittering of the scope.
Fixes
Fixed turret traverse sound playing while the turret is stationary.
Fixed rivets not loading with the correct count, only on vehicles saved in V0.126.
Fixed inaccurate collisions on the new Italian end fender, T34-76 mantlet and the Churchill VII end fender.
Recessed cannon position into the T34-76, SU-85 and Matilda II mantlets, to the same position as all the other mantlets.
- Hamish
V0.126 - Dario's Parts (Experimental)
Hi all,
Here's another batch of tank parts, all made by DarioXN from the community.
This build is on the experimental branch, you'll have to opt-in to test it out early:
New parts
M10 Wolverine mantlet
Type 1 Chi-He mantlet
Type 1 Chi-He roadwheels
Type 1 Chi-He driver's port
Italian midsection and end fenders
Covenanter roadwheels
T10 Engine vents
8-Slot generic cupola
Italian post-war roadwheels
Additions
Added a visible line on the vehicle centre when placing parts with symmetry. Should prevent you having to look at all the side-skirts you didn't place on the other side.
Selecting parts which flip depending on the side of the vehicle will now let you manually flip the model.
Changes
Fender width slider value now reflects physical fender width more accurately (fenders were half the size of the value).
Disabled auto-flipping for the hetzer exhaust.
Tweaked gear thickness formula to be thinner above engine torques above 2000Nm but thicker below.
Fixes
Fixed issue with fender loading, causing generated fenders to have incorrect height.
Fixed blueprint-loaded vehicles with track belts disabled not functioning.
Fixed battle member widget not updating when sandbox enemies are despawned.
Fixed sandbox enemy despawning releasing resources used by the player's vehicle, resulting in movement breaking.
- Hamish
Geometric Internals (The Plan)
Which was, lets face it, inevitable.
Why volumetric internals in the first place?
Purely accessibility. Not having to worry about the specifics or play human Tetris inside the vehicle seemed quite appealing. Once it was up and running, new players struggled to recognize their 3.52m^3 engine doesn't fit inside the 2.63m^3 remaining space. Whereas your engine sticking out the top would register straight away.
What are geometric internals
Geometric internals will determine whether the internals fit by checking that none of the internals intersect with one-another, and there are no internals partially outside of the vehicle. This means getting rid of the big bar at the top.
The current system (volumetric internals) determines whether the internals fit in the vehicle by checking that the sum of every component's used space is less than the space available.
Why the switch?
It's too easy to design perfect tanks - turning Sprocket into more of a tank decorator than a tank designer. There aren't enough cases of designs having unavoidable flaws because they were designed around a certain feature. I find this a big part of what makes historical designs so interesting.
The volumetric internals model also falls apart with open hulls and turrets (on the tail-end of the roadmap).
It's quite a core game change, so the sooner it's done the easier it will be.
Prototype
V0.12412 brought ammo racks as the first test for geometric internals. This allowed for a much more accurate damage model, reload times and capacities. Designs gained another layer of personality. Knowing the locations of your enemy racks allowed for a quick knock-out. Together with the armour strength changes, this allowed you to effectively hide ammo behind sloped turret cheeks or sponsons and be well defended, letting you take that one extra hit. The enjoyment of placing these racks of these leaves something to be desired, which I'll be iterating on.
Changed internals
Crew members will be placed, with a variety of standing/seated/lying positions. Ideally some of these only accessible in certain eras. Setting the space per crew member will be removed, tying efficiency solely to the roles assigned to them.
Torsion bars will take up space along the floor, generally forcing vehicles using it to be taller. Fuel, ammo, etc can be placed between the torsion bars.
Spring suspension will take up space along the walls of the hull, generally forcing vehicles using it to be wider. Fuel, ammo, etc can be placed between the springs.
The engine will be connected to the transmission(s) via a driveshaft. You may have a driveshaft dividing the crew compartment if you want to reap the traction benefits of a front-mounted sprocket wheel (Or an incentive to put the engine in the front). The drive shaft may need to be threaded between the turret basket and the torsion bars, or between the driver's legs.
Fuel tanks will be placeable and resizable like the current ammo racks.
The cannon breech will split the turret space in half, requiring more realistic turret widths. Cannons will need enough space behind the breech to load shells, something two-piece ammo can fix. Cannon elevation/depression blocked by other internals.
An overhaul of turret baskets. Separating the basket from the ring and allowing a degree of control over their shape.
Future changes possible
Recoil can become a major concern, ensuring there's enough space in the vehicle for the breech to slide back.
The shape differences between V, inline and radial engines can be simulated.
A post-penetration replay.
Possible freeform changes
As many of you might know, I'm not happy with freeform. It achieves the desired creative freedom, but it's tricky to use and difficult to get polished to game standards.
Geometric internals open up a possibility to tweak freeform, allowing faces to be placed, moved and deformed as though they were individual steel plates. Most of the unintuitive/fiddly constraints of freeform were due to the need for a sealed compartment, to calculate the internal space for volumetric internals. These constraints will be able to be removed, allowing for a less constrained freeform.
Plates will become purely there as a way to put steel between your internals and the enemy, as it should be.
These changes fix the existing issues:
Plates will be able to be split and only affect the split face, removing excess points.
Inverted faces will be a thing of the past.
Extrusions/superstructures will be easier, as plates can be dragged and dropped onto the hull before editing, instead of having to be split and extruded from the hull.
The damage model can be simplified to have no definition of inside and outside.
Generated compartment design can remain exactly the same. All current designs can be converted over perfectly fine. The Freeform changes will come separately, some time after the geometric internals update, to keep the update's scope reasonable.
UI possibilities
Placeable internals allow much cleaner design interfaces for certain modules. Namely the crew and designer, which can be changed to clicking and selecting the desired member, only displaying options for the selected them (already demonstrated with placeable ammo racks). This will allow for more depth in crew design, which would cause too much clutter with the current approach.
Accessibility
Initial placement can still be guessed based on the related attached parts (e.g. commander under the attached commander's cupola), only requiring minor adjustments by the player. The difficulty of internal placement should be quite scalable, since the size of most things can be adjusted when necessary, including the compartments themselves.
This shouldn't dramatically increase build time in the form of tedious building, only increase the amount of time spent thinking about your overall layout (the fun part).
I'd love to hear your thoughts and suggestions on this in the comments. I'm personally very excited for this next step.
- Hamish
V0.1258 - Fixes
Fixes for Friday's patch
Fixed an issue with part loading, noticeable in custom battles. This would result in missing parts, broken turrets and default decals.
Fixed turrets playing traverse sound when they shouldn't.
Stopped brake force having an effect on acceleration and top speed.
Fixed blueprint name input fields showing "Cannon" when the field has no value.
Stopped new transmission and engine designer name input fields causing a potential control lock.
Engines can now be turned on again when turned off.
Fixed enemies not disappearing when opening the spawn menu in sandbox.
Fixed forwards compatibility when loading legacy blueprints for individual modules.
Fixed engine custom rev limit being overridden on initial load.
Vehicle movement info graphs now disabled with the GUI.
V0.1257 - Powertrain changes back to stable (Again)
Hi all,
Attempted to move the experimental changes back to stable, but found a few issues in the process, then reverted.
Those issues are fixed with the follow up patches, so I'm moving the experimental changes back to stable again.
Fixes with this one
Fixed incorrect turret constraint behaviour on turrets rotated sideways.