As many people know from my stream, I love the game series Siren. I find it to be such an extraordinarily unique experience while also offering a very engaging story. While frustrating and genuinely unfriendly to play, I still think about my first playthrough of the game a lot. Through its many faults and cryptic story/gameplay, it has one very unique element to it, which is a game mechanic called, "sightjacking".
Sightjacking is a power that the series' characters use to their advantage to try and survive each horrific scenario they find themselves in. Sightjacking involves using the left stick, rotating it, and literally 'tuning' into another person's sight. Players can look through the eyes of their companions, but the interesting thing lies in the stealing of the sight of your enemies. No, the enemies do not become blind as a result of this, but the character can actually see and hear what the 'sightjacked' entity does. Through many clever tricks, the developers hide clues that can only be seen through various enemy, and sometimes companion, eyeballs.
My first venture into this prototype was to simply recreate the entire mechanic in Unity. I posted several videos of my progress on Youtube. Essentially, I had numerous goals in mind, which were basically to get the main points of the mechanic from Siren working in Unity. The main goals included:
Getting the player to enter a state of sightjacking and not sightjacking was relatively simple. Coding the left stick to pick up enemy positions was a bit trickier. I coded a janky solution where I simply attached an incredibly huge "wall" to the player, which was set to not active while not sightjacking. Upon sightjacking, this wall becomes active and rotates around the player based on the left stick's position. When this wall comes into contact with any object tagged as an enemy, it will display that object's attached camera to the screen. Naturally, this kind of causes problems with enemies that may be lined up, but I never really got that far in testing. Since in the game, the sightjacking ability does not take height into account, having the wall be a billion meters both high and low, this trick could detect enemies high up or underground.
Siren allows the player to map a view to a face button, which they can then press while sightjacking and bring up that particular view instantly. I simply created an array for the four buttons and simply put the active camera on the pressed face button. It maps the camera's information to the face button, so even if the player exits sightjacking and then enabled it again, pressing that face button will bring that camera back into view instantly. Even pressing a different face button on the same camera will remove the camera from the previous face button slot and update it to the new button that was pressed, so that there are no duplicates.
I also attached a canvas with a fading image of a black square to the active camera as a way of creating a blurry POV if the player is too far away from the enemy they are sightjacking. In the game, the player can sightjack enemies from far distances. However, the further the player is from a particular target, the fuzzier and more unclear the POV image is. This is a clever way to create a "strong" or "weak" link between the player character and the enemy, simply based on position. In the prototype, the square fades in and out based on its calculation of the position of the player and the position of the enemy. It divides the opacity by this closeness calculation and provides the necessary amount of hinderance to the sightjacked POV.
When all of these things were working, I tried to get the signature Siren blue character cross to signify where the player is whenever they are looking through an enemy's eyes. In the game, the player is represented by a blue cross, which points straight to the player character's head, showing your position in relation to that specific enemy. Companions are represented by green crosses and other enemies are represented by red crosses. The cross always faces the active camera, grows in scale the closer the player is to the sightjacked entity, shrinks in scale the further away they are, and disappears entirely when the player is not sightjacking. This proved to be more challenging than I thought.
At first, I was able to create a blue material that could show through all of the level geometry and the in-game fog. Next was actually getting the cross to face the active camera at all times. This proved challenging and I went through many different ways until I settled on a super janky method of creating two long "rods" out of cubes and hard-coding them into a cross once the player sightjacks. They are then programmed to always face the camera and contain a root object that is in the character's head, so that the cross will always point out where the character is. While this did prove challenging, I did get the 'look-at' function to work and also divided the size of the rods by the distance between the player and the sightjacked entity in order to either shrink or grow the cross based on the distance between the two.
This entire prototype proved challenging, but in the end, it worked perfectly. There are a few bugs still left in the prototype, including what the camera does when the player lets go of the left stick while sightjacking and it is not pointing at anything. I accomplished everything I set out to do with it and felt pretty great at having accomplished something like that.
Afterward, I adapted the prototype into my own unique system: The player can "sightjack" in a sense, but once they enter "sightjack" mode, they control a free-roam camera that can go up, down, left, right, in, and out. While flying around with this free camera, the player can then press one of the four face buttons and the program will collect where and at what rotation the free camera is. When they press the face button again, the free camera will snap back to that previously saved position and rotation. I also included a button that, when pressed, snaps the free camera back to the player instantly. As an anti-cheat measure, I adapted the fader to fade the black image in the further away they get from the player. At some point, the screen will be completely black if the free camera gets too far away from the player. The cross I left in as-is, just because it's nice to see where you are at all times. As of this moment, this adapted prototype still needs a system that prevents the free camera from breaching the confines of the level, including level boundaries, floors, some walls, and ceilings. These are more to limit the player so that they can't simply look down at the entire level and see where every enemy and object is hidden.
Siren's mechanic is aptly named sightjacking whereas I have named this the out-of-body experience. Seems like a good long name. Hope you liked my deep dive into my work. I'm hoping my next game will involve this prototype in some way. More videos are available on my Youtube channel!
We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.