joebinns / asteroids-scriptable-objects

A tool for modifying game settings, made for Futuregames' course "Development Tools in Game Projects". The tool utilises a custom editor window and scriptable objects, and is applied to an Asteroids remake.

Home Page:https://joebinns.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Game Settings Tool

A tool for modifying game settings, made for Futuregames' course "Development Tools in Game Projects". The tool utilises a custom editor window and scriptable objects, and is applied to an Asteroids remake.

Reflection

This project has served well to guide my independent learning of Unity's recent UI Toolkit. Initially, I set out creating a modular ship creator -- as a tool that could be used by both designers and players alike.

Modular Ship Builder

However, after encountering constant hurdles over just a few days work and seeing many more on the horizon, I came to the realisation that I had likely aimed too high. The unsuspecting UI Toolkit was ill equipped to take on such a tool, leaving me with a daunting list of features to implement. With a tight deadline and a growing assortment of non-Futuregames tasks accruing, I made the tough decision to restart and rescope on something slightly less impressive.

What I ended up creating was a tool for modifying game settings. The tool acts as a window for editting game settings which are stored in a scriptable object. The tool is content aware, automatically detecting instances of of-interest MonoBehaviours in the scene and updating their appropriate serialized fields.

Game Settings Tool

Having implemented this tool, I have learned more than just how to use the UI Toolkit. Crucially, I have become aware of SerializedObjects in Unity and a developed a understanding for where they are appropriate and how they should be used. Whilst it didn't present itself as in issue during testing of the tool, there is one problem which I have substituted for another, rather than answered. That is 'in which EditorWindow Message I should use to apply the game settings to the fields of MonoBehaviours'. Ideally, I would apply changes whenever they are made. However, a method alike OnValidate does not exist for EditorWindows, and so I have instead placed this behaviour in OnLostFocus -- similar functionality, but not quite correct.

VG Features

  • Utilize advanced features of Unity editor tools, such as custom inspectors or editors, to enhance the user experience and make the tool more powerful and efficient -- evidenced by my use of the UI toolkit.
  • Incorporate error handling, undo/redo functionality, and other best practices to improve the robustness and reliability of the tool -- I provided additional error handling to min-max sliders, evidenced at asteroids-scriptable-objects/Assets/Tool/Scriptable Objects/Structs/AsteroidSpawnerSettings.cs.
  • Create additional functionality or expand on the existing functionality to make the tool more useful and versatile.
  • Reflect on the process of creating the tool and provide insightful and thoughtful feedback on how the use of Scriptable Objects and Unity editor tools impacted the development process -- evidenced in Reflection.
  • Create a well-organized and easy-to-user interface, making sure that all functionalities are intuitive and easy to find -- evidenced by use of foldable sections in the UI window
  • Add functionality to the tool which makes it more reusable, like exposing methods or properties to the user that are not hard-coded.
  • Show evidence of user testing and iteration based on feedback.
  • Make the tool a Unity package so it can be easily shared with others, and document the package

About

A tool for modifying game settings, made for Futuregames' course "Development Tools in Game Projects". The tool utilises a custom editor window and scriptable objects, and is applied to an Asteroids remake.

https://joebinns.com


Languages

Language:C# 100.0%