Aquascape Platform Editor

Project Name Aquascape Platform Editor
Type Designer Tool
License MIT
Completed December 2017
Programming 100%
Design 75%
Environment Unity 2017.2
Language C#
This tool is meant to easily create and modify platforms for the AR game Aquascape, which makes use of a grid system with events tied to positions.
For a project (Aquascape) I made in a team, we had a grid based AR game where various platforms could be placed. As the designers often wanted to try out new platforms, I decided to create a system for them to set those platforms up.
I laid out an Activity Diagram (see below) together with the designers, to make sure the tool would provide them the flexibility they desired while maintaining ease of use.

Usage Video

Here you can view a small demo of the normal use of the Aquascape Platform Editor. A platform is being created, functionality added (platform made walkable, agent position transformation), and then tested in the 2D platform tester.

Click to view

Activity Diagram

A way to make sure I’ve considered all aspects the system needs is by making an activity diagram of how the tool will be used. This helps in making sure that an interaction is not forgotten and that no possible user-induced error is overlooked. For this project I sat together with the designer and artist responsible for the platforms to make sure this custom editor did exactly what was required for them to do their job. Click to view the whole image.

Click to view

UML Design

Before programming the system I like to create an UML diagram of what I am going to create, for communication purposes and because it provides an overview of what elements I need to consider. Here you see the UML diagram, and below a short explanation of the important aspects. Click to view the whole image.

Below I have written an elaboration on the classes displayed in the UML about their role in the system.

Click to view

This class is a support class I made to be able to have an interactive display in the custom editor. While the idea to make it came from this project, I decided to work on it separately as I saw usage for it in other context. You can read about it at the EasyEditorDisplay item in my portfolio.


This class contains the view part of this tool. It handles how the inspector for the PlacableObject instances is drawn and it handles the input provided by the user. A script snippet is shown below.


To keep everything as clean as possible, all functions concerned with the actual altering of data inside the PlacableObject instances have been separated to this class. They are called by the PlacableObject_Editor whenever necessary.

Script Snippets

PlacableObject_Editor, Mouse Input Handling

As stated before, I like to seperate functionality as much as possible as to optimise readability. In this snippet it's easy to see how I made it work for this project, where the mouse input handling is clear, with the actual data management handled elsewhere.