This is my representative project for our game studio called Area 42 Game Studio. It is a language deciphering game that player will land in an enchanted forest full of creatures who speak an unknown language. Interact with the inhabitants of the forest and learn their language to complete your research. You can find our home page on itch.io here, and also our Linktree page here where includes our Steam page and official Instagram account. We got the opportunity to attend the Edmonton Screen project to help us commercialize our game and also showcase our game at Game Con Canada and Game Discovery Exhibition (GDX). We are currently cooperating with Baby Ghost to further develop our studio and games. Currently, we have closed the download portal on itch.io because we are in development of the Steam release on the way, but you can find the version we used for the convention, as well as the OST. Click here to download.
I'm the programmer and audio designer in the studio. On the audio side, I'm in charge of designing and producing all audio effects and background music for the game, as well as implementing them into the game. On the programming side, I'm mainly in charge of mechanics, UI/UX and system construction. I implement the fundamental conversation system using Ink Editor, which allows our writer to edit text outside the Unity engine. The system also supports passing and receiving variables and functions between Ink and Unity so that game state changes can happen inside Ink. I also implemented the whole UI interface, including dialogue box, pause menu, audio manager, and dictionary page. Recently, I added a new function that allows players to review all conversation history in case they lost any important messages. I also spend lots of time on improving the graphic effect to make it close to Octopath Traveler vibe.
This is inside the Ink Editor showing some basic idea of how Ink works in our game. The global.ink is the Ink file which contains some global variables and functions we might need to use.
The EXTERNAL keyword basically defines a function here, and it is linked to the script called InkExternalFunction.cs I wrote where I can define the function using C# in VS Code.
We use variables in the ink as Boolean for most of the time. For example, here the variable dictionary_opened indicates whether the dictionary is open or not. It can be called in the script and change the value. In this example, it's used in the forceOpenDictionary () to change the game state. If the dictionary is opened, dictionary_opened will turn to "t" and allows the player to continue the conversation; otherwise not.
The tag is also a very interesting and helpful function. The tag can be called in the script to implement the corresponding function. For example, the speaker tag indicated the displayed name in the dialog box, and the audio tag will play the corresponding voice.