3 ms·
I'm in the process of crafting my jewels over the next few years, but I have the position of being almost retired. I'll be able to take my time and focus on cra
by mathgladiator 6y ago
I'm in the process of crafting my jewels over the next few years, but I have the position of being almost retired. I'll be able to take my time and focus on crafting good software.
The process is not going to be commercially viable for many years simply, and this is why crap persists because that crap does solve real problems today.
You can check out the project: http://www.adama-lang.org/docs/why-the-origin-story http://www.adama-lang.org/docs/why-the-origin-story
It's going to take a long time until I get to a 1.0 release.
- victorbojica 6y agoThat's a very interesting tool/language. I don't really understand how it works, but I kind o understand the idea behind it. I think. Will it be used to build online board games (like an engine) or to "generate" one? There's also another nice tool for simulating games. Not really in the scope if your project, but around the games topic. https://machinations.io/ https://machinations.io/
- mathgladiator 6y agoAt core, it's an infrastructure language such that it enables the people to come together without fuss. As a developer, I can code the back-end for a board game without thinking about the failure modes for disk/db/network and I code as if I'm a single process (you know, the way we coded as kids). The mental model mirrors if you gather all your friends to play a game with the same keyboard and mouse. As a service, it is a combination of EC2/Lambda for compute, Ably for notifications and connectivity, some DB for storage of state, and workflow for orchestration of people transactions. All within a single package. As a game designer, my hope is that I can make it easier enough that the rules backing a game can be built and then evaluated with simulation and artificial intelligence. I have rough prototypes of this, but I implemented the back-end of Battlestar Galactica and had a random bot just play it. That's a remarkable achievement in a way, and now the question is how to train a system to search for patterns in looking at what decisions are made with a JSON document as the state of the game.
- Kinrany 6y agoI love the idea! I've been wishing for multiplayer game development to be free of networking troubles for a long time. Commercial players are finally entering this space, with Roblox getting more attention and Unreal/Fortnite moving in this direction. Are you sure you need a new programming language? It seems like a DSL or a framework would do for the problems you're trying to solve, and you'd save time for yourself by not writing a standard library, and for your users by letting them use a language they know.
- mathgladiator 6y agoSo, my language is basically a DSL for Java in many regards. I basically translate Adama code to Java, and then build on the fly. A comparable framework for some of the workloads I envision would be https://akka.io/docs/ https://akka.io/docs/ , but then you have to live within the framework or bad things happen. My idea with the language is that I eliminate all the bad things and keep thing simple. Where I've scratched my head on this problem with existing solutions is that you need a lot of things to align. For instance, making it possible to coordinate players easy requires having a language support async/await semantics. This lets the server coordinate you playing a card which another player can interfere with, and another player could interfere with that. The challenge with async/await in modern languages is what do you do with the process if the future takes... hours to return? How do you handle upgrades? operations in the cloud of cattle? This is where I started to re-invent a logger for board games, but then you must treat all your game code as deterministic. If you don't, then you are in for a surprise as the server replays the log. Instead of trusting myself, I'm forging the standard library such that everything is deterministic. The final component that gives me confidence in needing a language is the reactivity. My language is basically a text-based Excel engine with tables, objects, and global values. This means that when a player makes a move, I simply need to manipulate the state appropriately and then everything bound to that state gets computed on the fly as needed. The state also is annotated with privacy controls such that important information doesn't leak between players, and this is something that is really hard outside of a language context. All in all, I don't really need a language to ship a single game, but if I want a platform to enable anyone to build a board game, then I need to make it accommodating.