Holiday projects in the 2020 season were extremely plentiful owing to the local COVID-19 lockdown measures. This was another game-related venture that I undertook in late November 2020 til early January 2021. What started off as a simple three.js experimentation sandbox to learn the ins and outs of the library and its API soon became a vastly expanded custom game engine project. Progress is documented below:

First signs of life: a simple randomized 3D heightmap terrain generator with orbit controls


Video of the initial terrain editor, using brushes to increase / decrease elevation of the terrain

Addition of trees and the ability to “spraypaint” them onto terrain

Appearance of “water” for areas below sea-level

This build added the ability to paint the terrain through the editor, giving the land a slightly more believable look

Added a skybox and ambient lighting. Textures on terrain downscaled for a stylistic low-poly / low-spec look

Added shrubbery and other small plants which were represented by instanced sprites


Created a FPS mode where the player can walk around the environment

Tanks, weaponry, collision detection, entity pathing, and a game loop were all added in this build


Different vehicles and entities were added, along with a complete Entity-Component-System (ECS) framework to manage all of the composite interactions for weapon types, ammo types, etc.

Here you can see two groups of foot soldiers engaging each other in basic ranged combat as well as corpses and vehicle husks.


The latest update here is simply a full fledged demo of nearly all aspects of the FPS mode of the engine so far

Live

You can access the latest builds of this demo here:

Source code

Source code for this demo lives here: github.com/jsyang/fps3