top of page
f47e531ee47e6554fe69cfeda21f1647.png

​EVIL LIVE

A four-player asymmetric competitive game featuring one vampire and three humans in the scene. When the vampire bites a player, the bitten player transforms into a vampire, while the original vampire turns back into a human. The map contains various items that human players can collect to fight against the vampire. In the end, the human player with the highest score wins.

Keywords: Asymmetric Competitive, Multiplayer, Party Game, 3D Pixel, Unity

Development Period: 48 Hours (July 14 - July 16, 2023)

Gameplay Preview

Project Introduction

This is a game created for the 2023 Future Game Producer Contest (FGPC) Finals during a 48-hour Game Jam in China. The theme was "Reversal", and it is a multiplayer asymmetric party game designed to let players experience various forms of reversal, including identity swaps, shifting match dynamics, and control inversions.

​Awards

5th FGPC First Place

My Responsibilities

f47e531ee47e6554fe69cfeda21f1647.png
734431181345921.jpg

​Programmer, Technical Artist

bb35d9b5ae41ab5d43ad7c9f941f59b8.png
95ccd53afe49f72b24d502d0c623b00f.png

Key Responsibilities

Other 3C and multiplayer controls are repetitive with the previous content and will not be included again.

Model Pixel Render

This is a rendering effect I specifically designed for small Game Jams. It significantly reduces the workload for modeling and texture painting, as it delivers great visual results even with low-poly models and solid-color textures. At the same time, it offers a fresh visual style distinct from traditional 3D aesthetics.

03e9d87f741e9fb720ab7122f4ab82ed.png

In the fragment shader stage, discrete sampling based on screen coordinates is used to achieve a pixel block effect.

Getting Screen Coordinates

In the fragment shader, obtain the screen position of the current pixel using Unity’s ComputeScreenPos() or the Screen Position node in Shader Graph.

Pixelation via Quantization

To achieve a blocky effect resembling a lower resolution (e.g., 128×72), I apply quantization to the screen coordinates. This is done by: multiplying the coordinates by the target resolution, applying floor() to round them down, dividing back to obtain a discrete UV. This results in a discrete sampling effect, creating a pixelated look.

615e966a4739353a851d5cef8c87a278.png

As for the pixel rendering of characters, I have provided a detailed explanation in another project, Deep Echoes.

Last Updated: March 14, 2025

bottom of page