We don't call them "Backups" in AMP 3, we call them "Snapshots"
▲ 24 r/Amp

We don't call them "Backups" in AMP 3, we call them "Snapshots"

Why? They function as a complete snapshot of the servers state. You can roll back in time, try something different, then go back where you were originally. It's more like a time machine than a standard backup facility.

The actual file and directory structure is preserved, so in Minecraft for example, chunk files that weren't previously present in the first snapshot get removed. Restoring to a newer snapshot brings them back.

You can have both full and partial snapshots, you can choose whether to include everything including the base data and configuration, or just the application state.

Restoring a snapshot automatically takes a new one of the present state so you can't accidentally lose something you didn't intend to.

u/PhonicUK — 3 days ago
▲ 39 r/Amp

AMP 3 - Screenshots and info

I realise not everyone is on the Discord or the support board so for those who have missed it, work on AMP 3 has going very well. Development actually started a couple of years ago but has got to the point lately where there's actually something to show for it.

AMP 3 solves just about every major pain point in AMP 2, especially the frustration of having to shut down your game servers to update the panel which won't generally be a thing in AMP 3. You can shut the panel down, the games will keep running, and you'll still be able to see what happened when it starts up again.

It's also god-damned sexy.

discourse.cubecoders.com
u/PhonicUK — 1 month ago

I tasked Claude Code with generating an infinite world, filled with cities, explorable building interiors, NPCs with lives and routines, mass transit, local transport, a day/night cycle and a tonne more. By golly has it been delivering.

I decided basically to throw something stupidly huge at Claude Code and see what would happen. To produce an infinite, procedurally generated voxel world complete with all the major components of city life. And it really delivered. This is something built over the course of about 2 weeks.

NPCs have daily routines. They get up, go to work, meet with friends, have dinner, go home. Mass transit lets you take the train to hop between different cities, local transport lets you hop on a bus or a subway to get across town.

It's based on an integer-only nested Wave-function collapse generator. So it generates very loosely at the largest scales (the coarse terrain), and produces successive nested layers to get smaller and smaller, right down to the individual objects inside the buildings.

In this video I just show off some of what it built. Later on I'll talk a bit more about how this was put together and how I got Claude to juggle something so huge without tripping over its own feet.

youtube.com
u/PhonicUK — 1 month ago
▲ 1.6k r/embedded

I've pushed my 3D renderer for the ESP32 S3 up to 40K tris/sec - screen space reflections, water distortion, particle effects, more geometry, all while maintaining a locked solid 60fps

I thought it was fast when I hit 25K tris/second, but further optimisations and tweaks have pushed this to an absolutely absurd 40K tris/second, so over 600 on-screen triangles at 60fps on an ESP32 S3.

This is all running on my open-sourced Jet renderer - https://github.com/CubeCoders/Jet

These improvements were made largely by reducing how much memory was having to be copied around and sorted per-frame, along with some minor SIMD operations to optimise memory copying. Basically it's been less about the speed of the actual rasterizer and more about alleviating the memory bottleneck.

I left it in CPU controlled but this is an entirely playable game. I plan soon to introduce cross-platform multiplayer so you can play an ESP32 and a PC head-to-head, just because I can.

u/PhonicUK — 2 months ago
▲ 1.2k r/esp32

Every time I think I've reached the limits of what the ESP32 S3 can do, I find more performance somewhere

I've shown off my (now open source!) Jet renderer a few times, but the S3 is full of surprises.

So, for my next trick - real time screen space reflections with distortion for water ripples, lens flare, bumped from 4 to 8 ships. This is now down to about 45-50FPS instead of 60 but it's worth it for how it looks, and I'm pretty sure I can recover some of that speed back still :)

The water ripple works due to the way that rendering uses the painters algorithm. Further away objects are rendered before near ones, so by the time we render the water nearer to us, the further away object it's reflecting is already in the frame buffer. This allows the reflection to be done in a single pass rather than requiring an additional pass after rendering the rest of the scene. This makes it relatively friendly to the cache on the ESP32 S3 since we've only recently drawn the pixels that we're now reflecting.

Engine source is available at https://github.com/CubeCoders/Jet

u/PhonicUK — 3 months ago
▲ 1.7k r/retrogamedev+1 crossposts

Every time I think I've reached the limits of what the ESP32 S3 can do, I find more performance somewhere

I've shown off my (now open source!) Jet renderer a few times, but the S3 is full of surprises.

So, for my next trick - real time screen space reflections with distortion for water riples, lens flare, bumped from 4 to 8 ships. This is now down to about 45-50FPS instead of 60 but it's worth it for how it looks, and I'm pretty sure I can recover some of that speed back still :)

u/PhonicUK — 3 months ago

Dune Awakening self-hosted servers are now deployable on *normal* Linux systems!

So - this was an absolute ball ache, but it works.

No Hyper-V, no Windows Pro requirement, no Kubernetes, no Alpine - just the server running on a plain Debian / Ubuntu / whatever Linux distro without too much extra mess. We still recommend that you use AMPs own containerisation for this because it'll save a few minor headaches.

You can read a little more about what the requirements are here: https://discourse.cubecoders.com/t/dune-awakening-server-guide/40200

Getting this into something simple and turnkey on normal Linux systems was absolutely absurd. But very worth it.

u/PhonicUK — 3 months ago

The self-hosted server could not possibly by any metric be a bigger mess than it is. Plus it's a security mess.

For those of you who don't know me - I run CubeCoders, we make the AMP game server control panel.

Security mess first: On the Windows side it ships a VM that has a pre-defined, static SSH key that's part of the repo. If you accidentally exposed the VM to the internet by using a bound network and DMZ or otherwise let SSH through intentionally or otherwise, the whole world has access to that VM. GG.

Lots of developers over the years have shipped some really daft servers that require some real fun tricks and hacks to get them to run in a way that make sense, because more often than not game developers don't make good server application developers.

But never in my 15 years of making server management software have I ever seen something so indescribably, so horribly, so unnecessarily convoluted and messed up.

The Windows side is just a virtual machine. They've not shipped a Windows server, they shouldn't have done this at all. This makes no sense and offers no value except confusion and extra limitations. Scrap this, don't bother with it, pay it no attention.

Now the Linux side is a real case of "Ship my machine" - the individual services are nothing remarkable. Postgres, RabbitMQ, and a few other bits. These are in docker images that are shipped directly. No "docker pull" - just the image files dumped in place. So okay lets pull these apart and ignore most of the unnecessary stuff in there.

  • But - When you drill down far enough, there's a fairly normal and unremarkable UE5 Dedicated Server application sitting at the bottom of it. Just sat there hidden under layers of images and scrips that don't need to be there.

Funcom: Stop trying to be cute, stop trying to make it turnkey, ship the damned server directly and let the existing management tools handle it all properly and handle all of the dependencies and other tooling that's needed. Don't try and ship your machine, don't try and make it turn key because it's having the opposite effect. Just document what the requirements are, don't expect to have to ship something that works OOTB because virtually nobody does for anything with these kinds of dependencies.

We are working on pulling this to shreds until we can make something sensible.

reddit.com
u/PhonicUK — 3 months ago
▲ 1.5k r/retrogamedev+1 crossposts

The track is procedurally generated at startup time, I've got 3x Ai players with collision avoidance. Physics and collisions work great and let ships nudge each other around.

This is using an ST7796 SPI display. As I said in the title this is doing interlaced updates using two half height buffers leveraging both CPU cores so one draws the next frame while the other takes care of IO.

This is a fully custom 3D engine, right now its got a set of directives turned on to only do the fastest style which is solid filled triangles with no lighting.

The shadow dynamically adjusts to match the track surface and ship orientation but is other a flat outline of the ship as a separate model. There's about 2000 on screen triangles peak.

u/PhonicUK — 4 months ago