Alexander Mosolov

@amosolov.bsky.social

Developer of upcoming indie sandbox rpg Starsector. fractalsoftworks.com

Happy #GoblinFriday! Decided to do a test run through first two scenarios to find if any recent work broke any old content, plus noted any UX things that annoyed me. Figured the first End Turn in the tutorial needed a bouncy arrow (this one is a bit too insistent, I did pull it back!):

Happy #GoblinFriday! Finished most Troll Bridge dialog. Finnicky bits remain; I had? to add a null memory type for reasons. Copying a memory that doesn't exist should make it "false" - but not just a bool. So this is a universal false for almost all conditionals (vs. int, float, string, bool). Hm.

Screenshot of my goblin game, just a bunch of goblins in the Goblin Swamp ready to move into the world and cause KAOS.

I added shadows under the tokens. That's all I wanted to show off here.

Reinforced Bulkheads now give the ship some hull/CR if it's lost and then recovered! This should help with the too-high recovery cost of especially low tech ships, which are the ships that hullmod is most likely to already be useful on. (Pictured: a Venture from my current playthrough!)

Bild

Just going through a few random notes before diving back into playtesting. This feels like a fun bonus for the Tactical Laser, giving it more of a support niche by having it increase hull/armor damage taken by the target, like the Graviton Beam does for shields!

Bild

Happy #goblinFriday! Sorting out the Troll Bridge. Been here a while, I know - but it's helping debug dialog/rules logic. You can cross by offering 1d6 snax to the troll. If the troll rolls higher than your snax, the troll just eats them and you can't cross. It wasn't hitting the fail state! 1/2

Dialog screen from my goblin game. Here, Bennybog is attempting to offer the Troll snax to cross the Troll Bridge. Bennybog only had 1 snax, so the troll would have to roll a 1 to accept this offering. 

Unfortunately, the Troll rolled a 2 and just ate Bennybog's 1 snax anyway. Fortunately for Bennybog, this still hit the "success" outcome for some reason. What the heck is going on???Here's a look at the dialog rules logic behind the scene.

... Unfortunately the full condition for the fail state is cut off (sorry!), but it is: $scenario.lastResourcesRollBlockChangeAbs > $snax_just_had

What's notable here is I'm comparing two int 'memories' stored by the dialog system referenced by string 'keys', and it turned out to be the root of the problem.

Changing how crew salaries work to be based on the ships being crewed, plus a fixed rate for "extra" crew. It's nice to have this as a balance lever, e.g. the Onslaught might - and now does - have a lower crew salary (lots of low-skilled positions!) to compensate for its fuel use.

BildBildBild

In the vein of "real concept art looks like crap", here are some #Starsector concepts for remnant/explorarium ships It's basically just dumping a bunch of shapes and colours and swapping bits around and seeing what hits the right vibe. (Some small ideas even get used way later in other places!)

BildBildBild

Working on a new blog post - at a bit over 5k words, so definitely on the long side, but doesn't feel like it would make sense to split it. Hoping to put it out tomorrow or Monday! (Random screenshot from recent playtesting, just for fun.)

Bild

I gotta say, I'm having SO much fun playtesting some of the recent additions! This is ~6 hours into a fresh playthrough, trying hard to grow the fleet and get ahead - make of that what you will :) Going to talk about this in a new blog post, just need to get more testing done first!

BildBild

Happy #GoblinFriday! Added interactions to another area today: the Windy Path (I love the double meaning. Could actually draw it to be windier though, come to think of it.) This location is a transition zone meant to be a moderately dangerous/costly place to linger. Encounters reflect this.

Screenshot of a dialog encounter from my goblin game.

This is the default long description you get when you first enter this location, ever. I think maybe I'll add a location name title drop to emphasize that this is supposed to be a "congratulations! you found a new place!" moment.Screenshot of a dialog encounter from my goblin game.

Here, Wormsy has a bad encounter trying to hide from crows. (Crow-goblin relations will be an important factor in this game. And making crows friendly? That will cost you lots of shinies, my friend, because there's little that crows love more than shinies.)Screenshot of a dialog encounter from my goblin game.

Here, Eyeball has run into an encounter with not just high winds, but a Gale Spirit of some kind. Luckily she's *very* skillful at dealing with spirits, so can easily talk this one down.

There are a few other ways to deal with the windstorm, and failing them comes with great risks considering the high altitude...Screenshot of a dialog encounter from my goblin game.

Eyeball is successful! This will give her more of the Oooos resource that will allow her to call upon spirits and their boons.

Note: only 6 dice in the top row! It should max out at 7. I have some work to do...

A work in progress - removing individual d-mods from ships using "Domain-grade Parts". Makes more sense in the context of a much larger set of changes; not 100% set on it but it's feeling pretty good so far. Also: this may end up replacing the normal "Restore" functionality entirely!

Bild

I hate to ask, but Meso - you might know him as a Starsector modder/community member, and he's also a contributor to the game - is in debt after caring for his sick mother, and now in real trouble. Any help would be amazing. Thank you for reading this. www.gofundme.com/f/help-me-ca...

Donate to Help me care for my senior mother and pay bills, organized by Zeke W

Hello, my name is Zeke, you might know me by my online handle MesoTroniK. I did… Zeke W needs your support for Help me care for my senior mother and pay bills

gofundme.com

Had a longstanding item to redo the "fog of war" feature, so I did that today. Had to wrap my head around just a little weird math and some shader coding. (And still need to make the location circles & connection lines go under the fog.) Also redid font rendering. Everything looks weird!

Screenshot of the main map of my goblin game with a new "fog of war" implementation.

Instead of splatting sprites all over, there's now two texture layers drawn overtop the map, a "gray" fog (transparent, to show what you know but don't currently see) and a "black" fog (opaque, to show where you've never seen). 

It basically works! Going to need to add some features and adjust lots of details, but I'm glad the texture method was so simple to implement and I don't have to do the weird fog tile system that I was considering before.

[Back on my hex bullshit.] Basically: had some thoughts on terrain hex assets over the past ... (god, 12?) ... years I've been selling these things. So these have: smaller size, all seamless tiling (not all done in image) (thus fewer biome variants), flat top/bottom, less visually noisy style.

Bild

Happy #goblinFriday! Working on Scenario 2: "The Small Escape", where the game becomes a lot more freeform after some linear tutorial scenarios. Need to write a TON of content for locations - much of the 'meat' of the game is random events hit while running around. (more in alt text for images.)

This is how the map for Scenario 2 starts, more or less.

In the upper left are tokens for Jorten the Fighter and Kreeee the Goblin - Kreeee has been captured (note the bars on his hotbar element in the lower left) and Jorten's goal is to sell Kreeee before Wormsy can help him escape.

Wormsy, meanwhile, is on the right side of the map, across the river. Based on decisions at the start of the scenario, she can appear anywhere between the Goblin Swamp (lower right, bushy trees) and the Tavern itself, where Kreeee is. 

Crossing the bridges requires being sneaky, clever, or having lots of resources. And Wormsy starts with *nothing* on this map, so basically the player has to figure out the basic mechanics of exploring locations and acquiring resources in order to solve the problem presented by the map in order to fulfill their objective(s).

Like I said: open-ended. 

_However_ this requires that all those circles have something interesting to do in them! That's a lot of scripting and dialog to write, but: it'll pay off, because once I have something there, they'll be useful for every other scenario I make in the game.This shows off how the custom CSV scripting system works to set up Scenario 2. Starsector modders will recognize this, some with horror, as essentially a copy of Starsector's rules.csv system.

And yeah, I coded my own version of it! Because I'm already using it almost every day to create content for Starsector; my brain thinks in it now.

Anyway, just reading through as plain text should tell you more or less what is happening there: setting up the map, the player resources, and character in-play, and the basic properties of the scenario.

In the second row the game actually starts, with the "StartScenario" trigger. The script block, the next column over, executes each script in order from top to bottom and in my implementation it is possible to add time delays, or a condition to fulfill, before firing the next line of the script.

SetBoardModeTo has a default delay that waits for UI elements to fade in and out before proceeding (0.3 seconds, if I recall correctly.)

CameraPanToEntity will pause execution until its at the target position.

Wait, of course, simply holds a position for the given number of seconds.

(And so on.) -- Because the game is turn-based, not real-time, I can safely script on-map sequences like this using the rules.csv system. The possibilities are pretty wild, but for now it's all pretty simple "move camera here, pause meaningfully, then open a dialog" type stuff.Here's my token worksheet. I think I've showed this off before, but here I've added a bit more to it - at first I experimented with more naturalistic renders of characters, then figured it'd be better to make them more symbolic, like little carvings on an ancient chess set.

This signals to players the board game-like interaction metaphor of the game map.

Changed the Carrier Group skill to substantially reduce damage to fighters. This feels pretty good so far, you really get a sense of how much it contributes and some fighter/bomber support that *really* sticks around!

Bild