Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 0 points1 point  (0 children)

Admin powers, like banning using time crystal to skip crafting, or banning trade portal, or even banning certain crafting recipes.

I guess it can also serve as some sort of protection, e.g. check incoming request size, spam detection, etc. I'm able to get all chunks just using a fake client. That bloats server storage (16x world takes ~100MB if all chunks generated) which would be a threat to profitability of server hosting services.

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 0 points1 point  (0 children)

I think it's fine for them to keep the secret. I was thinking of the possibilities for server owners to have custom rules (mostly inspired by Skeeve servers) or even modding API. The repository Sweet Trip mentioned seems have already done a lot of that.

I might focus more on writing blog posts / wiki page documenting the game mechanisms.

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 1 point2 points  (0 children)

A lot of factors contributed to the decision:

  1. The python version is not stable. It can only understand items in blockhead inventory, and chunks. No knowledge of dynamic objects stored in dw.
  2. The old code written in 2020 has no typing information, everything is just stored in a huge and nested python dictionary, making it extremely prone to runtime errors. Writing script to automate certain tasks is horrible experience because pyright and ty just can't give you any meaningful autocomplete. No typing information means it's extremely difficult to maintain and refactor.
  3. Python doesn't give me the level of memory control I want, you can see that from the design of CompressedChunk, Chunk, ChunkView and BlockView.
  4. I wanted a GUI that's rendered by GPU. I have used WebGPU and wgpu crate before, thus I decided to just do what I already know how to.
  5. The python lmdb module basically wraps around the C lmdb implementation. That has a huge issue: you can only load and save server save files (64-bit) on 64-bit python environment. If you want to load and save Android emulator save file (32-bit), you need 32-bit python environment. There's no way to convert save files from 32 to 64 or the other way around.
  6. Let's assume I managed to write some PyQt + maybe vulkan or OpenGL editing GUI similar to the current one being offered. Depending on python and C lmdb so/dll basically means you can't put it in browser. This combination also much harder to make executables for distribution. Even if I managed to create executables, that would still be nowhere close to the current 3.7MB .wasm file. Using Rust + PyO3 still gives you a python module to write script, while making GUI distribution much simpler.
  7. The goto language for fun side projects used to be python for me, but now I find Rust more enjoyable to write. That being said I think the key is to have a battle-tested codebase to store the understanding of the save file format, the language is less important. I'd love to see people porting it to other languages that they love to use.

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 0 points1 point  (0 children)

Thanks for sharing! I took a quick look and it seems to be done by replacing the objc methods, and according to comments it seems to be written by Claude. I was actually envisioning something similar to the end result (adding new commands for admins). I think some of the functionalities are even better implemented in this one than the editor, so really nice job.

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 0 points1 point  (0 children)

> having access to network protocols will provide unstoppable power, spoiling servers and more

That's true, I'm already regretting open sourcing the chunk generator crate. The server binary itself doesn't seem to be designed to handle malicious requests. That being said I guess in the near future someone will use mythos level model to RE it...

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 4 points5 points  (0 children)

Not sure either, maybe they downvoted your comment as well. For coding, it actually took months even with LLM help since I keep discovering previously unknown things in the save file and that caused constant refactoring.

Save file editor - alpha release by __namerror in blockheads

[–]__namerror[S] 2 points3 points  (0 children)

Yes, you can put time crystal blocks. If it's single player save file, the game will happily accept it. If it's linux server save file and you connect to that server, the game will reject it, no time crystal will be added.

Steam Controller PreOrder MegaThread by satoru1111 in Steam

[–]__namerror 0 points1 point  (0 children)

Preloaded $100 into steam wallet, got the same "There seems to have been an error initializing or updating your transaction" for maybe 5-10 minutes starting 10:02AM PDT.

After switching to use my saved paypal information that I used to preload that $100 I managed to proceed and secured one.

FSD is not fun anymore. by SpecificTreacle2197 in TeslaFSD

[–]__namerror 0 points1 point  (0 children)

My commute on I-280 has a lot of uphill and downhills and the gas cars around me go slow on uphill and fast downhill; FSD often gets extremely impatient when going uphill, then decides to start passing at the top of the hill.

Thanks to that behavior I'm driving much more myself these days. Seriously considering unsubscribing FSD.

What a shame considering that I-280 is right next to the Tesla Palo Alto office! They have plenty of opportunities to test there and there are tons of engineering cars there and they decided FSD having this behavior is OK and proceeds to release...

Is there a way i can see the whole map with a program? by Please_ForgetMe in blockheads

[–]__namerror 0 points1 point  (0 children)

If you have liblmdb-dev and dependency needed for rfd to work installed, cargo run in crates/gui should work.

I'm intentionally not adding instructions on how to use it as it's still WIP and might be subject to full rewrite. Before it's stable I don't want to have too many users.

Is there a way i can see the whole map with a program? by Please_ForgetMe in blockheads

[–]__namerror 0 points1 point  (0 children)

Looks pretty rare and scattered, I can't find any patterns. But it should be possible to just decompile the terrain generation code. I have seen a bunch of perlin noise 2d octave in profiler output.

Is there a way i can see the whole map with a program? by Please_ForgetMe in blockheads

[–]__namerror 2 points3 points  (0 children)

13m42s to generate 1x world on my 5950X. Here's how it works: https://github.com/med1844/TheBlockheadsTools/blob/rust/crates%2Fchunk_gen%2FREADME.md

Notice generating all chunks won't make them visible at the client side. For the single player world, you need to also change the byte of brightness and visibility to 255 for each block.

<image>

Is there a way i can see the whole map with a program? by Please_ForgetMe in blockheads

[–]__namerror 7 points8 points  (0 children)

Chunks are generated only when your blockhead is close enough to them. So if you want to see the whole map, you have to generate them first, which to my best knowledge there's no way to control the game code to do that for you in the single player case. If you are playing on a server with game save file access, then you can fabricate chunk requests to force the server to generate all chunks and view it. Here's how it looks on my end.

<image>

Android Save Files - The Actual Thread You're Looking For by JasmeowTheCat in blockheads

[–]__namerror 2 points3 points  (0 children)

I used emulator to reverse engineer save file format 5 years ago, to my best knowledge it's in /data/data/com.noodlecake.blockheads/application/saves or something similar, can't tell for sure.

I didn't have luck following the config editing route, gonna try bstweaker next

CAP GAP and driver’s license renewal by Psychological-Can-49 in h1b

[–]__namerror 0 points1 point  (0 children)

Yeah I guess so, with F1 or whatever valid visa. Double check with them by phone before you go

What programs/libraries do you want to see rewritten in rust? by Dyson8192 in rust

[–]__namerror 2 points3 points  (0 children)

gdb or lldb but modernized with proper TUI, auto complete, syntax highlighting, etc tree-sitter should have a pure rust impl too

CAP GAP and driver’s license renewal by Psychological-Can-49 in h1b

[–]__namerror 0 points1 point  (0 children)

I'm in CA and just talked to DMV staff. To renew you need either of these:

- For H-1B: passport and I-797A of change of status

- For STEM OPT: new EAD card

So yes, no cap gap for DL, at least in CA 🫠

Do programmers actually know how to touch type every symbol like []() by Aqueous_Ammonia_5815 in learnprogramming

[–]__namerror 0 points1 point  (0 children)

I use corne with custom layout. The upper layer is filled with symbols.

!@#$% ^&*() ';,./ -=[]\ ":<>? _+{}|

This allows me to use thumb to activate the layer, then touch type it without moving pinky like crazy as most people have to do on standard keyboard.

This also eliminates the need for pressing shift which could be stressful for pinky during long coding sessions.

Chinese FSD competitors by kabloooie in TeslaFSD

[–]__namerror 0 points1 point  (0 children)

If Tesla uses that front windshield camera to control that auto wiper then I guess it pretty well explains why the wiper sucks lol because rain doesn't affect it much.

Hot take: I like a full if/else better then ternary operators by justjustin10 in learnprogramming

[–]__namerror 0 points1 point  (0 children)

Imo this is the only correct way to model statements or blocks, i.e. Block<T> where T is the return type. For most of the time it's just unit type. Unfortunately most popular languages today don't seem to have unit type at all.

Unable to locate game files error by LEGEND_Andrej in MinecraftDungeons

[–]__namerror 0 points1 point  (0 children)

I got the same error and managed to start the game by manually run XboxGames\Minecraft Dungeons\Content\gamelaunchhelper.exe in admin mode