- Preamble: Welcome to this blog.
- Setting up infrastructure: Centre for eResearch and home office.
- Setting up websites: Created and migrated websites to global host.
- Setting up a basic UI system: UI System for screens built with UIToolkit.
- Setting up Google Firebase: Backend NoSQL event-driven database.
- Setting up internationalisation: Introducing multilingual capabilities.
Hello there and welcome to this first-ever blog post. In this blog series, I will be reporting on my progress of implementing the location-based game Arcane Shift. You can expect an update every few weeks where I showcase what I have been working on, what has worked out and where I am struggling. I will include a mix of content, from personal accounts to technical descriptions. Basically, this blog is meant to show everyone interested in the game how far along it is, as well as for me to keep a written account of my progress. I will start each blog with a very short tl;dr section summarising the contents for those of you who want a quick breakdown, followed by more detailed sections for those interested.
After moving from Switzerland to New Zealand and finally settling in (finding a flat after a flood, a tropical cyclone and during the first week of a new semester is no easy task), I started setting up my office at the University of Auckland (UoA) and at home.
My Post-Doc Mobility project is in collaboration with the Centre for eResearch (CeR) at the University of Auckland. The CeR specialises in supporting research projects in all things digital, from providing long-term storage, over computational clusters, to visualisations using Unity. This makes the CeR a perfect host for piloting a new approach to data collection using a location-based game. The CeR employs a great team of international people with diverse backgrounds with various overlaps to parts of my project. After a warm welcome and a short introductory presentation, I set up my office (note to self: gloriously mechanical keyboards are not feasible in shared office spaces) and chatted to many interesting people. During my days at home, I also set up my home office with all my favourite gadgets.
After setting up my office both at the UoA and at home, I went on to create and migrate my project and personal websites. If you click around, you will find that I am still building this website, however, the most important things are present. You can read up on what my Post-Doc project is about, you can check what features I am working on and their progress, you can read up on the general idea of the game (which I still have to write up as of publishing this post) and you can read the blog. I have also set up a community forum as well as a mailing list (which you should definitely sign up for on the Arcane Shift main page).
UI feat. Unity UIToolkit
After installing Unity3D (currently: 2022.2.11f) and setting up versioning (previously Plastic SCM), I started working on some basic UI. What I needed at first were:
- Full Screens that covered the whole display (e.g. a splash screen or a starting menu)
- Overlay Screens that would appear over the current screen (e.g. a settings screen or a pause screen)
Seeing Unity’s UIToolkit received some major updates, I decided to use this new UI system. In my coding, I borrowed heavily from the UIToolkit example asset (Dragon Crashers) and I learned a lot from the eBook “User interface design and implementation in Unity“.
As you can see, I have a basic working menu. I will be uploading some of the important underlying code in another blog post, so stay tuned.
Backend feat. Google Firebase
Setting out on this game development journey, I was wondering what backend and database I should use. I stumbled across Google’s Firebase and was intrigued by its NoSQL nature and it being event-driven. This means, if a value changes in the DB, all connected clients who are interested will be notified. This seems like a great fit for a location-based game. However, before starting to play around with storing user data or game data, I needed to set up Firebase. Getting inspiration from various sources such as Youtube tutorials, as well as these blog posts here and here, I started working on the Auth system of the game. As you can see below, I have a very basic registration working with confirmation mails and data being stored Firebase. If I find time I will upload the code of my AuthManager.
In addition, I have an error manager that takes care of displaying appropriate error messages depending on the server’s response. The messages are also translated into the respective language as you can see further down.
Multilinguism feat. Unity Internationalisation
Seeing that the location-based game will target people in New Zealand and Switzerland, offering at least some of the game in multiple languages is quite important. I aim to make the game available in English, te reo Māori, German and French, however, this is subject to the available time and effort needed. So, if a multilingual game is important, I have to build translation systems to accommodate multiple languages. Unfortunately, the Unity UIToolkit does not yet support the Unity Internationalisation package. However, there are ways in which we can make this work.
Following this blog post as well as this blog post and tweaking the code as needed, I was able to get the Internationalisation working. I also learned a lot from the Localisation Manual and managed to get multilingual texts in the game as well as translate dynamic error messages from the backend server.