at the beginning of last year, i found myself building a little 3D game engine called Cuberealm. it was the first time i'd done a full 3D engine and it was very enjoyable and educational. i had my world rendering and a lot of the basics figured out, and then i hit a wall getting grid tracing to be super reliable. and then life stuff intervened and i haven't touched it since.
i imagined the usage scenario for this engine being essentially, it's small and simple and it's all in python, so just fork the code and start building what you need for your own game in a subdirectory apart from the main engine code. and if you make a game and want to distribute it to people, just turn it into an EXE the way you would any other python program: using one of a few different programs that *sigh* are not built into python itself, the output of all of which now get flagged by default as viruses by windows defender (and the vaguely-to-openly-scummy underworld of other AV suites) nearly 100% of the time, because they can't or don't bother to distinguish between a harmless lil game written in python and one of the malwares out there that run with a bundled python interpreter.
this is what i did with Playscii releases for many years. and each time, when windows defender almost inevitably detected my latest build as a virus, i'd dutifully submit it to this page on MS's site as a false positive, and then in the next signatures file update it would no longer be flagged, and my users would stop getting a scary message. until the next build i did, rinse lather repeat etc.
needless to say, this was wearying. every reassuring reply i had to send to every concerned email i got from playscii users worried they'd been infected with malware made me feel like a bad software developer. and my ability to continue distributing builds of my software to windows users was contingent on MS believing me when i said, no see my pyinstaller-produced EXE is just a harmless weird art program / game engine hybrid, not one of those viruses. and as we've seen with things like recent years of macOS compat policy, and twitter's recent API policy change, there are contexts in which you can be writing software where your ability to keep doing that can vanish overnight just because some executive shrugged. that is not an environment i ever want to be working in.
i took basically all of last year off from working on personal projects, partly because this situation was bumming me out so much. in the back of my mind i kept wondering, should i just move new projects like cuberealm to a new programming environment where i wouldn't have to worry about this? i learned python in 2004-5 or so, and it's been an extremely comfy old pair of shoes for so long. but maybe that hole in the sole that keeps letting cold rain in isn't actually fixable.
(quick aside: there are definitely projects i use existing engines/tools for - gzdoom, unreal 4/5, quake, twine, pico-8, etc. this post is about stuff that isn't that. i also have a whole separate rant that elucidates my desire for more engines and tools besides the big few industrialized game dev ones, the dreamed-of "small tool renaissance". suffice to say, i respect and learn from what the big kids are doing but have strong ideological reasons for wanting to be active in this smaller, more experimental space - and i think it's better for the medium in the long term if more people are.)
there are a billion programming environments, languages, stacks etc out there, and i look into almost every one that comes across my radar. and most of them stress me the fuck out even reading about them. i never want to stop learning how to write better code, but unlike a lot of perfectly cool people i know, i do not write code for the sake of writing code - i want to make creative things, and make tools to help other people make creative things. so i'm not sure how to improve my luck at finding and narrowing down alternatives that meet my specific needs. but maybe enumerating those needs is a start:
- end-user distributables never trigger windows antivirus warnings. seems basic but this is the biggest single reason i'm looking for alternatives to belovéd python.
- absolutely no C++, or anything that uses makefiles. C-lineage build systems are a deep pit that drains my will to live.
- "low level" / "high performance" not a major requirement. computers are so damn fast now and the kind of stuff i am interested in making requires <=2003-vintage visual fidelity. the primary benefit of high perf in this domain IMO is to provide more overhead to make everything (launching, iterating, hot-reloading, etc) happen instantly.
- "high level" language like agility for rapid prototyping and productivity, whether the whole thing is written in a HLL or it's embedded in some other substrate. i want an environment where i can write code that gets an idea on-screen as fast as possible, without having to worry about shit like memory management, but lets me gradually turn it into robust fully shippable code.
- cross-platform. linux is my main OS and support for that should be a first-class citizen. windows should work fine, mac should work though i won't commit to being responsible for doing builds on that.
- reasonably easy to make and distribute builds to people. bonus: distributable file size is non-piggish (python was actually decent for this; playscii win32 builds were about 20MB zipped).
- doesn't require a big bullshit IDE, or a particular text editing setup.
- open source, obviously, in keeping with the larger theme of only building atop tech that no corporation can take away or ruin.
- decent project governance - non-asshole leadership and community, functioning code of conduct, etc.
possibilities:
- rust + some kind of embedded scripting? rust seems like a very solid systems language with sane build and module systems, and i'd like to learn more of it. but it doesn't seem like the ideal lang for writing quick game code in. i see there are lua bindings for rust, but i'm not clear on what the interface between such a loosey-goosey scripting language and super safety-conscious engine code would feel like to both build or use.
- browser-based? beyond a few simple "HTML page that does a bit of interactive stuff with js" experiments, i've always kinda avoided building on the web for a few reasons: the shifting sands nature of it as a platform, the fact that it seems to inhabit a totally different world from the files-and-directories world of game development. but if i found the right set of tools, i could imagine taking the plunge. and it's hard to argue with the approachability of running from a web browser.
- something C#-based? C# seems like a nice language to work with in many ways but using it from linux i've always felt like i'm getting some watered down version of the real fully-supported thing, that the dev experience has uneasily ported to a hostile foreign environment. please tell me how this is outdated or flat wrong!
- something else? suggest away!
- or i could just give up and stop trying to make stuff and enjoy the rest of my life! ha ha ha