Ramen is a 2D game engine written in standard Forth.
2.0 is in development and it fixes and improves on a lot. I am working on a rewrite of my Zelda clone which runs on 2.0.
This is the package repo, which depends on other packages. Grab the Distribution which includes all the dependencies at the correct versions.
(GForth support is working on Linux, if anyone can help get it working on Windows please get in touch (post an issue or send me a message on Twitter.)
Built with Allegro 5, using AllegroForthKit.
Tiled map support (partial)
Multiple display list support
Interactive commandline console
ColorForth-inspired, minimalist code emphasizing flat data design.
Fast rectangle collision detection
Graphics primitives such as line, rectangle, ellipse, blit, text, etc.
Basic sound support
Data structure extensions - 2D arrays, stacks, node trees
Want to watch some videos? Here's footage of examples from Ramen's predecessor. They're being updated to work on Ramen.
Also check out The Lady, a commercial game I wrote in Forth to prove it can be done. Large chunks of this game's engine live on in Ramen.
Download SwiftForth. After installing add the bin folder to your path.
Download or clone ramenExamples
(If you download a release directly into your project, rename the folder to just
Copy and rename
afkit/allegro5.cfg_ to the project root, removing the underscores. Edit them if needed.
Optionally get Komodo Edit and loading the project file - just hit F5 and the IDE should start.
Otherwise load up SwiftForth, navigate to the project directory with
include session.f - the IDE should start.
ld any of these:
Hit Tab to toggle between IDE and the running demo. Only
rectland has any controls.
For a more advanced example check out LinkGoesForth. Note the IDE is active by default. The game won't receive input until you toggle out of it.
Forth Programming 21st Century on Facebook - The current active and growing forum on the web for modern desktop Forth programming (as opposed to on embedded or classic computers.)
Allegro.cc forum - A very helpful and fairly active community. And gladly, language-agnostic.