Tribe of the Accord DevLog - Protagonist
Hello, Shaun here. Thanks for joining me again as we explore the development process of 'Tribe of the Accord', my stone age survival game. In this post, I'm going to be discussing Adira, the main player protagonist in the game. I'll talk about her as a character and delve into the Player implementation of her in the game. I'll then mention how an NPC character will support the main playable character.
Growing up, it was always the strong, male hero who would fight the bad guys and get the girl in most stories. With this franchise, I wanted a tough and motivated female lead who was agile and adept with a spear, and who could outrun some of the slow and bulky antagonists set in the novel adaptation. A sort of a Daveena and Goliath. It's a nice way to show that strength and power alone isn't everything. Adira - our protagonist - has a big daisy slotted above her ear and a long ponytail of dark brown hair. She adores the idea of being a leader of a tribe, as well as caring for people, but her father is very untrusting of outsiders and believes they only need each other.
Adira lives at the Ringpeak campsite with her father, Torion. He raised her and taught her what she needs to know to be a true hunter-gatherer, and the story of the game begins at a point where she is old enough to venture out into the wild without him by her side. This felt like a good point in her life to begin the game: She is knowledgeable and physically capable enough to survive, but has yet to experience the true brutality of life. Torion has always been there to protect her, but he won't be around forever, and one day she will need to face the harsh realities of this world alone. The novel adaptation of the game by the same name - which is out now - builds on this, and the antagonists really put her to the ultimate test.
In the game, we will be able to control Adira. She will need to be able to do a variety of tasks such as gathering food and crafting resources, hunting wild animals, and scouting for various points of interest. The game will allow you to roam freely or drive the story forward via quests. The player needs to be able to carry out basic actions such as moving around, attacking enemies, and picking up items. While researching other games, I identified what sort of animations would be required, which in turn are considered player states.
Writing the code for a player and managing the various states all in a single script was already proving to be an unmaintainable mess, so with reference to a few other implementations, I built a reusable finite state machine script and extended it with a player specific state machine, using many child nodes to represent each state. This has proved to be a huge win for me. I feel like I have a lot of control over how the player is functioning, and reduces a lot of head scratching, something I was experiencing before.
The player avatar supports four directions: up, down, left, and right, and the sprite direction is determined depending on the input from the player, where I use a normalised vector. The sprite node is fed a huge sprite sheet texture with all the frames (to avoid multiple draw calls of the GPU), where Godot can split its horizontal and vertical frames, and allows me to specify which single frame I'd like to show. I used a table in my 'Character Sprites' document to keep track of all the animations I needed in a table, ticking them off as I went and gauging the priority of each. I also chose to cut animations that may not be needed as part of the MVP.
Each frame is 64 pixels in size. This gives me enough room so when Adira executes a weapon attack, it doesn't crop but provides enough reach when colliding with other enemies. Collision shape 2D allows my player to collide with other elements in the world, as well as enemies. I think the physics engine in Godot works very well and is pretty intuitive, although I do confuse myself sometimes with the maths of it all. The 'Animation Tree' I use, alongside my other state machine to emulate the paths should take and how they travel there, is also very powerful. The Animation Player provides so much flexibility, such as toggling on and off collisions, controlling frames, scales, positions and modulation. Adira supports more than 20 states, all important for her to carry out her role in the game. She can stand idle, frozen (important for cutscenes), run, walk, swim, sit, attack with an axe or a spear, fall down a hole, roll, take damage, collect items, open and close her bag, and finally, the morbid and impending death.
The hurtbox and hitbox are paramount to the interactivity with other entities, such as enemies. It allows me to determine if the player was attacked, or if the player has attacked the enemy. These sit on specific 2D physics layers to avoid strange side effects. This was a hard area to get my head around. Adira is not the only character in the game. Torion is the primary non-player character ally of the game and can be found at the Ringpeak campsite. Torion is the main point of contact for starting quests, which are small tasks that the player has to complete to progress and advance the story. Should Adira fall unconscious when hunting in the wild, Torion can be relied upon to find her and return her to the safety of their campsite.. He is her mentor. As a father, he needs to ensure that he teaches Adira how to survive in this tough environment, and this is done via quests. As the story progresses, there will be room for more NPC characters, but for the Minimum Viable Product (MVP) of the game, I will only have Torion.
The game’s primary antagonist in the game is 'the Wild', with various enemies Adira will come across to stop her from achieving her goals. They are scattered randomly throughout the world. However, the protagonist needs to have desires, goals, and conflict to make the game engaging, so I’ve put a lot into the story of the game. I'll be covering that in more detail in the next article.
In the next post we will be talking about the story of the game.
The book adaptation of the game is available in the following stores:
In the next post we will be talking about Adira; the main player protagonist of the game.