Skip to content

Commit f9ff0b1

Browse files
committed
August News Blog
No video auto play
1 parent a2086b7 commit f9ff0b1

15 files changed

Lines changed: 286 additions & 9 deletions

File tree

‎blog/2026-09-02-august.mdx‎

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
---
2+
slug: august-2026
3+
title: "Aug: Halloween Jam, Based Sync & Website++!"
4+
authors: gtnardy
5+
tags: [updates]
6+
image: /img/blog/2022-august/august-news.webp
7+
---
8+
9+
**Announcing the Halloween Playtest & Game Jam, new Network Based Sync & Packets Bundle, new Buoyancy customization, new website Badges & new features and much more!**
10+
11+
![](/img/blog/2022-august/august-news.webp)
12+
13+
Welcome to our roundup of the latest updates from the last month!
14+
15+
{/* truncate */}
16+
17+
18+
## 🎃 Halloween Playtest & Game Jam {/* #halloween-playtest--game-jam */}
19+
20+
**SAVE THE DATE!!** Halloween Playtest is coming! And bigger than ever! 👇
21+
22+
<VideoExternal path="/blog/2026-august/halloween-game-jam.webm" />
23+
24+
<MediaLegend>Halloween Game Jam 2026 Teaser</MediaLegend>
25+
26+
This year we're turning Halloween into a proper **Game Jam**, with a dedicated area on the website, a clear submission process, and community voting to decide the winners!
27+
28+
![](https://cdn.nanos-world.com/cdn-cgi/image/width=2048,fit=scale-down,format=auto/game-jams/1788213525_153f1e06-f09c-434b-9c69-00d3cd240658.jpg)
29+
30+
<MediaLegend>Halloween Game Jam 2026 Banner</MediaLegend>
31+
32+
From **September 24 to October 23**, all testers will be able to submit their own spooky game-modes, or register a server to host one during the event.
33+
34+
After that, we'll run a short internal warm-up test with Testers, and then open the Playtest to everyone over the Halloween weekend from **October 30 to November 1**.
35+
36+
The community will be able to vote respecting several categories, and the winners will be announced shortly after the event!
37+
38+
39+
### Public Playtest
40+
41+
The public Playtest will be open to all Steam users, allowing them to download nanos world and jump in to play every submitted game-mode over the Halloween weekend.
42+
43+
We already have thousands players registered for the Playtest, and we expect a lot of new players to join in for the event! This is a great opportunity to showcase your team's (or solo's) work and game-modes to a large audience, and get feedback from the community!
44+
45+
46+
### Integrated Game Jam System
47+
48+
The Gam Jam will be completely integrated into the website and game, making it easy to submit your game-mode, register a server, and vote for your favorites.
49+
50+
![](/img/blog/2026-august/game-jam-entry-manage.webp)
51+
52+
<MediaLegend>Managing a Game Jam Entry</MediaLegend>
53+
54+
![](/img/blog/2026-august/rate-jam.webp)
55+
56+
<MediaLegend>Rating a Game Jam Entry</MediaLegend>
57+
58+
59+
In the next weeks, all the details and rules will be shared on the new **Halloween 2026 Game Jam** page, so make sure to check it out and keep an eye on it for updates!
60+
61+
Of course there will be special badges rewarded to the winners, and a **Halloween 2026 Game Jam** badge for all participants! 🏆
62+
63+
Get ready for a spooky month of fun, and start thinking about what kind of game-mode you want to submit! We can't wait to see what you all come up with. 💙
64+
65+
#### See the Game Jam page preview 👇👇👇
66+
67+
<ReferenceLink href="https://nanos-world.com/community/game-jams/halloween-2026">Halloween 2026 Game Jam</ReferenceLink>
68+
69+
70+
## Network Based Sync
71+
72+
We implemented a new *experimental* **Based Sync** system, which mitigates the issues where Characters were moving desynced/delayed when standing on moving platforms.
73+
74+
Before:
75+
76+
<VideoExternal path="/blog/2026-august/based-sync-before.webm" />
77+
78+
<MediaLegend>Character standing on a moving platform before the Based Sync system</MediaLegend>
79+
80+
After:
81+
82+
<VideoExternal path="/blog/2026-august/based-sync-after.webm" />
83+
84+
<MediaLegend>Character standing on a moving platform after the Based Sync system</MediaLegend>
85+
86+
Please let us know any feedback or issue you notice with this new system!
87+
88+
89+
## Network Packet Bundling {/* #network-packet-bundling */}
90+
91+
We introduced **experimental** network packet bundling: network packets are now merged together before flushing, reducing the amount of packets being sent over the network.
92+
93+
In our tests, this has reduced the number of packets sent by up to **~95%** in a server with hundreds of players, which dramatically helps the server performance and mitigate some connection issues.
94+
95+
96+
## Website & Community {/* #website--community */}
97+
98+
### Automatic Badges {/* #automatic-badges */}
99+
100+
![](/img/blog/2026-august/badges.webp)
101+
102+
<MediaLegend>Community Badges</MediaLegend>
103+
104+
105+
We added several new **automatic [Badges](https://nanos-world.com/community/badges)**, granted as you [complete](https://nanos-world.com/community/badges/f6af9f56-598e-4192-9e8a-8a26c5ea84ba) your profile, [review](https://nanos-world.com/community/badges/c82ac590-d80e-42ef-a2d1-f4623829ae5a) a resource, create a [Team](https://nanos-world.com/community/badges/ed1fd381-03b6-4a28-99e2-efea7c4fc7d6), or release a [Resource](https://nanos-world.com/community/badges/9a25d8c9-cc5a-4194-a448-a4a7be252828), on top of new **veteran Badges** for account age, like the [One Year](https://nanos-world.com/community/badges/7dd372b9-2ff3-42ed-be5a-62ede1024e08) badge.
106+
107+
We'll keep expanding this list of automated badges gradually! If you have any suggestions for new badges, please let us know in our [Feedback Hub](https://feedback.nanos-world.com/)!
108+
109+
110+
### Resource Favoriting {/* #resource-favoriting */}
111+
112+
![](/img/blog/2026-august/resource-favoriting.webp)
113+
114+
<MediaLegend>Favoriting Heart Button</MediaLegend>
115+
116+
We added a new feature to **favorite** resources, to show your support for the creators and help them get more visibility on the Store. You can favorite a resource by clicking the **heart** icon on the resource page!
117+
118+
119+
### New Profile Buttons {/* #new-profile-buttons */}
120+
121+
![](/img/blog/2026-august/profile-buttons.webp)
122+
123+
<MediaLegend>New Profile Buttons</MediaLegend>
124+
125+
We added a few new buttons to your profile page (when you are in your page), to make it easier to create new resources and teams.
126+
127+
128+
### Image Cropper {/* #image-cropper */}
129+
130+
![](/img/blog/2026-august/image-cropper.webp)
131+
132+
<MediaLegend>New Image Cropper</MediaLegend>
133+
134+
New **Image Cropper** uploader, which allows you to crop your images directly on the website when uploading a new image to a resource or team, to make sure they fit the required aspect ratio.
135+
136+
137+
### Improved Upload Progress {/* #improved-upload-progress */}
138+
139+
![](/img/blog/2026-august/uploader.webp)
140+
141+
<MediaLegend>Improved Upload Progress</MediaLegend>
142+
143+
We improved the versions upload section, with a better upload progress UI, now it displays the **upload speed**, **estimated time remaining**, and **total uploaded size**. This should help you better understand how long the upload will take, especially for larger files.
144+
145+
146+
### Meta Tags {/* #meta-tags */}
147+
148+
![](/img/blog/2026-august/media-meta.webp)
149+
150+
<MediaLegend>Proper Meta Tags for social medias</MediaLegend>
151+
152+
We implemented several meta tags, so any Store or Community page now looks much prettier when shared on Discord or social media, fetching the proper title, description and image for the page.
153+
154+
155+
### Other Improvements {/* #other-improvements */}
156+
157+
- Added an **Unreal version** warning on resource pages, so you can quickly see whether an asset pack is incompatible with the latest nanos world Unreal Version.
158+
- **Team** and **Resource** sorting now takes total ratings and downloads into account.
159+
- Improved the overall navigation: standardized navbar buttons and colors.
160+
- Also fixed several bugs.
161+
162+
163+
## Scripting Improvements {/* #scripting-improvements */}
164+
165+
### Water Enter/Leave Events {/* #water-enterleave-events */}
166+
167+
We added new <EventReference type="Class" class_name="Actor" event="EnterWater" /> and <EventReference type="Class" class_name="Actor" event="LeaveWater" /> events, triggered whenever an Actor enters or leaves a body of water. Only Actors that simulate physics trigger these, such as <Classes.Character />, <Classes.Prop />, all <Classes.Vehicle /> and all <Classes.Pickable />.
168+
169+
```lua title="Server/Index.lua" showLineNumbers
170+
Prop.Subscribe("EnterWater", function(prop)
171+
Console.Log(prop:GetID() .. " entered the water!")
172+
end)
173+
```
174+
175+
176+
### Buoyancy Customization {/* #buoyancy-customization */}
177+
178+
<Classes.Prop />, <Classes.Pickable /> and <Classes.Vehicle /> got two new methods to tweak how they float:
179+
180+
- <MethodReference type="Class" class_name="Prop" method_name="SetBuoyancySettings" show_class_name />
181+
- <MethodReference type="Class" class_name="Prop" method_name="SetBuoyancyPontoons" show_class_name />
182+
183+
`SetBuoyancySettings` lets you enable/disable buoyancy forces entirely, or tweak the buoyancy coefficient, while `SetBuoyancyPontoons` lets you override the spherical pontoons used for the Water simulation, instead of the ones automatically calculated from the mesh bounds and mass.
184+
185+
:::note
186+
187+
**Pontoons** and **Buoyancy** Settings only have an effect on Maps with [`enable_water_buoyancy`](/docs/next/core-concepts/packages/packages-guide#settings-detailed) enabled.
188+
189+
:::
190+
191+
192+
### HTTP Response Headers {/* #http-response-headers */}
193+
194+
<MethodReference type="StaticClass" class_name="HTTP" method_name="Request" show_class_name /> and <MethodReference type="StaticClass" class_name="HTTP" method_name="RequestAsync" show_class_name /> now also return the response `headers`.
195+
196+
197+
### File.Rename {/* #filerename */}
198+
199+
We added a new method <MethodReference type="Class" class_name="File" static_method_name="Rename" show_class_name />, to rename or move a file or folder.
200+
201+
202+
### Unsafe Libs Check {/* #unsafe-libs-check */}
203+
204+
We also added <MethodReference type="StaticClass" class_name="Server" method_name="IsUnsafeLibsEnabled" show_class_name />, which returns whether the server was started with `--enable_unsafe_libs`.
205+
206+
207+
### Vault/Store API Caching {/* #vaultstore-api-caching */}
208+
209+
We are implementing several caching systems in the API, to speed up Vault and Store loading times.
210+
211+
:::note
212+
213+
Some operations like updating a resource or your profile may now take a few seconds to be fully pushed to everyone and to the main lists. Let us know if something seems broken!
214+
215+
:::
216+
217+
218+
### Dependencies Updated {/* #dependencies-updated */}
219+
220+
- Enabled the **NiagaraFluids** and **Mutable** Plugins content.
221+
- Updated **Discord SDK** to v1.10.
222+
- Updated **CEF** to v151.
223+
- Updated **httplib** to v0.53.0.
224+
- Updated **DLSS** to v8.7.2.
225+
- Updated **Sentry** to v1.19.0.
226+
227+
<ReferenceLink href="assets-modding/whitelisted-ue-plugins">Whitelisted UE Plugins</ReferenceLink>
228+
229+
230+
## Conclusion {/* #conclusion */}
231+
232+
August was all about getting ready for what's coming next. On the community side, we're really excited about turning Halloween into a proper **Game Jam**, with its own website area, a real submission and voting process, and a shot at being recognized as a winner. This is the biggest community event we've put together, and I can't wait to see what everyone builds!
233+
234+
On the scripting side, the based-sync network system and new Water features and Buoyancy customization open the door for a lot of water-related game-modes and mechanics!
235+
236+
I hope you enjoy all the new features and improvements! I'm always looking for feedback, so if you have any suggestions or ideas, please let us know in our [Discord](https://discord.gg/nanos-world) or [Feedback Hub](https://feedback.nanos-world.com/).
237+
238+
A special thanks also goes to everyone contributing translations through [Crowdin](https://crowdin.com/project/nanos-world-game), helping make the game and the docs more accessible to players around the world, and to those supporting development through [Ko-fi](https://ko-fi.com/gtnardy)!
239+
240+
Your support is what allows me to continue working on nanos world full-time and keep pushing the project forward. 💙
241+
242+
See you in the Jam! 🎃
243+
244+
<KofiButton />
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:3ffa7cdd9100eb65e63cc08f406a603c60f377fb8d135fda2b709e6ea39937ec
3+
size 9752567
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:1292416a3409f21ec2903dcd605431fadfdd2af9eed98e6fd30a8d94e3704c00
3+
size 7854295
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:489a18bd928de4870585eacdd2f11a27ed9b4d10646962e16a2d9bc00e3b66c6
3+
size 6058816

‎src/components/Utils.jsx‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const GetExternalPath = () => {
99
}
1010

1111
// External Video from Github (with lazy load)
12-
export const VideoExternal = ({ path, noplay, controls = true, className, style }) => {
12+
export const VideoExternal = ({ path, autoplay = false, loop = false, controls = true, className, style }) => {
1313
const videoRef = useRef(null);
1414
const [isVisible, setIsVisible] = useState(false);
1515
const src = `${ GetExternalPath() }/videos${ path }`;
@@ -47,22 +47,22 @@ export const VideoExternal = ({ path, noplay, controls = true, className, style
4747
if (isVisible && videoRef.current) {
4848
// Set the source and load the video
4949
videoRef.current.src = src;
50-
videoRef.current.play();
50+
// videoRef.current.play(); // do not autoplay
5151
}
5252
}, [isVisible, src]);
5353

5454
return (
5555
<video
5656
ref={videoRef}
57-
loop={!noplay}
58-
autoPlay={!noplay}
59-
muted={!noplay}
57+
loop={loop}
58+
autoPlay={autoplay}
59+
muted={autoplay}
6060
className={className}
6161
style={style}
6262
controls={controls}
6363
allowFullScreen={true}
6464
playsInline
65-
preload="none"
65+
preload="metadata" // preload the cover image only
6666
>
6767
Your browser does not support the video tag.
6868
</video>

‎src/pages/roadmap/index.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const Roadmap = () => {
7171
setItem({ title, image, video, description, labels, external_link, external_link_title });
7272
}}>
7373
{ image ? <ImageExternal path={image} /> : null }
74-
{ video ? <VideoExternal controls={false} path={video} noplay={false} /> : null }
74+
{ video ? <VideoExternal controls={false} path={video} autoplay={true} loop={true} /> : null }
7575
<div className={clsx("item-content", styles["item-content"])}>
7676
<span className={clsx("item-title", styles["item-title"])}>{ title }</span>
7777
<div className={clsx("item-labels", styles["item-labels"])}>
@@ -103,7 +103,7 @@ const Roadmap = () => {
103103
} }></button>
104104
<div className={clsx("popup-content", styles["popup-content"])}>
105105
{ item.image ? <ImageExternal className={clsx("popup-image", styles["popup-image"])} path={item.image} /> : null }
106-
{ item.video ? <VideoExternal controls={false} path={item.video} noplay={false} className={clsx("popup-image", styles["popup-image"])} /> : null }
106+
{ item.video ? <VideoExternal controls={false} path={item.video} autoplay={true} loop={true} className={clsx("popup-image", styles["popup-image"])} /> : null }
107107
<span className={clsx("popup-image-label", styles["popup-image-label"])}>this { item.video ? "video" : "image" } for illustration purposes only</span>
108108
<span id="popup-title" className={clsx("popup-title", styles["popup-title"])}>{ item.title }</span>
109109
<span id="popup-description" className={clsx("popup-description", styles["popup-description"])}>
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)