Briefly introduce the history of openworld.js

Published: (December 31, 2025 at 09:42 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

Introduction

These past few days I’ve been working on multi‑models, aiming to implement as many large‑scale models as possible. WebGL starts to lag after about 80 000 instance models, so I’m implementing dynamic loading to bring in distant content only when the main character moves far away.

Early Development

  • First publication – I first published this project around October 18 2025 on Zhihu (a Chinese Q&A site). The original post can be found here: https://www.zhihu.com/question/389957213/answer/1962681678376984942.
  • Idea – I wanted to create a three‑dimensional world that could accommodate many buildings.
  • Research period – I researched intermittently until December 2025, when I finally reached a functional prototype.

Technical Foundations

  • WebGL – The project is written using WebGL.
  • Initial framework – It started from a framework by a “code‑golf” expert: https://xem.github.io/W, which amazed me by rendering a world in just 2 KB.
  • Physics engine – I added the cannon.js physics engine and heavily compressed it; the current version used in the project is only 29 KB.

Optimizations and Releases

  • May 2025 – Began research as a JavaScript newcomer, learning gradually.
  • July 2025 – Released an example of an online note‑taking system: https://git.ccgxk.com/myWorkSpace/webgl_show/cyber_city/cbcity.html.
  • August 2025 – Created a simple program to add blocks.
  • September 2025 – Started considering turning the work into a reusable library.
  • October 2025 – Completed the library.

Current Status

  • Domain – In mid‑November 2025 I registered the domain openworld.zone for branding.
  • Progress – Despite procrastination, the project has been progressing smoothly for the past six months.

Demo

You can see the current state of the project here: https://ow.ccgxk.com/demo/dev001/

Back to Blog

Related posts

Read more »

How to Reduce Bundle Size in Next js

When I first started working with Next.js, I loved how fast it was out of the box. As the project grew, the bundle size kept increasing, leading to slower load...