←back to thread

439 points david927 | 1 comments | | HN request time: 0.199s | source

What are you working on? Any new ideas which you're thinking about?
Show context
jesse__ ◴[] No.44416890[source]
I've been working on a 3D voxel-based game engine for like 10 years in my spare time. The most recent big job has been to port the world gen and editor to the GPU, which has had some pretty cute knock-on effects. The most interesting is you can hot-reload the world gen shaders and out pop your changes on the screen, like a voxel version of shadertoy. https://github.com/scallyw4g/bonsai

I also wrote a metaprogramming language which generates a lot of the editor UI for the engine. It's a bespoke C parser that supports a small subset of C++, which is exposed to the user through a 'scripting-like' language you embed directly in your source files. I wrote it as a replacement for C++ templates and in my completely unbiased opinion it is WAY better.

https://github.com/scallyw4g/poof

replies(6): >>44418041 #>>44419836 #>>44424357 #>>44433687 #>>44434050 #>>44456447 #
aeve890 ◴[] No.44418041[source]
10 years? Man, I envy you. Seriously. You say you work on it in your spare time so it's no like is your life passion or something like that right? How do you keep momentum? I have hundred of never finished projects, and I really struggle to finish them or work on them enough to want to keep doing it. Teach me.
replies(1): >>44418473 #
jesse__ ◴[] No.44418473[source]
Hah, thanks for the kind words <3

In all seriousness, I think I have the same propensity to have a hundred unfinished projects and have a hard time finding motivation to complete them. The difference might be that I have this 'big' project called a 'game engine' that wraps them all up into some semblance of a cohesive whole. For example, projects that are incomplete, but mostly just good enough to be serviceable (sometimes barely):

1. Font rasterizer 2. Programming language 3. Imgui & layout engine 4. 3D renderer 5. Voxel editor

.. etc

Now, every one of those on their own is pretty boring and borderline useless .. there are (mostly) much better options out there for each in their specific domain. But, squash them all together and it's starting to become a useful thing.

It just happened that I enjoy working on engine tech and I picked a huge project I have no hope of ever finishing. Take from that what you will

"I hate to advocate drugs, alcohol, violence or insanity to anyone, but they've always worked for me. --Hunter S. Thompson

replies(2): >>44419917 #>>44420950 #
noduerme ◴[] No.44419917[source]
Hah. I've been working on my own engine for over a decade, and I completely relate to this. I've torn it down and rebuilt it a few times, I've got multiple branches of it that are built for specific things... but when I want to do something I know it can't do, that could be easily done in some other engine, it just puts a bug up my butt to try and make my own code do that thing. Then I dive into code I haven't looked at for a few years and I realize that so many things could be improved. And I lose a week of sleep yak-shaving this thing that will almost definitely never be seen or used by anybody else. But I see it as a kind of craftsmanship and sharpening my own tools. I don't know another, better way to do that.
replies(2): >>44425167 #>>44425337 #
jesse__ ◴[] No.44425337[source]
> But I see it as a kind of craftsmanship and sharpening my own tools. I don't know another, better way to do that.

Toooootalllly. This project started out for me as a learning exercise, and for a long time an explicit non-goal of the project was to ship a game. It's just my own little land that I know every nook and cranny of for experimenting and, sharpening my tools, as it were. It's also the best way I've ever found.

replies(1): >>44451860 #
1. noduerme ◴[] No.44451860[source]
To be clear, your work is next level awesome and technically more sophisticated than anything I've done. Mine is Javascript based and essentially a sprite screen graph rendering engine mixed with pixel-level effects on top of canvas, with an isometric endless world platform for runners and RPGs built on top of that renderer. I did ship one game with it, back in 2016. Since then, I've relegated my commercial work in that vein to threejs and pixijs. It sounds counterintuitive, but using your own codebase like this to develop a finished commercial product inevitably forces you to pollute the purity of the code. You start to develop sets of features that are specific to the game's needs and which force compromises that shear it away from being a general-purpose green field engine. Do I still dream of the day when I finish a new game built on my own codebase....? Totally. But maintaining a game in production and not having its needs override the intent of keeping a general purpose engone is like 4x times the work.