TAKAMORI Puzzle

【Introduction】

A puzzle-story fan game about Calli & Kiara, TAKAMORI Forever!



【Game link】



【Thoughts】

This game is to share my oshi with everyone. I’ve always enjoyed their interaction, which is the main reason I fell down the rabbit hole.
To test the game, I’ve become soooo good at jigsaw puzzles😆

Once I figured out the main gameplay and the amount of art needed, I realized I didn’t have enough time. So, I asked my friend to help with the programming. I’m super grateful for his help!
The code he wrote was clean and fast, which was a huge help. I was in charge of using my kindergarten doodling magic, but for some reason, the progress was really slow this time…

In the end, we had to keep reducing the scale of the game. We rushed to finish the first story before Christmas. Being able to produce at a steady pace is something I need to learn😔



【Github】



【Note】

  1. Some images will disappear for no reason with iOS device when using SoftMaskForUGUI. The most weird part is and not all of them will disappear. In the end, I have to change back to built-in mask and then add an extra layer of frame image to it.
  2. I’d like to write a script to read Excel, since it’s easier to deal with multi-language. I specify the path to read the file directly (ex: Application.dataPath + “/Resources/“ + path), but later I found out unity will pack used resources into one pack, so I put the script into Streaming Assets folder instead.
  3. Files can’t be read on WebGL directly, they must be used through WebRequest, and this is how it goes:
    LoadExcelLoadExcel.cs
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /** load excel **/
    public void loadFile(string path) {
    path = Application.streamingAssetsPath + "/" + path;
    #if UNITY_WEBGL
    StartCoroutine(GetText(path));
    #else
    FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
    DirectRead(stream);
    #endif
    }

    IEnumerator GetText(string path)
    {
    UnityWebRequest uwr = UnityWebRequest.Get(path);
    yield return uwr.SendWebRequest();

    if (uwr.result != UnityWebRequest.Result.Success)
    Debug.LogError(uwr.error);
    else
    {
    byte[] results = uwr.downloadHandler.data;
    Stream stream = new MemoryStream(results);
    DirectRead(stream);
    }
    }
next:I Want More