rune
antfarm | rune | |
---|---|---|
3 | 22 | |
3 | 1,575 | |
- | 3.7% | |
2.2 | 8.9 | |
almost 1 year ago | 6 days ago | |
TypeScript | Rust | |
- | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
antfarm
-
3 years of fulltime Rust game development, and why we're leaving Rust behind
I've experienced a lot of these concerns while building https://github.com/MeoMix/symbiants
I have a simple question that maybe someone smarter than me can answer confidently:
If I want to build something akin to Dwarf Fortress (in terms of simulation complexity) as a browser-first experience - what stack should I choose?
Originally, I prototyped something out using React, PixiJS, and ReactPixi (https://github.com/MeoMix/antfarm). The two main issues I ran into were the performance of React's reconciler processing tens of thousands of entities when most weren't changing (despite heavy memoization) and GC lurching due to excess object allocations. My takeaway was that if I wanted to continue writing in JS/TS that I would need to write non-idiomatic code to avoid excess allocations and abandon React. This approach would result in me effectively creating my own engine to manage state.
I decided to not go that direction. I chose Rust because no GC is a language feature (especially good since GCs in WASM are heavy) and I chose Bevy because it seemed like a fairly structured way to mutate a large amount of code.
Progress has been slow for a lot of the reasons listed in this article. I've written a lot of this off to WASM being a new frontier for game dev and rationalized it by noting there's not a lot of complex simulation games running in browser (that I'm aware of). It's not clear to me if that's actually true, though.
-
Ask HN: Good resources for architecting simulation games?
I recently made an attempt at building a simulation game. I found it challenging even though I'm a seasoned software developer. I was finding that my experience in building out web apps, dashboards, and crud stacks didn't immediately lend itself to architecting a game properly. It feels like everything is business logic and it has been tough to see ways to tease out and modularize concepts. I don't know if I am making good trade-offs w.r.t performance and immutability. I find myself copying an entire "world" structure with every loop in an attempt to represent the world immutably, but I also seem to need to process changes serially as entities interact with one another inside the world. It doesn't matter that the world is immutable, I can't easily parallelize the simulation. Perhaps immutability is only making things harder, then?
I'm not too concerned about graphics or 3D math. I'm working in a 2D space with the most amateur of graphics. I'm interested in having some looming trade-offs pointed out to me so that I can make decisions with my architecture to best receive those trade-offs. I'm interested in design patterns that allow me to modularly enrich the complexity of my simulation.
If you're curious, https://github.com/MeoMix/antfarm/blob/main/src/util.ts Here is a file that became quite the dumping ground. I am not proud of this code. I had intended to tease out some utility methods which take a world and return a cloned and updated world. It's easy enough to separate out view concepts, and it's easy enough to separate out constructors, but all of the "interesting" simulation logic found its way to this dumping ground.
-
Hi! I'm building a virtual ant farm. This version is so pre-alpha it shouldn't even be live, but, in the interest of shipping first and asking questions later... it is! So, check it out.
open source! https://github.com/MeoMix/antfarm
rune
- 3 years of fulltime Rust game development, and why we're leaving Rust behind
- RustPython
-
Steel β An embedded scheme interpreter in Rust
A Lisp, a weird dialect of Lisp, is not better than Lua. Why use Rune [0]?!
[0]: https://rune-rs.github.io/
-
Embeddable Scripting Language for Embedded Rust
This is what I based my comment on - https://github.com/rune-rs/rune/issues/444
-
-π- 2022 Day 13 Solutions -π-
Late start today as well. I really thought today would be the day that I'd have to abandon my goal of no heap allocations. But, luckily I had an arena allocator available that I could fairly easily adapt to store data on the stack. And with some tweaks we have today's solution:
- α£ the Rune Programming Language
-
thought you guys might like this monstrosity i created (that i actually use in a project)
I'd have given you bonus points for using a rust styled scripting language like rune but that's pretty neat still
-
Visual scripting for Rust
As note about using rust syntax for scripting: https://rune-rs.github.io/
-
Designing a Rust -> Rust plugin system
I know you said you donβt want to embed another language but IMO Rune is worth a consideration here. It can be a pretty thin abstraction over rust by passing native structs to scripts and calling methods on them. The syntax and semantics are very close to rust so it feels natural. https://github.com/rune-rs/rune
-
Rune vs Rhai?
The biggest technical difference I'd say is that Rune uses a stack-based machine which makes adding deep C support somewhat obvious while Rhai performs AST walking to execute scripts.
What are some alternatives?
Rhai - Rhai - An embedded scripting language for Rust.
RustPython - A Python Interpreter written in Rust
mun - Source code for the Mun language and runtime.
miniserve - π For when you really just want to serve some files over HTTP right now!
Flux.jl - Relax! Flux is the ML library that doesn't make you tensor
gluon - A static, type inferred and embeddable language written in Rust.
miri - An interpreter for Rust's mid-level intermediate representation
dyon - A rusty dynamically typed scripting language
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
lokke - Lokke: Clojure for Guile
Befunge - lang befunge 93 fast
helix - A post-modern modal text editor.