I have been working on the artwork for the third campaign. Most of the necessary artwork has now been added. It is quite basic at the moment, but I intend to make improvements to it later.
I have also made extensive changes to the structure of the missions, adding enemies, more triggers, etc, etc.
Improvements and bug fixes were also made to the AI, and the mission triggers.
The next goal is to do a complete retest of the third campaign, and fix and bugs or issues that I find. I should have this finished next week. I can then move on to the next step of the project.
I have added a new weapon, the “Mining Laser” to the game. This is actually one of my favourite weapons. It is the only weapon with unlimited ammo (Althoug it does have a overheating mechanic, to stop it from firing continuously), and it does a large amount of damage per second.
This is the first laser based personal weapon that I have added to the game, so it took a little longer than most weapons.
There is a video of the weapon working on youtube here:
I have also been working on more artwork for campaign 3. I am hoping the the majority of the artwork will be done this year, in addition to some more testing, etc.
I am hoping to release Spiritus Astrum into early access at some point next year.
I have also uploaded another video here, showing off the explosion effect that I made a week or so ago:
It has been over a year since the Spiritus Astrum Demo has been released on steam.
In that time, the project has advanced massively, with two new campaigns being added as well as a whole host of new content, dialog, characters, weapons, ships, and other improvements.
In the initial release of Spiritus Astrum, there will be three campaigns, with an estimated 10 hours of content, with additional free roaming capabilities as well. I am hoping to add basic multiplayer support in the initial release as well.
Although there is a lot more to be done, Spiritus Astrum is moving closer and closer to release every day.
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.