Reminder:

Make sure your build is at or higher than the latest build posted below. If it's lower, verify the game contents to force an update. It's also important to remember that the sandbox depot is not updated regularly. This depot is only used for confined testing. If you were working with me on one of these confined tests, please remember to opt out of the sandbox depot so you're always receiving the most up-to-date build of the game.

Tuesday, January 31, 2017

Build: 1602294

Editor Updates

A majority of the issues with the level editor are addressed in this build. Specifically a lot of the unusual graphical glitches that were introduced with Unity 5. A lot of visual quarks are still there but these issues will be addressed over time as they're fixed in the main game too. These include objects like glass doors, roaming spikes, and just in general a lot of the more obscure objects.

Please note, this update does nothing for controller support in the editor. That's still going to be a massive overhauling to even begin work on. Currently the editor can't be accessed via controllers at, it simply won't launch from controller input. Once support is there, it will.

Monday, January 30, 2017

Build: 1599973

Legacy Controller Support
This update adds a layer of abstraction to most Steam Controller inputs that allow for non-Steam configured controller configurations to work in the game. This means the DualShock 3 will properly work without support for the Steam Controller API. It also allows for people to play using an Xbox One or Xbox 360 controller without the need to set up a configuration via Steam.

There are three  catches though.

  • First and foremost, level editor support will only work with controllers configured with the Steam Controller API. This is because the editor is planned to take full advantage of the actions provided by the Steam Controller API, specifically the ability to assign actions to buttons.
  • Second is a lack of button mapping. As of the time of writing this, there is no plans to add button mapping to generic controller input. Unity doesn't make this easy and I don't intend to go out of my way to recreate the same functionality that Steam already has built into their controller API.
    • Steam Controller API support is not only free, it's expandable and far more powerful than anything I'd be able and willing to recreate. If you want to remap your buttons, there's no reason not to utilize the Steam Controller API.
  • Finally, the game won't pause when a controller is disconnected. Unity does not appear to reliably detect when controllers have been disconnected. This is especially true for wireless controllers since Unity often treats the wireless adapter itself as being whatever controllers are interacting with it. Since a disconnected wireless controller doesn't remove the adapter as being available, Unity doesn't recognize the disconnect.
    • This isn't an issue with the Steam Controller API which explicitly informs the game when a disconnect occurs.
Recommended Configurations

There are now a set of recommended configurations that Steam will offer you when choosing a base configuration for your controller. Each of these configurations were specifically designed to be as universal as possible while maintaining a layout that makes sense for the respective controller. For example, the Steam Controller replaces right touchpad with mouse input and the left touchpad with the ability to scroll.

Additional Fix
Entering FreeView mode from the pause menu is now working properly. Previously entering FreeView mode from the pause menu via controller would appear to resume the game and any attempts to pause the game would automatically activate FreeView mode.

This is a result of a bug in Steam which causes actions to get stuck when transitioning between action sets. Since selecting FreeView would instantly transition into FreeView mode, the "Select" action would get frozen in a "true" state, resulting in any attempts to access the pause menu automatically "selecting" FreeView.

While the issue is confirmed by Valve to be an issue on their end and is fixed in the Steam beta client, the game will now wait until the button is released before switching action sets, preventing its state from freezing as true.

Sunday, January 29, 2017

Build: 1597827

Leaderboards

The leaderboards can now be properly navigated with a controller.

They've also been updated to automatically round to the nearest hundredth decimal point to avoid excessively long scores ending in .06001 which seemed to be an unusually common occurrence.

FreeView

This update also makes a long overdue update to FreeView mode which brings it up to date with the current look of the game as well as slimming down the UI elements to make it less visually intrusive to the entire goal of FreeView which is to look at the level.

Along with the visual update, the mode is now fully supported by the controller and can be accessed via keyboard with the tab button on keyboard to make it's accessibility comparable to the instant access provided on controller via the select key (default).

Moving On
This update for the most part sums up controller support for the base game. Aside from small tweaks, adjustments, and bug fixes, the focus is going to move forward toward fixing the level editor to work with the Unity 5 build of the game. This includes the potential of having controller support included here as well, though I'm not prepared to make any formal promises just yet.

Tuesday, January 24, 2017

Build: 1589080

Small Refinements
Another small update here just to make sure I'm keeping pace. This small update fixes the Pause Screen so that the cursor overrides the controller when it begins hovering over menu items.

It also allows the Press Start prompt to change depending on whether or not a controller is found. Displaying "Press Shift to start." instead of an empty spot where the input prompt would otherwise be.

Still left to be done for in-game controller support includes:
  • FreeView mode.
  • Controller inputs for the level complete screen.
  • Controller support for the Level Select screen.
Level Editor
I'm well aware of some massive drops in performance that the editor has endured since the update to Unity 5. This is a result of not addressing any of the flood of issues that Unity 5 created in that respect. The editor is a very complex bit of the game and will need some special attention to get back in a working state. Nothing that's beyond fixing, make no mistake. But controller support has been the primary focus right now.

That being said, the level editor still works perfectly fine in the depreciated legacy branch and levels created with that branch will not be incompatible with any future builds of the game between now and when the editor is eventually back in an acceptable state. So please feel free to use that branch if you want to continue creating levels and uploading them to the workshop. Just be aware that as I've said before, this branch is the last build of the Unity 4.6 version of the game and will no longer be updated. It will also be removed once all the issues between the Unity 4.6 and Unity 5 builds have been addressed.

Monday, January 23, 2017

Build: 1586857

Pause Menu
This small update adds the ability to navigate the pause menu with the controller. FreeView and Level Select are next on the list.

Bug Fixes

  • Pressing the guide button on the Steam Controller is no longer seen as an unknown controller.
  • In-Game will no longer spam the action set to the Steam Controller API.
  • Game should no longer become irreversibly paused when opening the Steam Overlay on the level complete screen.

Build: 1584926

Steam Controller API
The first major update for the Steam Controller API support has just gone live. While there's still a lot of work that still needs done, this update is far from small.


Title Screen Navigation
Currently this means accessing packages and individual levels from the Player Crafted panel, though filter control isn't available just yet. Resolution and audio panel control might still get reworked before release so these panels are also currently inaccessible via controller and probably won't be until their design is finalized.



Gameplay Control
Gameplay also now properly responds to controller input, including analog input from the analog sticks and triggers, allowing for more fine movement than digital input from the keyboard could otherwise offer. This isn't to say that keyboard controls aren't still the primary way to play. The game itself was designed with digital inputs in mind. However this added level of control comes across as a bonus for people who prefer controllers to not feel as though their inputs were merely forwarded key presses.


Naturally the game will automatically pause when it detects the number of controllers available has been reduced below where it was originally. While this phrasing might seem like a strange way to describe a controller being disconnected, it's entirely possible to have more than one controller plugged in at a time. Diamond is a singleplayer game but because it's capable of receiving inputs from whatever controller is currently "Active", this distinction means that regardless of what controller you're using, if any controller is disconnected, the game will pause.

Xbox, DualShock, and Steam Controller

It can't be stated enough that despite the name of the Steam Controller API, support for this API also includes support for all three major controller layouts and any future controllers Valve adds to Steam in the future.

The icons above are used to represent the controller detected when connected. With no formal way to detect a controller type via the API however, the game detects the controller type based on the button mapped to the "Select" action under the Menu Control action set in controller configuration.

For instance, if the game detects that "Select" is bound to the X button on a DualShock controller, it can safely assume that the DualShock icon is appropriate to display when letting you know a controller was detected.

That being said, it's important to remember that the Xbox and DualShock controllers do not currently have "Official" bindings yet, so you'll need to make sure to check and make the appropriate bindings when attempting to play with either of these controllers. This won't be the case upon release.

Unknown Controllers

Because of the way controllers are detected, if the game isn't able to automatically detect your controller, it has no way of knowing if it's either because the controller isn't properly configured or because you're using a new type of controller that the game wasn't designed to detect.

In this case, you'll be given a dialog describing the circumstances and what the likely cause is. If you're using a supported controller, it'll recommend checking your configurations. However because of the nature of the Steam Controller API, it's also entirely possible that the controller was simply added later down the line and the game simply isn't aware of what kind of input prompts should be displayed. In this case, the game should work perfectly fine as long as it's configured properly.

Work In Progress
One major area that you'll notice in this update however is that the pause menu is still inaccessible via the controller. This isn't an issue with the Steam Controller since you can still navigate it with the right touch pad as a mouse, however keep this in mind when trying to play with a controller.

Friday, January 13, 2017

Updated Input Glyphs


Just a brief update showing off the various input glyphs for the three major controller styles Diamond is going to support through the Steam Controller API.

Generic input will be available via the input settings in-game which will allow you to manually switch between Xbox and DualShock prompts, however the main way to handle input will be via the Steam Controller settings available in Big Picture Mode.

It should be noted that once this update goes live, unless you're using a Steam Controller, you'll need to manually enable Xbox One or DualShock 4 support via the Settings in Big Picture Mode. From there, you can change and adjust the button mapping however you want and the game will automatically use the new inputs and display the proper input glyphs for whatever you have mapped.

Wednesday, January 11, 2017

Full Steam Controller Support

With the majority of the issues from upgrading to Unity 5 addressed (though not available yet), work is currently being shifted toward getting full support with the Steam Controller API.

No Steam Controller? No problem.

What the Steam Controller API allows the game to do is interface with the powerful controller customization that's available in Steam. This functionality is still very new on Steam, such that it's currently only available in their beta client. This means Diamond will be among the first games to fully utilize its functionality.

So what does this mean for people not using Steam Controllers?


In short: It means if you're using an Xbox One, DualShock 4, or Steam Controller, you'll be able to fully configure the controller however you want.

Instead of relying strictly on generic button presses which can't be easily remapped, Diamond will be utilizing Actions and Action States supplied by Steam to provide information about what's going on with the controller. In addition to being able to remap these actions to whatever type of input you want, the game itself will be able to display accurate button prompts that reflect the changes you've made in the controller configuration.


This means any controller input can be mapped to any in-game action, including the gyroscope functionality in both the Steam Controller and Dual Shock 4.

Above is the current progress on creating the various in-game glyphs for each controller input that's available for each controller. There's still a lot of work to go but I'll be sure to keep the blog up to date with the latest news.

Saturday, January 7, 2017

Build: 1556094

Incremental Update

  • Solid bricks have had their cubemap reflectivity fixed to match what was originally in the Unity 4.6 build of the game.
  • Light caps for color switches and field switches have been updated to be more vibrant.
  • Player model has a completely new material which features real-time reflections of the play field surrounding the player.
  • Diamonds have been reworked to have real-time reflections and a more bold vibrance to them, making the colors easier to distinguish without sacrificing visual quality.
Naturally all of these updates are going to be subject to optimization prior to release and due to their overhead, will absolutely be adjustable under graphical settings. As of this build, a screen full of diamonds at 1920x1080 will get you about 90fps on average with a GTX 970.

Sunday, January 1, 2017

Build: 346391

Unity 5 Update
The latest build addresses a tagging issue which broke both the editor and player in very unexpected ways.

  • Levels will no longer get frozen in a black void when beginning.
  • You can now place and delete objects in the editor again.
  • Developer mode is activated to allow for more transparency behind the scenes. This should make it a little easier to report issues.
There is still a lot of work left in the Unity 5 update but progress is now back on track.

If you wish to continue playing the old version of the game, remember you can still access it via the depreciated build tree, but again I'd like to remind you that this build will no longer be receiving updates and will only be around until the newest build is back in a stable state.