4 ms·
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 hav
by Razengan 11mo ago
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 11mo agoSQL is deterministic. Julia is deterministic. Gameplay is not deterministic. Constraints are arbitrary and there are no rules.
- formula1 11mo agoI think magic the gathering set a pretty good standard.
- reactordev 11mo agoFor 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 11mo agoWell, 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_by_side.html https://www.linusakesson.net/dialog/craverly/craverly_side_b... Also LPC for muds, although that definitely wasn’t built from the ground up.
- Balooga 11mo agoThere is OpenGOAL[1]. A re-implementation of the language that Naughty Dog used to created Jak and Daxter. [1] https://opengoal.dev/ https://opengoal.dev/
- Scramblejams 11mo agoCheck out Jai, apparently if you ask nicely its author will let you use it. Unofficial docs here: https://pixeldroid.com/jailang/ https://pixeldroid.com/jailang/
- Razengan 11mo agoJai 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 11mo agoPuzzleScript is the closest to this I can think of. Hyper specialised though. https://www.puzzlescript.net/ https://www.puzzlescript.net/
- zzo38computer 11mo agoIn 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 11mo agoThere 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 11mo agoDon't forget: SCUMM
- BSTRhino 11mo agoI've actually spent the past 3 years making Easel (https://easel.games 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 11mo agoThis 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 11mo agoHaha 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.