8
17
ultimaluz

@lemmy.world

ultimaluz 1 point a day ago

yeah thats the nice part, every app in its own box and if one breaks you just throw it away and start it again. for subdomains I ended up with caddy in front, it does the certs by itself so adding one is like 2 lines

path: 0 26332139 26345684 26349915 26356761 26389298, hotness: undefined, score: 1, children: 0
ultimaluz 2 points 4 days ago

for a multiplayer browser game I ended up skipping websockets and using SSE for everything that goes server to client, and plain POST requests for the actions. it's just http so the reverse proxy, cookies and reconnects work without doing anything special, and EventSource reconnects by itself. one gotcha if you use express with compression middleware, exclude the SSE route or the events get buffered and arrive in chunks. websockets make more sense if the client sends a lot, mine mostly listens

path: 0 26349929, hotness: undefined, score: 2, children: 0
ultimaluz 2 points 4 days ago

8gb with 70+ mods is way less than I expected, nice. capping it in docker is smart too if it leaks at least it can't take the rest of the box down with it

path: 0 26332139 26345684 26349915, hotness: undefined, score: 2, children: 2
ultimaluz 2 points 4 days ago

What I do for that is turn it around, instead of checking for a failure I alert on the absence of a success. backrest has hooks, so on snapshot success it pings a push monitor in uptime kuma (healthchecks.io works the same), and if no ping arrives in ~26h it alerts. That way it catches the backup that never ran, which is the one that scares me the most I guess

path: 0 26316730 26320785 26349907, hotness: undefined, score: 2, children: 1
ultimaluz 2 points 4 days ago

hey Tower, late follow up but you were right and it's done. the ? button now has a SEE THE RULES button right under the welcome, it's a plain manual with 8 short questions and the real numbers, and those numbers come straight from the game code so they can't go stale when I change something. thanks for actually playing and saying you had no idea what was happening, that one comment changed more than any stat I was looking at

path: 0 26034602 26349884, hotness: undefined, score: 2, children: 0
ultimaluz 4 points 5 days ago

Most of my stuff lives on a cheap hetzner vps so that power is someone else's problem lol. at home it's a raspberry pi that's always on (a few watts) and a bitaxe miner doing about 19W, that's around 14 kWh a month, like 3 euros here. the gaming pc is the only hungry thing and it stays off, the pi wakes it with wake-on-lan when I actually need it. took me a while to get the bios settings right (erp off, power on by pci-e) but it was worth it.

path: 0 26332123, hotness: undefined, score: 4, children: 2
ultimaluz 1 point 4 days ago

For me the evidence was the server logs, filtering by user agent. my main page is basically a canvas game, so the html has almost nothing for a crawler, and I was surprised to see googlebot not only rendering it but opening the SSE stream like a real player (I noticed because bots were showing up as online players lol). what actually got indexed were the plain server rendered pages I made for each thing worth sharing, with title, og image and json-ld, listed in the sitemap. so I didn't change the app rendering, I just gave crawlers simpler pages to read.

path: 0 26349921, hotness: undefined, score: 1, children: 0
ultimaluz 1 point 4 days ago

money wise no, not even close. it's a bitaxe gamma doing around 1 TH/s solo, so it's basically a lottery ticket, the odds of hitting a block are tiny. it costs me like 3 euros a month in power so I treat it as a toy, I like checking the best difficulty it found and it's a nice way to learn how mining works

path: 0 26332123 26334424 26349892, hotness: undefined, score: 1, children: 0
ultimaluz 1 point 4 days ago

thanks, it's the first number I look at every morning lol. one thing I learned this week is that you have to clean it before trusting it, a crawler from some chinese cloud providers was keeping the cookie and coming back, it was 6 of the 7 "visitors" one day. so the real number is smaller than it looked, but at least now it's honest

path: 0 26300105 26310908 26329200 26332112 26334731 26349780, hotness: undefined, score: 1, children: 0
ultimaluz 2 points 5 days ago

thanks, means a lot after how the last thread went lol. honestly it's still early to say if it worked, the number I'm watching now is how many people who paint on their first day come back another day, if that one moves I'll know the card and the siege clock did something.

path: 0 26300105 26310908 26329200 26332112, hotness: undefined, score: 2, children: 2
ultimaluz 4 points 5 days ago

I'd add backup age and size, not just status, like alert if the newest dump is older than ~26h or smaller than 1MB, a job can say success and still leave you a useless file. and disk fill with a threshold, not only the graph. learned that one the hard way, a table on my vps was getting a row every minute with no cleanup and one day the disk hit 100% and postgres just died for like 40 min, obviously nobody was looking at the dashboard right then lol. now 80% warns and 90% sends me an email, and uptime kuma checks the cert expiry from outside. I guess the dashboard is nice to look at but the stuff that matters should ping you

path: 0 26316730, hotness: undefined, score: 4, children: 3
ultimaluz 1 point 5 days ago

Day 818 is wild, congrats on keeping it going. and the part about making cool stuff for your friends and not caring if it's profitable is so true, I host a few little things nobody pays for and it's the best part of the hobby I guess. Does the cobblemon server need a lot of ram or does it run fine on modest hardware?

path: 0 26332139, hotness: undefined, score: 1, children: 4
ultimaluz 1 point 6 days ago

thanks, this is pretty much where it went after that post. the end of a visit now shows a small card with what you lit, what she took back and how much of it is still standing, and the siege got a visible clock, the ring closes first and the assault comes 30 min later so you can see it coming while you're still there. and whatever you paint in your first two hours she can't touch for 24h, so when you come back there's still something of yours. too early to know if it works, the numbers are still tiny, but "reads as a challenge instead" is exactly what I was trying to get to

path: 0 26300105 26310908, hotness: undefined, score: 1, children: 4
ultimaluz -1 points 6 days ago

both, kind of. the part that actually erases stuff is plain game AI, rules and a budget: it finds groups of 25+ connected pixels, announces a siege on one, closes a ring around it, and if people don't keep the ring lit it eats the work. all deterministic code. on top of that, every 15 min a small LLM (gemini flash lite through openrouter) gets the state of the board and picks which of the legal moves to make, which work to siege and when, and the code clamps whatever it answers, it can't break the rules. it also writes a one line reason that goes in a war log on the site, that's the only generated text players see. everything she says in the game and on the stream comes from a bank of lines I wrote by hand, and nothing on the canvas is generated, it's all people painting. if the LLM is off, a fixed set of rules plays instead

path: 0 26311389 26315670, hotness: undefined, score: -1, children: 0
ultimaluz 1 point 20 days ago

Hello Tower, I will try to create a page where the mechanics of it, the machine, are clearly explained. Now I try to explain it here: She thinks every 10 seconds. She is reconquering based on a budget, but it is enhanced if people draw more. Every 15m the LLM chooses a larger target to turn off its lights. She advances along her border but if a player reconquers she can go after him with more determination. It must be taken into account that a painted light has a protection of 72 hours, only a declared fence can with it. I hope I have explained a little more to you. Anyway, I'm going to try to implement that more clearly in the game. If you have any more questions, tell me and I'll answer you.

path: 0 26034602 26063475, hotness: undefined, score: 1, children: 0
ultimaluz 1 point 22 days ago

Fair question. Parts of it, yes. I'm a Spanish developer and English is not my first language, so I wrote the post with an AI assistant and edited it afterwards. The numbers, the decisions and the mistakes are mine. I also build a good part of the game with AI tools and I'm not going to pretend otherwise; the manifesto page on the site says who is behind it.

What is not AI is the canvas. Every lit pixel there was placed by a person, one click at a time. The AI in the game only erases, on a budget, with its rules published in the open.

If the writing put you off, that's on me, and it's useful to know.

path: 0 26028099 26034581, hotness: undefined, score: 1, children: 1
ultimaluz 0 points 22 days ago

Thanks, this is exactly the kind of thing I can't see from here. Which phone, if you don't mind? The 3D city is heavy on older Androids; the flat map (the PLAN button) is much lighter, and the glow can be switched off with the button next to it.

On the instructions: the four dots above the animation let you step through it at your own pace, but if you didn't notice them, that's my design failing, not you reading badly. The point in one line: light pixels, keep them lit, and an AI is trying to put them out.

path: 0 26028624 26034595, hotness: undefined, score: 0, children: 1

thanks for using Leebra!

go to feed...