MARCH 18 → MARCH 21 – 2024

Tasks

Meetings

  • Meeting with Hester van der Ent
    • Catching up on our progress.
    • Discussing a previously brough up issue regarding copyright.
  • Meeting with Harry Sanderink
    • Catching up on our progress regarding our learning outcomes.

Technical Developments

  • Refactoring our codebase
    • Introduced a GameManager working with the GameScene created last week, this also included an active/inactive state to control whether or not to show the scene’s environment. (see code below)
    • Reviewing my previously written scripts to see if there is any space for improvements.
  • Managing version control
    • Merged two new branches made by Alejandra.
  • Designing a scalable system to allow multiple people to play simultaneously (see video below)
    • Person 1 can start at pillar A and continue in sequence ABCDE, while person 2 can start at C and continue in sequence CDEAB.
    • Allowing multiple people to play at the same time by customizing their starting pillar.

Miscellaneous

  • Attended the Reality Check Festival
  • Attended two Applied Research classes
  • Decided on a weekly stand-up with the team

Double Diamond

Most of this week was spent on improving existing scripts as well as removing unnecessary ones to replace them with a more flexible solution.

Define

The main issue that persisted from last week was the fact that it was really difficult to create content without it taking a long time. This could be prevented by offering a modular solution (like Scriptable Objects) to do most of the work and having it pass through the needed methods when necessary.

Develop

I continued where I left off last week and added another improvement to the GameScene script. From now on, the GameManager has the ability to see if a scene is already active, if it is, there is no need to go through the rest of the processing. This saves performance and makes it easier to track what scene is being played out.

Deliver

This prototype was not released anywhere as it has become clear that our client needs clear visuals to explain what is happening and I did not find that feasible for a technical solution like this.

Plan

For next week, my most important point is to finish the refactoring. After that I will start to work on the next interaction for our chosen scene: throwing flower seeds. I have never before worked with physics in Unity so I expect this to take more time than the previous interaction.


Research

After a suggestion from Alejandra, I did some research into rebasing for Git. Currently we are using a classic Pull Request > Review > Merge construction. However, it was suggested that rebasing can be used too. Ultimately we decided against it but it was interesting to note the various ways of achieving a solid grip on version control.

Rebasing and pull requests in comparison.

Reflection

While the refactoring takes a little longer than I had hoped, I am still satisfied with my current progress. Especially considering this week was full of distractions with Reality Check and Applied Research.

I did begin to see some possible issues with the client, as communication is not always smooth and there have been some instances where I felt we weren’t really listened too.

Media & code

public void StartGame()
    {
        SetPlayerIndex(playerIndexDropdown.value);

        Destroy(mainMenuUI);

        SetSpawnablePrefabs();

        imageTracking.SetSpawnablePrefabs();
    }

    public void SetActiveScene(GameObject scenePrefab)
    {
        foreach(GameScene scene in modifiableScenes)
        {
            SceneState.State state = scene.sceneState.state;

            if (scenePrefab.name == scene.sceneEnvironmentPrefab.name)
            {
                if(scene.sceneState.state == SceneState.State.Active)
                {
                    break;
                }

                scene.sceneState.state = SceneState.State.Active;

                Debug.Log(scene.sceneName + scene.sceneIndex + " state was changed from " + state + " to " + scene.sceneState.state);
            }
            else
            {
                if(scene.sceneState.state is SceneState.State.Active)
                {
                    scene.sceneState.state = SceneState.State.Inactive;

                    Debug.Log(scene.sceneName + scene.sceneIndex + " state was changed from " + state + " to " + scene.sceneState.state);
                }
            }
        }
    }1public void StartGame()
    {
        SetPlayerIndex(playerIndexDropdown.value);

        Destroy(mainMenuUI);

        SetSpawnablePrefabs();

        imageTracking.SetSpawnablePrefabs();
    }

    public void SetActiveScene(GameObject scenePrefab)
    {
        foreach(GameScene scene in modifiableScenes)
        {
            SceneState.State state = scene.sceneState.state;

            if (scenePrefab.name == scene.sceneEnvironmentPrefab.name)
            {
                if(scene.sceneState.state == SceneState.State.Active)
                {
                    break;
                }

                scene.sceneState.state = SceneState.State.Active;

                Debug.Log(scene.sceneName + scene.sceneIndex + " state was changed from " + state + " to " + scene.sceneState.state);
            }
            else
            {
                if(scene.sceneState.state is SceneState.State.Active)
                {
                    scene.sceneState.state = SceneState.State.Inactive;

                    Debug.Log(scene.sceneName + scene.sceneIndex + " state was changed from " + state + " to " + scene.sceneState.state);
                }
            }
        }
    }
  1. GameManager script ↩︎