Dev update

OK, time for a long overdue GearBlocks progress

update.  As I’ve mentioned in previous posts, I wanted to improve the construction controls, to try and make them a bit more approachable and accessible, and this is what I’ve mostly been working on over the past couple of months.

Failed ideas

I wanted to explore some new ideas in an attempt to improve part positioning and alignment, and also part resizing.

So I tried making a prototype of a “snap to” grid aligned to the overall frozen construction (instead of to the currently highlighted part as it is now).  While the player is positioning the selected construction ready for attachment, I had a 2D planar grid aligned to the frozen construction that the selection snapped to at unit intervals.  The player could then move this plane up and down along its normal (also at unit intervals) using the mouse wheel, thereby allowing snapped positioning in full 3D space.  There would also need to be some provision for snapping to half unit intervals, although I didn’t get that far with it.  This seemed promising initially, but what killed the idea for me in the end was the realisation that (unlike the current system) it doesn’t easily allow for attachment at arbitrary angles, everything has to be aligned at 90 degree intervals relative to the frozen construction.  At least I couldn’t think of a practical way around this, and I certainly didn’t want to make it less flexibile than what I already have.

As for part resizing, I thought about separating it out into another tool (with handles that you drag around to resize the part), but not only is this more complicated to implement, I actually think it would be less convenient to use.  Every time you want to resize a part you’d have to deselect it, switch to the resize tool, do the resizing, switch back to the builder tool, and select it again.

So in the end I decided against making any radical changes to the current construction controls, and instead focus on improving what’s already there.  Let’s go over the changes I ended up making.

Construction alignment

One issue with positioning parts is that the alignment grids aren’t always easily visible.  Also, because they’re drawn on top of the parts themselves, it sometimes makes it hard to tell which parts are in front of each other, or even which part you’re about to attach to.  So I changed the grid textures to make them clearer, and modified the shader to fade them out slightly where drawn “behind” objects.  You can see the difference between the old and new grid below.

image
image

Another problem is that when you’re aligning parts together, you don’t know where the individual attachments will be created.  So now during alignment, indicators are shown for the attachments that will be created, an example of this is shown below.

image

Lastly, rotating the selected construction can be kind of awkward at times, and I wanted to see if could improve this in any way.  I tried making the rotation be limited to one axis at a time during alignment, and that turned out to help a quite lot because it prevents “drift” away from the player’s intended rotation.

Part resizing

One of the main problems with the current resizing controls is that they’re non-obvious, particularly to new players, because there’s nothing showing them what to do.  As a first step towards improving this situation, I’ve now added a resize indicator that shows the available resizing directions (colour coded for the horizontal and vertical directions).

image

I’m also going to add a new tool UI display that (among other things) will show which keys to use to resize in each direction.  Hopefully both of these changes together will make resizing a bit clearer for the player.

Attachment indicators

The attachment indicators also suffered from not being very visible a lot of the time, so I modified their textures too, and also tweaked them to ensure visibility from all angles.  Here’s an example showing before and after these improvements.

image
image

Other improvements

I’ve also worked on several other bits and pieces, for example:-

  • More user settings (such as mouse sensitivity for selection translation and rotation).
  • Better in game context sensitive hints.
  • Lights can now (optionally) have a key bound to switch them on and off, just like motors.
  • The construction frozen state is now saved / restored from saved games.
  • A whole bunch of bug fixes (many of these you guys found and reported back to me, so thank you!)

Next up

I’m fairly happy with how things turned out after the changes I made, yes the construction controls could still be better, but they’re acceptable, and at this point I need to move on to other stuff really.  There are one or two more small tweaks and bug fixes to do, but apart from that I’m done with the controls and ready to tackle the next thing.

I want to get another demo build out fairly soon, but I still have a laundry list of small tasks to sort out before I can do that, so those are what I’ll be looking at next!