Show HN: Lyceum – An MMO game built with Zig and Erlang
148 points| schonfinkel | 1 year ago |github.com
The original idea was to experiment with Zig + Raylib, eventually we wrote a small server in Erlang as well. We started by first interacting with Erlang via its C bindings, but this eventually led to some of us to prototyping our own tooling to better integrate Zig types with Erlang, we called such tool "zerl" as its avaliable here https://github.com/dont-rely-on-nulls/zerl.
Most of the developers are NixOS users, so the tooling heavily relies on Nix as well, including a Postgres running our devshell as well.
Closi|1 year ago
I can't give feedback on the code/technology, but on the writing on the lore section, I would try to simplify the writing. For instance the following:
> The reverberations of the trumpet stirred the knights from their deep repose, igniting a tumultuous awakening. With swords unsheathed and hearts ablaze, they clashed in a thunderous symphony of war, each seeking to claim dominance over the waking realm.
Feels too ornate (purple prose) and could be more directly put as:
> The trumpet’s call jolted the knights from their rest. Swords drawn and hearts alight, they clashed in a fierce battle, each striving for dominance.
I'm not an author or anything, but a little bit of copy writing could help - although this might just be me as it's probably a matter of personal taste!
bitterblotter|1 year ago
skulk|1 year ago
nonethewiser|1 year ago
I've thought about this before when I revisited fantasy after years of being in the CS domain which helped me abhor ornate writing. I definitely think there is such thing as TOO ornate but dead-simple language also feels bad. It feels wrong to just say its an exception with fantasy - simplicity is good because it conveys the same thing more clearly and with less effort. I would think that transcends all domains. Still not sure how I feel about this. I guess there is a baseline non-styled language that is all about communicating raw info and then there is style that can be applied to writing which makes it feel more natural in different domains.
Having said all this, I actually do like your example more.
Kinrany|1 year ago
wyldfire|1 year ago
dgfitz|1 year ago
mtlynch|1 year ago
How do you feel about devenv vs stock Nix? How are you getting devenv to work, as I don't see a devenv.nix file. I'm still a Nix beginner and would like to find ways of integrating it more into my development and improving my current techniques.[0]
[0] https://mtlynch.io/notes/nix-dev-environment/
fluidwizard|1 year ago
It's great if you like local-first development experience.
fluidwizard|1 year ago
diath|1 year ago
DuLR10|1 year ago
Edit: currently with the game running at 60fps, there is no bottleneck from the server side. And we call it every 16ms! I should also mention that Erlang's choice has a learning purpose; we want to try to use the game as a way to learn more about OTP and the BEAM.
toast0|1 year ago
Hot loading is pretty nice too.
cmdrk|1 year ago
racenis|1 year ago
Maybe you could simulate different parts of the game world on different physical servers.
I think this is something like what the Very Large MMOs do, but with Erlang it might be easier.
DuLR10|1 year ago
mapcars|1 year ago
I'm curious about Erlang server, do you see any advantage or features that Erlang provides, compared to for example if the server was running in Python via multiple instances?
DuLR10|1 year ago
Given the experience so far, it seems that using Erlang was the correct choice, not only because of the above, but also because Erlang made the server implementation way easier than we thought.
fluidwizard|1 year ago
mysterydip|1 year ago
DuLR10|1 year ago
canadiantim|1 year ago
fluidwizard|1 year ago
https://www.youtube.com/watch?v=ejYcWRERetM&t=2758s
Here's what the game consists rn
subsaharancoder|1 year ago
fluidwizard|1 year ago
7bit|1 year ago
DuLR10|1 year ago
You can also check it out a little demo: https://www.youtube.com/watch?v=ejYcWRERetM&t=2758s
pmarreck|1 year ago
lovegrenoble|1 year ago
DuLR10|1 year ago
fluidwizard|1 year ago
newobj|1 year ago
lionkor|1 year ago
What does "supercharged" mean here? I'd guess raylib simply does all the rendering and input handling, what is it "supercharging" here?
meheleventyone|1 year ago
unknown|1 year ago
[deleted]
xyzzy4747|1 year ago
unknown|1 year ago
[deleted]