• +1 (613) 793-4672
  • jobs@stemworldeducationalservices.com
  • Nepean, Ontario, Canada

Karl Javier Group-5 Summer 2022 – Graphitect

Populate your city with diverse and colourful buildings in Graphitect. Graphitect is a fusion of picross and mathematical graphing. You will be tasked with recreating the outline of different buildings using math formulas. Once you complete a drawing the associated buildings will appear in your city. Do you feel up to the challenge of being this city’s graphitect?

My Contributions

  • Coded the Camera controllers.
    • Panning
    • Zooming
    • Changing of viewing angle
    • Clamping the camera within an area whether the camera is angled or not (works with both the pan and zoom)
  • Configured the Main Menu
    • Buttons (creation and functionality)
    • Panel management
  • Coded scene transition
    • Main Menu to the game
    • Reloading the scene when loading a previous save state
  • Generated scene transition animation
  • Coded Save/Load functionality
    • What needs to be saved and how to reload it into the game. The number of levels that are completed, which levels were completed and loading the progress into the city
  • Editing 3D models
    • Editing the 3D models that Ryan made to better suit our needs
  • Recorded Voice over for the tutorial video
  • Made the Help menu
    • Coded the dropdown menu and the text that appears accordingly
  • Coded directional icon to keep the player oriented in the world
    • Added a “North” icon 
    • Coded rotation of said Icon according to the angle of the camera
  • Playtesting for bugs and errors
  • Working with the rendering pipeline and materials to make the game look aesthetically pleasing
    • Exporting materials
    • Editing materials
  • Working on the GDD/TDD as we progressed

Coding the Camera Controllers

For this project, I spent most of my time developing the camera controls. There are 2 cameras in this game, one for the Town View mode and one for the Graphing mode. The main issue of coding these controllers was limiting their movement to a specific area. For the graphing camera it was simply a matter of adding an invisible plane that dictates where the camera can move. As for the Town view camera, it was a lot more complicated.

The Town View camera looks at the world at an angle, this has caused an issue where the camera blocking method used in the Graphing camera doesn’t work because the plane and the TV camera aren’t parallel. To overcome this issue, I used Unity’s Raycast feature. Using Raycast, I was able to send a “ray” from each corner of the camera. These rays would go forward and collide with the world. At the collision point, I can detect whether or not the ray hit inside or outside the border. Thanks to this method, I can limit a camera’s movement with a plane no matter the the angle of the camera.


I worked on two of the menus in of the game, the Main menu and the Help menu. While making the Main Menu, I learned how to enable and disable assets using on click events and managing multiple panels. The Help menu taught me how to work with dropdown menus in Unity, how to change a text box depending on the option that was selected and how to add a scrolling feature for the text box when it there wasn’t enough room.


Writing the Save/Load functionality of the game was one of the more complex challenges I had to solve during this project. I had to decide what information were necessary to save and, most importantly, how to reload it into the game. Using the progression system that Jerry had created, saving the data was a simple task. I simply saved a list that said whether or not a level had been completed. Reloading the information was the real challenge, not only did we have to apply the progress back into the game but we had to make their associated buildings reappear on the screen.

The main issue was if the player reached a later point in the game and wanted to reload to an earlier one, the buildings that appear in the Town view wouldn’t reset. This was due to the fact that we don’t simply toggle the assets ON and OFF, but have them appear through an animation. The solution we came up with was to reload the scene entirely and load the progression and play the animations at the very start of the scene.