CRANE Thesis Documentation Chapter 5

CRANE Thesis Documentation Chapter 5

This CRANE Thesis Documentation Chapter 5 presents the summary, conclusion and recommendation based on the findings of the study.

Summary of Findings

The proponents had conducted an evaluation of the game “Coordinated Response Authority for National Emergencies – (C.R.A.N.E)”.

1. The experts’ test result of C.R.A.N.E. had a weighted mean of 3.6 which interpreted as “Somewhat Satisfied”. This finding meant that the users/players of Coordinated Response Authority for National Emergencies can be able to use this game easily due to simplicity of the design and functions.

2. The end-users’ test results gathered a total average mean of 4.2 which was interpreted that the end-users were “Somewhat Satisfied” with the developed game.

3. According to the respondents, User’s Manual was clear, efficient and it helps the users understand the step-by-step procedures for game access and use.

Conclusions

CRANE, a game about responding to critical events currently in development, addresses many of the problems that arise in developing a video game. By leveraging existing techniques used in business-level programming, the CRANE code has been cleanly written to prepare for the next generation of developers involved with the project. The structure of CRANE allows for educators to customize in-game content via Unity 3D and Visual Studio in order to make modifications. It has also been created to serve as an ideal platform for delivering a variety of mini-games, encompassing many different STEM fields.

Recommendations

The proponents recommend to add more details on user interface, animations and map layouts to the game to make it more immersive and interactive. The proponents also recommend to feature the game on all platforms (PC, Mobile, Switch and Consoles).

CRANE Thesis Documentation Chapter 5 : REFERENCES

Websites

[1] Medina, A. (2016). Promoting a culture of disaster preparedness. Journal of business continuity & emergency planning, 9(3), 281-290.

[2] Comes, T., Vybornova, O., & Van de Walle, B. (2015, March). Bringing structure to the disaster data typhoon: an analysis of decision-makers’ information needs in the response to Haiyan. In 2015 AAAI Spring Symposium Series.

[3] Weichselgartner, J., & Pigeon, P. (2015). The role of knowledge in disaster risk reduction. International Journal of Disaster Risk Science, 6(2), 107-116.

[4] Alrazeeni, D. (2015). Saudi EMS Students’ Perception of and Attitudes toward Their Preparedness for Disaster Management. Journal of education and practice, 6(35), 110-116.

[5] Santiago, J. S. S., Manuela Jr, W. S., Tan, M. L. L., Sañez, S. K., & Tong, A. Z. U. (2016). Of timelines and timeliness: lessons from Typhoon Haiyan in early disaster response. Disasters, 40(4), 644-667.

[6] Jones, Sherry & Novak, Kae & Luchs, Christopher & Bennani, Farah. (2017). Designing Seamless Learning Using Role-Playing Experiences. 10.4018/978-1-5225-1692-7.ch004.

CRANE Thesis Documentation Chapter 5 : (Appendix A) Relevant Source Codes

Scene Switching:

public class SceneSwitch : MonoBehaviour

{

    public void MainMenu(){

        SceneManager.LoadScene(0);

        Time.timeScale = 1f;

    }

    public void LevelSelection(){

        SceneManager.LoadScene(1);

        Time.timeScale = 1f;

    }

    public void StartLevel1(){

        SceneManager.LoadScene(6);

        Time.timeScale = 1f;

    }

    public void StartLevel2(){

        SceneManager.LoadScene(4);

        Time.timeScale = 1f;

    }

    public void StartLevel3(){

        SceneManager.LoadScene(8);

        Time.timeScale = 1f;

    }

    public void StartLevel4(){

        SceneManager.LoadScene(10);

        Time.timeScale = 1f;

    }

    public void StartLevel5(){

        SceneManager.LoadScene(12);

        Time.timeScale = 1f;

    }

    public void QuitGame(){

        Application.Quit();

    }

}

Game Score Summary:

public class Level1Objectives : MonoBehaviour

{

    public bool isActive;

    [Header(“Object Modal Text to turn green!”)]

    public GameObject objective1;

    public GameObject objective2;

    public GameObject objective3;

    [Header(“Mission Complete Pop up and Objective Complete Popup!”)]

    public GameObject completedialogue;

    public GameObject notifs;

    public GameObject score;

    [Header(“Put Special Objects for Objective Requirements here!”)]

    public GameObject checkrequirement;

    public GameObject specialobject;

    public GameObject specialobject2;

    [Header(“Put Dialogue Trigger in Here!”)]

    public DialogueTrigger opendialogue;

    [Header(“DO NOT TOUCH!”)]

    public int objdone_1 = 0;

    public int objdone_2 = 0;

    public int objdone_3 = 0;

    [Header(“Level Score”)]

    public int LevelScore = 100;

    public int FinalScore;

    public GameObject timer;

    public int timeLeft;

    public GameObject missionScore,ScoreBonus,highScores;

    public timerCountdown timerClass;

    IEnumerator ObjectiveCompleteTime(){

        timerClass.StopAllCoroutines();

        yield return new WaitForSeconds(3f);

        completedialogue.SetActive(true);

        Time.timeScale = 0f;

    }

    IEnumerator ShowNotification(){

        notifs.SetActive(true);

        yield return new WaitForSeconds(2);

        notifs.SetActive(false);

    }

    public void ObjectiveComplete() {

        if ((objdone_1 == 1)&&(objdone_2 == 1)&&(objdone_3 == 1)){

            timeLeft = timer.GetComponent<timerCountdown>().secondsLeft;

            FinalScore = LevelScore + timeLeft;

            missionScore.GetComponent<Text>().text = LevelScore.ToString();

            ScoreBonus.GetComponent<Text>().text = timeLeft.ToString();

            score.GetComponent<Text>().text = FinalScore.ToString();

            if (FinalScore > PlayerPrefs.GetInt(“level1Score”))

            {

                PlayerPrefs.SetInt(“level1Score”,FinalScore);

                highScores.GetComponent<Text>().text = PlayerPrefs.GetInt(“level1Score”,FinalScore).ToString();

            }

            else

            {

                highScores.GetComponent<Text>().text = PlayerPrefs.GetInt(“level1Score”,FinalScore).ToString();

            }

            StartCoroutine(ObjectiveCompleteTime());

        } else

        {

            Debug.Log(“Nope”);

        }

    }

    public void Objective1(){

        objdone_1 = 1;

        objective1.GetComponent<Text>().color = Color.green;

        ObjectiveComplete();

    }

    public void Objective2(){

        objdone_2 = 1;

        StartCoroutine(ShowNotification());

        objective2.GetComponent<Text>().color = Color.green;

        ObjectiveComplete();

    }

    public void Objective3(){

        if (checkrequirement.activeInHierarchy == true)

        {

            FindObjectOfType<DialogueManager>().EndDialogue();

            objdone_3 = 1;

            specialobject.SetActive(false);

            specialobject2.SetActive(true);

            StartCoroutine(ShowNotification());

            objective3.GetComponent<Text>().color = Color.green;

            ObjectiveComplete();

        } else if (checkrequirement.activeInHierarchy == false)

        {

            opendialogue.TriggerDialogue();

        }

    }

    void Start(){

        Time.timeScale = 1f;

        completedialogue.SetActive(false);

        objdone_1 = 0;

        objdone_2 = 0;

        objdone_3 = 0;

    }

}

Progress Manager:

public class progressConfirmation : MonoBehaviour

{

    public GameObject ConfirmationText;

    public GameObject enabledContinue;

    void Start()

    {

        //LEVEL 1

        if (PlayerPrefs.GetString(“level1update”) == “success”)

        {

            ConfirmationText.GetComponent<Text>().text = “YOU WANT TO CONTINUE?”;

            enabledContinue.GetComponent<Button>().interactable = true;

        }

        //LEVEL 2

        else if (PlayerPrefs.GetString(“level2update”) == “success”)

        {

            ConfirmationText.GetComponent<Text>().text = “YOU WANT TO CONTINUE?”;

            enabledContinue.GetComponent<Button>().interactable = true;

        }

        //LEVEL3

        else if (PlayerPrefs.GetString(“level3update”) == “success”)

        {

            ConfirmationText.GetComponent<Text>().text = “YOU WANT TO CONTINUE?”;

            enabledContinue.GetComponent<Button>().interactable = true;

        }

        //LEVEL 4

        else if (PlayerPrefs.GetString(“level4update”) == “success”)

        {

            ConfirmationText.GetComponent<Text>().text = “YOU WANT TO CONTINUE?”;

            enabledContinue.GetComponent<Button>().interactable = true;

        }

        //LEVEL 5

        else if (PlayerPrefs.GetString(“level5update”) == “success”)

        {

            ConfirmationText.GetComponent<Text>().text = “YOU WANT TO CONTINUE?”;

            enabledContinue.GetComponent<Button>().interactable = true;

        }

        else

        {

            ConfirmationText.GetComponent<Text>().text = “THERE’S NO EXISTING RECORD.”;

            enabledContinue.GetComponent<Button>().interactable = false;

        }

    }

    public void NewGameProgress()

    {

        PlayerPrefs.DeleteKey(“level1update”);

        PlayerPrefs.DeleteKey(“level2update”);

        PlayerPrefs.DeleteKey(“level3update”);

        PlayerPrefs.DeleteKey(“level4update”);

        PlayerPrefs.DeleteKey(“level5update”);

        PlayerPrefs.SetInt(“level1Score”,0);

        PlayerPrefs.SetInt(“level2Score”,0);

        PlayerPrefs.SetInt(“level3Score”,0);

        PlayerPrefs.SetInt(“level4Score”,0);

        PlayerPrefs.SetInt(“level5Score”,0);

    }

}

Character Movement

public class MovementScripts : MonoBehaviour

{

    public Animator animator;

    // Update is called once per frame

    void Update()

    {

        Vector3 movement = new Vector3(Input.GetAxis(“Horizontal”), Input.GetAxis(“Vertical”), 0.0f);

        animator.SetFloat(“Horizontal”, movement.x);

        animator.SetFloat(“Vertical”, movement.y);

        animator.SetFloat(“Magnitude”, movement.magnitude);

        transform.position = transform.position + movement * (Time.deltaTime + 0.012f);

    }

}

Timer Countdown:

public class timerCountdown : MonoBehaviour

{

    public GameObject textDisplay;

    public GameObject missionFailed;

    public int secondsLeft = 50;

    public bool takingAway = false;

    public AudioSource timerSFX;

    public AudioSource missionFailedSFX;

    void Start()

    {

        textDisplay.GetComponent<Text>().text = secondsLeft + ” seconds”;

    }

    void Update()

    {

        if (takingAway == false && secondsLeft > 0)

        {

            StartCoroutine(TimerTake());

        }

    }

    IEnumerator TimerTake()

    {

        takingAway = true;

        yield return new WaitForSeconds(1);

        secondsLeft -= 1;

        if (secondsLeft == 0)

        {  

            missionFailedSFX.Play();

            textDisplay.GetComponent<Text>().color = Color.red;

            textDisplay.GetComponent<Text>().text = secondsLeft + ” second”;

            missionFailed.SetActive(true);

            Time.timeScale = 0f;

            timerSFX.Stop();

        }

        else if (secondsLeft <= 10)

        {

            textDisplay.GetComponent<Text>().color = Color.red;

            textDisplay.GetComponent<Text>().text = secondsLeft + ” seconds”;

            //FOR AUDIO SOURCE TIMER

            for(int i=0; i<10; i++)

                {

                    timerSFX.Play();

                }

        }

        else

        {

            textDisplay.GetComponent<Text>().color = Color.white;

            textDisplay.GetComponent<Text>().text = secondsLeft + ” seconds”;

        }

        takingAway = false;

    }

}

Dialogue Manager:

public class DialogueManager : MonoBehaviour

{

    public Text nameText;

    public Text dialogueText;

    public Animator animator;

    private Queue<string> sentences;

    void Start()

    {

        sentences = new Queue<string>();

    }

    public void StartDialogue(Dialogue dialogue)

    {

        animator.SetBool(“IsOpen”, true);

        nameText.text = dialogue.name;

        sentences.Clear();

        foreach (string sentence in dialogue.sentences)

        {

            sentences.Enqueue(sentence);

        }

        DisplayNextSentence();

    }

    public void DisplayNextSentence()

    {

        if (sentences.Count == 0)

        {

            EndDialogue();

            return;   

        }

        string sentence = sentences.Dequeue();

        StopAllCoroutines();

        StartCoroutine(TypeSentence(sentence));

    }

    IEnumerator TypeSentence(string sentence)

    {

        dialogueText.text = “”;

        foreach (char letter in sentence.ToCharArray())

        {

            dialogueText.text += letter;

            yield return null;

        }

    }

    public void EndDialogue()

    {

        animator.SetBool(“IsOpen”, false);

    }

}

Dialogue Declaration:

public class Dialogue

{

    public string name;

    [TextArea(3,10)]

    public string[] sentences;

Dialogue Trigger:

public class DialogueTrigger : MonoBehaviour

{

    public Dialogue dialogue;

    public DialogueManager dialMan;

    public GameObject actionButton, cancelButton;

    public bool active = false;

    public void TriggerDialogue ()

    {

        active = true;

        FindObjectOfType<DialogueManager>().StartDialogue(dialogue);

        showButtons();

    }

    public void showButtons()

    {

        actionButton.SetActive(true);

        cancelButton.SetActive(true);

    }

}

CRANE Thesis Documentation Chapter 5 : (Appendix B) SURVEY QUESTIONNAIRE

Name (Optional): __________________ Date evaluated: _______

Direction: Please evaluate the following content to determine the acceptability of the “Coordinated Response Authority for National Emergencies (C.R.A.N.E.)”. Please indicate your honest and sincere response to each statement by checking the number to the space provided.

Scale:

5 – Very Satisfied

4 – Somewhat Satisfied

3 – Neutral

2 – Somewhat Unsatisfied

1 – Very Unsatisfied

CRANE Thesis Documentation Chapter 5 : (Appendix C) INPUTS

Figure 24 shows the in game controls of the game key W, A, S, D and Arrow keys for movements and Esc key to pause the game.

Figure 25 shows the input of the game, which is left mouse click to interact with units and to manipulate the game.

CRANE Thesis Chapter 5 : (Appendix D) OUTPUTS/REPORTS

Figure 26 shows the score summary of the game level.

CRANE Thesis Documentation Chapter 5 : (Appendix E) USER’S GUIDE

How to install C.R.A.N.E.:

Requirements before playing C.R.A.N.E.:

Minimum Requirements:

  • Processor     : Intel® Core™2 Duo or greater
  • OS            : Windows 7, Windows 8, Windows 10
  • System Type   : 32-bit Operating System
  • Memory (RAM)  : 2 Gb
  • Hard disk     : 500 Mb

Recommended Requirements:

  • Processor     : Intel® Core™2 Duo
  • OS            : Windows 7, Windows 8, Windows 10
  • System Type   : 64-bit Operating System
  • Memory (RAM)  : 4.00 Gb or greater
  • Hard disk     : 1 Gb or greater

Step 1: Download the Setup file of C.R.A.N.E.

Step 2: Choose desired File location and Install.

Step 3: Wait for setup to finish installing.

Step 4: After Installation, click Finish to exit.

How to Play

Related Article

Inquiries

if you have any questions or suggestions about CRANE Thesis Documentation Chapter 5, please let’s me know by dropping your comment below.


Leave a Comment