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
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.
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.
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.
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.

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.
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.
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.
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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".

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!
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.
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