I have recently improved the LLM integration with Spiritus Astrum, and I have decided to try DeepSeek V3-0324-UD-Q3-K-XL with it in a game setting.
I am sending data about the gameworld to the LLM in a format similar to this:
You are Aleia. The user is zer0sum210. You are engaged in a chat with zer0sum210. Aleia is located within the amaranthine nebula, a distant region of space far from earth.
The users name is zer0sum210
Your name is Aleia
Aleia is soaking wet.
Aleia is on a planet called Lyran-8355, which is a/an earthlike planet
The current time of day is: Afternoon
It is daytime
You are in a plains region
You are in a region containing vegetation and scrub.
The current weather is: MediumRain
zer0sum210 has the following attributes: Low Gravity Worlder: Decreases jump height, run speed, and strength.
Negotiator: Increases the chances of a favourable outcome when negotiating
Ace: Increase turn speed, max velocity, and main engine min burn altitude of shuttle
Commander: Increases stats of AI Companions
zer0sum210's reputation is: Neutral
zer0sum210 is currently experiencing the following states: HighSpirits
zer0sum210 is carrying the following items: 10mmpistol
Aleia is carrying the following items: mre waterpacket medkit
The following structures are nearby: logcabin hanger1 hanger1 shelter5 bunker . There could be something useful inside!
The following items are nearby: wooden fence planter wooden fence planter wooden fence wooden fence well wooden fence wooden fence planter planter wooden fence Pickaxe burnedoutfire flintaxe flintarrow candle wooden fence wooden fence candle wooden fence . They could be useful!
Aleia's reputation is: Neutral
Aleia's relationship to zer0sum210 is: Friends
<START>Aleia: Where are you from? zer0sum210: I am starborn, I grew up on the sprawling space colony of Alexandrias Redoubt (Low Gravity Worlder)
Aleia: Tell me about yourself? zer0sum210: There is far more to my past than I would ever care to reveal. (Mysterious)
Aleia: What did you do before the Fall? zer0sum210: I was a NorthStar Fighter (Pilot).
Aleia: How would you describe yourself? zer0sum210: I try to take a (Diplomatic) approach to life, and look at both sides of a conflict.
Aleia: Tell me something about your life? zer0sum210: I once saved the life of a friend.
Aleia: Tell me something you are good at? zer0sum210: I can see both sides of a conflict, and can usually resolve issues without force. (Diplomacy)
<START>zer0sum210: Where are you from? Aleia: I was born far from the war, on Earth (Temperate)
zer0sum210: Tell me about yourself? Aleia: There is far more to my past than I would ever care to reveal. (Mysterious)
zer0sum210: What did you do before the Fall? Aleia: I joined the ranks of the (Aeonian Companions)
zer0sum210: How would you describe yourself? Aleia: I follow a strict routine, and never deviate from it. (Disciplined)
zer0sum210: Tell me something about your life? Aleia: I was Wounded in battle before the fall. I almost died.
zer0sum210: Tell me something you are good at? Aleia: I like keeping fit. Mental and physical health are crucial in these hard times. (Fitness)
The LLM is producing output similar to the following:
It is clear that the AI is able to take the input from the game world and produce intelligent outputs.
I have tested this same frontend with smaller models (LLama 3.1 8b) and the results were not bad, but the AI seemed to produce responses that made sense, but conflicted with the state of the world.
With deepseek, the AI was able to respond to the player as if they were an NPC living in that world.
Ie, when the player asked about useful gear nearby, the AI was able to mention a pickaxe near a burned out fire, as well as candles, etc, etc.
These items were all present in world at the locations where the AI described them.
The same is true about the AI’s response when the user asked if they were carrying any food.
The AI was able to recognise what an MRE was, and respond that they had one in their pack (Which the user can trade for).
The AI also mentioned edible mushrooms being nearby, which was also correct.
From this, I can determine that, firstly, current gen LLM’s are good enough to interpret data sent from a game and produce responses that make sense within the game world, however a model of sufficient complexity would be needed.
This was a concern of mine when I first started experimenting with adding LLM support to Spiritus Astrum.
I knew that LLM’s can produce realistic-sounding output, but that output may not match the state of the world. The AI may make reference to weapons, enemies, etc, that don’t exist.
It seems that with a sufficiently powerful model this is less of a concern, but for an average user, running that model locally could be difficult.
I will continue experimenting with different models in the future. I will also look into connecting to web-based API’s from Spiritus Astrum. LAN support works, so external API access should be possible too.
I have fixed almost all of the bugs that I discovered during the last test run.
I have also made some significant improvements, including improvements to the AI navigation system, and improvements to the procedural generation code.
In particular, I fixed a bug that caused the AI to get stuck on stairs, and another that caused the destination position of the AI to be slightly off where it should have been.
The improvements and bug fixes related to the AI navigation system took some effort, but these systems are complex and vital to the project, so it was worth spending time on them.
I have also fixed a bug where some cities don’t load correctly after the player saves and quits.
I uncovered quite a few minor bugs this time, but nothing serious.
I have also made a note of several improvements that need to be made.
I am definitely making progress, but there is still a lot of work to do, especially with regards to artwork, etc.
There are some issues with AI pathfinding and the AI dialog system that might take slightly longer to fix, these are more complex.
I have started working on extensive debugging and improvements, which is progressing well. I am also working on optimising and balancing the games variables, etc.
I have created some more artwork for the third campaign. It is, at the moment, mostly placeholder art, but I am working on improving the texturing for large objects.
I believe that I am making progress here.
I have added “detail textures” to my artwork in unity, which has helped, and I have created more repeating textures.
I have also added a triplanar texturing shader which has showed some promise as well.
I have also begun another complete retest of the third campaign.
I have finished the first two missions already, and there have been no major issues found. There are still quite a few minor issues, but these have been mostly fixed already.
The new artwork has been integrated with the game, and I have added some new story triggers as well.
Most of the basic modelling for the capital ship in the third campaign is done.
I have also done a test export, and after fixing some minor issues, this worked very well too.
It should be relatively easy to integrate the modified artwork with the existing dummy art.
The problem is the texturing.
I have had multiple issues when texturing large objects before, especially with low texture resolution, etc.
I am now experimenting with repeating textures, which is helping, but there is no way to add detail with repeating textures.
I will probably produce a very simple set of textures for now, just so that I can continue development.
Later, I will need to spend some time creating much better art, but this will be a major effort for such a large and complex structure, so I will leave this for a while.