Tencent Games - Lightspeed Studios
Gameplay Engineer Intern May 2024 - Aug. 2024

Note: Due to confidentiality agreements, the final product is not publicly available. The following content has been redacted and adjusted, and does not represent the entirety of the work. Most of the images used below are from early-stage work. The results can be seen at the bottom of the page.

❋ Experience Description

As a Gameplay engineer intern in Tencent’s Lightspeed Studio, I worked on PUBG Mobile, a globally popular battle royale game.

  • TPS gameplay development: Developed a 5v5 TPS demo using Unreal Engine 5 and C++, gaining hands-on experience with the gameplay framework and architecture while mastering the principles and implementation of network replication. Introduced a drone feature, allowing players to switch to a first-person drone for tactical reconnaissance and offensive actions like self-destruction, or remotely control the drone behaviors.
  • Runtime landscape modification: Researched and implemented a terrain modification system based on Landscape, supporting runtime modifications of customizable shapes such as explosion-induced craters and dynamic elevations.
  • Performance optimization: Leveraged RenderDoc and Unreal Insights for in-depth profiling to identify bottlenecks. Implemented spatial hashing acceleration structure and asynchronous updates based on visibility and distance. Utilized performance analysis tools to validate optimizations, successfully reducing average execution time to within 2 frames.
  • Network replication: Supported two network replication schemes, allowing flexibility in synchronizing either modification states for client-side simulation or sending modified data depending on network conditions and game phase.

❋ Details

This section provide more detailed information about the work I did during the internship.

When learning Unreal Engine 5, it is important to know what classes and functions are available and have a good understanding of the engine’s architecture since we need to modify in some ways to make games suited for our needs. Here is a simplified version of engine procedures, which really helped me to figure out where I should look at if I need to modify something.

Engine procedures
Engine procedures


I also get the hang of gameplay framework and the network replication mechanism behind it. Especially, how the clock synchronization works, how the latency affects gameplay (specifically in Shooters, but can be transferred to other genres), how to do client prediction and server reconcilation and why we need to do that. Though the summaries/docs of these parts can not be publicly disclosed, I’d like to talk with anyone face to face to dive into these topics.

After doing reasearch of how to do landscape modification, there are no reliable resources available. I had to figure out how to do it by myself. The following is the process I went through. I first need to figure it out where the height data is saved, how to write into it, how to re-render and how to update the collision. Some details cannot be disclosed due to confidentiality agreements, but here are some of the classes I used.

Landscape collision modification related class
Related classes when modify landscape


Along the ways, there are many pitfalls, like the different save ways in collision data/height data, the different precision/data structure. The following are two pitfalls that can be shown in picture.

Pitfall I had
Pitfall I had: wrong height data
Pitfall I had
Pitfall I had: bad edge

I also did some scene destruction researches. Here is a chart that concludes a high-level method to do object destruction in games.

Scene destruction flowchart (high-level)
Scene destruction flowchart (high-level)


Chaos destruction is what Unreal Engine provides, but it is hard to modify and utilize where some systems inside have potential bugs as well. Physics replication is another field, which I did not have enough time to dive into. Here are some results I did using Chaos destruction.

Glass destruction (by bullets)
Glass destructed by bullets (can be replicated)
Destruction caused by explosion
Destruction caused by explosion (can be replicated)

❋ Showcase

The final system can be used in client-server architecture (i.e, Unreal’s dedicated server with clients). The modification updates the render and collision altogether at the same time.

Landscape modification demo
The explosion-induced crater (Editor)
Landscape runtime modification demo
Combined with drone explosion (Runtime, Client side)
Compared to other games, the final results are visually similar except textures.


PUBG's landscape modification
PUBG's landscape modification
Battlefield V's landscape modification
Battlefield V's landscape modification