Death Mystery

In Project Short Burn, we created a first-person puzzler. The game is set between 1850 and 1920, and the story revolves around a murder where the killer attempts to keep their crime hidden by concealing everything behind puzzles.
In Project Short Burn, I served as the Scrum Master, facilitating discussions to ensure that everyone's ideas were heard until we collectively agreed on one game concept. I created two puzzles: TiltBox and ConnectWires. Additionally, I developed the interaction system to provide a consistent experience throughout the game. I also spent a significant amount of time fixing bugs and updating the models for all the puzzles, which led to some issues with a few of them.

Project Info:

Team members: Marco van Roskam (Dev), Elias A (Dev), Zeke Haccou (Artist), Victor Min (Artist) & Remy P (Sound)
Project Time: Year 2 Period 4 (14-05-2021 until 01-07-2021)
Engine: Unity
Code Languages: C#
Design Patterns: Singleton




    void Update()
    {
        if (runPuzzle) { 
        Ray ray = PlayerCharacterController.instance.PlayerCamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 10f, puzzleLayer)) {
                if (Input.GetMouseButtonDown(0))
                {
                    for (int i = 0; i < wiresStartPoint.Length; i++) //Checks if RayCast hits Connector.
                    {
                        if (hit.transform.gameObject == wiresStartPoint[i]) 
                        {
                            cableGrab.Play();
                            CableSelected = i;
                            break;
                        }
                    }
                }
            }

            if (CableSelected != -1) //Runs when a cable is selected.
            {
                bool complete = false;
                if (hit.collider != null) wires[CableSelected].SetPosition(1, hit.transform.localPosition);

                if (Input.GetMouseButtonUp(0)) //When the player releases the Left MouseButton the position is getting checked for valid position.
                {
                    for (int i = 0; i < wiresEndPoint.Length; i++)
                    {
                        if (hit.collider != null && hit.transform.gameObject == wiresEndPoint[i])
                        {
                            cableConnect.Play();
                            combination[CableSelected] = i + 1;
                            wires[CableSelected].SetPosition(1, wiresEndPoint[i].transform.localPosition);
                            complete = true;
                        }
                    }
                    if (!complete) wires[CableSelected].SetPosition(1, wiresStartPoint[CableSelected].transform.localPosition); //When the cable isn't connected it will be reset.
                    CableSelected = -1;

                    for (int i = 0; i < combination.Length; i++) //Checks if every wire is assigned a connector.
                    {
                        if (combination[i] == 0) break;
                        if (i == combination.Length - 1) CheckCombination(); //Checks For Right Combination
                    }
                }
            }

            if (PlayerInputHandler.instance.pressedKey(KeyCode.E)) ClosePuzzle(); //Closes Menu
        }
    }