1. Starcom: Unknown Space
  2. News

Starcom: Unknown Space News

Weekly Update: January 19, 2024

Last weekend I finished my full playthrough of Jupiter and noted 195 things that I wanted to fix or add for the next opt-in build. Many were fairly minor things like wording or timing changes. A few I decided I was okay with deferring and added them to the large "eventual to do" pile.

Since then, I've chiseled that list down to about 60.

Here are some of the larger items I tackled:

[h2]Added Damage Types[/h2]

Up until now damage has been just damage, although there is some hard-coded special-case balancing. For example Havok does a lot more damage to missiles and drones, due to being AoE. Without this balancing, Havok would either be absolutely lethal to slow moving ships, or would fail at its intended purpose, since missiles and drones move fast.

Now all damage has a type, so as necessary I can balance different factions and weapons to have different advantages vs. different defenses or targets, without needing messy special case coding.

[h2]Refactored Armor/Resistance Formula[/h2]

Speaking of damage, I also took the opportunity to simplify the resistance formula. Bulkheads, armor, certain techs and factions can have various resistances which get passed to a formula to translate into a percentile damage reduction.

The prior resistance formula was the result of trial and error, but while working with the damage types I noticed that for most values encountered in game, it was very close to a conceptually simpler formula, so I went ahead and changed the base formula:

Each point of resistance equals a 1% change in the total number of attacks of constant damage it would take to do the same amount of damage to a target. 10 points of resistance means it would take 10% longer for an attacker to destroy a target, 100 points means it would take twice as long for an attacker to destroy a target, -100 points means it would take half as long, etc.

[h2]Mini-void Quest[/h2]

I added another small random side-quest that the player may encounter while traveling in the void. I won't go into details to avoid (no pun intended) spoilers. This required one new anomaly and a new faction.

[h2]Havok to Secondary[/h2]

The Havok flak system control has been converted to work like an untargeted secondary weapon, so to activate you just cycle to it and press [SPACE].

Plus numerous either minor or spoiler-y changes.

As always, changes mentioned in weekly updates will not be available to players until the next build deployment and are subject to change.

I'm still aiming to deploy a Jupiter build for opt-in by the end of the month. We'll see how that goes.

Until next week!

- Kevin

Weekly Update: January 12, 2024

I spent last weekend updating the automated test system/mission. I've discussed the mission system before: it handles not only player missions, but all "ad hoc" logic like tutorials, scripted events, random void events, etc. It is also how I run automated tests of key missions: basically a series of missions try to "speed run" the game with a lot of cheats by teleporting around and interacting with anomalies and characters. This is obviously not the same as how a player plays, but it does give some level of confidence that there's no bug making it impossible to reach the end. For example, if a dialogue that triggers the spawning of a key artifact has an unsatisfied condition or error, the test will get stuck on it.

However, the nature of the game means that sometimes unexpected things happen during the test. Not only due to random events, but just the chaotic nature of the universe means that small changes can ripple. So the precise sequence of events that even the automated test encounters is inherently unpredictable. This is not an inherently bad thing. But it does mean that sometimes an automated test fails for reasons not related to bugs: e.g., a new faction hailing the player when the test was expecting to interact with some planet or artifact.

As the game has gotten larger, Murphy's Law conspires with the Law of Large Numbers to increase the probability of automated tests failing. If there's a 0.1% chance a mission node will unexpectedly block a test run, that's not a big deal when a test run hits only 100 mission nodes-- I can just run the autotest again the 10% of the time it fails. But with a 1000 nodes, it will fail most of the time.

So I spent last weekend making the automated tests more robust, including spending a good chunk of Saturday tracking down a bug that turned out to be in one of the mission systems' "cheats".

By Monday, I had the system robust enough that it could get through the content up to the new ending 90% of the time.

Armed with this more robust system, I went ahead and made some refactors that I'd been putting off. For example, the game has two very similar systems of spawning recurring NPC encounter groups. One was the first version implemented and was used mostly in the early part of the game, the other was a more flexible system added later. They both work, but having both is a form of technical debt: if some faction unexpectedly had too few or too many ships I had to investigate which system was being used. So I got rid of the first system.

Finally, yesterday, I started a full playthrough of Jupiter with the goal of identifying changes I want for the next opt-in build. I have a tentative goal of getting it out by the end of the month, but this will depend on how the rest of the playthrough goes.

Major tasks completed in the past week:
  • Updated automated test system
  • Implemented copy/cut/paste for the mission logic editor (I now regret having not done this months ago, it turned out not to be that hard and would have saved so much time)
  • Fixes for various bugs encountered
  • Added mission debugging features
  • Refactored encounter spawns
  • Fixed an issue causing periodic skill checks to generate unnecessary memory allocations (garbage)
  • Began full playthrough

Until next week!

- Kevin

Weekly Update: January 5, 2024

First update of 2024!

I've been hard at work this week. Over the past month I've been working on a first pass version of the game's ending. I finally stitched it together to the point where the game now has a path from start to finish.

Or I should say, would have a path if they were working. Right now, it's still a bit of a mess: numerous mission breaking bugs, missions not triggering, wrong conversations starting, etc. My first priority is to get these all fixed so I can get a rough sense of how it all feels when it works right. Then I plan to do a full playthrough of the game to get a sense of how it works in the larger context and what other content changes/additions I want for Jupiter (the next opt-in build).

On the plus side, I've really been enjoying one of the final fights. The balance is clearly too hard but the new enemy ability I've previously alluded to made for some interesting challenges.

Things done/worked on this week:

  • End game storyline, missions
  • Late game Easter Egg
  • Various optimizations
  • Testing, fixing, more testing


As always, progress/features discussed in weekly updates are not immediately available and are subject to change.

Until next week!
- Kevin

Weekly Update: December 29, 2023

Another quick update this week.

The week before Christmas was one of the more productive weeks I've had in a while, getting a lot of tasks done. This week was a bit less so because I only worked half of Christmas Eve and took Christmas day off entirely, but still making some good progress.

Specific non-spoilery tasks I've worked on:

  • Late game story and content work
  • New modules
  • Identified a bug in the AI that prevented it from retreating
  • Changes to the appearance of a late-game environment
  • Highlighting unlocked techs
  • Fixed a lot of typos


I hope everyone is having a great holiday season and has a fun and safe New Year!

Until next year,
Kevin

Weekly Update: December 22, 2023

A quick update this week.

I spent most of this past week continuing to work on late-game content, specifically working on one feature for a new enemy. This is a pretty common pattern: I conceive of a new feature/attack/mechanic/etc, and then spend a half a day implementing an initial version of it to verify that it can work and be fun. Then I spend another 2-3 days iterating on it: tweaking how it works, creating VFX and shaders to communicate to the player what is happening, creating the game scenario(s) where the player encounters it, etc.

Apart from that I also worked on:

  • Reading, investigating and responding to player feedback, bug reports and issues
  • Writing late game dialogues and missions
  • Profiling of some high-intensity combat scenarios to identify performance bottlenecks.


Merry Christmas and Happy Holidays!

Until next week,
Kevin