Community Newsletter March 10, 2023


 
 
 




Single Player

  • We’ve spent some time reviewing and solidifying our Personality logic. A major priority for us is to find the right balance between efficiency and complexity. We need to have enough personalities that individual Kinfolk feel unique from each other, but it’s also important to limit how much extra writing we have to do for Kinfolk dialogue. This sprint, we started implementing a few different methods that allow us to create variety without an unreasonable amount of extra work.

  • One major focus for the writing team this sprint has been new dialogue for Soul Flame shouts. When a Kinfolk on your team is killed, they call out to you a few times before their flame burns out. What they say can be determined by multiple factors. So far we’ve written about 170 unique lines, and some of them really hurt. Buckle up.

  • The logic that allows a Kinfolk to follow behind you once you reach a high enough bond level has been implemented. We’ve also implemented the logic for assigning flavors to different foods as we add them in. Now a Kinfolk’s bond can increase when they’re given their favorite foods! We also have the icon art for many of the meals and drinks. Here’s a sneak peek for a few icons:


  • Aquatic Kinfolk have a new VFX for when they move on land! We’ve gone from the old cylinder to a more natural looking puddle. We’ve made sure it looks nice on different kinds of terrain, and in general we feel like it’s a huge improvement!

  • The standard animations for Puddle_Hopper have come a long way this sprint, and with the rigging complete for Tide_Walker, we’re beginning animations for them as well! We’ve also finished the modeling phase for Razor_Wing and are nearly finished modeling an unnamed Gaia Type. The unnamed Null Type from last time has completed concept art, and we’re moving onto the early stages of designing their evolution. (From now on, we’re going to use the code names for unrevealed Kinfolk when we can. Hopefully it’ll make their progress easier to follow!)

  • We’ve completed the concept art for our new dungeon’s exterior. We’re currently working on the concepts for the interior, which are also nearly complete! It’ll serve as a great introductory dungeon that still has interesting challenges and rooms to explore. This will be the first point in the game’s main story where we really test the player’s mettle.

  • Now that the concept art is complete for the houses in our current town, we’ve started work on the models. We’re trying out a new approach where we create the materials that will be shared across multiple buildings, and then build the actual structures that will use those materials. Here’s a concept we’re using for the interior and exterior of one of the houses:

  • We’re in the process of creating human child models, since it’d be slightly strange if we had only adult humans in the world! They’ll have hairstyles and clothing options that are unique from the adults, and we plan to create them using a similar system to the one players will use for Character Customization.

  • Support has been added that lets us keep track of significant events with your team members. We’re now able to define actual locations in the game world to report things like where you caught a Kinfolk, where it died, etc. Now we use the names of locations instead of coordinates to describe these events. For example, a location that used to be (x: 2000, z: 1000) is now something like “Amberwood.”

  • We’ve made lots of improvements to the ‘one-gameobject’ optimization that we mentioned last time. We’re really liking the results! Kinfolk attacks are more responsive and better synchronized than ever.

  • Our new custom test runner is in the works. Unlike the previous setup, where we could only test specific bits of code, this one opens up a connection into the running game world and allows for testing everything as a whole -- integration testing rather than unit testing, if you're in the industry.

    • This means that where our old tests were limited to things like: "A hypothetical swipes attack would deal 30 damage to a hypothetical target it hypothetically hit," now the tests can actually play the game, spawn Kinfolk, and have them actually attack each other, just like it would happen during gameplay.

    • This makes our testing much more robust, comprehensive, and true-to-game. We're going to be improving these over time and adding more features. In the near future, we plan to add things like teaching it how to click on UI elements by emulating a real mouse, to make it run automatically every night and generate a report for our QA, and to flesh out its (currently) small test base.

  • The logic for our most complex story mission yet is finally complete! Now QA gets to test simplified versions of all the paths and outcomes (no easy task). This includes aspects such as branching dialogue trees with NPCs and how different Kinfolk will respond to the choices you make. The next step for this mission is adding models to the scene.

  • We’ve created early versions of multiple Points of Interest in a large section of Hinterlock. These points of interest include natural landmarks like waterfalls, ponds, and caves, as well as human-made elements like various buildings and structures.

  • VFX for a new Gaia Type ability and general Passive abilities are finished, as well as character-specific VFX for Black_Spire. The new Gaia Type ability also has SFX in progress.

  • We’ve finished creating the new combat AI editor tool, and are currently in the process of porting our current NPC AI to work with the data created by it. This tool makes it extremely easy to create unique combat AI, especially for enemy teams. It also marks a slight move away from utility AI, in favor of Hierarchical Task Networks (HTN) for our combat AI.

    • HTN problem solves in a way very similar to human rationale. It works through abstraction and alternatives, and does so by breaking down complex problems into smaller related problems until an actionable solution is found.

    • For example, if you were asked how to get from downtown to the park, you might say, "If it's nice out I would walk there. But, if it's raining and I have the taxi fare, I'd take the taxi, and otherwise I'd take the bus.”

    • Within HTN, this abstract problem of, "Traveling from one place to another" is known as a task, and the three possible solutions which satisfy this problem are known as methods. Note that these 3 methods are also quite abstract, and that each of them could be broken down into their own tasks with multiple possible methods. Such as "Take a bus" being broken down into two methods like "walk to location X and take bus line 1", or "Wait at my current location for 10 minutes and take bus line 2". This shows that a larger problem can continuously be broken down into smaller problems until direct action is possible.

    • By problem solving in a similar way to human rationale, HTN becomes a very straightforward and easy way to design AI for our NPCs. Our custom HTN editor tool allows us to easilly define which abstract problems an NPC should be trying to solve at any given time, and how those problems are broken down into actionable steps.

    • Additionally, for summoner combat AI, where a summoner's Kinfolk could swap to another teammate at any time, we can make the summoner’s Kinfolk aware of not just its own actions, but also the actions its teammates are capable of. By ranking these actions by priority or with utility scores, summoner Kinfolk can then automatically swap to the appropriate teammate if their teammate has a better solution to the current problem at hand. This allows our summoner combat AI to be good at doing combos of attacks that require swapping characters.

 
 

Thanks for stopping by, everyone! We’ll see you next time, on March 24.