Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1397260 Posts in 67453 Topics- by 60669 Members - Latest Member: atrium-ranadeep

December 05, 2021, 11:58:34 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsGearBlocks - Build working physics based machines and mechanisms [DEMO]
Pages: 1 ... 9 10 [11]
Print
Author Topic: GearBlocks - Build working physics based machines and mechanisms [DEMO]  (Read 33143 times)
dangersam
Level 1
*



View Profile WWW
« Reply #200 on: March 06, 2021, 02:28:38 PM »

GearBlocks Demo 0.6.7734

Hey all, I’ve just put out another minor demo update, just a few tweaks and bug fixes in this one.

Steam store page

Release notes:-

  • Added check to prevent too many parts from being spawned.
  • Increased camera far clip distance and shadow draw distance.
  • Bug fixes.
  • Upgraded to Unity 2019.4.21.
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #201 on: March 07, 2021, 01:32:48 AM »

I strongly recommend to add at least one video to your store page!
Logged

dangersam
Level 1
*



View Profile WWW
« Reply #202 on: March 07, 2021, 01:52:01 PM »

I strongly recommend to add at least one video to your store page!

Thanks, yeah I really need to make a trailer video!
Logged

dangersam
Level 1
*



View Profile WWW
« Reply #203 on: April 17, 2021, 02:31:13 PM »

Hey everyone!  Things have been kinda hectic lately, I'm currently in the process of finding a new place to live, which has been quite disruptive to getting work done on the game.  But, I'm still slowly making progress, so time for a long overdue update I think.

As you may know, in the past I've gone back and forth on whether to change the building system in the game to make it more user friendly.  Although many people have gotten used to the current controls, I still think that quite a few (especially new players) find them a bit awkward and off-putting.  I really should have dealt with this a long time ago, but I just couldn't think of a design that I was happy with, so to be honest I just kept putting it off.  Anyway, lately I've been having another go at prototyping some new ideas to try and address these problems once and for all.

I've made a dev diary video on all this, that way it's a bit easier to explain what I've been working on!


Logged

dangersam
Level 1
*



View Profile WWW
« Reply #204 on: June 12, 2021, 10:10:52 AM »

It's been a while, so time for a quick progress update!  I've moved into a new place now and I'm back up and running, so that distraction is out of the way thankfully.  I've been continuing work on trying to improve the building system.  Part multi-select is now pretty much done, and I've been trying out some ideas for selection rotation, check out the latest dev diary video for more details.

These changes are in the demo pre-release branch on Steam, so give that a try and let me know what you think!


Logged

dangersam
Level 1
*



View Profile WWW
« Reply #205 on: August 05, 2021, 09:49:35 AM »

The work on improving the building system continues, with new transform manipulators, and a better way to align parts together.

The demo pre-release branch is updated now with the new manipulators and alignment system.


Logged

dangersam
Level 1
*



View Profile WWW
« Reply #206 on: September 03, 2021, 06:14:16 PM »

 Another dev diary, this time discussing improvements to the existing builder tool manipulators, and introducing a new part resizing manipulator.

As always, I’ve updated the demo pre-release branch with these changes to the building system, so you can try them out and let me know what you think.


Logged

dangersam
Level 1
*



View Profile WWW
« Reply #207 on: October 29, 2021, 06:16:15 PM »

GearBlocks Demo 0.7.7969

Hi everyone, I've now updated the demo main branch with all the builder tool changes from the past several months, so I thought it would be a good idea to summarise everything here.

Part multi-selection

The builder tool controls for part selection and movement hadn't really changed much since early on in the project.  Left clicking on a part in a construction would toggle selection on, and then the mouse (and player movement keys) would move the whole construction around.  Clicking again would deselect (and unfreeze) it.  Holding the right mouse button on a part would detach it from the rest of the construction.

However, I wanted to introduce the ability to select multiple parts of a construction and manipulate them together, independently of the rest of the construction.  The old selection controls didn't adapt well to this, so I re-implemented them to adopt a "drag and drop" paradigm.

So now, left clicking on a part selects only that part (not the whole construction).  To move the selection around the left mouse button has to be held down while dragging, and releasing the button will stop moving it, leaving it frozen in place.  Releasing the selection while aligning it to another frozen part will attach it to that part.

The right mouse button no longer detaches a part (it now always deletes it), because a part can be detached simply by selecting and dragging it away from the rest of construction.

In order to select multiple parts of a construction, holding left control and left clicking on a part will add or remove it from the selection.  Then, all selected parts can be moved around together, allowing for easier modification of sub-sections of a construction.

Often it's still useful to move an entire construction around, and to do this all of its parts must be selected to avoid breaking it apart.  Holding left control and pressing A while targeting a construction provides an easy way to do this.

Finally, left clicking while not targeting anything will deselect any parts currently selected.

I've also tweaked the part highlighter rendering to more clearly convey the distinction between unfrozen, frozen, selected, and targeted parts.  Frozen parts are outlined in blue, selected parts in orange, and the targeted part in white.  An example of this can be seen here:



Move manipulator

Building on the part selection changes, I wanted to introduce the concept of manipulators, kind of like "sub tools" within the builder tool itself.  The idea being that they provide an easier and more obvious way to perform certain transformations on the selection (e.g. translation, rotation, etc.)  The first of these to discuss is the move manipulator, I'll go over the others later on.

The first step was to implement a way to author pivot points for all of the parts, and to make it possible for the player to target and select them.  The selected pivot point then provides the anchor for transforming the selection with the manipulators (being the centre of rotation for example).  The targeted pivot point is indicated by a small circle as can be seen in the previous image.

Next, I factored out the code for clicking and dragging the selection from the builder tool, forming the basis of the new move manipulator.  It provides drag and drop behaviour in much the same way as before, except that I also added a more obvious draggable "handle" (positioned at the selected pivot point).  Pivot points can only be targeted on selected parts, but clicking and dragging on an unselected part will select it and also select the closest pivot point all in one go, as a shortcut to help speed up building.

Once a pivot point is selected, the selection is detached from any unselected parts in the rest of the construction, and the move manipulator handle appears as a larger circle, as seen below.



In the example shown the selection is being aligned to another frozen part, and a valid attachment is possible, so the selection is outlined in green.  If the attachment was not valid (e.g. due to part interpenetration) it would be outlined in red.

By clicking and dragging the move manipulator handle, the selection can be moved, allowing it to be repositioned, aligned for attachment, or detached altogether.

The pivot point can be deselected by left clicking while not targeting a selected part, this will attach the selection to any other parts it's being aligned to (if a valid attachment is possible).

I also carried over the shortcut keys for use while dragging the move manipulator handle.  Holding down left shift and moving the mouse translates the pivot point (moving the selection under the crosshair).  Holding down left shift and using the directional keys (e.g. WASD) will rotate the selection in 90 degree steps.  Holding down left control and using the directional keys will resize the selected part (if applicable).

These shortcuts are mostly the same as with the original building controls, even holding the right mouse button to rotate the selection with the mouse still works, for those who are used to the old way.

Recap of the builder tool controls

Selecting parts:-
  • LMB to select the targeted part (and deselect all others).
  • Left control + LMB to add or remove the targeted part from the selection.
  • Left control + A to select all parts of the targeted construction (and deselect all others).
  • LMB while not targeting any parts to deselect all.

Moving the selection:-
  • LMB on a selected part (or hold LMB and drag on any part) to:-
    • 1) Select the targeted pivot point.
    • 2) Show the move manipulator.
    • 3) Detach the selection from any unselected parts in the rest of the construction.
  • Hold LMB and drag the move manipulator handle to move the entire selection, align it to other frozen parts, and so on.
  • LMB while not targeting a selected part to:-
    • 1) Attach the selection to any other parts it's being aligned to.
    • 2) Hide the manipulator.
    • 3) Deselect the pivot point.

Shortcuts while dragging the move manipulator handle:-
  • Hold left shift and move the mouse to translate the selection under the crosshair.
  • Hold left shift and use the directional keys to rotate the selection in 90 degree steps.
  • Hold left control and use the directional keys to resize the selected part.
  • Hold RMB (or left shift + RMB) for legacy mouse rotation.
  • Mouse wheel (or hold left alt and use mouse) to "dolly" the selection.

Other:-
  • Hold RMB to delete the targeted part.
  • Left control + D to duplicate the targeted part.
  • Left control + F to freeze / unfreeze the targeted part.

There is a lot to remember here, but the in-game UI overlays are there to provide a reminder of the available actions and key bindings in the current context.

Alignment targeting

Until now, to align and attach the selection to another frozen part, the crosshair would have to be directly over the frozen part being aligned to.  I don't think this is very intuitive, so I re-implemented the system to use a volume based on the selected pivot point to find the part to align to.

Before, a Raycast would be fired forward from the player's viewpoint to find the part.  Instead now, it uses a BoxCast (again directed forward from the player's viewpoint).  A part's selectable pivot points are typically grouped together, and the group containing the selected pivot point determines the size of this box.  For some parts (such as beams and plates) the box happens to encompass the whole part, for others (such as gears and wheels) it does not.

The image below shows one beam being aligned to another without the frozen one needing to be directly under the crosshair.



In some cases however, the more precise Raycast method is still preferable.  For example, inserting a beam in between two other beams is hard to do with a BoxCast, because the selection will tend to align to the outside of one of the beams, as shown here.



So the final solution I came up with was a combination of both methods.  First a Raycast is tried, and then if that doesn't find a part to align to, the BoxCast is attempted as a second step.  This allows for more precise targeting when needed by aiming the crosshair over the desired part.  In the beam example, this makes it easier to insert the part, as shown below.



The other manipulators

In addition to the move manipulator, I've also implemented manipulators specifically for translating, rotating, and resizing the selection.  These manipulators can be switched between using the R, T, and Y keys respectively.  Pressing the key for an already selected manipulator will disable it, leaving only the move manipulator active.

Translation manipulator

The translation manipulator has handles that can be targeted and dragged to translate the selection along the x, y, and z axes (oriented relative to the pivot).  It also has shortcut keys, holding left shift and using the directional keys will translate the selection in unit steps.



Since the last dev diary video, I've also implemented code to align the selection while using this manipulator.  To do this it uses a BoxCollider, again taking the selected pivot point group for size, and positions it relative to the pivot point.  It then detects collision contacts against the collider with frozen parts, to find any directly adjacent ones to align the selection to.

Rotation manipulator

The rotation manipulator also has draggable handles, in this case to rotate the selection around the x, y, and z axes.  Again, it has shortcut keys, left shift and the directional keys will rotate the selection in 90 degree steps.  It will also now align the selection while rotating it, in the same way as the translation manipulator.



Resize manipulator

A long standing request from some players has been to make part resizing easier and more intuitive.  The resize manipulator is now there to achieve this, it provides draggable handles to resize the selected part.  Just like the other manipulators it also has shortcut keys, left shift and the directional keys will resize the part in the available resizing directions.



This manipulator is only available for use if a single part is currently selected (and that part is resizable of course).  Resizing multiple parts together is not possible, although I may revisit this in the future.

Summing up

OK, that's about it for this update!  Sorry it was a long one, despite skimming over a lot of details.

There's still a lot more I want to do to further improve the building controls, and extend their functionality, but I think I now have a solid basis to work from.  The most important thing now is to implement some tutorials to introduce players to building in GearBlocks, so that's what I'll be working on soon.
Logged

dangersam
Level 1
*



View Profile WWW
« Reply #208 on: November 12, 2021, 12:56:22 PM »

GearBlocks Demo 0.7.7985

OK, I’ve just released a minor update to the demo with a few small changes.

I changed part duplication to behave more like it did before the builder tool overhaul, so that you don’t have to hunt around for the duplicated part, and thereby hopefully speeding up the building process.

Now, holding Left Alt + LMB duplicates the targeted part.  After which, releasing Left Alt (while still holding LMB) allows the duplicated part to be dragged away for repositioning.

I also fixed a couple of bugs relating to part selection and the move manipulator.

Steam store page
Logged

dangersam
Level 1
*



View Profile WWW
« Reply #209 on: November 24, 2021, 05:57:31 PM »

GearBlocks Demo 0.7.7998

Another minor demo update is now out with tweakable wheel friction and control wheel torque, and a few other improvements and fixes!

Steam store page

Release notes:-

  • Added sliders to the wheel's part behaviour UI for setting its longitudinal and lateral friction coefficients.
  • Added a slider to the control wheel's part behaviour UI for adjusting its torque.
  • Reimplemented options serialization code so that saved settings will persist across future version updates.
  • Added button to the controls options screen to reset key bindings back to their defaults.
  • Added multiple player spawn zones to the "desert proving ground" map (spawn position chosen from a random zone when starting a new world).
  • A construction's position is now reset if it goes out of bounds of the world map.
  • Bug fixes.
Logged

Pages: 1 ... 9 10 [11]
Print
Jump to:  

Theme orange-lt created by panic