Camera Systems — Post Mortem

What Went Well

I managed to develop a camera system that I never thought would able to do when I first started researching about different camera systems. I started off by developing simple systems with no intention of making it designer friendly. Slowly I started learning the importance of writing code in such a way that would not only efficient but also designer friendly. That’s when I realized the importance of ‘System.Serializable’. It’s such an effective tool to use when I needed to categorize my settings into one class. I really enjoyed coding in a such a way as the code looked much more organized, so when I wanted to dig into the code, I could directly search for the class that I created and then made the required changes.

I managed to add a variety of features like Camera orbiting, camera collisions, camera clipping, avoid occlusion, camera zoom in and out. Some features I knew I can add individually, but didn’t think that I could add them all in the same script and make them work smoothly. Another thing that I managed to do was making the camera transitions very smooth. The previous camera systems that I made were really simple and didn’t do anything much and were just generic as hell. I got so hooked into developing the system that it made me realize how awesome developing camera systems could be and also gave me an additional option of being a camera developer for games.

What Didn’t Go Well

I wanted to make a camera system that could be controlled using splines. I managed to make a spline but couldn’t figure out a way to put the camera inside the spline system. I had a concept idea of how to make it but that didn’t work out too well. I also wanted to detach the camera system from the player such that there can be a ‘To’ and a ‘From’ position for the camera where the camera would just keep lerping between the two positions constantly rather than the following a character all the time, but couldn’t do that as I didn’t estimate the time that would take to do that and also the load of completing the project I was working on was way too much than I could have anticipated. I also wanted to have an inverted camera system controller. This was completely my fault because I was just too lazy to do it and also didn’t want to dig inside the code to make a few changes here and there.