[HN Gopher] Langjam Gamejam: Build a programming language then m...
       ___________________________________________________________________
        
       Langjam Gamejam: Build a programming language then make a game with
       it
        
       Author : birdculture
       Score  : 118 points
       Date   : 2025-11-30 15:57 UTC (1 days ago)
        
 (HTM) web link (langjamgamejam.com)
 (TXT) w3m dump (langjamgamejam.com)
        
       | amarant wrote:
       | Holy cow the diversity of skill sets required to do this is
       | insane. I'll be very impressed at any Devs who takes this on
       | solo.
        
         | cardanome wrote:
         | I think you can make it as challenging or not challenging as
         | you want. Just implement a simple Forth or Lisp in Lua and make
         | a cute little game with Love2d or even just a simple text game.
         | 
         | Maybe I expect too much from people but like at least being
         | able to write a simple tree-walking interpreter is basic
         | computer science education and who hasn't tried to make a game
         | at least once?
         | 
         | The problem is more that some people just like sharpening the
         | saw and some people like cutting down trees. Both are valid.
         | Some people get really into programming languages and tooling
         | but never ship any product or vice versa. But people need to be
         | skilled enough to do both.
        
           | amarant wrote:
           | I think I might be the one to expect too much on second
           | thought.
           | 
           | Making a language and a game is one thing, making a good
           | language and a good game is something else entirely.
           | 
           | Very few people can do either of those on their own, let
           | alone both.
        
         | sunrunner wrote:
         | The crossover of language design/implementation and game
         | development made me assume this was either a Jonathon Blow
         | (Jai, Braid, The Witness) or Bob Nystrom project (Game
         | Programming Patterns, Crafting Interpreters, 'Is There More to
         | Game Architecture than ECS?' [1]).
         | 
         | Either way, given the time constraints and requirements I'm
         | expecting a lot of text adventures and rogue-likes.
         | 
         | [1] https://www.youtube.com/watch?v=JxI3Eu5DPwE
        
         | adamhartenz wrote:
         | A programming language could be as simple as a domain-specific-
         | language done in a JSON format. It could just abstract away a
         | bunch of thing, and most of the logic would just be in your
         | "game engine".
        
         | pennomi wrote:
         | Easy, create a DSL that represents dialogue in a visual novel
         | style game. Add some branching, looping, and variables, maybe
         | some labels for jumping to and you're good. Tada! You've
         | basically reinvented Ren'Py.
        
       | Razengan wrote:
       | I've been wondering about this for some time, that how there
       | really isn't a language that's made from the ground up just for
       | coding gameplay logic.
       | 
       | Like we have SQL for databases, Julia etc for maths etc, but
       | gamedevs still have to plod along in general-purpose languages
       | with archaic conventions established 50 years ago by people who
       | had nothing to do with games.
       | 
       | I'd love something with the syntax of GDScript and the features
       | of Swift, with special constructs just for gameplay logic, which
       | is often a hybrid between inheritance and composition, static and
       | dynamic, declarative and imperative.
       | 
       | I've been toying with what would be the ideal syntax (for me),
       | but I don't have the brains to actually make a language :')
        
         | reactordev wrote:
         | SQL is deterministic. Julia is deterministic. Gameplay is not
         | deterministic. Constraints are arbitrary and there are no
         | rules.
        
           | formula1 wrote:
           | I think magic the gathering set a pretty good standard.
        
             | reactordev wrote:
             | For Magic the gathering, sure. Not for Eve-Online. Not for
             | Counter-Strike. Not for World of Warcraft. Not for
             | Minecraft. Games are too diverse to limit yourself to a
             | DDL.
        
         | macintux wrote:
         | Well, if you're interested in text-based games, there have been
         | custom languages for a long time.
         | 
         | https://www.linusakesson.net/dialog/craverly/craverly_side_b...
         | 
         | Also LPC for muds, although that definitely wasn't built from
         | the ground up.
        
         | Balooga wrote:
         | There is OpenGOAL[1]. A re-implementation of the language that
         | Naughty Dog used to created Jak and Daxter.
         | 
         | [1] https://opengoal.dev/
        
         | Scramblejams wrote:
         | Check out Jai, apparently if you ask nicely its author will let
         | you use it. Unofficial docs here:
         | https://pixeldroid.com/jailang/
        
           | Razengan wrote:
           | Jai is just a C-like with manual memory management etc.
           | 
           | I mean something that is divorced from hardware and just
           | focuses on gameplay logic; let the _engine_ continue to be in
           | C++ /Rust/whatever.
        
         | meheleventyone wrote:
         | PuzzleScript is the closest to this I can think of. Hyper
         | specialised though.
         | 
         | https://www.puzzlescript.net/
        
           | zzo38computer wrote:
           | In my opinion, Free Hero Mesh is better, although each has
           | its own advantages and disadvantages compared with the
           | other(s).
           | 
           | (There are also some variants of PuzzleScript, which add a
           | few extra functions.)
        
         | zzo38computer wrote:
         | There are many that are specialized for different uses in
         | games, such as:
         | 
         | - ZZT-OOP
         | 
         | - MegaZeux Robotic
         | 
         | - ZIL
         | 
         | - MESH:Hero
         | 
         | - Free Hero Mesh
         | 
         | - Super ZZ Zero
         | 
         | - OHRRPGCE HamsterSpeak
         | 
         | (There are probably a lot more that I had missed)
         | 
         | All of these are specific to the specific kind of games being
         | made with them, though; different kind of games will require a
         | different kind of logic.
         | 
         | MESH:Hero is specific to a specific kind of puzzle games, and
         | Free Hero Mesh is a FOSS clone of MESH:Hero with a different
         | syntax and more features.
        
           | xorcist wrote:
           | Don't forget: SCUMM
        
         | BSTRhino wrote:
         | I've actually spent the past 3 years making Easel
         | (https://easel.games) specifically for gameplay logic. It's got
         | behaviors as a first-class language construct, ownership and
         | context is implied hierarchically, it's concurrent and event-
         | driven to match how game worlds work, and the multiplayer is
         | automatic because it's built into the fabric of the programming
         | language.
         | 
         | It also feels like a declarative language because of the high-
         | level constructs, but it is actually imperative because (in
         | general) things get executed in the step-by-step order you
         | specify, which I think is important because games are full of
         | sequences.
         | 
         | It's been a lot of work but also a lot of fun! My aim is for
         | this to be a great next step after Scratch for people learning
         | to code but also a good model for how a more advanced game-
         | making programming language could work in the future!
        
           | Razengan wrote:
           | This looks promising. How come I hadn't heard of it??
           | 
           | My own ideas for an ideal syntax included keywords like "on"
           | instead of "func" etc. (i.e. be totally event/signal driven)
           | 
           | Taking a look!
        
             | BSTRhino wrote:
             | Haha I wish I knew how to reach more people like you!
             | 
             | Yeah exactly! I think the event-driven/signal-driven way of
             | coding is the high-level way of coding a game, and so with
             | Easel I was trying to make a game programming language
             | where that is first class. It's different from the frame-
             | by-frame state machine kind of model that is used by a lot
             | of other game engines, and I find it's super productive.
             | 
             | I know that I am unable to single-handedly compete with
             | Godot or Unity so to make the scope achievable it's aimed
             | at being a good 2D programming language for learners at
             | this point. There's a surprising amount of similarity
             | between Scratch and Easel because Scratch is also event-
             | driven and concurrent like Easel. We often send our
             | learners to Python or JavaScript and I've seen that they
             | just lose engagement. The difference is bigger than just
             | going from visual to text-based coding. Easel makes the gap
             | closer and so I am hoping it'll be a great next step from
             | Scratch into text-based coding.
             | 
             | But I also hope Easel can add to the conversation and
             | interest people like you as a example of how game
             | programming languages could be made. One day I hope to
             | actually bring Easel to more serious games, maybe bringing
             | it to other engines or with its own 3D engine. One reason
             | why I am leaning on making my own 3D engine (long term
             | goal) is that in Easel, the multiplayer is automatic and it
             | would be difficult to bring that to another engine.
             | 
             | In either case it's great to meet someone who has been
             | thinking about this kind of problem like I have.
        
               | Razengan wrote:
               | > _I know that I am unable to single-handedly compete
               | with Godot_
               | 
               | You could package your language as a GDExtension for
               | Godot.
               | 
               | I'm planning my fantasy language from the top-down,
               | syntax first: how it would look like to users/developers
               | to use it, then think about how to implement that
               | language if ever :')
               | 
               | Right now I'm just fiddling with a extension for
               | VSCode/ium to syntax highlight the hypothetical language,
               | then I'll put it up on a brainstorming repository on
               | GitHub.
        
               | BSTRhino wrote:
               | Yep, it's definitely a possibility down the line.
               | 
               | Maybe a 7-day gamejam is a great way to explore your
               | ideas!
        
           | nextaccountic wrote:
           | If I understand correctly, the language is not open source,
           | right? Not even the interpreter?
           | 
           | That's a hard sell
        
       | macintux wrote:
       | Seems ideal for those grumbling about Advent of Code's shortened
       | schedule this year.
        
         | riffraff wrote:
         | the time frame matches too, 14 to 20 gives you one day of rest
         | after the last AoC, and then three more days to buy presents
         | before Christmas that you forgot to co :)
        
       | kderbyma wrote:
       | I have been doing something minor - not full language - but I am
       | working on a couple DSLs for my game engine. The games themselves
       | are interpreted by my engine console - then transpiled to webgl
       | and JavaScript.
       | 
       | The DSL is for cutscenes and scripting dialogues and movements
       | and transitions.
       | 
       | The idea was to have a screenplay like language that would run in
       | my game engine so I can write the scenes like a script instead of
       | like code.
       | 
       | --
       | 
       | Then I am using a LUA like subset for the core game logic.
       | 
       | I don't think I would want to have the entire thing written in a
       | custom language though, as that seems unnecessary
        
         | toisanji wrote:
         | Ok would like to learn more about what you have been building,
         | can we talk? I have thought of similar ideas.
        
       | munificent wrote:
       | Oh my God, someone has discovered my kryptonite.
        
         | BSTRhino wrote:
         | Your book is awesome!
        
       | azhenley wrote:
       | I'm going to blog about whatever I end up building. I hope some
       | of you will join me :)
        
       | BSTRhino wrote:
       | lol, I spent 3 years coding a game programming language...
        
       | WhyOhWhyQ wrote:
       | Any recommendations on books / resources to read in order to
       | participate as a beginner (language creator that is..., not
       | beginner with programming games)?
        
         | BSTRhino wrote:
         | Crafting Interpreters!
        
         | shoo wrote:
         | Jack Crenshaw's 1988-1995 series Let's Build a Compiler [1]
         | 
         | Graydon Hoare's 2002 talk `"One Day Compilers" or how I learned
         | to stop worrying and love static metaprogramming` [2]
         | (implements a compiler for a DSL that's a subset of makefile
         | syntax in < 400 lines of code using ocaml toolchain)
         | 
         | edit: on second thoughts, aiming to ship a game in a novel
         | _compiled_ language in a 7 day language+game jam is probably a
         | lot more optimistic than aiming for an interpreted language.
         | 
         | [1] https://compilers.iecc.com/crenshaw/
         | 
         | [2] https://www.venge.net/graydon/talks/
        
         | ifidishshbsba wrote:
         | Racket for sure, it goes straight to the heart of everything.
         | You want simple macro compilers so you can see how simple it
         | all is, not being confused by complex interpreters which
         | totally obscure what is being done here.
        
         | munificent wrote:
         | Heh, I guess you could read my two books, "Crafting
         | Interpreters", and "Game Programming Patterns". :)
        
       | shoo wrote:
       | What is a minimal-ish programming language that could be used to
       | express some interesting class of games?
       | 
       | It's easy to think of pathologically trivially useless
       | "languages" that could "make a game". E.g. the single instruction
       | language where the instruction P is defined to mean "execute a
       | game of pong". Or a zero instruction language where the empty
       | program is defined to mean "execute a game of pong".
       | 
       | Also easy to think of existing minimal programming languages that
       | could technically be used to implement games. E.g. brainfuck is a
       | beautifully minimal language with only 8 instructions, supporting
       | character IO - so you could make a text based adventure game with
       | it, but this would be unpleasant and there isn't anything about
       | brainfuck that makes it suited to game dev.
       | 
       | Another idea could be to have a non Turing complete language
       | where you declare data for entities etc to be executed by some
       | game engine/runtime. E.g. it might be possible to define a
       | language for declaring data & entities to express a few different
       | but similar games (e.g. spanning pong --- breakout, or one
       | specialised for simple card games, or so on).
        
         | ifidishshbsba wrote:
         | Let D be the language used to express the gameplay, C be an
         | implementation of a compiler for D in a language L. You want to
         | minimise the length of D + C across all languages L. This gives
         | you a unique language D (a DSL) for each game which is the most
         | semantically dense and expresses the essence of the problem
         | domain the best.
         | 
         | The language or languages D is discovered (not designed) and is
         | the essence of the problem, will never change and is true in
         | all universes. Any general purpose programming language solving
         | the same problem (a solution using L) will have a structure of
         | D with a bunch of boilerplate and design patterns (design
         | pattern = boilerplate = hints at a special form in D).
         | 
         | Using a hierarchy of these minimal languages D with one
         | compiling into another for each little problem is the only way
         | to get 'clean code' free of boilerplate.
         | 
         | Software engineering is minimising D + C for all L
        
           | binary132 wrote:
           | I'm hearing FORTH, but surely that's not what you meant to
           | say. :)
        
             | ifidishshbsba wrote:
             | I like to lisp but it might be time to finally learn FORTH
             | :)
        
         | torginus wrote:
         | I think building an interpreted language with a basic but
         | usable feature set - arrays, structs, expressions, control
         | flow, functions etc. - is totally doable in a couple of days if
         | you dont spend a lot of time ruminating on syntax and
         | semantics.
        
         | keithnz wrote:
         | a variation of lisp is SUPER easy to do, give it some
         | primitives to graphics/sounds/inputs and away you go
        
         | munificent wrote:
         | If I had a spare week that I wanted to spend on this game jam,
         | I would be making a dynamically typed language and an
         | interactive fiction game.
         | 
         | Dynamic types make it much easier to whip up a little language
         | and interpreter. Interactive fiction doesn't have any difficult
         | performance requirements so even a very slow interpreter is
         | still probably fast enough. And IF doesn't require graphics or
         | any kind of tricky bindings. Just printing to a terminal.
        
       | copx wrote:
       | This is not as hard as it sounds as long as Forth and Lisp
       | variants qualify.
       | 
       | You can write a basic Forth or Lisp interpreter in a day.
        
         | jaggederest wrote:
         | It's even easier if you implement your Forth or Lisp
         | interpreter in Forth or Lisp (both map to each other
         | surprisingly well). Metacircular evaluator and be there.
        
       | FjordWarden wrote:
       | Challenge accepted, but no way I can finish this in 7 days even
       | with a head start of a few months.
        
         | adamhartenz wrote:
         | So you are not accepting the challenge then. Sounds like you
         | are over thinking or over scoping the problem.
        
           | mcpeepants wrote:
           | or just keenly aware of their own strengths, weaknesses, and
           | time budget for this? the leap to "over scoping" is wild.
        
             | adamhartenz wrote:
             | I was just meaning, that if you think you can't do it in
             | the timeframe, then you are making it too big for yourself.
             | The rules are so loose that you could literally make a
             | programming language that has a single command
             | `run_my_awesome_game()` and fully impliment the logic etc
             | in your language and library of choice. Obviously a
             | trivial/useless example, but take it up a few notches and
             | you could have something interesting. A DSL inside JSON can
             | be very powerful.
        
       | suioir wrote:
       | What if you've already been working on a language for a while and
       | want to use it instead of making a new one just for this?
        
         | ModernMech wrote:
         | I would say the spirit of a jam is to start from scratch, but
         | using parts and techniques you're used to is fine. e.g.
         | repurpose your number parser but not the entire grammar and
         | runtime. A lot of being successful at a jam is doing the right
         | prep work so you're not making decisions and figuring things
         | out at jam time.
        
       | pixelmelt wrote:
       | If only it wasn't finals week
        
       | empressplay wrote:
       | Use Logo! Straight-forward parser. Turtles make game elements
       | easy. Write it in Go for simple multi-threaded agents.
        
       ___________________________________________________________________
       (page generated 2025-12-01 23:01 UTC)