Show HN: Micropolis/SimCity Clone in Emacs Lisp
github.comThis is a little game implemented over a week of tinkering and targeting Emacs.
The point is both to have fun with this kind of simulations, and also explore the "functional core / imperative shell" approach to architecture. I also developed a tile and tile effect definition DSL, which makes this even easier to extend. From this point of view it's a success: easy testing, easy extension,
Gameplay-wise the simulation is too simplistic, and needs input from people interested in this kind of toys. The original Micropolis/SimSity is the last time I built a virtual city.
Amazing! I have added this to the HN Arcade https://hnarcade.com/games/games/micropolis-simcity-clone-in...
ah, shame it's for Show HN only. I am too embarrassed to Show HN anything I used AI for/with, like: https://www.susmel.com/stacky/ or https://susmel.com/rolly/ (which isn't a game yet - you can use shift for speed and it has a double jump though!)
Love the music! Don't be afraid of putting them up and showing them off if that's something you want to do. They look great!
These are both amazing! And I want to encourage you to do a Show HN. I think showcasing things people are building with AI is good. I'm actually very close and putting the polishing touches on something I'm building that will allow people to play Micropolis over API/MCP so you can watch agents build cities (mostly terribly, but it's quite fun).
This is great! We need more ASCII games/simulations and it's only a bonus if it's in Emacs :-)
This may be unrelated but I swear emacs has a color tile library for games, it's used in tetris iirc
This is wonderful. Consider decoupling the core from Emacs, or packaging in a way that doesn’t require it as heavily.
I’ve been doing my own exploration of terminal ASCII games via Dwarf Fortress instead of SimCity. I’ve learned that letting a coding agent play is an interesting way to get feedback as well :)
https://github.com/brimtown/claude-fortress
> Consider decoupling the core from Emacs, or packaging in a way that doesn’t require it as heavily.
but then we'd have to write an interface package to run it from emacs
How would it be run without Emacs?
You might point out that there are things like elisp.lisp that purports to run Emacs Lisp in Common Lisp, but I'm not sure that's viable for anything but trivial programs. There's also something for Guile, but I remain unconvinced.
Maybe a Common Lisp core with an Emacs frontend running it in https://www.gnu.org/software/emacs/manual/html_mono/cl.html?
still in their main doc https://www.gnu.org/software/guile/manual/html_node/Emacs-Li...
I tried something similar with a roguelike I was prototyping last year. Ended up being more useful for finding edge cases than actual gameplay feedback - the agent would do things no human would ever try, like walking into walls repeatedly or hoarding useless items. Still caught a bunch of bugs I never would have found otherwise.
I mean, i dont mind it but having a client/server architecture is a very different story to just 2 elisp modules.
Here, the point was to have everything in emacs completely, and also see if the architectural contraints make sense for elisp (and they do)
And have some fun, of course.
Fantastic! Can you make Emacs shake the screen by scrolling vertically and horizontally whenever there's an earthquake?
Finally RMS can play SimCity.
something like
Congrats on your Seventh Sally!
You should have a screenshot.
There is a screenshot in the README, and according to the github timestamp, the project hasn't been changed since you write this to add such a screen shot.
Search for the section labeled: Visual Demo
I thought it was a ssh key fingerprint at first
It seems like it was added by an LLM since it says "This is a simplified snapshot to show the general layout."
Notice how it says "simplified snapshot","general layout". I don't think this is the actual representation of how the game looks like :)
Actually, this is a copy of the older version of interface with a few lines dropped. I failed to generate a decent gif last night, will add a screenshot.
Admittedly, while working on this, I did consult my LLMs advisor through gptel(https://github.com/karthink/gptel) with a few custom tools setup, which I cannot recommend enough.
Is this technically a screenshot? I mean its text, not a picture, so more of an output-example.
Can text be put on a screen? And can you take a picture of it when it is? Well, you might have a screenshot of text.
[dead]