markyg
Joined 16 years ago
Joined 16 years ago
Been collecting stuff for years.. 3D models, sprites, audio, textures, and these are the places I keep going back to. Tried to include the pros and cons of each since not all "free" is created equal.
https://assethoard.com/blog/where-to-find-free-game-assets-2...
Covers itch.io, OpenGameArt, Kenney, Poly Pizza, Freesound, and a bunch of others. Also got into the different Creative Commons licences because that trips people up (myself included).
Happy to add any I've missed if you've got favourites.
I've been building games on the side for a few years and got fed up with the asset chaos. Unity packages I bought and forgot about, Blender models scattered across folders, sprite sheets from bundles I never unpacked. I'd spend ages hunting for something I knew I had, or worse, buy it twice.
So I built Asset Hoard. It's a desktop app that gives you one searchable library for all your game dev assets. Runs locally, no account required, your files stay on your machine.
Built with Tauri, Svelte, and SQLite. Supports 40+ file types with visual previews: 3D models (.fbx, .obj, .gltf, .blend), sprites with animations (.aseprite, .krita), audio with waveforms, textures. You can inspect Unity .unitypackage and Godot assets without importing them.
It's free during beta. Looking for feedback from anyone who's got a mess of assets they'd like to organise.
Site: https://assethoard.com
Happy to answer questions about the tech stack or the product.
You can navigate in normal mode:
<leader>da - Add current file to marks <leader>dr - Remove current file from marks <leader>dl - List marked files in Telescope <leader>dc - Clear all marks <leader>1 through <leader>5 - Go to mark by index
And while in telescope
Press Ctrl-v to open in vertical split Press Ctrl-x to open in horizontal split Press Ctrl-d to remove the selected file from the list Press Ctrl-k to move the selected file up in the list Press Ctrl-j to move the selected file down in the list
HTML wasn't an option in something so dynamic.
I guess all I'm saying is, there are use-cases where it's fine
The plan is to make a Natural Language Engine, giving you all sorts of interesting facts about your block of text.
I didn't think of doing a history of all text, thats actually a really cool idea! I'll have a bit of a think about how to implement this in a nice way.
What you see is the first step to hopefully something that I can grow over time.
The problem was straightforward in hindsight: I was sending all scanned files across Tauri's IPC bridge. ~70MB of JSON each way, UI thread blocked, user assumes crash.
Streaming in chunks helped responsiveness but killed throughput (8s scan → 45s with IPC overhead). The real fix was asking: does the frontend actually need this data?
It didn't. The frontend needed a summary—file counts, type breakdown, detected packages. The actual file list could stay in Rust, referenced by UUID, and never cross the bridge at all.
Result: 8 seconds with live progress, 70MB less memory, and a "send to background" feature so users can keep working during long scans.
The write-up covers the naive approach, the failed streaming attempt, the cache pattern that worked, and a subtle race condition I introduced when implementing background scanning.