Curse That Magic Cat

August 2020 - December 2020 | School Project

Project Information

  • Team Size: 13
  • Genre: Casual Simulator Game
  • Platform: Windows
  • Engine: Unreal 4
  • Develop time: 3 months
  • Steam: Download


Magnus the Wizard has cursed you, turning you into a cat! Lift your curse and take your revenge by meowing, hiding, destroying things, and collecting spell books to break the spell. Curse That Magic Cat! is a lighthearted, single-player game made by students at SMU Guildhall.

My contributions

  • Implemented the whole UI system
  • Developed toon shading for game foundation, and worked with artists for improving it
  • Implemented multiple language support for the game
  • Implemented a simple camera system with wall culling mechaniques
  • Improved the game efficiency through profiling

Toon Shading

Toon shading is a kind of non photorealistic rendering, since our game is approaching for a cartoonish art style, the implementation of toon shading is quite importent. I refered to existing techniques, and implemented cel shading, post-processing outline rendering, and fresnel rendering for our game, the outcome is pretty good.

One thing to note here is that the whole toon shading process is done in post processing stage and with blueprints only. The lighting attributes are recalculated in post processing stage and the cel shading are calcualted at this stage.

Wall Culling

In our game, it is very easy for cameras to collide with walls when the player controls the cat walk towards room corners. Two common solutions are clipping the camera or cull the walls. And I went for Wall Culling solution in our game.

The first implementation is using translucency materials with our walls. However it brought several problems for me and the artists, the major problem is that our lighting for toon shading is calculated at post processing stage, which means it will have no effect/incorrect effects for our translucency materials. So we abandoned this idea.

The second implementation is using dithered rendering technique for rendering the opaque walls, it worked out well and everyone in our team is satisfied with the effect. However it still has some problems - the whole wall could be culled out and it will feel very empty and not intuitional especially when players are looking into other rooms.

The final implementation brought camera position and wall normals in, so we only cull certain area of the walls, which appears like a sphere in our game. This mechanique worked out perfectly and fits our game well.

Multiple Language Support

Unreal has already provided tools and functions for creating multiple languages, but it has complicated pipeline and is easy to break by designers. So after I researched the functions and methods for making the multiple language support feature working, I made a document for designers so they can follow the pipeline and translate the documents successfully.

The document can be visited here

Post Mortem

What Went Well

  • The rendering worked out and the artists love my work as well
  • Cross-discipline collabaration went well
  • Learned how to profile a game and improve its efficiency

What Went Wrong

  • The communication with the artists went wrong in some aspects, the UI assets came in really late.
  • I didn't control myself well and didn't respect others work when I was devoted to my work, this caused some troubles and I am really regretful for that.

What I learned

  • Always ask artists' opinions and stakeholders' opinions when developing new features, and develop new tools and materials by demand.
  • Keep a professional attitude towards other developers, everyone is busy and worked very hard, and their work should be respected.