Git Product home page Git Product logo

brainworms's Introduction

Why

This will be a manifesto. I want to tell many stories.

What

For now, this will be the graphical and (G)UI engine part of hstherac25. Ultimately, it shall become the demo/prologue of a much longer story. I want to write down the ideas for scenarios that I have, but I think writing the source code/script for them would be basically the same thing that I’d be doing a second time then.. They are mostly horrible stories of awful stuff that the NATO society wants to keep hidden. The real cost of your car and of your computer and your consumerism in general. The cost of making it optional and often aspirational to have food and shelter for the less forunate than you. The therac was just one of thousands if not millions of daily Tchernobyls, and yet everyone keeps a blind eye for those.

Why not

Unreal Engine

  • Developing the UI in Unreal Editor is soul-crushing, and trying to do it in C++ results in 15 consecutive editor crashes every time the library is recompiled. I would probably have better luck on Windows but I don’t want to.
  • I want more control over the engine than I can have in UE (without recompiling a 50GB cosmic horror blob - thanks)
  • Hardware requirements of UE are really annoying even on a top shelf laptop and then all of the games look the same because of their shaders, postprocessing and lighting.
  • I like how Tim is working with SPJ, but he (Tim) is still has evil MBA egomaniac vibes in every walk of life other than his PL hobby and programming passion.

Godot ?

  • I’ve been waiting for him, he’ll be ready any minute now…
  • Maybe if they hadn’t fucked up bindings to other languages with 4.x, I would have stopped for longer to consider it, but they’ve made their choice.
  • Nota bene: their entire showcase of “games made with the engine” is 2d scribbles of babies that look somehow less appealing than Ludum Dare games, or even the Google Scratch hall of fame.

everything in haskell ?

That’s how you waste several months of your life snorkeling in a septic tank. In other words - the tools and the ecosystem just aren’t there. The haskell-game guys have done some pretty good work, but it’s still basically DOA. There is one decent haskell game on Steam and it looks like the guy paid for it with his sanity.

a MUD or text adventure

  • LPC is an awful platform to develop on, and a bad bad language. Every (even modern/recent-ish) example is broken and only (barely) works on the developer’s computer.
  • Interactive Fiction has stagnated for decades, and I don’t see any path towards it being expanded in any meaningful way. It would be super useful to have all that ontology, English grammar and parsing work already done, but it’s done in inform7, which is COBOL for English Literature majors. The other languages and authoring systems for IF share most of inform’s downsides with none of its advantages.
  • In an oversaturated video game market nobody plays those games. Not even people who like text interfaces and books. (including myself in that last group). It’s an esoteric cult following now.

a Roguelike/RPGMaker game ?

Tired old formula, both too competitive and dead at the same time. I guess it would be a good vehicle for a story but the presentation would make it very unlikely anyone ever read it.

Rust ?

  • Tedious.
  • The security guarantees do nothing for a single-player game.
  • Libraries and tooling are often written by a guy who just learned programming last weekend and thinks .clone()ing an entire gigantic binary LDAP tree is a good idea.
  • The community is 90% people who used to write javascript and, when they followed a rust tutorial and finally managed to Compile their first Programme, they decided rust is the best language there is.
  • Nevermind all that, I’m Giving Rust Another Chance (and hating it)

Raylib/C in general ?

  • Try making anything in that that’s not a pointless variant of some trivial game that’s just there to show “I can make a tetris!”, “I am a hipster!”, or “I am employable as a toy maker” and with nothing else to say.
  • if you want to suckless try learning some abstractions to simplify your code (read a book)

Unity ?

Go away

.NET

I said: go away

other bad ideas I had already wasted a lot of time on in the last year?

No

C++

I’m actually not sure I won’t return to cpp, but the experience with multithreading was not fun at all. It might be even worse in rust, though. I really really like OpenSIV3D, but its 3d support is just very basic, and it links against every library known to man.

Then how ?

Tech

  • initially, placing my bet on Siv3D, mostly because with c++>=20 I can use wacky functional programming stuff and other gimmicks cribbed from ML Update: This thing produces a 225MB hello world and still depends on 382 other libraries. But the hypnotic CIA ray is telling me to double down.
  • since the above only supports .obj, I also need https://github.com/syoyo/tinygltf
  • bevy ecs amateur hour piece of shit with more runtime errors than I’ve seen in an actual dynlang. Overengineered doodads from weird arseholes adding 50 layers of abstraction where there should be one. It’s doomed.
  • rend3 - seem similar in scope to OpenSiv3D, but not as bloated
  • I really want to integrate a mini-ml or at least some lisp as the scripting language for the engine. In the past I’ve looked into
    • embedding haskell in haskell - works slowly with ghci, reckless and breaks in new ways with every single ghc update with the ghc api
    • embedding husk-scheme in haskell - ok-ish but it lacks all the modern conveniences and abstractions
    • embedding TCL in things - that works, but nobody wants to write TCL, because they are fools
    • the way the guys at swarm-game made their own embedded mini-ml - this is very cool but I’m nowhere as smart as they are and forking their project to make my own game would also be very hard
    • making my own Z-machine-style vm - it would have all the limitations of inform/interactive fiction in general. I am not good enough to make a much better one
    • embedding my own Spineless-Tagless Graph-reducing-machine with a multithreaded concurrent runtime and STM - only SPJ knows how to do that. Also this is just making a game in haskell.
    • embedding one of those strict ML machines - I might actually be capable of doing one of the earlier simpler ones but I don’t know if it would be useful. (this is also basically what swarm-game guys are doing but a slightly different abstract machine)
    • I think this + the other comments in this README is the entire list of things I’ve wasted time on this year. Other than the 777 hours of Elden Ring, of which I am only partially proud.
    • probably more, I gave lots of github stars to things I thought I could use

    In rust - gluon looks the most promising, followed by rune.

  • I’m using `Tiled` for editing tiles but please DO NOT USE THAT PIECE OF SHIT SOFTWARE. It feels like a troll. It has to be intentionally this bad.
  • I’m using Ldtk for editing tiles
  • begrudgingly, Blender. It’s not good but it’s the only one around.
  • egui - so far this is the best IMGUI doodad that I’ve used, so I’m happy about that. Not sure how it will handle the Therac Control Program gauntlet though..

TODOs for the near future

  1. Liberate the Therac UI control program (keyboard_handler) from Unreal.
    • have finished that part in c++, redoing in rust now because I am a clown
  2. Set up a scene for the therac minigame using the meshes I had set up in UE
    • trying this now with just blender and gltf scenes
  3. Integrate this into a larger game template/framework where it’s easy to add data/scripts for dialogues, narration, scenes.
    • not quite there yet, but I do have a pretty ok start for the 2d world, which ideally would be reflected in 3d when I feel like actually making a 3d scene
  4. Expand beyond the mini-game
    • in progress

brainworms's People

Contributors

pillowtrucker avatar dependabot[bot] avatar

Watchers

 avatar

brainworms's Issues

Add audio

  • - get cross-platform backend working - cubeb-rs
  • - play a vgm file
  • - add player controls:
    • volume
    • start
    • stop
    • pause
    • abort

Clean up Cameras

  • Make sure there's definitely no duplicate data/diverging sources of truth
  • Decide on one owner and pass references around instead of cloning this so much (it's not very expensive but it's not free)

write macros to implement traits with generic params

This is surprisingly annoying to do in rust and everyone has to write their own parser for this which is really very fearless and 110% developer satisfaction, but the alternative is even worse. Nobody wants to manually implement those and they're not meant to but they would have to atm

Add emotes/animations to actors

Might have to dig into inox2d for this and help them out with their project or at least upstream anything I manage to get working here

Add sound

  • bgm for menu(s)
  • bgm for linac lab scene
  • sfx

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.