IBM / UCL Summer IXN Project

About This Section

This page is used to document the progress of my summer industry project in collaboration with UCL and IBM.

- - - - -

Final Demonstration Video

12/09/2022

The following is a brief presentation and demonstration video of the final outcome of the IXN project.

- - - - -

Demonstration Videos

12/08/2022

The following three clips are demonstrations of how the game functions in its current version. Please note that details such as the values of time penalties and topic contents of the quizzes are subject to change.

Starting a new game and volume settings.

Time penalties from droids and incorrect answers.

Reaching the end of a game.

- - - - -

Countdown Timer, Sentinels, Level Progression, and Obstacles

Starting a new game.

18/07/2022

Countdown Timer:
A countodwn timer was made to add pressure to the gameplay. This timer is instantiated when the first game level is loaded, and will be preserved for the rest of the gameplay, either until the timer runs out and the game is over, or if the game is completed and the player returns to the main menu. The timer is paused when a new level's opening screen is active. The timer is suspended when the player activates the last terminal on the ship's bridge. If the player selects an incorrect answer for a multiple-choice quiz, a time penalty will take time off the countdown, and the player will be notified.

Sentinels:
Sentinel droids are added to the game. These game objects follow a pre-determined cyclic path. If the player collides with a sentinel's field of vision or body, a time penalty is applied and the player is notified. The pathing methodology was adapted from Brackey's tower defence tutorial, and proved effective when conveniently mapping in unique routes for each game object.

Level Obstacles:
Level obstacles were added to each level of the game. Moveable objects such as stools were given rigid body components to make the gameplay more immersive and interactable. Other obstacles include wall sections, digital desktops, sleep chambers, and more. Animated props were also added on the maps' exteriors to make the gameplay more interesting.

Endings:
If the player advances to the ship's "Bridge" in time, they will be prompted to activate the final terminal. This suspend's the timer's countdown. The player is free to roam the final level, or return to the main menu at any time. However, if the player does not reach the final terminal in time, they are met with a 'Game Lost' screen and are prompted to return back to the main menu and try the game again.

What's Next:
Bind sound effects and background music, and propagate more background props. Continue to debug.

Reaching the end of a game.

References Used:

- - - - -

Menu and Terminal UI

Menu interfaces for main menu, pause menu, and terminal.

05/07/2022

Main and Options Menu UI:
A main menu was created using Unity's UI tools. The 'Play' and 'Quit' buttons were scripted with a scene mangement method and application close method accordingly. All three buttons on the menu were assigned 'OnClick()' methods, either to the corresponding script methods, or with a Boolean method in the case of the 'Options' button.

Pause Menu UI:
The pause menu, toggled by the 'Escape' key in the main game scene, switches the timescale of the game depending on whether it is active or not, either halting or resuming the game's time progression. A Boolean flag is used to identify and toggle between the two states. The 'Main Menu' button will direct the player back to the main menu scene.

Terminal UI:
The terminal's UI was created to facilitate the random ordering of multiple-choice questions. Interaction with the terminal required a number of conditions to ensure valid access to the interface. This included sufficient range between the player and terminal, whether the player is not currently interacting with the terminal, and whether the player not already completed all the level's questions. Successful interaction is made when the player presses the 'E' key, and the previous conditions are sufficed. Multiple methods were required to process the questions and possible answers by index, and flag the correct option for each question. The player is able to exit the terminal at any point, either by clicking the UI's 'Exit' button, or pressing the 'E' key. The player's progress is saved, therefore they are able to resume answering the questions from where they left off. Once the player has answered all the questions correctly, a completion screen will appear, prompting them to move to the now-accessible lift. The level's terminal will then remain active and the player will no longer be able to interact with it. The previously-deactivated lift then glows blue, ready to take the player to the next level when triggered. The multiple choice questions are publicly serialised, therefore the number of questions per level and the details themselves can be changed directly from Unity's inspector, as opposed to within any associated scripts. This reduces the inconvenience of future adjustments to this aspect of the game.

What's Next:
Creating a countdown timer, storing game objects as prefabs, and implementing level progression.

References Used:

- - - - -

Player Movement, Proximity Detection

Player movement and terminal proximity detection.

24/06/2022

With development finally under way, the player's avatar now has free WASD movement, and obeys the environment's colliders. All game objects are paired with collider components, and moving assets are assigned rigid bodies. Proximity detection was also added to indicate to the player whether they are in range to interact with the level's terminal. Since the light-up effect of the terminal included multiple materials assigned to one mesh object, this proved to be a small challenge when trying to achieve this effect. The solution ultimately came down to duplicating the materials array that was currently being used by the mesh, binding it to a declared array of candidate materials which would be modified conditional on the player's distance relative to the terminal's position, and the updated array would finally be reassigned to the current working materials array. I also added Boolean flag variables to keep track of whether the player was in the valid range of the terminal, and whether the player was in the process of interacting with the game object. The progress was made possible by following these sources:

- - - - -

IBM Skills Badges

05/06/2022

The first week of the project included researching and acquiring the range of courses and software tools offered by IBM's Academic Initiative program. These preliminary online learning experiences provided an overview of a variety of areas in technology, including cloud services, artificial technology, security, and design thinking. The following badges were attained upon completion:

improving_healthcare_the_role_of_artificial_intelligence
getting_started_with_cloud_for_the_enterprise
journey_to_cloud_envisioning_your_solution
getting_started_with_threat_intelligence_and_hunting
enterprise_design_thinking_practitioner

Aside from these activities, I also completed a C# course provided by Codecademy, in the hopes of using the knowledge to help build the game aspect of my project using the Unity cross-platform development engine. At this point in time, further research needs to be conducted to assess the specific methods of compatiblity and integration between my potential solution stack components.

* * * * *