Following The Light

Where I am now: I worked on the Zelda portion these last couple weeks, getting as many environmental mechanics implemented as I could. The Indie Game Bash showcase is coming up in two weeks, so I’m switching back to Act 1 to implement my new puzzles, rescale the city section, and any other polish feature by the deadline of June 6 (I won’t be showing the zelda section).

I feel like I haven’t said this in a while and it warrants another repetition: all graphics are placeholder at the moment. I fully intend to hire an artist down the road.

Moving mirrors. In the last post I showed the rotating mirrors reflecting light towards switches, but I was cheating and rotating them using the unity editor:


Now the player can grab the mirror handles and shove ’em:


It’s crude, but it works for now. The mirror can be both pushed and pulled, and grabbed from either side of the handle.

More updated rooms. I’ve added more stuff to various rooms. It’s feels really good to be giving purpose to spaces so they’re no longer just empty, crudely-textured rooms. Here’s some more shots (click for bigger) :




And here’s one with motion:


I had to re-implement the coding for these moving climb walls since they’re more complicated than the static ones. My current implementation of static climb walls is simply moving the player along the binormal of the wall and having left and right barriers at the edge to prevent moving off the wall (you can see this in the picture above with the golden chains, as I’m too sleepy to grab a new screenshot).

For these moving ones, it felt wrong to have barriers at the left/right edges as I want the player to use the edges if needed to climb successfully. The new implementation therefore has a raycast every .10 seconds to check if the player is still infront of a climbable wall. If they move off either side of one or too high/low, the raycast misses and they drop. In addition, if the player is caught between two moving walls while the walls shift, they’re knocked off. This was done by adding a trigger to each wall segment, and if the player is in two triggers while it shifts they’re tossed down.

There’s some spikes missing on the left and right walls that’ll poke the player if they hang onto those walls at the wrong moments, but I’ll have to wait to implement damage before I worry about environmental hazards.

Mirror shield. Yes! It feels so great to have this:


For the various windows / magic light volumes in the temple, I added a trigger such that when the shield enters one it checks the angle between the light and shield directions to ensure it’s not too obtuse. If not, reflect light! I lowered the shield model some to make sure the player can see over top of it to where the light is being reflected, as the old pose had the shield in the centre of the screen which blocked the player’s view. The shield’s light is just a projected texture.

Better yet, the shield’s reflected light is interactive:


To get this working, I at first thought of doing a forward spherecast when the shield is reflecting light to test if it hits any light switches, but figured that a round spherecast wouldn’t be sufficient for the light’s shape which is closer to an oval.

So the solution I implemented is to create a trigger the shape of the shield:


If the trigger enters the collision of a light switch, it further tests whether the switch is not occluded behind a wall using a raycast, and this prevents activating switches in other rooms using crazy intuition or some sort of houdini x-ray vision. It works, it’s accurate, IT’S FABULOUS.

Here’s one of the final puzzles that uses light:


which is interacted with as follows:

mirrorPuzzle1 (ignore the shield light bug on the right arm)



and the platform lowers to this:


So after these upcoming two weeks of working on Act 1, I REALLY want to implement some enemies. I’ve got some ideas for taking the old designs and putting a new spin on them, both to make them my own and avoid copyright.

Until it’s all over, time and patience.

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *