Readit News logoReadit News
mikhmha · 2 years ago
I've been working on a multiplayer (MMO-ish) game. Currently at the point where most of the core stuff is in place and now I'm implementing the A.I. Recently there have been some great links posted on HN regarding Game A.I, and I'm very grateful for it! Implementing A.I has been a ton of fun and not as overwhelming as I thought it'd be. I think my game will be dependent on "smart" A.I behavior so I'm really trying to get this part down.

The language i'm using - Elixir - also has some very interesting features that make it easy to integrate async a.i planning + a.i to a.i group communication. Ahh, I find it so exciting. The main simulation loop is never blocked. Meanwhile the A.I planner just chugs along as a separate process, spawning and despawning new agents in the world, creating and merging control groups, and setting new goals.

linkdd · 2 years ago
Nice use case about Elixir! You should definitely write about it, I'm getting sick of the "We used Elixir/Phoenix/LiveView" articles out there. MMOs are one field where Erlang/Elixir can shine a lot due to their concurrency model, their fault tolerance, and especially no-downtime upgrades thanks to hot code reloading (very attractive to upgrade the server without disconnecting people).
pdimitar · 2 years ago
I've been meaning to write a StarCraft 1 AI bot and put in the 24/7 SSCAIT tournament on Twitch but... never enough time. Elixir seems like the perfect fit, though it's unclear whether it can handle the computations when things get hectic.
klaussilveira · 2 years ago
That is a very clean GOAP implementation.

FYI, GOAP was what made F.E.A.R such a cool game: https://www.youtube.com/watch?v=PaOLBOuyswI

https://archive.org/details/GDC2006Orkin

senkora · 2 years ago
GOAP := Goal-Oriented Action Planning
hesdeadjim · 2 years ago
GOAP has worked very well for us for an open-world game with tons of NPCs taking part in non-linear interweaving quest lines. Planning performance is an ever growing issue however…
shadowpho · 2 years ago
I am looking to do same! What do you mean by planning performance? How bad is it?
alyandon · 2 years ago
Yeah, F.E.A.R. left a lasting impression on me. NPCs charted a path around the level to sneak up behind me and kill me while I was in a protracted firefight with the rest of their buddies.
fullspectrumdev · 2 years ago
I now have a strong need to go and replay F.E.A.R and see how well it holds up! I remember back in the day comparing it favorably to Half Life 2, which still holds up well.
adamrezich · 2 years ago
if you do, be sure to check PCGamingWiki to see what you should do to make it run as well as possible on modern machines—I ran into issues both with F.E.A.R. and Condemned: Criminal Origins, another title from the same developer https://www.pcgamingwiki.com/wiki/F.E.A.R.#Essential_improve...
LegitShady · 2 years ago
TIL

Thanks for this. I loved the ai in that game. Very few games are as good without cheating even today.

Philpax · 2 years ago
To be clear, this is conventional game AI and does not involve any ML. Still a cool project, though! Very compact.
whatyesaid · 2 years ago
What do you mean by non-conventional game AI?
DistractionRect · 2 years ago
Conventional game AI is usually search algorithms for movement (like A*) + finite state machines for behavior. No network calls to LLMs, no machine learning, etc. At the fringes, throw in the odd markov chain for procedural text generation.

Basically AI post 2019 usually means LLM, and they're making the distinction that this is not that.

BoppreH · 2 years ago
Not the person you're asking, but I think it's clear from context that they meant "no artificial neural networks" and other forms of AI that are trained from data. From the Github repo:

  It provides:
    Finite State Machines
    Behavior Tree
    Utility AI
    Goal Oriented Action Planning
All of these are "AI", but handcrafted ones.

gumballindie · 2 years ago
I don’s see the issue?
linkdd · 2 years ago
Author here, feel free to ask any question :)
Jemaclus · 2 years ago
I'm not a C or C++ programmer. Well, I know my way around, but I don't write real programs with it.

Here's my potentially dumb question: what's the benefit of header-only libraries versus regular C/C++ code?

linkdd · 2 years ago
The header-only part is actually accidental, I'm using C++ templates which requires to be fully defined at their declaration site (the header).

On top of that, the "Installation" instructions are just "copy the file in your project", no CMake, no Meson, not any kind of build system.

robinwassen · 2 years ago
I would like to say thank you for posting this, I am currently building a similar toolkit in Lua and will most likely restart and just port your code instead :)

It is extremely clean and concise.

linkdd · 2 years ago
Thank you for the feedback :)

Feel free to open issues or discussions on the repository if you have any difficulty.

swyx · 2 years ago
related question to @Jemaclus above - why is C++ the popular language for gamedev? not C# or some other higher level language. is it only for when you're working on console games or does it also matter on desktop games?
linkdd · 2 years ago
IANAPGD (I Am Not A Professional Game Dev) but,

Unreal Engine uses C++. You have boost, SDL, Ogre3D, Irrlicht, EnTT, ImGui, etc... aka: C++ has a good ecosystem for gamedev.

The "Zero Cost Abstraction" philosophy of C++ makes it easier to squeeze out the performance you want.

Unity (and recently Godot 4) uses C# but they are still relatively young in the field. We were making games long before those :)

I would not say it's "THE" popular language, but it does have an history.

robblbobbl · 2 years ago
linkdd · 2 years ago
It's not an LLM. It's just Finite State Machines, Behavior Trees, Utility AI and Goal Oriented Action Planning.

This should cover all you need to make an NPC a bit smarter (but it is still "scripted").

LLMs are not what you would use to make a bot in Civilization, or Age of Empires.

bogwog · 2 years ago
The number of emojis in that readme is ridiculous. It non-sarcastically makes me doubt the quality of the project. (although having the repo URL point to a LinkedIn page is probably worse)
refulgentis · 2 years ago
Context: Spent most of my C-ish experience on Objective-C

What is the advantage of header-only?

My mental model was headers ~= implementation as far as compiler is concerned, thus limiting the size of headers is a way to indicate API surface area and document.

linkdd · 2 years ago
The "header-only" is actually accidental.

It's all C++ template classes, which must be fully defined at their declaration site (so the header). When using the template, the compiler will generate the code needed by "instantiating the template" (for lack of a better word).

The other advantage is that it requires no build system to include in your project.

brcmthrowaway · 2 years ago
Is there an AI "theory of everything" that can combine conventional AI with LLMs?

Deleted Comment

rishav_sharan · 2 years ago
is there a variant of such a toolkit which can be compiled into a dynamic library? I would love to use something like this, but I don't use cpp.