daid / daid/EmptyEpsilon

Semi-Random Events

Open
#155 15 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Lua
Stars
869
Forks
222
Avg merge
18h 33m
Merged PRs (30d)
1

Description

I saw issue #154 (AI Chatter) and thought it similar enough to something I was working on that I would mention it and see what people think. I haven't had much time lately to work on it so probably best I check that people don't think it's a terrible idea before I make time to pick it up again 😄

Core Concept

Other things are happening in the universe, and players will often have an opportunity to respond to these events in a way that feels meaningful.

I have started writing a script snippet/module intended to produce semi-randomly selected events at semi-random intervals using math.randomseed. Basically if it has been more than X time since one of these random events was triggered, generate a random number from a range and run the scenario corresponding to that number. Some events would be more likely than others by virtue of having a greater number of values in the range that lead to them.

I'm thinking probably best not to raise another until existing side-quest is resolved if these are used during scenarios that have a "Main Mission" but you might make them more frequent or allow overlap for use in a Sandbox.

Examples of a few similar scenarios/decision trees and consequences:

EVENT TYPE 1

Players intercept an SOS broadcast from a stranded ship (spawned at semi-random location far enough from player that they can't tell it just pops into existance). I planned to include some technobabble about a "transponder" or something hinting that the SOS is coming from a friendly/enemy as appropriate

Initial information

1.a1 Ship identifies as Player Faction
1.b1 Ship identifies as Player Faction
1.c1 Ship identifies as Enemy Faction ("Oh my stars whatever will we our intrepid Captain decide to do about this?")

Examples of what is needed

1._2i Ship requests a Homing missile so they can retrofit their ship using its guidance module to limp to a station for proper repairs.
1._2ii Ship requests an energy transfer to their
1.*2iii Ship is too far gone and crew request transfer to player ship and will be "dropped off" when players next dock at specific/appropriate station (Reputation+++ for this one, possibly add tension with ticking timer to get close enough to transfer crew before ship explodes damaging all around it - possibly simulate this by spawning a mine/nuke on the location? Haven't tested if that works) - If ship-to-ship docking possible I would use this but otherwise they just have to get really close.

Players can respond in several ways:
a) Say they'll help and follow through
b) Say they'll help but fail to follow through
c) Say they won't help
d) Say they won't help in a rude or aggressive way
Consequences

1.a3 (Identified as player faction, actually is player faction)
a) Reputation++ and if there's still a ship it will respond enthusiastically to commands (once situation resolved). May also give some kind of reward (as long as it's not the same thing they were asking for).
bi) No change to Reputation
bii) No change to Reputation (After X time ship goes away, maybe someone else rescued them, maybe they died, THESE ARE THE QUESTIONS THAT KEEP A CAPTAIN AWAKE DURING THEIR SLEEP-CYCLE)
c) Reputation- with disappointed response
d) Reputation-- with very disappointed response

1.b3 (Identified as player faction, actually is enemy faction)
ai) Arrive at coordinates to find it's a trap, ship is fine but controlled by enemies and attacks players
aii) Arrive at coordinates to find it's a trap, ship is fine and attacks players along with additional enemies to jump in
bi) No change to Reputation (enemies wait paitently to spring trap)
bii) No change to Reputation (after X time enemies get bored of waiting and start moving to attack player/player faction)
biii) No change to Reputation (after X time enemies get bored of waiting and disappear)
c) Reputation- (temporarily!) with disappointed response while "stranded" ship starts moving towards players (still not obviously enemy, revealed either by attacking or Deep Scan from Science as it gets closer).
d) Enemy commander loses cool and shouts insults, giving up on stealth revealing trap and starts moving to attack player ship.

1c.3 (Identified as enemy faction)
ai) Enemy ship thanks players and skulks off (will not attack player ship unless fired upon, maybe even will help against enemies that aren't of same faction? Was thinking basically would set this ship to player Faction. See footnote.)
aii) Enemy ship thanks players and gives them some kind of reward (Reputation+++/energy or weapons as long as it isn't what they needed from player ship - I think there's an opportunity here for some great rewards in the future)
aiii) It's a trap! (See 1.b3)
bi) No change to Reputation
bii) No change to Reputation (After X time ship goes away)
c) Sad acknowledgement that this is to be expected, no change to Reputation (Some may prefer to have this set to a reputation drop especially if you're more into the roleplay aspect and your crew are expected to be Paragons of Virtue)
d) Angry acknowledgement that this is to be expected but that the enemy commander thinks you're scum for kicking them while they're down (may not be appropriate for some enemy factions?).

EVENT TYPE 2

Players intercept a signal that the computer indicated was a message, but when you open the frequency you hear only the haunting sounds of a pod of Space Whales... (No decision required here folks, just a bit of filler and the timer resets for another event to be triggered in X.)

Footnote: I kind of like the idea that this sort of thing could even lead to a whole fleet of "enemy" ships turning up lead by this commander to help players in certain types of scenarios. This could be a single use "Favour" triggered by Relay or more of an unexpected "Han Solo swooping in to help with the Death Star" sort of thing.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source files or tests are named. Start by reviewing issue #154 and the existing script snippet/module using math.randomseed, then trace how scenarios, side quests, Main Missions, and Sandbox play are represented. Done would require an agreed event scope and implementation plan covering timing, selection, player responses, and consequences.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.