~About this Game~
rOjo is a 2D Unity psychological horror game where you play as a flamenco dancer lost(?) in a forest, as she hides from the unnerving gaze of ghostly eyes.
rOjo is a 2D Unity psychological horror game where you play as a flamenco dancer lost(?) in a forest, as she hides from the unnerving gaze of ghostly eyes.
Programmed the animation of the photorealistic eyes.
Used state machine code to make creepy transitions of the eyes.
The eye is able to “spot” the player by calculating whether or not the player is in the range of a cone mesh.
Utilized the angle of the direction from the eye to the player, so that the eye looks like it is tracking the player.
Coded a function so that the eye can smoothly “look at” a direction by giving it custom angle values.
Coded a coroutine function that makes the eye “look” back and forth from where the player hid.
Prior to the quarter that rOjo was officially pitched, I heard that it was going to be a psychological horror game that played around with the concept of eyes. Once I heard about the use of eyes to create horror, it piqued my interest.
However, my hopes were low in expecting to be a part of the team, as they had an already had assembled a team together. That said, I applied to be a part of their team anyways, not expecting much from it. It wasn't until another collegue I knew, turned out to be another team lead for the game. Although they had initially said that their team was full, they were really looking for a programmer that knew how to utilize video files and implement them into a video game via Unity's Video Player system, and requested to interview me. I then told the team leads that I had dabbled in utilizing .mp4 videos to be used for a title screen for The Cheat Code for Happiness is... It wasn't much, but they were impressed no less. And so, once I became part of the team, I was tasked to implement hyperrealistic videos of eyes into a 2D cartoon-horror video game.
...As great as it was to be able to join the team, my expectations for being accepted were so low that I had convinced myself that I was not going to be part of the team, especially since I was to graduate that quarter. The surprise of being accepted took me for a loop, as the team lead started discussing with me on what they meant by implementing hyperrealistic eyes in the game the night that I joined. It was very daunting as I felt that I bit off more than I could chew in being a part of the team. However, as I collected myself, I became determined to take the task head-on.
(Figuring out how to make a believable eye)
My initial conversation with the team lead on how to implement the eye, put the pressure on. He soon suggested using the polar coordinate system to implement this specific eye enemy, I began thinking that I was way in above my head in joining the team, because I had retained almost to no knowledge of how the polar coordinate system worked in basic mathematics. There had to be a simpler way.
The conversation was not entirely lost, as we then started talking about assigning specific frames to each angle of where the eye would "look." That said, I understood how difficult and weird it would be to store the specific radian angle in which the eye was "looking" towards. But perhaps, through the frame data I could find a way to "assign" the angle to where it was looking. I then began work over the next few days thinking of ways on how to do this. I recall having a small conversation with the team lead one day after and sketching small sketches to brainstorm how to do it. And then, as I then sat down to watch a video, the YouTube buffering icon caught my attention.
I then quickly sat down and sketched this:
I then started thinking, what if I can make the eye "look" around by having the eye video follow the same rotating pattern as the YouTube buffer icon, and have the current frame divided by the total amount of frames and multiply that by 360 degrees to find the specific angle in which the video is "looking." It also builds upon what the team lead was thinking of doing.
I had to act fast though, as the team lead started coming up with their own solution, since I could sense that the task would get done with or without me.
I couldn't request a full fledged video from rOjo's videography team because they wouldn't have been convinced of whether or not such an idea would work. So I had to do a proof of concept.
I then programmed the script in which a video clip would "follow" the player according to the direction in which the player went around in.
"What video clip did I use?," you may ask? See for yourself:
Granted, there were limits to this system. If we were to film the eye, the eye must look to the right first and then rotate counter-clockwise, otherwise the angles would be misaligned. The number of frames must also be enough to not have the eye look around choppily. You may also notice that due to the high speed that the video plays that it passes the "player" (the ball) before snapping back to correct itself to track them. It turns out that the native Video Player that Unity provides does not port well between systems, and I soon had to change from using the Video Player to using Anim Trees instead.
Nonetheless, I showed the proof of concept to my team leads and requested that they provide a video that meets these requirements.
And soon enough I was in business:
And not so soon later it would look like this:
And finally:
I was extremely happy to be a part of this team. Working on a specific feature under someone else's vision for a game was a very valuable experience, and I could tell that I was a very invaluable member working closely with my team for an prominent enemy type in this game.
Here's my main takeaways:
Specializing on a specific part of a game is a very valuable experience.
You don't need to be a team lead to be successful in the game industry.
Specializing is actually more valuable as team leading sometimes bleeds into production work.
Gameplay Animation Programming is a position that exists in the Games Industry!
Gameplay Animation Programming focuses on programming animations into games.
You don't need to know how to animate as a Gameplay Animation Programmer.
You can take your specialization towards Team Lead work if you are to make your own game.
Sometimes you have to just dive in to a task you know virtually nothing about.
Always err towards believing that you have the skills to do it!