I’ve just added achievements to my game Layers and thought I would write a quick guide on how I did it as I haven’t posted anything in awhile.

Adding the Steamworks package

  1. Go to https://github.com/rlabrecque/Steamworks.NET/releases and download the latest release, make sure you download the .unitypackage. You will then need to import this into your Unity project.

  2. In the root of your project folder open the steam_appid.txt file and replace the 480 with your Steam AppId. Relaunch Unity.

  3. On your initial scene, create a new game object, call it something like “Steam Manager” and add the SteamManager.cs script found in Scripts>Steamworks.NET

  4. Open SteamManager.cs and edit line 92 to your Steam AppID

            if (SteamAPI.RestartAppIfNecessary((AppId_t)YOUR_APP_ID))

That’s all you need to integrate Steamworks into your project. Just make sure the Steam client is running in the background you should be able to hit play in the editor and have no errors.


Adding achievements is really simple.

  1. Create the achievement in the Steamworks web portal Image.

    The “ACHIEVEMENT UNIQUE ID” is the ID of the achievement that we want to unlock so I tend to call it something that relates to the actual achievement.

  2. To unlock an achievement its just this bit of code.

Steamworks.SteamUserStats.SetAchievement("ACHIEVEMENT UNIQUE ID");

I like using Linux for everyday use as well as for developing. The Unity Linux Experimental build works great and up until now I found Visual Studio Code worked for the smaller projects I created. However the bigger project I am working on now needs to use the full use of Microsoft Visual Studio and it’s extenstions.

This is a little step by step on how I got Microsoft Visual Studio to work on Linux using Virtual Box and the Unity3D Linux build.

  1. First things first you need to install Virtual Box
  2. Once you have install VirtualBox you need to create a new Windows virtual machine. https://docs.oracle.com/cd/E26217_01/E26796/html/qs-create-vm.html

  3. Once you have added the virtual machine you will need to change a few settings in it.
    1. In the System tab and up it’s Base Memory to about 2GB.
    2. In the Display tab go to Screen and tick Enable 3D Acceleration. Then put the Video Memory to the highest (Probably 256MB)
    3. You will need to add a shared folder so you can access your Unity project from within the virtual Machine. Go the the Shared Folders tab and add the folder that contains your project.
  4. Boot into your virtual machine and download the a copy of Microsoft Visual Studio as well as a version of Unity that matches the version you have on your main Linux computer.

  5. Load up Unity in your Windows virtual machine and open your Unity project from the shared folder you added (It’s probably on the desktop). Click continue on the warning about a version mismatch.

  6. When Unity loads up click Assets > Open C# Project, Microsoft Visual Studio should now start up. If you get security warning about a untrusted source just click OK. That’s only showing because of the way the shared folders work.

  7. If all is good you should now be able to close Unity in your Windows virtual machine. If your solution fails to load with the error The Project requires user input then you need to right click the project in the Solution Explorer and select Reload Project as explained here.

There are quite a few downsides from doing this though:

  • You can’t link up Visual Studio and Unity for degugging
  • You can’t open a file in Visual Studio from Unity
  • You have to create new scripts from within Visual Studio and not Unity. If you create them in Unity and reload the solution it loses references and you will need to do step 5 & 6 again.

Even with the downsides I think its worth it for the extensions and flexibility you get with Visual Studio. When you get accustomed to the workflow of switching between your VM and native Linux machine it isn’t actually any slower. When I need to debug I just use Visual Studio Code for everything else I use the full version on Visual Studio in the Windows VM.

I hope this helps people that want to use Visual Studio on their Linux computers without having to dual boot into Windows.

This short guide will show you how to make the circle animation below. It’s actually quite simple.

alt text

First you will need to create an image to use for your animation. If you’re to lazy you can just use the one I made. Download Image. Save it into the Assets folder of your Unity project.

We are going to make the background image first. Create a new UI Image object (Gameobject > UI > Image) call it “Loading Circle”. On the Image Component set the Source Image the one you created or downloaded and give it a colour you fancy.

Once you have done that you will need to duplicate it (Right Click > Duplicate). Rename the duplicated gameobject to “Progress”, make it a child of the “Loading Circle” gameobject and change its anchor points to stretch on both the X & Y axis. Again change it’s colour to something you want.

On the “Progress” gameobject change the Image Type on the Image Component to “Filled”, set the Fill Amount as 0.1, and ensure Fill Method is “Radial 360”.

All you need to do now is assign the script below to the “Progress” gameobject and you should have a working animation.

The Code

using UnityEngine;

public class LoadingCircle : MonoBehaviour
    private RectTransform rectComponent;
    private float rotateSpeed = 200f;

    private void Start()
        rectComponent = GetComponent<RectTransform>();

    private void Update()
        rectComponent.Rotate(0f, 0f, rotateSpeed * Time.deltaTime);

This is a sneak peak on the hacking game that we are currently working on called “System Subversion”. Everything you see is very early in the build process so will more that likely change in the final game.

The plan is to have it semi-realistic with the game’s core element being the terminal window. To make it more player friendly, most commands will always have a way for the player to just click a button and do the same thing. This gif below shows opening the storage window (where all the files the player has are stored are) both through typing in the terminal and by just clicking icons.

alt text

This is just a nice short and simple script that I sometimes use to make the camera in Unity smoothly follow an object. Just add this script to a orthographic camera and select a target and follow speed in the inspector.

The Code

using UnityEngine;

public class CameraFollow2D : MonoBehaviour
    public float FollowSpeed = 2f;
    public Transform Target;

    private void Update()
        Vector3 newPosition = Target.position;
        newPosition.z = -10;
        transform.position = Vector3.Slerp(transform.position, newPosition, FollowSpeed * Time.deltaTime);