dangersam
|
 |
« Reply #220 on: December 06, 2022, 06:54:31 PM » |
|
Tutorials, new features and partsHey all, here's an update on what I've been working on for the past couple of months. Tutorial scenariosThe main challenge I've had lately is with the design of the tutorial scenarios, my original idea for these didn't work out to my liking. They ended up being rather boring and didn't give a very good first impression of the game. So I decided to try a new direction to create a more entertaining experience for first time players while introducing some basic concepts. Unfortunately this will likely mean scrapping some of the work I've already done, but hopefully I can reuse some of it at least. For now I'll say no more about the new tutorial scenario design, until I'm further along with it and more confident that it's going to work out. I found all this rather dispiriting and frustrating to be honest, so to try and keep myself motivated and move things forward, I've also been working on some other stuff! Building improvementsRecently I've been playing the game a lot (to build content for the tutorial scenarios and trailer video), this has highlighted some bugs and other usability annoyances, which I've been fixing as I find them. For example:- - When detaching selected parts from other ones, the attachment types between them would be lost, and after re-attaching them you'd have to change the attachments back to the desired type. Now, the types are saved while the selection is being moved, and restored after re-attachment.
- Part highlighting has been improved so that tools only highlight parts relevant to them (e.g. only paintable parts for painter tool).
- Fixed several bugs (such as parts sometimes not attaching to engaged gears, random rotation after freezing a construction, part duplication issues, and so on).
BrakingOn the subject of annoyances, I built a race car to showcase on the race track map, which was fun to drive around but really emphasised the need for proper braking. Electric motors provide regen braking by running them backwards, but this was hard to control. If a vehicle's wheels had insufficient grip they'd slip and the motor would spin up in reverse. So I made some changes to the motor part behaviour to address this:- - Above a certain speed a "braking direction" is now set, which is then used to prevent the motor from spinning in reverse after coming to a stop during braking (the braking direction is reset once directional control is released).
- Added a separate tweakable value for braking torque.
Electric motor regen may not provide enough braking on its own however, and so I've now implemented a new braking part behaviour for wheels (that can be activated by a bound key). This makes driving vehicles way more controllable and enjoyable. When braking is enabled, a brake disc is shown inside the wheel.  I plan on adding separate brake and clutch parts in the future that will also make use of this same part behaviour implementation. Analog joystick controlAfter spending some time driving vehicles around, I couldn't resist implementing something that would greatly improve the experience - analog control. More specifically, being able to bind a joystick axis to a controllable part behaviour (such as a motor).  This, in combination with braking, transforms the enjoyment of driving vehicles in the game. It is optional however, and the regular bound keys are still a decent method of control. Chase cameraAnother thing I couldn't resist adding was a "chase" camera, which is now selectable when the player is seated. It's similar to the existing third-person camera except that side-to-side movement is smoothly locked behind the seated player, and the mouse can only move the camera up and down. This camera mode makes driving vehicles in a third-person view much easier, as you don't have to manually track the vehicle by moving the mouse. More parts and improvementsAgain, after spending time driving vehicles, I wanted to improve how leaving seats worked:- - Rather than having to look down at a seat to leave it, you can now simply press the "jump" action (i.e. Space by default).
- When leaving a seat, if possible the player is now repositioned at a free position in front or to the side of the seat, rather than on top. This is more better for a vehicle with a roof for example, where before the player would just be repositioned on top of the roof.
I also improved some other part behaviours (e.g. key bind for differential locking, tweakable light brightness) and added several more parts (e.g. seat, gear, steering wheel, connectors) to facilitate some of the example constructions I've been making. Grabber toolFinally, I decided to implement the last remaining tool in the game, the "grabber" tool. Although this wasn't a particularly high priority, it was quick to implement and I wanted to get it done so that I have the option to include it in the tutorial scenarios, without having to go back and modify them later. The grabber tool allows constructions to be moved around as physical objects, i.e. without freezing them first. It has two modes, "grab" and "shove":- - 1) Target part of a construction, then click the left mouse button and drag, to grab that part and drag the construction around by it.
- 2) Target part of a construction, hold the right mouse button to charge up, then release to apply a shove force to that part of the construction.
 The grab and shove forces are configurable, as is the ability to have free or locked rotation while grabbing. What about the full game release?Before the early access release of the game, there are two main tasks left I need to get done: finish the in-game tutorials and make a trailer video. The tutorial scenarios have not progressed to where I would have liked by now, but I needed a break from them to clear my head, and work on something else. Anyway, now I really need to focus back on finishing the tutorial scenarios, finish building content for the trailer video, and get that captured and edited. I was hoping to release the game before the end of the year, but unfortunately it's now looking like the date will have to slip by a few months. This is really disappointing I know, but by way of compensation, I've decided to do another demo release update soon, which will include many of the improvements mentioned in this post, so keep your eye out for that!
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #221 on: December 18, 2022, 03:26:16 PM » |
|
GearBlocks Demo 0.7.8387Just released a demo update with new grabber tool, brakes, joystick support, building improvements, UI tweaks, bug fixes, and more. See release notes in game for full details! Steam store pageRelease notes:- - Tools:-
- Implemented new grabber tool, for dragging and shoving objects.
- After detaching selected parts, attachment types are now restored if those same parts are reattached.
- Tools now only highlight parts relevant to them.
- Part behaviours:-
- Electric motor modified to prevent reverse spin up after coming to a stop while braking (until control is released), also now has separately configurable braking torque.
- Added braking to "Car Wheel" part, controllable with a bound key.
- Differential gear's locking (i.e. slip limit) can now be turned off with a bound key.
- Light's brightness now configurable in part behaviour settings.
- Implemented analog joystick binding for part behaviours.
- Activation state now serialized to saved constructions / games.
- Added option to label a part's function in the construction controls UI overlay (see below).
- Physics:-
- Replaced "continuous contact detection" game option with "contact detection mode" scene setting.
- Rotary bearings now have small angular drag (to simulate friction).
- Player seating:-
- Player can now leave seat with jump action (i.e. pressing Space).
- Improved player positioning after leaving a seat.
- Added new chase camera mode, available when player is seated.
- UI:-
- Added new construction controls UI overlay, shown when no tool is selected.
- Improved and expanded help UI screen.
- Removed player stats (speed, etc.) UI overlay, this will be replaced with a script mod in the full game.
- Removed old "Corrugated Steel" plate part.
- Bug fixes.
- Upgraded to Unity 2020.3.42.
|
|
« Last Edit: December 19, 2022, 11:46:25 AM by dangersam »
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #222 on: January 23, 2023, 03:13:10 PM » |
|
GearBlocks Demo 0.7.8420 Hi all, over the holiday period I decided to take some time out to try an experiment: attempt to add undo functionality to the game. Specifically, implement a command history, to which a command would be added for each tool action (e.g. select, move, or attach parts, apply material or paint, etc.) and then allow the player to undo or redo the commands in that history. The game's tools were not originally built with this in mind, but the code is reasonably well structured so I thought it might be possible. The initial prototype turned out to be promising, and showed the potential improvement to usability this would bring. Well, I couldn't resist seeing this through to completion, and so that's what I've been working on for the past few weeks. It required substantial refactoring of some of the tool code, and took a while, but the results are well worth it I think. Here it is in action, I've exposed the command history to Lua scripting, and made a script mod that shows the current list of commands:- Implementation detailsRather than store an absolute snapshot every time something changes, the commands in the history store relative deltas. A command keeps a record of the change that was made by a tool action. This means implementation was kind of an "all or nothing" prospect: all tool actions must be accounted for the command history (in the right order!) for everything to work properly. Here are the commands I ended up with, these are added to history when... - Select tool: ...a tool is selected (some actions are only valid when the correct tool is active, so this must go in the history).
- Select parts: ...any frozen parts are selected or deselected.
- Select pivot: ...a pivot point is selected, which detaches all the selected part(s).
- Move / resize selection: ...the selected part(s) are translated, rotated, or resized via manipulators.
- Replace attachment: ...an attachment's type is changed.
- Lock attachment: ...an attachment is locked or unlocked.
- Delete attachments: ...attachments are deleted (whether directly, due to the selection being detached, or due to a part being destroyed).
- Spawn / destroy construction: ...a part / construction is spawned or destroyed.
- Freeze construction: ...a construction is frozen or unfrozen.
- Swap material: ...a material is applied to a part.
- Add / remove links: ...link(s) between link nodes are added or removed.
- Apply paint: ...paint colour is applied to a part.
The command history has a buffer containing references to the added commands, in the order they were added. This allows for the commands to be undone in reverse order, and redone in forward order. The history maintains an index of the last undone command, and if a new command is added, it will go into the buffer at this point. Any commands that came after the one most recently undone will be lost. The buffer is a finite size (currently 256), if a command is added to history and it's full, the oldest command is removed. New demoSo, the game now has full undo / redo capability (using Ctrl + Z / Ctrl + Y). This is a feature that this genre of game really should have, and I think it was worth making the effort to get it done. Steam store pageThere are still a couple of issues left to deal with, but it's now in a usable state, so I've just updated the demo to include it. A lot of code had to change, hopefully I haven't introduced any glaring bugs, it seems stable so far. Give it a try and let me know how you get on with it!
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #223 on: April 07, 2023, 04:52:42 PM » |
|
Tutorial, optimisations, and other improvementsHey everyone, time for another long overdue update on what I've been up to lately! I've mostly been focused back on building the in-game tutorial scenario, but I've also continued working on the game, both adding features to support scenarios, and making other general improvements. Performance OptimisationI noticed some performance issues, particularly with a large number of parts or constructions, so I decided to spend some time addressing these. UI optimisations:- UI elements now only resize themselves to content when something changes, rather than every update.
- Improved performance of link and part intersection indicators when looping through part instances.
- Improved the compass overlay implementation (no longer sets gameobjects active / inactive).
- Optimised the scene tool UI's construction list update.
Other optimisations:- Removed unnecessary calculations from the construction update function.
- Eliminated the composite update function altogether.
- Eliminated or simplified some other fixed update functions.
These changes save over 1 ms on the main thread when there are a lot of parts / constructions in the scene (totalling a couple thousand parts or so). Speaking of which, I've also investigated using Unity jobs to move work off the main thread. This has the potential for some more significant performance improvements. Here's what I have planned: - 1) Gear and pulley wheel behaviour constraint updates - The code that figures out if a pair of gears are engaged, and the location of their engaged "teeth" (info that's then used to update the ConfigurableJoints). This could be done in parallel in jobs I think.
- 2) Wheel behaviour constraint updates - Each wheel does a CapsuleCast and some other trickery to approximate a cylinder that smoothly rolls on the ground. This is a prime candidate for using the CapsulecastCommand instead.
- 3) Part selection's "find valid attachments" code - Does a lot of OverlapBox calls if a large number of parts are selected, should be perfect case for replacing with the OverlapBoxCommand.
- 4) Collision contact reporting (used for impact sounds etc.) - Horribly inefficient at the moment, but Unity just introduced the Physics.ContactEvent, which should be exactly what I need to improve this.
All but the first of these tasks will require upgrading to Unity 2022.2 though, which feels a bit risky at the moment. I'm going to hold off until the LTS version comes out. Unity 2021 upgradeIn the meantime however, I have upgraded to Unity 2021.3 LTS. I had tried upgrading to 2021 a while ago, but found a couple of game breaking issues. These seem to have been fixed now, and the upgrade went pretty smoothly this time. The only slight issue is that old saved construction preview images now won't load (compressed image size needs to be multiple of 4), but this can be resolved just by re-saving them first. Building improvementsI've made various minor improvements and fixes to the building system: - The part selection pivot point can no longer be moved below the ground, preventing a construction from being "lost" underground.
- Now only the move manipulator handle has "drag thresholding", the translation handles move instantly.
- Engagement indicators are now shown for all gears in the part selection during alignment.
- Commands are now added to the undo / redo history when links are removed while detaching parts.
- Fixed a bug where destroying an unfrozen construction didn't add a command to the undo / redo history.
PartsI've also made a few minor improvements and additions to the parts: - Implemented a resizable "L Plate" part, useful for connecting stuff at right angles.
- Added checks for player distance and facing direction to the control wheel part behaviour (prevents the control wheel from being used when the player is too far away).
- Added a light part behaviour option to disable shadow casting, useful if you want to save performance for a construction with a large number of lights.
- Fixed a bug where spring damper / linear actuator pistons could be attached to the wrong alignment point.
Here's what the L Plate part looks like: Lua scriptingI've worked on various new features that are available for use from within Lua scripts (as scenarios or script mods), mostly to support what I need for the tutorial scenario. Video playerImplemented an in-game video player, with an interface that allows video players to be created from Lua scripts. Here's a test Lua script, showing a video playing in a window:  I'm planning on using this to show short explanatory video clips in the tutorial scenario. Scroll list UI elementImplemented a scroll list UI element, can be added to a window like any other element, but then other elements can be added to it (including more scroll lists!) For example the undo / redo command history script mod can now show a larger history that can be scrolled through: Unlabelled UI elementsAdded unlabelled variants of the slider, input field, and dropdown UI elements for more flexibility. Shown here in this Lua UI unit test: Profiling metricsExposed performance profiler metrics (e.g. memory, rendering etc.), so that script mods can implement custom profiler UI windows, for example: Tutorial scenarioMy original plan was to have multiple little tutorial scenarios, each one introducing a few new concepts at a time. As I mentioned in a previous post, this idea turned out to be a bit boring in practice, and didn't really create a good first impression for the game. So then I pivoted to having one large scenario with a lot of things to do in it, essentially combining the separate tutorials into one that are followed through step by step. However as I started to build this out I realised it was getting too big and complicated. Apart from anything else, performance was getting to be marginal with so much going on in the scene at once. So, I went back to the drawing board and reworked my design, trying to really focus on what concepts I wanted to introduce in each tutorial stage, and what concepts to reinforce from previous stages. The result is a bit more pared back than what I had before, but I think it should still be fun. It will still be a single scenario / scene containing multiple activities that the player goes through, but with less extraneous stuff. The first few activities will get the player used to activating and using part behaviours, using the construction menu, and so on. After which, each activity will require the player to do something (e.g. attach a control wheel, reposition a gear, link some pulleys, etc) that will allow them to open a box with a part inside. When they've completed all the activities they can collect all the parts together and build something out of it, as the final step (using everything they've learned so far). For example, the first of these activities is to simply use the builder tool to move a weight and place it on a platform. Things ramp up in complexity from there!  The design is now complete, I have built all the individual constructions for the scenario, and made a good start on the Lua scripting. I'm planning on making another (small) map for the game, to be used for this tutorial (and any others to follow). This tutorial scenario is really there to get new players used to using the building controls, it doesn't go much beyond that. I would like to also build additional tutorial scenarios that teach advanced use of gears, mechanical principles, have more complex puzzles to solve etc. These will have to come after the early access release though.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #224 on: May 20, 2023, 04:24:07 PM » |
|
New map, and tutorial finishedHey all, I've made a fair amount of progress on the game over the past month, so let's get into what I've been up to. "Gary Island" mapOne conundrum I had while designing the tutorial scenario was where to locate it (i.e. which map to use and whereabouts on that map). I could have used one of the existing maps but they are all pretty large and "open plan", which made it hard to lay out the scene for the tutorial. I needed something small with clear boundaries that spatially confine the player. For a while I had been resistant to the idea of adding another map for the tutorial scenario, but it became apparent that this was going to be necessary, and worthwhile investing the time and effort in. So I decided to make a new map, an island surrounded by water, with a 250x250 m playable area. For long time followers of the game's development, I resurrected the water from those old procedural island maps! I was also reluctant to do this actually, as introducing water brings about a whole host of implications (what happens when you go in the water? buoyancy? drag? sound & particle effects? player swimming animations?) So for now the water is beyond the map boundary and is just there for visual effect. As usual, first I started with making the terrain height map:  Then, painted the textures (reusing those from the other maps):  Finally, added details (e.g. grass) and trees:  Overall I'm quite pleased with how the map turned out. It has a central area (which I've used for the tutorial scenario), and other areas that are connected via paths for a bit of variety. I'm thinking this will be good for other scenarios, and also as a general starter map for players. Water reflection optimisationsAfter bringing back the water, I needed to do some performance optimisations to the old reflection rendering implementation (water reflections are rendered using another camera with a view that is flipped upside relative to the main camera). I improved the code by eliminating some expensive per-frame calls ( GameObject.Find(), GetComponent(), etc.) and getting rid of GC allocs. I also reduced the level of detail during the reflection render (by overriding the LOD bias, turning off terrain details, and reducing the tree LOD switch distance). Finally, I added a "video options" setting to make the water reflection rendering only include the terrain & sky, or be turned off altogether (falling back to a reflection probe). Tutorial scenarioTo finish the final iteration of the tutorial scenario, first I had to create a scene in the new map. I laid out all the constructions, checkpoints, and so on for each of the tutorial stages that the player completes in sequence. Then I worked on the scenario scripting, organising the Lua scripts by breaking them up into the tutorial stages. The scripts are responsible for tracking player progress through the tasks they have to complete for each stage, showing a UI window with instructions (text and videos), and helping the player get back on track if they make a mistake. This turned out to be a huge amount of work, but I think the results turned out really well. Here's a sneak peak of the start of the tutorial scenario:  So the tutorial scenario is now (more or less) complete, which is a huge milestone, as that was the last major task before early access release. There's still a bunch of work to do, but I'm now in a position to prepare the game for release which is very exciting! Part resizing indicatorI've implemented another indicator that shows unit dimension numbers near a part when resizing it with the resize manipulator.  This makes it much easier to see the part dimensions while resizing, as it saves having to look down at the part UI overlay. Script modsThe script mods included with the game have continued to develop. For example, I implemented a "builder tool extensions" script mod that provides an interface with options for precise part placement. I also improved and added to the various debug tools, and added a simple "hello world" example. I can't wait to see what script mods of their own players can come up with!
|
|
|
Logged
|
|
|
|
Alain
|
 |
« Reply #225 on: May 21, 2023, 01:08:39 PM » |
|
Very cool! From the screenshots I think you made a nice choice regarding the style of your new tutorial map. I like the playfulness of the start/finishing line 
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #226 on: June 08, 2023, 11:10:21 AM » |
|
GearBlocks Demo 0.7.8563Hey everyone, quite a few fixes and improvements have accumulated since the last demo update, so I decided it was worth releasing another one. Steam store pageRelease notes:- - Many optimisations to UI, overlays, and indicators. Improves performance especially with a large number of parts / constructions.
- Minor tweaks to builder tool:-
- Click and drag "threshold" now only applies to move manipulator.
- Prevented dragging the part selection's pivot point below ground.
- Increased targeting distance.
- Removed "Prevent Interpenetration When Attaching Parts" toggle from "advanced options" (still available in the demo by setting "PartPenetrationTestEnabled" to false in the debug console).
- Added toggle to "advanced options" to disable the centre of mass indicator.
- Modified control wheel part behaviour to check for player distance and facing direction.
- Added option to light part behaviour settings for disabling shadow casting.
- Implemented copy paste for part behaviour settings.
- Improved part resizing indicator to show numbered unit dimensions.
- Gear engagement indicators now shown for all gears in part selection when aligning.
- Added settings to controls options to invert horizontal and / or vertical mouse rotation of the part selection.
- Updated help UI screen.
- Bug fixes.
- Upgraded to Unity 2021.3.26.
|
|
« Last Edit: June 12, 2023, 11:39:33 AM by dangersam »
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #227 on: August 22, 2023, 02:33:00 PM » |
|
GearBlocks Gameplay Trailer – Coming to Steam Early Access this November!Wishlist and play the demo: https://store.steampowered.com/app/1305080/GearBlocks/There are many things still to improve, but it's been so long, I think it’s time to finally get GearBlocks into players hands! My planned Steam early access release date is November 9th. I’m also planning on entering the Steam Next Fest from October 9th to 16th, hopefully with a special tutorial demo.
|
|
|
Logged
|
|
|
|
marcgfx
|
 |
« Reply #228 on: August 23, 2023, 09:18:45 PM » |
|
Looks really impressive. Lego on steroids, hope you do well!
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #229 on: August 24, 2023, 08:47:31 AM » |
|
Looks really impressive. Lego on steroids, hope you do well!
Thanks, much appreciated!
|
|
|
Logged
|
|
|
|
Alain
|
 |
« Reply #230 on: September 01, 2023, 05:29:30 AM » |
|
So cool to see the stuff people already created, super impressive!
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #231 on: September 02, 2023, 09:07:34 AM » |
|
So cool to see the stuff people already created, super impressive!
Thanks! Yeah, it's amazing what players come up with, it helps motivate me to keep going with the project that's for sure.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #232 on: September 15, 2023, 12:49:32 PM » |
|
More tutorial and scripting improvementsHey everyone, it's been months since my last dev blog update! As you will hopefully have seen, I recently announced the coming release of GearBlocks into early access for November 9th. A lot of my time lately was spent preparing for this announcement. The trailer video was the biggest chunk of this work: planning, building content in game (including many new built-in constructions!), capturing footage, and editing it all together. I also improved the Steam store page and website with new screenshots, gifs, blurb, presskit, etc. Tutorial scenarioI recently took the game to a local indie meetup, and had a few people try out the tutorial scenario. It was really useful and informative to watch people play it in person. The feedback was somewhat sobering though, some found it too complicated and struggled with information overload! So I made some changes to the tutorial to try and simplify the information presented to players, and added more code to handle edge cases where players were getting stuck. I've also set up a new build configuration for a special demo build with just the tutorial scenario in it, which I'm planning to use for the Steam Next Fest (coming on October 9th). Lua scriptingI've continued to improve the Lua scripting interfaces, exposing more properties and methods for manipulating parts and constructions, adding more tool interfaces, and more vector / quaternion math stuff. Further improvements were made to some of the included script mods, including the builder tool extensions (now with the ability to set / snap the pivot position & orientation, change the manipulators to work in world or local space, etc.) Kit buildingFor the trailer video I wanted to show time lapses of some constructions being built. I also want to try creating scenarios where the player follows instructions to build pre-designed blueprint constructions, a bit like building from a model kit. So I implemented a feature I'm calling "kit building", to cater for both of these situations. Parts can now be assigned a stage index and constructions have an active stage that can be set (where any of their parts in higher stages than the active one are hidden). I made a script mod tool for setting part stage indices, and previewing a construction's stages. I actually used this tool when capturing for the trailer, just manually advancing through the stages in order, revealing the parts.  I also prototyped a kit building scenario with a simple Lua script to allow the player to advance through a blueprint construction's stages, automatically spawning the parts they need to build that stage. This idea has potential I think, but will need work to make it more user friendly. Minor demo updateI decided to release another quick demo update, out now with some fixes and other small tweaks:- - Minor UI improvements, including a new "getting started" window that shows some helpful pointers when launching into a new game.
- Improved attachment locking undo / redo (single command for multiple attachments).
- Bug fixes (including fixing the differential idler gear centre-of-mass again).
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #233 on: October 08, 2023, 05:21:08 PM » |
|
New tutorial demo now live for the Steam Next Fest, Oct 9th to 16th Hello all, GearBlocks is now participating in the Steam Next Fest, from October 9th to 16th! I’ve made an all new demo available just for this week, with the tutorial scenario. You can learn more about building in the game, and also try out some new parts, so be sure to check it out. https://store.steampowered.com/app/1305080/The old demo is still available in the 0.7.8657 build branch.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #234 on: November 09, 2023, 04:43:33 PM » |
|
GearBlocks in Early Access NOW! Hey everyone, GearBlocks has finally launched into Early Access on Steam! https://store.steampowered.com/app/1305080/Here's a quick preview of what players can expect if they buy the game: Thanks for following the development of the game over the years. I have plans for some exciting post launch updates, but as always let me know if you have suggestions!
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #235 on: November 23, 2023, 11:33:55 AM » |
|
GearBlocks 0.7.8726Hey everyone, I’ve just released an update. New in the game - “attachment bridging”, a slightly easier way to do “node skipping”, with the added benefit that the attachment indicator now shows where the bridged attachments are: Release notes:- - Implemented “attachment bridging” feature and added option to BuilderToolExt script mod to enable it.
- Added option to the selection GUI to disable selection of locked neighbouring parts.
- Enabled rotary, linear, and linear rotary attachment types for pulleys.
- Enabled rotary bearing attachments for angled connector parts.
- Enabled rotary bearing attachment on steering arm part.
- Added resizable “scaffold” axle part.
- Removed TweakEnergyStore variable, tweaking of battery charge remaining now automatically prevented when energy consumption is enabled.
- Added LimitedPartBehaviourTweaking variable, enabling it limits part behaviour tweaking to player input (e.g. key binds) only.
- Added setting to video options that allows for the selection of exclusive or borderless full-screen, or windowed screen mode.
- Added setting to game options to turn off “Start Here!” help message.
- Added error message popup shown when attempting to unfreeze an intersecting construction.
- Updating localised strings with Russian translations thanks to Ludanton!
- Bug fixes.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #236 on: December 07, 2023, 12:24:16 PM » |
|
GearBlocks 0.7.8740Hey everyone, it’s time for another game update! Soap Box ChallengeSee how fast you can get down the hill under gravity alone, no motors allowed. This new scenario gives you an idea of the kind of “mini games” possible with Lua scripting, but it still barely scratches the surface really, hopefully we can push the boundaries of this more in the future. Anyway, check it out and let me know what you think. New PartsContinuous servo motors, more crown, rack, & worm gear sizes, more “hole & plate” connectors, and round ended beams. Part BehavioursSeparate servo forward & reverse angles, flip pulley belts, link displays to multiple parts, etc. Here’s a quick look at some of these changes: Release notes:- - New Soap Box Challenge scenario.
- New parts:-
- Small and medium continuous servo motors.
- 24T and 40T Hi & Lo crown gears.
- x3 rack gear.
- x1 worm gear.
- More “1-Hole Plate” and “2-Hole Plate” resizable connectors.
- Rounded and half rounded resizable beams.
- Part behaviour improvements:-
- Servo motor part behaviour now has separately tweakable forward and reverse angles.
- Servo and stepper motor part behaviours now have an “angular speed” data channel.
- Pulley part behaviour now has an option to flip belt routing.
- Displays can now be linked to multiple other parts.
- Motor, battery, and rotor parts can now attach to each other, and to other parts in a more consistent way.
- Changed plate on “plate axle” connector part to be circular.
- Tweaked material strength of all wheels.
- Added buttons to UI screens to open containing folder in Windows Explorer.
- Added player “free flight movement mode” setting to allow for moving horizontally rather than along the view direction.
- Added settings to the controls options screen for disabling each of the manipulators.
- Improved crosshair.
- Added Hungarian translations to currently localised strings, thanks to BlueGoldFlag.
- Bug fixes.
- Upgraded to Unity 2021.3.33.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #237 on: December 21, 2023, 02:04:18 PM » |
|
GearBlocks 0.7.8754Happy Holidays everyone, I've just released another update, with a bunch of new parts! ClutchesThese attach two axles together, one with a fixed attachment, the other with a rotary bearing. The clutch can be engaged / disengaged with a key press, which will smoothly lock / unlock the rotary bearing. Clutch GearsThese are a type of spur gear that attach to an axle with a rotary bearing only. Similar to regular clutches, they can be engaged / disengaged from the axle they're attached to. BrakesWheels already have built in brakes that you can optionally enable, but these separate brake parts allow you to brake an axle without needing to use a wheel. The brakes attach to an axle with a rotary bearing, and to the part you want to brake against (e.g. a beam) with a fixed attachment. Angle SensorYou can attach an axle to this sensor, and link a display to it. It'll show the axle's current relative angle, RPM, etc. There are a few other tweaks and improvements too, here are the release notes:- - New parts:-
- Angle sensor.
- Clutches x3 and x4.
- Clutch gears x1 to x3.
- 32T and 48T Hi & Lo bevel gears.
- Disk brakes x3 and x4.
- Added brake calipers to wheel brakes.
- Added setting to speed / altitude sensor to use imperial units.
- Parts and materials are now listed in order in UI.
- Bug fixes.
|
|
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #238 on: February 01, 2024, 06:36:47 PM » |
|
GearBlocks 0.7.8797Hey everyone, time for a long overdue update! Combustion Engines - Not Ready Just YetBy this point, I was hoping to have combustion engines done. I tried a purely physics based approach, using separate cylinder, piston, con-rod, & crank rigidbodies, and applying a force to the piston based on the current angle of the crank. This worked reasonably well, but had problems with "phantom forces" whereby the engine got torque applied to it, sometimes flipping over the vehicle it's in. Also, using physics for all the parts like this has RPM limitations, and doesn't scale that well for sim performance. So I've decided to change tack slightly, I still want to keep the appearance of the moving parts (i.e. pistons and con-rods), but my plan is now to procedurally animate these in code. There's not really any need to use physics as these parts can't collide with anything when inside an engine. To apply torque to the crankshaft, I'm working on something similar to the electric motors, but with a different torque curve. Hopefully I'll be able to get this done soon, but in the meantime I thought it would be good to get a small update out. Here's what's in it... PartsThere are now some slider versions of the 1-Hole and 2-Hole connectors, some new "angle axle" connectors, and a larger centrifugal clutch. Also, the rounded beams can now be resized one unit smaller than before. Part BehavioursI've improved how the invert option works for parts with a single key bind (e.g. brakes), adding a separate invert option for the joystick axis. You can now type in values for any part behaviour slider, by right clicking it. Even values beyond the normal slider range can be entered (but no guarantees the physics won't blow up with higher RPMs or torques!) No Collide ToolFor those who want to bypass part collisions in their builds, I've added a new "PartCollision" script mod tool that can be used to disable part collisions. Parts with their collision disabled will still collide with the ground, but nothing else. Here are the full release notes:- - New parts:-
- "1-Hole Slider" and "2-Hole Slider" connectors.
- Angle axle 90, 180, 3 x 90, & 4 x 90 connectors.
- Centrifugal clutch x3.
- Rounded and half rounded beams can now be resized one unit shorter.
- Added "invert axis" option to part behaviour joystick axis settings.
- In brake, clutch, and differential part behaviours, replaced "invert direction" option with "invert control", which properly inverts their control behaviour.
- By right clicking a slider in the part behaviour settings, it's value can now be edited by typing in a number.
- Shortcuts (Ctrl+C and Ctrl+V) for copy and paste in part behaviour settings.
- A construction can now be unfrozen (via the construction UI) while the player is seated in it.
- Lowered minimum mouse sensitivity values.
- Added methods to IConstructionOperations to set whether parts are collidable (and added IsCollidable property to IPart interface).
- Added new PartCollision script mod.
- Bug fixes.
- Upgraded to Unity 2021.3.34.
|
|
« Last Edit: February 01, 2024, 06:43:40 PM by dangersam »
|
Logged
|
|
|
|
dangersam
|
 |
« Reply #239 on: August 10, 2024, 01:24:25 PM » |
|
GearBlocks 0.7.8987Hello everyone, it's been a long time coming, but it's finally time for another update! There's too much to cover in technical detail here really, so I'll just give a brief summary... Combustion EnginesAs I mentioned in my last post, I tried using physics forces applied to physical piston and con-rod parts to drive the engine. After prototyping this, I found it not be a viable solution, due to phantom forces (from rapidly moving piston and con-rod parts), performance cost, and other issues. Mean Value ModellingI looked into other possible methods for simulating internal combustion engine. The basic requirements being: a model that takes current engine RPM and throttle amount as inputs, and calculates output torque. Ideally it should be parameterised to allow for tweakable engine characteristics (giving different torque curves etc.) Some possibilities included (in order of complexity): lookup tables, mean value modelling (MVM), 1D or multi-D fluid dynamic modelling. After investigation, I chose a basic MVM approach for relative simplicity (for performance and implementation), while still providing more flexibility and realism than a simple lookup table based solution. This required implementing code for:- - Gas (air) physics - flow rate calculation (choked flow), pressure state equation, etc.
- Engine physics - calculations for: throttle air flow rate, fuel flow rate, volumetric efficiency, thermal efficiency, indicated torque, friction loss torque, and pumping loss torque.
- A "sim updater" to update the simulation multiple times per fixed update (giving a smaller time step per update). I found this was necessary to improve simulation stability of the throttle air flow and intake manifold pressure.
- Part behaviours for the engine crank, head, throttle, etc. to calculate their various parts of the simulation.
PartsI've made a selection of new parts (cranks, cylinders, heads, throttle, etc.) that you can use to build combustion engines.  There are three crank parts (rear, middle, front) that can be assembled together to make a crankshaft. An engine must at least have a rear crank part, as it is the "driven crank" - i.e. it has the part behaviour that actually calculates and applies torque to the crankshaft. The piston and con-rod are not separate parts in of themselves, but are shown automatically when a cylinder and crank are linked together. They have no associated physics rigidbodies, they're just animated based on the crank angle relative to the cylinder. You can make pretty much any engine configuration you like! SoundI wanted the engine sound to be derived from and recognisable to any given engine configuration. For simplicity, the approach I went with is to play a looped "single cylinder" sound for each of an engine's cylinders, with pitch and volume varied based on RPM and engine load. The audio playback is then synchronised across all the cylinders, with a precise timing offset for each cylinder. I developed a method for determining timing angle from firing order and crank angle, and then used this to calculate the offset for audio synchronisation. I found the ear is very sensitive to small changes in audio timing, but when the playback is synchronised with the correct offsets, out pops the characteristic sound of a V6, V8, V10, and so on! The resulting sounds aren't perfect by any means. For example, the sound sample I used could be better, and there are phasing issues with certain engine configurations which can cause the overall sound to be a bit "weak" in lower frequencies. However, I'm generally quite happy with the results, given the low implementation and performance costs. Lua Script ModsTo assist the player when building and tweaking combustion engines, I figured some additional tools would be useful. These were implemented as Lua script mods. The EngineTool shows an engine's firing order, provides a choice of predefined firing orders, and allows firing order to be individually adjusted per cylinder head.  The PartBehaviourGraph script mod displays real-time graphs of part behaviour data channels. It will work with any part behaviour, but will be especially useful for monitoring combustion engine torque, power, etc. More Parts and MaterialsThere are a bunch of other parts in the game too, torsion springs, pipes, more gear & pulley sizes, new wheels, and more.  Linear actuators now have new "stepper" and "auto centre" operating modes, configurable in the part behaviour menu. The materials have tweaked density & strength values, and there are new material types such as lead, teflon, and rubber. Example ConstructionsThere are some new examples in the kit building scenario you can try out, to get a feel for putting engines together.    Okay that's it for this update, I hope you enjoy it! Full release notes:- - New parts for building combustion engines:-
- Cranks.
- Cylinders.
- Heads.
- Throttle.
- Starter motor.
- Alternator (generator).
- Fuel tanks.
- Fans.
- Added new engine and fuel link types (for use when building engines).
- Other new parts:-
- Racing wheels 4x8 and 5x8.
- Torsion springs (axle-to-axle & block-to-axle).
- Centrifugal clutch ring gear x3.
- Spur gears 10T, 14T, 18T and 22T.
- Pulleys x1.5 and x2.5.
- Pipe sections.
- "V" and "W" angled blocks.
- Gusset x1.
- Racing helmet for characters.
- Materials:-
- Density and strength values tweaked to try and better match real world values.
- New materials added: glass, glass fibre, lead, rubber, teflon, and tungsten.
- Linear actuators now have tweakable min / max extension and new "auto centre" and "stepper" modes.
- New constructions added to the kit building scenario:-
- Go-kart (1 Cylinder).
- Sports Car (4 Cylinder).
- V12 Formula Racer.
- Flat 6 Endurance Racer.
- Lua scripting changes and new features:-
- Added methods to IDataSource interface to get a part behaviour's individual data channels (old methods for getting data now deprecated).
- Each data channel can now be a different type (float or boolean), and is accessible via a new IDataChannel interface.
- New "shapes" UI element (use IElementFactory.CreateShapes() to create from Lua) for adding custom quads, primitives, and lines within a UI canvas.
- New "time series graph" UI element (use IElementFactory.CreateTimeSeriesGraph() to create from Lua).
- New "text objects" - UI text that can be located in 3D space, created in Lua via the TextObjects global (see ITextObjects interface).
- Added support for resizable UI windows (see IsResizable and other new properties in IWindow interface).
- Added support for rotating UI elements (see IRotatable interface).
- Added Vector2 type.
- New script mods:-
- UIShapesTest - Demonstrates UI shapes.
- TimeSeriesGraphTest - Demonstrates UI time series graphs.
- PartBehaviourGraph - Displays real-time graphs of part behaviour data channels (such as torque, power, etc.)
- EngineTool - Shows an engine's firing order, provides choice of predefined firing order, or for individual adjustment per cylinder head.
- MiniMap - Displays a map showing construction locations in the scene.
- Improved debug console (window background, command history length).
- Bug fixes.
- Upgraded to Unity 2021.3.40.
|
|
|
Logged
|
|
|
|
|