<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Open World Zone</title>
    <description>The latest articles on DEV Community by Open World Zone (@openworldzone).</description>
    <link>https://dev.to/openworldzone</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3687634%2F9c1f72d1-3ee0-4905-801e-3e62c90664c6.png</url>
      <title>DEV Community: Open World Zone</title>
      <link>https://dev.to/openworldzone</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/openworldzone"/>
    <language>en</language>
    <item>
      <title>A temporary demo that implements a multi-building LOD mechanism.</title>
      <dc:creator>Open World Zone</dc:creator>
      <pubDate>Wed, 31 Dec 2025 14:51:25 +0000</pubDate>
      <link>https://dev.to/openworldzone/a-temporary-demo-that-implements-a-multi-building-lod-mechanism-30kc</link>
      <guid>https://dev.to/openworldzone/a-temporary-demo-that-implements-a-multi-building-lod-mechanism-30kc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbimhuo8jb5b2vrc20s9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbimhuo8jb5b2vrc20s9g.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My little 3D project has actually been continuously updated, and last month I named it Open World Zone.&lt;/p&gt;

&lt;p&gt;Currently, there are three directions for optimization: content filling, multi-model management, and performance optimization.&lt;/p&gt;

&lt;p&gt;This time, it's a demo for multi-model management, which I've separated out because the other two parts aren't fully developed yet:&lt;/p&gt;

&lt;p&gt;(The latest demo can switch between different models based on the protagonist's position.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ow.ccgxk.com/demo/dev001/" rel="noopener noreferrer"&gt;https://ow.ccgxk.com/demo/dev001/&lt;/a&gt; ow.ccgxk.com/demo/dev001/&lt;/p&gt;

&lt;p&gt;I want to turn it into an infinitely large three-dimensional world.&lt;/p&gt;

&lt;p&gt;As soon as the browser opens, there is no loading time—it launches instantly. Lightning fast!&lt;br&gt;
 Even low-configuration computers run it smoothly and effortlessly. &lt;br&gt;
It supports multiple users online, offers decent freedom, and the world is incredibly enticing to explore. &lt;br&gt;
You can even place your own notes, images, and more, build your own models, and upload them to this shared world. &lt;br&gt;
An extremely lightweight, high-performance shared world.&lt;br&gt;
How wonderful.&lt;/p&gt;

&lt;p&gt;Actually, building the model is incredibly simple. But with only storage capacity for 1 million model files and a smooth threshold of 50,000 models on my computer, how to make it load on demand, delete on demand, and not exceed this threshold is not as easy as imagined.&lt;/p&gt;

&lt;p&gt;Just like a computer's mechanical hard drive, it's essentially a large disc with a single line. How can it store 3GB, delete 5GB, then add 200MB and delete 1.5GB, all in an orderly manner.&lt;/p&gt;

&lt;p&gt;I went through several solutions before settling on one.&lt;/p&gt;

&lt;p&gt;In the end, this ABC scheme was left (read the code for details).&lt;br&gt;
I won’t go into the details of the process. However, this seemingly simple mechanism truly stumped both Gemini and me. It took a whole month, and by mid-December, it finally started to look decent.&lt;/p&gt;

&lt;p&gt;This demo is quite simple. It contains 4,000 library buildings.(Now I can confidently say that, theoretically, I can perfectly manage an endless array of models.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When you enter a building, the interior tables and chairs are loaded (at that point, there will be screen walls and other elements to block the view, making it feel as if they were always there). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you move a certain distance away from the building, it turns pink (at that point, it becomes a simplified exterior wall with fewer models).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At a greater distance from the building, the entire structure is abstracted into an independent cube (which I refer to as the skyline).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's how it is for now.&lt;/p&gt;

&lt;p&gt;Don't be disappointed. I think it's better to optimize this pain point sooner rather than later.&lt;/p&gt;

&lt;p&gt;Additionally, I have very little time. I have to work during the day and socialize on weekends, leaving me with less than three hours each evening to study this. There's no other way.&lt;/p&gt;

&lt;p&gt;Just say it simply.&lt;/p&gt;

</description>
      <category>webgl</category>
      <category>lod</category>
      <category>metaverse</category>
      <category>openworld</category>
    </item>
    <item>
      <title>Briefly introduce the history of openworld.js</title>
      <dc:creator>Open World Zone</dc:creator>
      <pubDate>Wed, 31 Dec 2025 14:42:31 +0000</pubDate>
      <link>https://dev.to/openworldzone/briefly-introduce-the-history-of-openworldjs-ddh</link>
      <guid>https://dev.to/openworldzone/briefly-introduce-the-history-of-openworldjs-ddh</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbdizltbtlng8npx16j8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbdizltbtlng8npx16j8.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These past few days, I've been working on multi-models. Actually, my idea is to implement as many large-scale models as possible.&lt;/p&gt;

&lt;p&gt;WebGL itself starts to lag after 80,000 instance models, so I try to implement dynamic loading as much as possible, allowing distant content to be loaded dynamically as needed when the main character moves far away.&lt;/p&gt;

&lt;p&gt;In fact, it's quite counterintuitive—building a model is simple. For example, this library only took me 3 to 5 days to code. But figuring out how to achieve its current form took me nearly a month!&lt;/p&gt;

&lt;p&gt;This is what it currently looks like: &lt;a href="https://ow.ccgxk.com/demo/dev001/" rel="noopener noreferrer"&gt;https://ow.ccgxk.com/demo/dev001/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd like to start by saying something from before.&lt;/p&gt;

&lt;p&gt;I first published this project around October 18, 2025, on Zhihu, a Chinese website similar to Quora. The link is here: &lt;a href="https://www.zhihu.com/question/389957213/answer/1962681678376984942" rel="noopener noreferrer"&gt;https://www.zhihu.com/question/389957213/answer/1962681678376984942&lt;/a&gt;. It suddenly seems to have become very popular.&lt;/p&gt;

&lt;p&gt;So I thought, what if I created a three-dimensional world that could accommodate a lot of buildings?&lt;/p&gt;

&lt;p&gt;So I started researching, on and off, until December 2025, when I finally managed to get it to this point. To be honest, I was very disappointed, but I guess I didn't give up.&lt;/p&gt;

&lt;p&gt;My project is written using WebGL.&lt;/p&gt;

&lt;p&gt;Initially, it came from a framework by a "code golf" expert: &lt;a href="https://xem.github.io/W" rel="noopener noreferrer"&gt;https://xem.github.io/W&lt;/a&gt;. When I saw this framework, I was amazed that it could realize such a world per second in just 2kb.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9i1xwupn318tiu4hia3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9i1xwupn318tiu4hia3.png" alt=" " width="720" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In May 2025, I started researching. I was just a JavaScript newbie. But I learned a lot, little by little.&lt;/p&gt;

&lt;p&gt;Then I added the cannon.js physics engine. My goal from the beginning was very clear: a very small game engine. So I worked on compressing the size of cannon.js, and it worked quite well; my current project uses a very small version of cannon.js, only 29kb!&lt;/p&gt;

&lt;p&gt;Afterwards, I made many optimizations to the interaction and instantiation aspects. Then, on July 2025, I released an example of an online note-taking system: &lt;a href="https://git.ccgxk.com/myWorkSpace/webgl_show/cyber_city/cbcity.html" rel="noopener noreferrer"&gt;https://git.ccgxk.com/myWorkSpace/webgl_show/cyber_city/cbcity.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cpdb3m0xttb4q4ithco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cpdb3m0xttb4q4ithco.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those colorful blocks filled me with longing. However, my development progress was very slow because I had too many trivial matters in my life.&lt;/p&gt;

&lt;p&gt;Then, on August 2025, I created a simple program to add blocks. At the end of September 2025, I started thinking about whether to build a library. And so, on October 2025, my library was finally completed!&lt;/p&gt;

&lt;p&gt;That is the past.&lt;/p&gt;

&lt;p&gt;Then in mid-November, I wanted to create my own brand, so I registered the domain name openworld.zone. But procrastination kept getting in the way, and by the end of December 2025, which is almost 2026, it was still not done.&lt;/p&gt;

&lt;p&gt;I hate my procrastination, but thankfully, this project has been progressing smoothly for the past six months. So be it...&lt;/p&gt;

</description>
      <category>webgl</category>
      <category>webdev</category>
      <category>threejs</category>
    </item>
  </channel>
</rss>
