I spent 2 years building my own game engine (Rust, WASM, WebGPU)
legendofworlds.com
legendofworlds.com
I'm also deep into making a Minecraft-like game with a custom engine in Rust with WebGPU. Having worked in dozens of languages, I've found Rust to be extremely productive for what I'm building. It's been great, and I have relatively few complaints.
So I'm curious what makes you and your game different. I think one of the traps here is minecraft-likes have fun algorithms so people get nerd-sniped on the technical side but the gameplay side and art are severely lacking.
You are, by definition, 100% wrong.
"The Team - The list of currently active game developers, part-time and full-time"
Doesn't say who's full-time, but it's a team of 14 with 3 programmers.
After all, anyone who takes a look at the games and game engine market can quickly realize that the market is so over saturated with content that most people can't give their stuff away for free. In fact most people would have to pay people to have a look at their content/tool/game.
I'm in the middle of building out a custom entity system, and learning about the speed limitations of smart pointers, and to occasionally embrace unsafe Rust for the best performance at the cost of a bit of safety.
Here: https://7daystodie.wiki.gg/wiki/Block
Speaking of successful voxel games, Space Engineers also seems to be well regarded: https://store.steampowered.com/app/244850/Space_Engineers/
I’d also put Empyrion up there, though it was a bit niche: https://store.steampowered.com/app/383120/Empyrion__Galactic...
Oh also definitely No Man’s Sky: https://store.steampowered.com/app/275850/No_Mans_Sky/
Here's a cool video on how they did things for that game: https://www.youtube.com/watch?v=sCRzxEEcO2Y
It is definitely a voxel game. Both games also share the same core gameplay loop of mining blocks of materials and using those materials to build other blocks elsewhere.
The wikipedia page for the game literally says "The game is voxel-based (similar in some aspects to Minecraft, but with smooth terrain)".
The fact it doesnt look like one proves your point wrong. There are many other places in the voxel game space which are as yet untapped.
No? Off the top of my head, there's Teardown, which has sold over a million copies and has rave reviews.
And there's a lot more games that use voxel-tech but don't make it part of their core aesthetic, especially for terrain deformation/mining. Notable examples include No Man's Sky and Deep Rock Galactic.
Some examples:
No Man's Sky (survival, voxel, proc gen)
Astroneer (survival, voxel, proc gen)
Valheim (survival, proc gen)
Enshrouded (survival, voxel)
Terraria (survival, proc gen)
Like it or not there's a lot to be gained from learning how to make a Minecraft-like. Does making one guarantee success, NO, but same goes for any other type of game.
The effect of this is that it's actually quite non-obvious that it's voxel based unless you pay careful attention.
Here's a GDC talk about No Man's Sky world generation:
https://youtu.be/sCRzxEEcO2Y?si=H0r5zPRfO1CCeZ_m
Voxels doesn't necessarily mean something looks blocky like Minecraft.
I used to read this guy over at procworld.blogspot.com (as I type this I'm not sure if it even works anymore) who developed a very nice Voxel engine he ended up eventually licensing to game studios like SOE named Voxel Farm which was intended to be in EverQuest Next.
It had tons of features way beyond a simple Minecraft clone. I was always blown away at what was possible and the tech behind it.
They use voxels under the hood but still render smooth graphics with techniques like marching cubes.
I think you are underestimating voxels or don't understand how they are applied in modern game development.
If those aren't voxel games, neither is Minecraft.
That's like saying games don't use polygons or triangles to render because when you zoom in everything looks smooth / no triangles.
Early builds of Deep Rock Galactic look extremely Minecraft-like. There are plenty of others depending on what you consider Minecraft features.
Most people think voxel means 'cube' or 'block', but really it just means "regularly spaced sample in a 3-or-more-D grid".
The voxel gamedev community tends to call Minecraft-y voxel games "bloxel"-based.
I'm also working on a Rust+WASM+WebGPU game from scratch. The process has been absolutely wonderful.
The stack (or, more generally, game dev from scratch) touches so many important CS concepts: computer architecture and systems programming at the bottom, all the way up to extremely abstract programming language theory and front end web dev at the top. Add in networking and your own distribution platform (even a simple REST website) and you end up doing and learning more than you would in most CS programs.
Initially, we struggled a bit with how much ceremony there seemed to be to make simple stuff like movement work within the paradigm of an ECS (entity component system) engine.
But by the end of the week I think i can safely speak for all of us when i say we came away impressed by how organized everything was - despite everyone working on different pieces at a frantic pace for a week.
One concrete example is a last minute addition of little text dialog popups over various entities in response to different events : enemy sighting a player, player respawning, reaching an objective, etc. This ended up being trivial once the system for picking which line to say was in place, largely thanks to ecs and bevy’s event system.
Now i wouldn’t want to go back to the gameObject / update function way of structuring things ecs and bevy actually really shine once you do cross a certain threshold of size/complexity - especially with multiple people working simultaneously.
That said i do agree with you on the generalized physics engine point - we decided early on that was overkill and we could write our own collision and movement much faster, with better game feel to boot.
> But of course, are we thinking about making a quick buck, or are we thinking about making quality games for the next 30 years?
I’m not in the games industry, but I don’t see this as a viable mindset anywhere in the consumer software industry. The half-life of the software I work with is maybe 3-4 years, and during major projects many things get rewritten or replaced.
Games decay quickly. But Games engines ironically enough iterate much more slowly than many other types of software. You'd be surprised how much of UE5 still has UE 1 code at its base.
The main exceptions to that is the renderer, and even then: openGL still isn't out the door yet. you can work on maintaining the Vulkan/DX12 backend for decades to come. Thinking of the half life as the renderer instead of the entire engine makes this task much less daunting.
That or use a different form of compositing — something equivalent to "Lighten" or "Screen" (using standard paint-program parlance).
The abstraction libraries that are higher level than web_sys don't support transferable objects currently, so you'd have to write your web worker in web_sys directly to avoid needless data copying. It's pretty doable, and I've gotten started on a crate abstracting this part, but it's been a serious willpower blocker for me.
One thread is pretty limiting for any web app today. As soon as you want to do something interesting, you're blocking the main thread.
https://github.com/ensisoft/detonator
Too bad there's no actual technical information about the authors engine.
Huh? Is there something I'm missing here? Does he think that object-oriented languages store a copy of behavior code for every instance of an object?
What he means is that when using ECS, the data for all components of a particular type is contiguous. Say you want to update the physics, if all the physics data for all objects is in the same memory block you minimise cache misses when processing it
However for a 2d top-down game where you have extremely good culling and layering, it’s possible you might be IO and GPU bound than anything else.
Still, without profiling it’s hard to say.
When I first started game development, I was all-in on building my own engine.
Then I matured a bit, and found the wisdom in using someone else's engine.
Now that I've grown a bit more, I'm starting to see the appeal of building ones' own engine again. I feel like this blog post enumerates the reasons quite nicely, and I respect the approach.
Kudos -- this looks great. :)
When you make yet another toy game engine, you've hopefully learned a lot, but what you have is a lot of dead code.
You might be able to build a perfectly wonderful garden, but that doesn't mean you can use the vegetables you carefully cultivated in any meaningful way in your kitchen to cook a healthy and delicious meal if you can't cook at all (but you can still share the vegetables with your neighbors who might share their cooking with you)! :)
Y'know, the good old days.
Those 3d games were pretty standout amidst the Macromedia/Adobe/Shockwave/Flash platformers on Miniclip.
In case you care about using the actual GPU capabilities, and not a 10 year old API.
I installed the ublock lite and the web looks the same to me. Perhaps I'm not going to the right places, but not many ads are getting through to me.