A 2D game engine written in Forth.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bucket move node.f and some array2d words to bucket/ Oct 10, 2018
ide QUIT not doesn't crash when the IDE is Loaded Oct 17, 2018
komodo-tools simplify how ramen loads more Sep 14, 2018
lib add lib/pjoy.f Oct 17, 2018
.gitignore Initial commit Apr 17, 2018
README.md GitBook: [master] 4 pages modified Oct 10, 2018
SUMMARY.md GitBook: [master] 4 pages modified Oct 10, 2018
assets.f rename ASSETDEF to DEFASSET Oct 5, 2018
base.f add batch.f Oct 10, 2018
batch.f add batch.f Oct 10, 2018
buffer.f rename ASSETDEF to DEFASSET Oct 5, 2018
color.f rename color to %color Oct 13, 2018
default.f document LINE etc, tweak IDE Oct 5, 2018
fixops.f fix /mod Oct 17, 2018
font.f rename ASSETDEF to DEFASSET Oct 5, 2018
gui.f Add files from old repo Mar 13, 2018
image.f speedup resize-canvas Oct 14, 2018
license.md GitBook: [master] 4 pages modified Oct 10, 2018
main.f 1.3.5: update versioning Sep 23, 2018
make.bat 1.7.6 fix runtime crash, throw an error if initdata fails Oct 1, 2018
make.f remove references to src/ Sep 11, 2018
obj.f 1.8.5 add lib/smooth.f Oct 14, 2018
plat.f update OK -> GO and change PUBLISH's semantics: now you set WARM dire… Aug 5, 2018
publish.f 1.7.6 fix runtime crash, throw an error if initdata fails Oct 1, 2018
ramen.f 1.8.8 Oct 17, 2018
rect.f rename stringw/h to strw/h and rect.f::rect to %rect Sep 22, 2018
res.f move destxy to res.f Oct 13, 2018
sample.f rename ASSETDEF to DEFASSET Oct 5, 2018
session.f moved LD in, updated session.f Oct 9, 2018
stack.f update calls to cell/ Sep 23, 2018
stdpack.f require -> depend Oct 11, 2018
struct.f tighten things up ... fix version at 1.0.0 in advance of release Jul 25, 2018
variables.f changed MAP-COLLIDE and TILEPROPS@ to take raw tiles, increased task … Aug 6, 2018



Ramen is a 2D game engine written in standard Forth.



  • Built with Allegro 5, using AllegroForthKit.
  • Tiled map support (partial)
  • Sprite animation
  • Multiple display list support
  • Interactive commandline console
  • ColorForth-inspired, minimalist code emphasizing flat data design.
  • Fast rectangle collision detection
  • Roundrobin multitasking
  • Graphics primitives such as line, rectangle, ellipse, blit, text, etc.
  • Publish facility
  • Z-sorted rendering
  • Basic sound support
  • Data structure extensions - 2D arrays, stacks, node trees

See Ramen in Action

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.

Getting Started

  1. Download SwiftForth. After installing add the bin folder to your path.
  2. Download or clone ramenExamples
  3. (If you download a release directly into your project, rename the folder to just ramen).
  4. Copy and rename afkit/kitconfig.f_ and afkit/allegro5.cfg_ to the project root, removing the underscores. Edit them if needed.
  5. Optionally get Komodo Edit and loading the project file - just hit F5 and the IDE should start.
  6. Otherwise load up SwiftForth, navigate to the project directory with cd and include session.f - the IDE should start.
  7. You can ld any of these: depth flies rectland island stickerknight
  8. Hit Tab to toggle between IDE and the running demo. Only rectland has any controls.
  9. 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.


Links and Resources