Trouble Through Town

Play as a shepherd and herd your sheep through the land to safety on the other side of town

Team Size : 5
Project Length : 3 months
Engine : Unity

Introduction
In the Beginning

This was one of the project during university where we get to work in a small group to develop a game with the main gameplay mechanic limited to the premise of NPC crowd AI system. We were working on a different game at the start, but decided to pivot to the concept of herding sheep due to its popularity amongst the team.

Process Summary

There was alot of ups and downs during the entire duration of this project and many drastic changes were made that lead up to the final product.

Download the game

Process Documentation

12 October 2023

Started brainstorming ideas for potential prototypes. I came up with two ideas: a Shepherd game and The Narrator.

Shepherd Game:
I was inspired by an announcement trailer of an indie game called "Summerhill" and basically got the inspiration to try my hand at recreating it in a more arcade-y light. Basically levels that have certain objectives with a simple overarching goal of just surviving with your sheep to reach the end.

The Narrator:
I was playing a puzzle game called "Storyteller" and got very hooked into it and spent alot of time solving the adorable puzzles. I got inspired and also wanted to see if I could recreate the game.

16 October 2023

I decided to help out with other people's prototypes and worked on "Help! my alien baby wants to feast, and if I don't feed it soon I will be it's supper!" game designed by Eyal.

I worked on the model and texture of the alien baby and created the AI using visual scripting Navmesh to create the pathfinding for the alien baby to either chase the player when they failed to give them food on time or run around happily in random directions when it is satiated.

The concept was pretty simple and the AI component was equally simple as well when using Visual Scripting.

I added the pathfinding functions after Cecilia made the state machine of the Alien Baby which outputs an event that announces the state the Alien Baby is currently in and I trigger it by attaching the pathfinding at the end of it.

19 October 2023

After presenting both ideas for my initial brainstorm and received some helpful feedback. I decided to go for the Sheep game as it fulfils the criteria of the class more compared to The Narrator.

Feedback:
  • Look into Shelter as inspiration for the Sheep Game
  • Try not to make the herding tedious
  • Maybe the sheep are easy to herd but you have a time limit for faster gameplay.

I started drafting out a proper One Page design detailing the Sheep game in its entirety. I came up with the name "Trouble Through Town" because saying triple T was funny to me. I wasn't completely sure of the mechanics yet or how its actually gonna work, but I enjoyed coming up with concept scenarios for each level and looking at other games for visual inspiration.

After determining some base mechanics. I started trying my hand at building the prototype with the same mechanics as I've done for the Alien Baby game. Basically having the sheep as a navmesh agent and the Player as the target destination so they would follow the Player at a click of a button.

There was not much progress regarding the initial prototype as most of my time was used to design the pitch in an easy to understand and eye-catching way since the next week would be essentially a pitching session, I feel like I needed to improve the visuals abit more.

26 October 2023

Pitch Presentation Day!

I wanted to convey my ideas as visually as possible but did not have enough time to draw every element I wanted, so I went with representing them through emojis. It was fun and interesting as the limited selection of emoji's kind of change my ideas a little.

It was nice that my idea was voted in and the team selection worked out well too. We had a small meeting after the class where I did a briefing on the gist of the game and where it would be fun to take it.

02 November 2023

We started dividing task between the team and I was in charge of the main coding of the base mechanics. I wasn't well-verse in coding yet so this was a really huge leap for me, tackling an unknown field like AI programming with my already limited knowledge of C#. But I still would like to try it out.

There was a suggestion to make flocking behavior for the Sheep AI and I generally quite like the idea. I followed a tutorial that simplifies the progress really well in 2D and I just translated that into 3D instead.

Here's where problems start popping up :'D.
After following the tutorial, I needed to work on creating behaviours that were not shown before and I got very stuck.
I realised I wasn't truly understanding what I learned in the tutorial and I had to replay the videos over and over again as the person explains their steps.

It was incredibly frustrating trying to navigate my way to understanding everything and the short deadline to produce the prototype for the first Playtest Evening pushed my stress over the edge :'D

07 November 2023

First Playtest Evening!

I managed to wrangle my way through the codes and made a prototype that was functional for the Playtest Evening. Everything was very bare bones for the game at this current point but many people still gave interesting feedback and solutions for and for that I am always grateful :D

09 November 2023

I learned about behavior trees and the availability of that being represented visually intrigued me and I tried my hand at planning out a possible tree for the the Sheep AI.

I tried using the Behavior Bricks to recreate the plan but I was still hitting a lot of roadblocks due to my lack of understanding how to modify the base setup into what I need it to do :'D

16 November 2023

I realised I was incredibly burned out after crunching for the playtest evening, so there wasn't much progress through the week :/

Since there wasn't a class this week, I took the opportunity to remove myself from the project for awhile to regain my sanity :'D

23 November 2023

To say I rest for the last week would not be the full truth :'D My mind was still stuck on trying to solve the puzzle and I did alot of scribbling on a notebook, hoping it would help me solve the logic issues within my code.

After having a discussion with the team, we've decided that for my mental well being, the coding tasks would be on Eyal's shoulder using visual scripting to save up on time and complexity. Since most, if not everyone in the group is able to understand visual scripting, the tasks could be divided more evenly for the code and it doesn't need to rely on a single person.

I don't think this is truly the end for me wanting to figure out the Sheep AI in code as I am still very interested in understanding how everything works in C# (and I also refuse to admit defeat)
But for the sake of deadlines, I felt like it was right to have it done by someone who can make it work from the get go and not fret about perfection, which is something I tend to push myself towards. Its a terrible habit that I'm trying to unlearn, hopefully this is the first step towards the right direction :D

30 November 2023

We had more meetings in the team and we realized the plans that we made during our brainstorms were alot more complicated to accomplish than we initially thought. Eventhough we planned the game to be kept simple and short so we would have more time to polish, the base mechanics turned out to require way more time than we realised and our scheduling estimations were way off.

We also had some disagreements with Player controls and camera view that took a bit more time to discuss and sort out within the team. We ended up going for an isometric view for the game to keep up with the simplistic style.

We started implementing Codecks into our organization/planning routine and created a bunch of cards and decks to sort ourselves out. Since I wasn't working on coding anymore, there was a small team reshuffling for the current opened tasks.

After the team reshuffling, I was kind of at a lost on what I could do for the game since I only ever focused on the code throughout the process.
I decided to help out by creating tools and functions that we could use for the game. Like a Scene Loader, where scene's could be loaded in (additively) by distance of the Player to the trigger.

I also took on the task to create a function + shader for the camera to see through objects that directly block the Player from the camera's view.

07 December 2023

The small tools I planned to do were easy enough to create and implement, so I decide to take on some level designing since I had the time (after talking with the team of course).

I worked on the dark forest level which is just a straight path through the forest that happens at night and slowly opens up into daybreak as the Player reaches the end.
I really enjoyed working on adding post processing in the scene and the lighting of the environment. I just really like working on scene composition and making things pretty :D

I also made a little light view cone for the player that activates when they are in a darker zone of the forest and fades off when they reached the end of it where the sunlight starts peaking through again.

14 December 2023

I continued working on the dark forest level and did alot of reorganizing of the assets in the engine as it was getting clogged with old unfinished assets and it became confusing to distinguished which ones were being used in the levels.

Eyal completed the core mechanics of the game and I adjusted the Dark Forest level to best fit the mechanics limitations. There was alot of back and forth discussion on how to work out the level with the mechanics and making decisions on whether the mechanics should be the one to change or the level design should be the one to accommodate the mechanics.

Eyal made an object called stressors that causes the sheep to run away so I've used it to add some wolves into the forest level. I think this adds 'the game' aspect to the game so its no longer just a walking simulator with sheep.

19 December 2023

Second Playtest Evening! (Online)

We managed to scramble for a functioning build 10 minutes before the start of the playtest evening and managed to have quite a number of people playing it and giving feedback. It was interesting to watch other people play the game and reading through their feedback gave us more insights on how to proceed forward with the game.

General Feedback:
  • Lack of direction for player
  • Players abuse the "sheep callback" function to navigate the level instead of herding
  • People love how it looks and rolling sheep :D
  • A bunch of collider issues
21 December 2023

After the playtest evening, I pretty much shut down mentally from constantly working on the game throughout the previous weeks. I took the Christmas break as an opportunity to rest my brain for this project so I could hopefully come back to it again with a fresh perspective.

04 January 2024

We had a discussion on how to finalize the game and made the decision to finish all features by next week and take the last week as a feature freeze and polish the game up as much as possible before the final presentation.

I continued working on the Dark Forest level by adding parts of the Pastures and City to show the connectivity between the levels.

Also worked on extra camera work for the beginning of the level to show where the Player has to go.

11 January 2024

We decided as a team, to push the feature freeze to the 16th instead of today because life happens and plans tend to fall through :'D. We had more discussions on how we would like the final game to be in consideration to our abilities and time constraints.

I continued to work on the Dark Forest level and added the City portion to the end of it. I worked on fixing some bugs that cropped up when updating the level and also did a Poof VFX that will be applied to the sheep when they "disappear into the forest and never come back".

16 & 17 January 2024

One last sprint before the final deadline! I became incredibly productive in this two days and made significant progress. I think it is mostly due to last minute stress, so motivation is at an all time high for me.

I finished working on the cutscenes for each level and added a sparkle VFX to further indicate to the Player that the sparkled area is the goal.

I added some rays of sunlight at the end of the level and a close up of the sparkle VFX,

After finishing my tasks, I then helped out others with theirs in case they couldn't make it in time. I helped with finishing up the End level where the Player reaches their relative's farm to escape the earthquake that destroyed their own home.

There was a bunch of bugs that start cropping up and I just tried to solve them as best that I can and I think, overall as a team, we did the best we could and I'm pretty proud of the results!

Conclusion

It has been 12 weeks and it was a wild ride from the start till the end. There are a bunch of downs in the middle of the journey but also a bunch of ups near the end.

I realized I burn myself out very easily and push way too hard in the short term that in turn effects my ability to keep on working in the long term. I know this is a terrible habit and I really should learn better methods of pacing myself and know my limits so I don't go over them.

But as a student, I also face the problem of not being able to know my limits because I'm still learning and trying new things and am constantly working with new concepts / tools, always pushing the boundaries of what I know. So I never really know when it is "enough for now". I do believe time and experience will help me build better working habits, so any improvements are always a work in progress.

I did in fact learn a lot during this course throughout the semester. Many concepts were introduced that went way over my head due to the technical complexity of the subject, but I did enjoy getting to know more about the fundamentals of AI and their functions. I am always interested in learning more on the subject and apply the knowledge onto future projects whenever I can.

I am rather proud with how the final project turned out. The whole team contributed to it and I think our effort really shown through the game. The visuals are nice, the gameplay is smooth and it has a start and an end! I think we've managed to achieve the idea that we had in mind for the game and I enjoyed the process of working on it with everybody.

Future Plans

I have some plans to work on this Sheep game further in the future, by implementing the boids flock code I made previously and polishing it for the game. I really want to be able to code in C# mostly because it is very convenient and useful to work on, the only drawback for me is that I need alot of time to understand how everything works. I wish my future self luck :'D