Starcom: Unknown Space cover
Starcom: Unknown Space screenshot
Genre: -

Starcom: Unknown Space

Weekly Update: November 3, 2023

This week was a bit less productive: Kristin (my wife) had a surgery last Friday. She's recovering well, but there's been a fair amount of downtime due to hospital visits, extra errands, etc.

As I mentioned last week, there is a patched version of the Icarus build for anyone who wants to try that out. It doesn't add any new content, but addresses several minor issues and implements experimental localization for German and French. It sounds like this build as at least as stable as default, but I'd like a little more data before I set it to the default. It is still an Icarus build, so compatible with current saves.

The main thing I've worked on in the past week is work on an alternate solution for a late game "challenge" (anyone who has completed Icarus can probably guess what the challenge is). I spent a day doing one version of an implementation, didn't love how it felt and started over.

I've also been working with the new modeler on some new ship modules which are coming along nicely.

Until next week,
Kevin

Weekly Update: October 27, 2023

The new Icarus build continues to go smoothly with relatively few issues reported, although there are some. I've posted an opt-in patch to the unstable branch to address some of these. The main purpose of this patch is to add preliminary experimental support for localization. Since that involved small changes to almost every system in the game, I decided to make it opt-in until sufficient players have had a chance to try it.

It is save compatible with Icarus, so if you want to check it out it adds (Google Translated) German and French as well as several QoL improvements.

Right now, I'm continuing to monitor Icarus for issues while beginning planning work for the next content update.

Until next week!
- Kevin

Icarus Unstable 15015

I've uploaded a new Icarus build to the opt-in beta branch. Since this is still on Icarus, it should be save compatible with your existing Icarus game.

This is the first version of experimental localization and every string in the game has been touched, so it may have introduced bugs. It contains Google translate versions of German and French for testing.

Additional non-localization related changes:

  • Map mode performance optimizations
  • Added map option to highlight incomplete anomalies
  • Added toggle to some log entries to show on map
  • Added map zoom modifier (CTRL) to keep cursor position constant
  • Changed music audio codec to substantially reduce disk, memory usage
  • Changed screen scaling ratios for HUD
  • Fixed NPC Ships not being moved out of gateways for autopilot jumps and point portals
  • Fixed two null reference issues
  • Minor UI, typo fixes

Weekly Update: October 20, 2023

As I mentioned last week, this is an abbreviated work week as I had eye surgery which I'm now recovering from (I wrote most of this draft just before the surgery and am recovering well, thanks!)

Following the promotion of Icarus build to default and general announcements to that effect, there's been a flux of first time players into the game. I've been monitoring player feedback and analytics to see how things are going and overall I've happy with reports. There are some issues, but for the most part they're minor. The few reports of players getting stuck have come from known areas in the late game. (As a reminder, in game feedback is anonymous: if you submit a save game with a comment of being stuck, be sure to also post in the discussion forums or give some way to contact you)

Apart from that I've worked on:

  • Optimize performance in map view, which can get a bit CPU heavy in the late game;
  • Creating an anomaly indicator for the map to highlight anomalies with additional interaction;
  • Adding a toggle to certain ship log entries to drop a pin on the map for that entry;
  • Made progress on implementing the oft requested "zoom to cursor" when in map mode. This has turned out to be surprisingly tricky, but getting close. For one thing, I had initially wasted a lot of time implementing a zoom that centered on the cursor position. But the right behavior is actually to zoom the camera so that whatever is under the mouse doesn't move.

Until next week!

- Kevin

Weekly Update: October 13, 2023

The big item from this past week was making Icarus the default build. A big thanks to players who did opt-in play testing of the build: it seems like this build is solid with few serious issues reported (knock wood).

I've spent most of the past ten days or so chiseling away at localization. There are currently over 70,000 words of text in the game spread across 4500 chunks of text, even more than Starcom: Nexus. (In the Icarus news update I had the count at less, but the localization process has revealed that I undercounted some areas.)

Localization requires organizing and exporting all of those text strings into a format that can be used for translation.

The text in the game can be organized into three broad categories:

Story Content

One of the technical design decisions for the game was to move content out of the game engine's domain. This includes all conversations, anomalies, missions, items, discoveries, etc. There were several reasons for this: one, the Unity engine tries to serialize everything in the project before running in the editor which created a significant drag on iteration for Starcom: Nexus. Two, it allows me to use version control more effectively for the content. Three, it theoretically should make it easier to allow modders to create content. And finally four, exporting the text for localization became very simple.

Story content makes up 95% of the text in the game, but there was still...

Static UI Text

There's a bunch of text in the game that never changes. E.g., the "New Game" button on the main menu always says "New Game". This text was also pretty easy to localize. Basically I added a component to these UI elements that identifies them as localization targets and an Editor script grabs everything with those components. These components also register themselves with a LocalizationManager so if the current language changes they know to replace their text and font.

Finally there is...

Code Generated Text

Code generated text is a very small percentage of text in the game, but every string needed a small amount of work. E.g. change the code that said:

return string.Format("Fire rate: {0} shots/sec", baseFireRate);

to

return $"{LocalizationManager.GetTextWithDefault("SHIPYARD_UI->FIRE_RATE")}: {baseFireRate} {LocalizationManager.GetTextWithDefault("SHIPYARD_UI->SHOTS_SEC")}";

Here is the Operations screen with localization applied:



The "language" is "Progent-A": a fictitious language I created to pseudolocalize Starcom: Nexus using symbols from extended Unicode characters. Besides looking vaguely sci-fi, I can sort of read it, while at the same time can immediately tell if some text has not been replaced. It also uses a different character set, making sure font substitution works correctly.

This is what took up the most time of the past week, but the good news is that I made a lot of progress: almost all UI elements have been exported except for the options/keybinding menus. None of the text has actually been translated to a real language yet, but all of this work is a necessary precursor to that.

Finally, as I mentioned previously, I will be having eye surgery next week so there may not be the regularly scheduled weekly update.

Until next update!
Kevin

Icarus Build Now Live

Two weeks ago I posted the opt-in beta build "Icarus" for players to begin testing. There have been a couple patches since then to address several minor issues, but overall the build seems to be a solid improvement over Helios and Ganymede (the previous default build). So now I'm promoting Icarus to the default build.

Saves are not compatible between named builds, but if you were in the middle of a game, don't worry: you can always switch back to Ganymede to finish your current game. See here for instructions and select "Ganymede Rollback".

Here are the combined changes from Helios (the previous opt-in beta) and Icarus, relative to Ganymede:




  • 34 new planet anomalies
  • New stories, side quests, factions
  • New ship modules, techs
  • New enemy types
  • New discoveries
  • Mission log now differentiates missions, objectives by "actionable" status
  • Additional mission details to help with common "stuck" areas
  • Mission progress scaling by actionables, e.g., timed events and hints trigger faster if the player has few or no active mission objectives
  • Fog of Exploration tech
  • Alternate laser fire controls
  • Change to crew progression system
  • Changes to encounter, drop and anomaly balance
  • NPCs no longer aggro from small damage
  • All ships will eventually fully recover lost modules, e.g., Celaeno will repair itself. This has the added benefit of reducing save file sizes (a significant chunk of saves' data is storing full ship layouts)
  • Drop attract max speed scales up with ship speed (minimizes outrunning drop pick up)
  • NPCs will pick-up drops for their own kills after a brief delay
  • Scaled up asteroid objects
  • Trade planet icons
  • Allow mission lane expansion (should make releasing story patches easier)
  • Changes to visibility system
  • Increased color brightness of some factions
  • Lateral thruster changes, VFX
  • Change to mouse steering option
  • Lua console for debugging with F11
  • Straight-line autopilot option
  • Autopilot to station will automatically dock
  • Changed "home" map marker
  • Numerous balance changes
  • AI changes
  • Support/maintenance crew
  • Added support for vysnc, exclusive full screen
  • Additional display options
  • Performance improvements
  • Numerous minor bug fixes


Early Access Content Progress



When I posted the Icarus opt-in announcement, I gave a summary of content progression since the start of Early Access. Here it is again, with a few minor corrections to some of the numbers.

There are several very rough metrics for how much content has been added since the start of Early Access: mission logic elements, number of different anomalies, and number of words. Mission logic elements are the smallest unit of "quest" logic. By itself, the number isn't particularly meaningful, but it tends to grow roughly in line with the amount of game play content. Anomalies are interactions that the player may encounter on planets or when interacting with derelicts and celestial artifacts: while some anomalies may be encountered more than once, this number excludes any duplicates (even though some duplicates may behave very differently when encountered again). Word count is self-explanatory.


A small snippet of mission logic from the early game. Each green or pink colored box is a mission logic element.

I want to stress that I'm personally not focusing on any numeric metrics of content: I want to deliver the best possible experience to players. Part of that is having lots of different anomalies and things to discover, but increasing content numbers are a side-effect of the goal. I'm presenting these numbers to give players a sense of the overall progress.

Betelgeuse (Dec 2022, first Early Access version):
75 anomalies
1264 mission logic elements
25,000 words

Draconis (Jan 2023):
91 anomalies
1516 mission logic elements
29,000 words

Europa (Mar 2023):
111 possible anomalies
1839 mission logic elements
36,000 words

Fornax (May 2023):
120 possible anomalies
1990 mission logic elements
40,000 words

Ganymede (June 2023):
145 anomalies
2390 mission logic elements
48,000 words

Icarus (Latest Build):
179 anomalies
3340 mission logic elements
64,000 words


Examples of some of the 179+ anomaly images

For comparison, Starcom: Nexus had ~195 anomalies and 65,000 words (it used a different mission logic system so the numbers are not comparable, but it had considerably less mission logic than Unknown Space does now).

In terms of game length, the median time for first time players of Betelgeuse to reach the end of the main story line was 8 hours. For Ganymede, it was 16 hours. Again, I want to stress that I'm not focusing on numeric values: some of the more recent changes have been with the goal of reducing time spent wandering around not having any obvious missions to progress on.

At this point, I am starting to steer the huge vessel that is Starcom: Unknown Space toward an ending. I have a vision of what that ending looks like, but it will likely evolve as I implement it and get feedback from players.

To anticipate the question of "when is full release", the answer remains unchanged: when it's done. I hope to have an ending in place in the next few months, but it is likely that once that ending is in place I may spend several more months iterating on it. There are also a number of items not directly related to content development that will add several weeks here and there. As always, if players are finding that the game isn't done, then it's not done.

Thanks for reading, and thanks for playing Starcom: Unknown Space!

- Kevin

Weekly Update: October 6, 2023

Last Sunday I posted a patch for a few issues in the new opt-in Icarus build. Overall Icarus seems solid so I plan to make it the default build later this weekend and post an announcement at that time. Again, anyone starting a new game now is recommended to switch to Icarus now.

This week I've started working on implementing the localization logic. This is fairly straight-forward but tedious work: 95% of the text in the game is in a format the makes export/import of symbols easy, but the remaining 5% is various hard-coded strings that need to be identified and moved into look-up tables.

This is a good task for the period immediately surrounding a new default build when I am collecting feedback from new players that may influence the next milestones. I probably won't finish localization before I switch back to the more fun aspects of content development, but it is something that needs to be done and I'll be glad to have chipped some of it away before we're closer to 1.0.

Incidentally, I have not determined yet which languages will get professional translation at this point, but I hope to have quality translations for any language with over 1000 wishlists, and the files will be easily accessible for anyone who wants to create their own translations.

Finally, I will be having eye surgery in a little under two weeks. It should hopefully be a minor procedure but I will probably be unable to work for several days to a week, so there may be a pause in regular updates.

- Kevin

Icarus 15011

Minor patch to Icarus unstable:


  • Added fix for issue that could cause the Relays mission to become permanently blocked
  • Locked the unfinished alt-Havok tech
  • Check for potential null reference error on particular VFX

Weekly Update: September 29, 2023

As announced earlier this week, the Icarus build is available for opt-in. So far, there have been no reports of serious issues and at least a few players have reached the end. This is good news for my goal of promoting Icarus to the default build in a little over a week.

I'm trying an experiment regarding weekly updates:

I have been posting these updates just as topics in the discussion forum. Some players have suggested I post them as news items. Based on wording in Valve's Steamworks documentation I had (incorrectly) believed that there wasn't a way to post small weekly updates that weren't tied to a build. Apparently I can do that, I just need to manually set the visibility of announcements to appropriate values. Let me know if you think this is better and has the appropriate visibility.

Also, I thought I'd introduce a topic for players to discuss:

One of the things that delight players is when they do something unexpected or contrary to what they are expected to do, and the game acknowledges the action in some small way. Implementing these is work that most players will never see, but I think the value that it gives the players who do experiment with something weird is sometimes worth it.

So for players of Starcom: Unknown Space, is there anything you tried to see what would happen? I'm specifically looking for things that the game doesn't current react to. If your experiment related to some narrative important content, please use spoiler tags.

Until next week!

Icarus 15010

The opt-in Icarus build has been updated to 15010:


  • Disabled a debugging function that was allocating GC memory unnecessarily
  • Fixed a mid-game anomaly