Jintao (Lancer) Guo

<< A good programmer is someone who always looks both ways before crossing a one-way street. >> - Doug Linder

I am a McGill graduate student who is passionate about software and game development. I am from China, and I have studied in Canada for the past 8 years. I speak Mandarin and English, a little bit of French and I'm also interested in Japanese.

I'm interested in physics based rendering and computer graphics, familiar with general game and software development skills. My projects involve making video games, doing interesting research and practicing coding skills.

Education

Master of Computer Science, McGill University
Montreal | Canada | 2020 - 2023

Bachelor of Computer Science, McGill University
Montreal | Canada | 2016 - 2020

Link to CV
Link to GitHub
Link to Linkedin

Projects

Tencent game project

This game is called Yingzao, created by a team of four people. It draws inspiration from the beauty of ancient Chinese architecture and addresses the limited awareness of its intricate details in contemporary times. Our aim is to develop a game that familiarizes players with each construction step, including woodwork, painting, and the final assembly that amalgamates all elements. Our goal is to transport players back thousands of years, allowing them to experience the wisdom of our ancestors.

As the sole programmer, my role involved programming various aspects of the game, including creating the game loop, designing gameplay mechanics, developing the user interface, and handling graphics. I was responsible for overseeing the entire programming process from start to finish. Additionally, I had the responsibility of coordinating with both 2D and 3D artists to procure the necessary assets and seamlessly integrate them into the game.

Link to GitHub code

Graphics - Ray tracing

I coded my ray tracer and participated a in class rendering competition. Later on expanded to help with my research experiments.

(Some rendering images from my ray tracer)

Ubisoft Game Lab Competition 2018

Held by Ubisoft Montreal, a 10 week long competition between universites in Montreal. Each team is carrying out the task of making a 3D game prototype about a theme.

Theme of 2018: Change the world

I was responsible for creating AI for the game. We programed a central system that allows AI agent to communicate with each other to carry out simple strategic task, as well as reporting player's location. For single agent, a behaviour tree with blackboard is used to program the logic behind each decision, and some other techinique to solve visibility and searching area calculation.

Software Engineering project

A project that implemented a board game named Flash Point.

Game AI simulation with hierarchical task network

The player needs to compete with another agent to retreive more resource, while there are guards patrolling around. Once get spotted then the agent is eliminated. The agent has the ability to teleport the enemy to its spawning point or teleport the other player to a random place. The AI's goal is to retreive the resource while it doesn't know enough information about the world and the player.

  • Full implementation on AI HTN system (hierachical task planning)

  • A* search on low level navigation

  • simple AI visibility implementation

Want to try the game yourself? Click here

Link to GitHub code

Pentago Swap (a chess game AI)

In this project, the task is to design an AI that can play a chess game called Pentago Swap, which is derived from a much more popular game Pentago. This was held as a competition in class with total 289 participants, trying to beat each other's AI model and reach the top. The final performance for my design helps me land at 10th place in the whole competition

The description of rules is here

The project provides me a great opportunity to expreiment AI algorithms with my own choice. Based on the rules, there are many possible ways to achieve this task, such as Monte Carlo techinique or MiniMax algorithms. Specifically, I choose the MiniMax algorithms with Alpha-Beta prunning to speed up the processing time.

Highlight of points lead to good performance:

  • Board representation

    Design my own representation of board that summarizes only the important information I need to process, such as if there are pieces three in a row, or potential swapping chance for me to win. It is also easier for me to exmaine future board status with less computation.

  • Minimax algorithms at each move with iterative deepening.

    Iterative deepening will ensure that time is fully used at each move. Moreover, at each layer, all the tree leaves are stored using a min heap so it will be dynamically sorted whenever a new state is added.

  • Evaluation at each single board state captures the information well.

    It fully analyses board from four different orientation, and considering a same board state from both sides' angle to calculate the score that represents our advantages or disadvantages.

Link to my report and code on GitHub

LeBeagle blog page for Quebec Center of Biodiversity Science

A blog page done by Wordpress

Website link

Web development project: Cafe reservation website

Link to full project

Database project (Comp 421 project)

Database simluation for a Online Makeup Retail Store. Final project grade 99.3% and final course grade A.

We design a model and fullfill its requirements in order to construct a database that can store user's information, user's cart and shopping history, product categories and their product. The design also models the relation between users and products through their favoriate items and comments to specific products.

ER Model

Link to full project

Past Research Project

Appearance Filtering for High-frequency Normal Mapped Layered Materials

Master thesis

Rendering multilayer material with high-frequency normal maps is a challenging problem in computer graphics due to its complexity and high-cost demand with traditional Monte Carlo techniques. This research thesis proposes an approximate approach to efficiently render this type of complex surface with a single sample. Our method integrates two methods from appearance filtering and layered material rendering fields respectively, and focuses on processing the complex normal information on a framework of layered material approximation model. For each normal map, we explicitly model the normal distribution under the pixel footprint in the form of histograms. The representations of normals as well as the layered material are then combined and projected into spherical harmonics to enable efficient integration of extended light sources. We use an interpolation method that allows us to quickly perform this spherical harmonics transformation. Our results show a significant improvement in rendering time while maintaining the complex appearance of the layered material.

Sound propagation simulation in Video game environment

Summer 2019

In some modern stealth video games, sound propagation is neglected or poorly implemented causing unsatisfactory gaming experience. My research aims to develop a model to simulate the physicalpropagation of sound, in the perspective of reflection and diffraction,analysing various factors, and eventually grant game agents theability of sound identification and navigation.

For more detail, refer to my abstract submitted to UCore 2019